def describe_hosts(HostIds=None, NextToken=None, MaxResults=None, Filters=None
    ):
    """
    Describes one or more of your Dedicated Hosts.
    The results describe only the Dedicated Hosts in the region you're currently using. All listed instances consume capacity on your Dedicated Host. Dedicated Hosts that have recently been released will be listed with the state released .
    See also: AWS API Documentation
    
    
    :example: response = client.describe_hosts(
        HostIds=[
            'string',
        ],
        NextToken='string',
        MaxResults=123,
        Filters=[
            {
                'Name': 'string',
                'Values': [
                    'string',
                ]
            },
        ]
    )
    
    
    :type HostIds: list
    :param HostIds: The IDs of the Dedicated Hosts. The IDs are used for targeted instance launches.
            (string) --
            

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

    :type MaxResults: integer
    :param MaxResults: The maximum number of results to return for the request in a single page. The remaining results can be seen by sending another request with the returned nextToken value. This value can be between 5 and 500; if maxResults is given a larger value than 500, you will receive an error. You cannot specify this parameter and the host IDs parameter in the same request.

    :type Filters: list
    :param Filters: One or more filters.
            instance-type - The instance type size that the Dedicated Host is configured to support.
            auto-placement - Whether auto-placement is enabled or disabled (on | off ).
            host-reservation-id - The ID of the reservation assigned to this host.
            client-token - The idempotency token you provided when you launched the instance
            state - The allocation state of the Dedicated Host (available | under-assessment | permanent-failure | released | released-permanent-failure ).
            availability-zone - The Availability Zone of the host.
            (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) --
            
            

    :rtype: dict
    :return: {
        'Hosts': [
            {
                'HostId': 'string',
                'AutoPlacement': 'on'|'off',
                'HostReservationId': 'string',
                'ClientToken': 'string',
                'HostProperties': {
                    'Sockets': 123,
                    'Cores': 123,
                    'TotalVCpus': 123,
                    'InstanceType': 'string'
                },
                'State': 'available'|'under-assessment'|'permanent-failure'|'released'|'released-permanent-failure',
                'AvailabilityZone': 'string',
                'Instances': [
                    {
                        'InstanceId': 'string',
                        'InstanceType': 'string'
                    },
                ],
                'AvailableCapacity': {
                    'AvailableInstanceCapacity': [
                        {
                            'InstanceType': 'string',
                            'AvailableCapacity': 123,
                            'TotalCapacity': 123
                        },
                    ],
                    'AvailableVCpus': 123
                }
            },
        ],
        'NextToken': 'string'
    }
    
    
    """
    pass
