"""Test fixtures for NetGraph.

This module provides reusable test data including:
- VPC topology configurations
- Security Group rules
- NACL rules
- Route table configurations
- Prefix list configurations
- AWS API response mocks

Usage:
    from tests.fixtures.vpc_topologies import (
        create_simple_vpc_topology,
        create_multi_tier_topology,
        create_peered_vpc_topology,
    )
    from tests.fixtures.prefix_lists import (
        create_s3_prefix_list,
        create_corporate_network_prefix_list,
        PrefixListRegistry,
    )
"""

from tests.fixtures.prefix_lists import (
    PL_BLOCKED_IPS,
    PL_CLOUDFRONT,
    PL_CORPORATE_NETWORK,
    PL_CROSS_ACCOUNT,
    PL_DYNAMODB_US_EAST_1,
    PL_EMPTY,
    PL_OFFICE_LOCATIONS,
    PL_S3_US_EAST_1,
    PL_TRUSTED_PARTNERS,
    PL_VPN_CLIENTS,
    PrefixListEntry,
    PrefixListFixture,
    PrefixListRegistry,
    build_describe_managed_prefix_lists_response,
    build_get_managed_prefix_list_entries_response,
    create_blocked_ips_prefix_list,
    create_cloudfront_prefix_list,
    create_corporate_network_prefix_list,
    create_cross_account_prefix_list,
    create_default_prefix_list_registry,
    create_dynamodb_prefix_list,
    create_empty_prefix_list,
    create_ipv6_corporate_prefix_list,
    create_office_locations_prefix_list,
    create_s3_prefix_list,
    create_trusted_partners_prefix_list,
    create_vpn_clients_prefix_list,
    get_all_aws_prefix_lists,
    get_all_customer_prefix_lists,
    get_all_prefix_lists,
)
from tests.fixtures.vpc_topologies import (
    ACCOUNT_ID,
    CIDR_DATABASE,
    CIDR_INTERNET,
    CIDR_PEER_PRIVATE,
    CIDR_PEER_PUBLIC,
    CIDR_PRIVATE_1,
    CIDR_PRIVATE_2,
    CIDR_PUBLIC_1,
    CIDR_PUBLIC_2,
    CIDR_VPC_MAIN,
    CIDR_VPC_PEER,
    ENI_APP_1,
    ENI_APP_2,
    ENI_BASTION,
    ENI_DB_1,
    ENI_NAT_MAIN,
    ENI_PEER_APP,
    ENI_PEER_WEB,
    ENI_WEB_1,
    ENI_WEB_2,
    IGW_MAIN,
    IGW_PEER,
    INSTANCE_APP_1,
    INSTANCE_APP_2,
    INSTANCE_BASTION,
    INSTANCE_DB_1,
    INSTANCE_PEER_APP,
    INSTANCE_PEER_WEB,
    INSTANCE_WEB_1,
    INSTANCE_WEB_2,
    IP_APP_1_PRIVATE,
    IP_APP_2_PRIVATE,
    IP_BASTION_PRIVATE,
    IP_BASTION_PUBLIC,
    IP_DB_1_PRIVATE,
    IP_NAT_MAIN_PRIVATE,
    IP_NAT_MAIN_PUBLIC,
    IP_PEER_APP_PRIVATE,
    IP_PEER_WEB_PRIVATE,
    IP_PEER_WEB_PUBLIC,
    IP_WEB_1_PRIVATE,
    IP_WEB_1_PUBLIC,
    IP_WEB_2_PRIVATE,
    IP_WEB_2_PUBLIC,
    NACL_BLOCK_EPHEMERAL,
    NACL_DATABASE,
    NACL_PEER,
    NACL_PRIVATE,
    NACL_PUBLIC,
    NAT_MAIN,
    NAT_PEER,
    PEER_ACCOUNT_ID,
    PEERING_MAIN_TO_PEER,
    PREFIX_LIST_CLOUDFRONT,
    PREFIX_LIST_S3,
    REGION,
    RTB_DATABASE_MAIN,
    RTB_PRIVATE_MAIN,
    RTB_PRIVATE_PEER,
    RTB_PUBLIC_MAIN,
    RTB_PUBLIC_PEER,
    SG_ALLOW_ALL,
    SG_APP,
    SG_BASTION,
    SG_DATABASE,
    SG_DENY_ALL,
    SG_PEER_APP,
    SG_PEER_WEB,
    SG_WEB,
    SUBNET_DATABASE,
    SUBNET_PEER_PRIVATE,
    SUBNET_PEER_PUBLIC,
    SUBNET_PRIVATE_1,
    SUBNET_PRIVATE_2,
    SUBNET_PUBLIC_1,
    SUBNET_PUBLIC_2,
    TGW_ATTACHMENT_MAIN,
    TGW_ATTACHMENT_PEER,
    TGW_MAIN,
    VPC_ISOLATED,
    VPC_MAIN,
    VPC_PEER,
    InstanceFixture,
    NACLFixture,
    RouteTableFixture,
    SecurityGroupFixture,
    SubnetFixture,
    VPCTopology,
    build_describe_instances_response,
    build_describe_network_acls_response,
    build_describe_route_tables_response,
    build_describe_security_groups_response,
    build_describe_subnets_response,
    create_asymmetric_routing_topology,
    create_multi_tier_topology,
    create_nacl_blocks_ephemeral_topology,
    create_peered_vpc_topology,
    create_routing_loop_topology,
    create_simple_vpc_topology,
    create_transit_gateway_topology,
    nacl_default_deny,
    nacl_rule_allow,
    nacl_rule_deny,
    route_blackhole,
    route_igw,
    route_local,
    route_nat,
    route_peering,
    route_tgw,
    sg_rule_allow_all_outbound,
    sg_rule_allow_port,
    sg_rule_allow_port_range,
    sg_rule_allow_prefix_list,
    sg_rule_allow_sg_reference,
)

__all__ = [
    # VPC Topology Constants
    "ACCOUNT_ID",
    "PEER_ACCOUNT_ID",
    "REGION",
    "VPC_MAIN",
    "VPC_PEER",
    "VPC_ISOLATED",
    # Subnet IDs
    "SUBNET_PUBLIC_1",
    "SUBNET_PUBLIC_2",
    "SUBNET_PRIVATE_1",
    "SUBNET_PRIVATE_2",
    "SUBNET_DATABASE",
    "SUBNET_PEER_PUBLIC",
    "SUBNET_PEER_PRIVATE",
    # Gateway IDs
    "IGW_MAIN",
    "IGW_PEER",
    "NAT_MAIN",
    "NAT_PEER",
    "PEERING_MAIN_TO_PEER",
    "TGW_MAIN",
    "TGW_ATTACHMENT_MAIN",
    "TGW_ATTACHMENT_PEER",
    # Route Table IDs
    "RTB_PUBLIC_MAIN",
    "RTB_PRIVATE_MAIN",
    "RTB_DATABASE_MAIN",
    "RTB_PUBLIC_PEER",
    "RTB_PRIVATE_PEER",
    # Security Group IDs
    "SG_WEB",
    "SG_APP",
    "SG_DATABASE",
    "SG_BASTION",
    "SG_PEER_WEB",
    "SG_PEER_APP",
    "SG_ALLOW_ALL",
    "SG_DENY_ALL",
    # NACL IDs
    "NACL_PUBLIC",
    "NACL_PRIVATE",
    "NACL_DATABASE",
    "NACL_PEER",
    "NACL_BLOCK_EPHEMERAL",
    # Instance IDs
    "INSTANCE_WEB_1",
    "INSTANCE_WEB_2",
    "INSTANCE_APP_1",
    "INSTANCE_APP_2",
    "INSTANCE_DB_1",
    "INSTANCE_BASTION",
    "INSTANCE_PEER_WEB",
    "INSTANCE_PEER_APP",
    # ENI IDs
    "ENI_WEB_1",
    "ENI_WEB_2",
    "ENI_APP_1",
    "ENI_APP_2",
    "ENI_DB_1",
    "ENI_BASTION",
    "ENI_NAT_MAIN",
    "ENI_PEER_WEB",
    "ENI_PEER_APP",
    # IP Addresses
    "IP_WEB_1_PRIVATE",
    "IP_WEB_1_PUBLIC",
    "IP_WEB_2_PRIVATE",
    "IP_WEB_2_PUBLIC",
    "IP_APP_1_PRIVATE",
    "IP_APP_2_PRIVATE",
    "IP_DB_1_PRIVATE",
    "IP_BASTION_PRIVATE",
    "IP_BASTION_PUBLIC",
    "IP_NAT_MAIN_PRIVATE",
    "IP_NAT_MAIN_PUBLIC",
    "IP_PEER_WEB_PRIVATE",
    "IP_PEER_WEB_PUBLIC",
    "IP_PEER_APP_PRIVATE",
    # CIDR Blocks
    "CIDR_VPC_MAIN",
    "CIDR_VPC_PEER",
    "CIDR_PUBLIC_1",
    "CIDR_PUBLIC_2",
    "CIDR_PRIVATE_1",
    "CIDR_PRIVATE_2",
    "CIDR_DATABASE",
    "CIDR_PEER_PUBLIC",
    "CIDR_PEER_PRIVATE",
    "CIDR_INTERNET",
    # Prefix List IDs (from vpc_topologies)
    "PREFIX_LIST_CLOUDFRONT",
    "PREFIX_LIST_S3",
    # Fixture Data Classes
    "SubnetFixture",
    "InstanceFixture",
    "SecurityGroupFixture",
    "NACLFixture",
    "RouteTableFixture",
    "VPCTopology",
    # Rule Builders
    "sg_rule_allow_port",
    "sg_rule_allow_port_range",
    "sg_rule_allow_sg_reference",
    "sg_rule_allow_prefix_list",
    "sg_rule_allow_all_outbound",
    "nacl_rule_allow",
    "nacl_rule_deny",
    "nacl_default_deny",
    "route_local",
    "route_igw",
    "route_nat",
    "route_peering",
    "route_tgw",
    "route_blackhole",
    # Topology Factories
    "create_simple_vpc_topology",
    "create_multi_tier_topology",
    "create_peered_vpc_topology",
    "create_nacl_blocks_ephemeral_topology",
    "create_asymmetric_routing_topology",
    "create_routing_loop_topology",
    "create_transit_gateway_topology",
    # AWS Response Builders
    "build_describe_instances_response",
    "build_describe_subnets_response",
    "build_describe_security_groups_response",
    "build_describe_network_acls_response",
    "build_describe_route_tables_response",
    # Prefix List Constants
    "PL_S3_US_EAST_1",
    "PL_DYNAMODB_US_EAST_1",
    "PL_CLOUDFRONT",
    "PL_CORPORATE_NETWORK",
    "PL_TRUSTED_PARTNERS",
    "PL_BLOCKED_IPS",
    "PL_VPN_CLIENTS",
    "PL_OFFICE_LOCATIONS",
    "PL_EMPTY",
    "PL_CROSS_ACCOUNT",
    # Prefix List Data Classes
    "PrefixListEntry",
    "PrefixListFixture",
    "PrefixListRegistry",
    # Prefix List Factories
    "create_s3_prefix_list",
    "create_dynamodb_prefix_list",
    "create_cloudfront_prefix_list",
    "create_corporate_network_prefix_list",
    "create_trusted_partners_prefix_list",
    "create_blocked_ips_prefix_list",
    "create_vpn_clients_prefix_list",
    "create_office_locations_prefix_list",
    "create_empty_prefix_list",
    "create_cross_account_prefix_list",
    "create_ipv6_corporate_prefix_list",
    "create_default_prefix_list_registry",
    "get_all_aws_prefix_lists",
    "get_all_customer_prefix_lists",
    "get_all_prefix_lists",
    # Prefix List Response Builders
    "build_describe_managed_prefix_lists_response",
    "build_get_managed_prefix_list_entries_response",
]
