def METHOD_NAME(filters: Optional[Sequence[pulumi.InputType['GetPublicIpv4PoolsFilterArgs']]] = None,
                          tags: Optional[Mapping[str, str]] = None,
                          opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetPublicIpv4PoolsResult:
    """
    Data source for getting information about AWS EC2 Public IPv4 Pools.
    ## Example Usage
    ### Basic Usage
    ```python
    import pulumi
    import pulumi_aws as aws
    example = aws.ec2.get_public_ipv4_pools()
    ```
    ### Usage with Filter
    ```python
    import pulumi
    import pulumi_aws as aws
    example = aws.ec2.get_public_ipv4_pools(filters=[aws.ec2.GetPublicIpv4PoolsFilterArgs(
        name="tag-key",
        values=["ExampleTagKey"],
    )])
    ```
    :param Sequence[pulumi.InputType['GetPublicIpv4PoolsFilterArgs']] filters: Custom filter block as described below.
    :param Mapping[str, str] tags: Map of tags, each pair of which must exactly match a pair on the desired pools.
           More complex filters can be expressed using one or more `filter` sub-blocks,
           which take the following arguments:
    """
    __args__ = dict()
    __args__['filters'] = filters
    __args__['tags'] = tags
    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
    __ret__ = pulumi.runtime.invoke('aws:ec2/getPublicIpv4Pools:getPublicIpv4Pools', __args__, opts=opts, typ=GetPublicIpv4PoolsResult).value
    return AwaitableGetPublicIpv4PoolsResult(
        filters=pulumi.get(__ret__, 'filters'),
        id=pulumi.get(__ret__, 'id'),
        pool_ids=pulumi.get(__ret__, 'pool_ids'),
        tags=pulumi.get(__ret__, 'tags'))