def describe_nat_gateways(NatGatewayIds=None, Filters=None, MaxResults=None,
    NextToken=None):
    """
    Describes one or more of the your NAT gateways.
    See also: AWS API Documentation
    
    Examples
    This example describes the NAT gateway for the specified VPC.
    Expected Output:
    
    :example: response = client.describe_nat_gateways(
        NatGatewayIds=[
            'string',
        ],
        Filters=[
            {
                'Name': 'string',
                'Values': [
                    'string',
                ]
            },
        ],
        MaxResults=123,
        NextToken='string'
    )
    
    
    :type NatGatewayIds: list
    :param NatGatewayIds: One or more NAT gateway IDs.
            (string) --
            

    :type Filters: list
    :param Filters: One or more filters.
            nat-gateway-id - The ID of the NAT gateway.
            state - The state of the NAT gateway (pending | failed | available | deleting | deleted ).
            subnet-id - The ID of the subnet in which the NAT gateway resides.
            vpc-id - The ID of the VPC in which the NAT gateway resides.
            (dict) --A filter name and value pair that is used to return a more specific list of results. Filters can be used to match a set of resources by various criteria, such as tags, attributes, or IDs.
            Name (string) --The name of the filter. Filter names are case-sensitive.
            Values (list) --One or more filter values. Filter values are case-sensitive.
            (string) --
            
            

    :type MaxResults: integer
    :param MaxResults: The maximum number of items to return for this request. The request returns a token that you can specify in a subsequent call to get the next set of results.
            Constraint: If the value specified is greater than 1000, we return only 1000 items.
            

    :type NextToken: string
    :param NextToken: The token to retrieve the next page of results.

    :rtype: dict
    :return: {
        'NatGateways': [
            {
                'VpcId': 'string',
                'SubnetId': 'string',
                'NatGatewayId': 'string',
                'CreateTime': datetime(2015, 1, 1),
                'DeleteTime': datetime(2015, 1, 1),
                'NatGatewayAddresses': [
                    {
                        'PublicIp': 'string',
                        'AllocationId': 'string',
                        'PrivateIp': 'string',
                        'NetworkInterfaceId': 'string'
                    },
                ],
                'State': 'pending'|'failed'|'available'|'deleting'|'deleted',
                'FailureCode': 'string',
                'FailureMessage': 'string',
                'ProvisionedBandwidth': {
                    'Provisioned': 'string',
                    'Requested': 'string',
                    'RequestTime': datetime(2015, 1, 1),
                    'ProvisionTime': datetime(2015, 1, 1),
                    'Status': 'string'
                }
            },
        ],
        'NextToken': 'string'
    }
    
    
    :returns: 
    pending : The NAT gateway is being created and is not ready to process traffic.
    failed : The NAT gateway could not be created. Check the failureCode and failureMessage fields for the reason.
    available : The NAT gateway is able to process traffic. This status remains until you delete the NAT gateway, and does not indicate the health of the NAT gateway.
    deleting : The NAT gateway is in the process of being terminated and may still be processing traffic.
    deleted : The NAT gateway has been terminated and is no longer processing traffic.
    
    """
    pass
