"""
Autogenerated module using `pop-create-idem <https://gitlab.com/saltstack/pop/pop-create-idem>`__
"""
from typing import Dict
from typing import List


async def create(
    hub,
    ctx,
    transit_gateway_route_table_id: str,
    prefix_list_id: str,
    transit_gateway_attachment_id: str = None,
    blackhole: bool = None,
    dry_run: bool = None,
) -> Dict:
    r"""
    **Autogenerated function**

    Creates a reference (route) to a prefix list in a specified transit gateway route table.

    Args:
        transit_gateway_route_table_id(str): The ID of the transit gateway route table.
        prefix_list_id(str): The ID of the prefix list that is used for destination matches.
        transit_gateway_attachment_id(str, optional): The ID of the attachment to which traffic is routed. Defaults to None.
        blackhole(bool, optional): Indicates whether to drop traffic that matches this route. Defaults to None.
        dry_run(bool, optional): Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. Defaults to None.

    Returns:
        Dict

    Examples:
        Call from code:

        .. code-block:: python

            await hub.exec.aws_auto.ec2.transit_gateway.prefix_list_reference.create(
                ctx, transit_gateway_route_table_id=value, prefix_list_id=value
            )

        Call from CLI:

        .. code-block:: bash

            $ idem exec aws_auto.ec2.transit_gateway.prefix_list_reference.create transit_gateway_route_table_id=value, prefix_list_id=value
    """
    return await hub.tool.aws.client.exec(
        ctx,
        service_name="ec2",
        operation="create_transit_gateway_prefix_list_reference",
        op_kwargs={
            "TransitGatewayRouteTableId": transit_gateway_route_table_id,
            "PrefixListId": prefix_list_id,
            "TransitGatewayAttachmentId": transit_gateway_attachment_id,
            "Blackhole": blackhole,
            "DryRun": dry_run,
        },
    )


async def delete(
    hub,
    ctx,
    transit_gateway_route_table_id: str,
    prefix_list_id: str,
    dry_run: bool = None,
) -> Dict:
    r"""
    **Autogenerated function**

    Deletes a reference (route) to a prefix list in a specified transit gateway route table.

    Args:
        transit_gateway_route_table_id(str): The ID of the route table.
        prefix_list_id(str): The ID of the prefix list.
        dry_run(bool, optional): Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. Defaults to None.

    Returns:
        Dict

    Examples:
        Call from code:

        .. code-block:: python

            await hub.exec.aws_auto.ec2.transit_gateway.prefix_list_reference.delete(
                ctx, transit_gateway_route_table_id=value, prefix_list_id=value
            )

        Call from CLI:

        .. code-block:: bash

            $ idem exec aws_auto.ec2.transit_gateway.prefix_list_reference.delete transit_gateway_route_table_id=value, prefix_list_id=value
    """
    return await hub.tool.aws.client.exec(
        ctx,
        service_name="ec2",
        operation="delete_transit_gateway_prefix_list_reference",
        op_kwargs={
            "TransitGatewayRouteTableId": transit_gateway_route_table_id,
            "PrefixListId": prefix_list_id,
            "DryRun": dry_run,
        },
    )


async def get_all(
    hub,
    ctx,
    transit_gateway_route_table_id: str,
    filters: List = None,
    max_results: int = None,
    next_token: str = None,
    dry_run: bool = None,
) -> Dict:
    r"""
    **Autogenerated function**

    Gets information about the prefix list references in a specified transit gateway route table.

    Args:
        transit_gateway_route_table_id(str): The ID of the transit gateway route table.
        filters(List, optional): One or more filters. The possible values are:    attachment.resource-id - The ID of the resource for the attachment.    attachment.resource-type - The type of resource for the attachment. Valid values are vpc | vpn | direct-connect-gateway | peering.    attachment.transit-gateway-attachment-id - The ID of the attachment.    is-blackhole - Whether traffic matching the route is blocked (true | false).    prefix-list-id - The ID of the prefix list.    prefix-list-owner-id - The ID of the owner of the prefix list.    state - The state of the prefix list reference (pending | available | modifying | deleting).  . Defaults to None.
        max_results(int, optional): The maximum number of results to return with a single call. To retrieve the remaining results, make another call with the returned nextToken value. Defaults to None.
        next_token(str, optional): The token for the next page of results. Defaults to None.
        dry_run(bool, optional): Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. Defaults to None.

    Returns:
        Dict

    Examples:
        Call from code:

        .. code-block:: python

            await hub.exec.aws_auto.ec2.transit_gateway.prefix_list_reference.get_all(
                ctx, transit_gateway_route_table_id=value
            )

        Call from CLI:

        .. code-block:: bash

            $ idem exec aws_auto.ec2.transit_gateway.prefix_list_reference.get_all transit_gateway_route_table_id=value
    """
    return await hub.tool.aws.client.exec(
        ctx,
        service_name="ec2",
        operation="get_transit_gateway_prefix_list_references",
        op_kwargs={
            "TransitGatewayRouteTableId": transit_gateway_route_table_id,
            "Filters": filters,
            "MaxResults": max_results,
            "NextToken": next_token,
            "DryRun": dry_run,
        },
    )


async def modify(
    hub,
    ctx,
    transit_gateway_route_table_id: str,
    prefix_list_id: str,
    transit_gateway_attachment_id: str = None,
    blackhole: bool = None,
    dry_run: bool = None,
) -> Dict:
    r"""
    **Autogenerated function**

    Modifies a reference (route) to a prefix list in a specified transit gateway route table.

    Args:
        transit_gateway_route_table_id(str): The ID of the transit gateway route table.
        prefix_list_id(str): The ID of the prefix list.
        transit_gateway_attachment_id(str, optional): The ID of the attachment to which traffic is routed. Defaults to None.
        blackhole(bool, optional): Indicates whether to drop traffic that matches this route. Defaults to None.
        dry_run(bool, optional): Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. Defaults to None.

    Returns:
        Dict

    Examples:
        Call from code:

        .. code-block:: python

            await hub.exec.aws_auto.ec2.transit_gateway.prefix_list_reference.modify(
                ctx, transit_gateway_route_table_id=value, prefix_list_id=value
            )

        Call from CLI:

        .. code-block:: bash

            $ idem exec aws_auto.ec2.transit_gateway.prefix_list_reference.modify transit_gateway_route_table_id=value, prefix_list_id=value
    """
    return await hub.tool.aws.client.exec(
        ctx,
        service_name="ec2",
        operation="modify_transit_gateway_prefix_list_reference",
        op_kwargs={
            "TransitGatewayRouteTableId": transit_gateway_route_table_id,
            "PrefixListId": prefix_list_id,
            "TransitGatewayAttachmentId": transit_gateway_attachment_id,
            "Blackhole": blackhole,
            "DryRun": dry_run,
        },
    )
