"""Configuration for functional resource filtering.

This module defines which AWS resource types are considered functional vs non-functional
within the context of IDR.
"""

FUNCTIONAL_RESOURCE_TYPES = [
    "apigateway:restapis",
    "apprunner:service",
    "batch:job",
    "cassandra:keyspace",
    "cloudfront:distribution",
    "dax:cache",
    "directconnect:dxcon",
    "directconnect:dxvif",
    "ds:directory",
    "dynamodb:table",
    "ec2:instance",
    "ec2:transit-gateway",
    "ecr:repository",
    "eks:cluster",
    "eks:nodegroup",
    "elasticache:cluster",
    "elasticache:replicationgroup",
    "elasticbeanstalk:applicationversion",
    "elasticfilesystem:file-system",
    "elasticloadbalancing:loadbalancer",
    "elasticmapreduce:cluster",
    "es:domain",
    "firehose:deliverystream",
    "glue:crawler",
    "glue:database",
    "glue:job",
    "glue:workflow",
    "kafka:cluster",
    "kinesis:stream",
    "lambda:function",
    "mediaconvert:jobs",
    "mediaconvert:queues",
    "medialive:channel",
    "mediapackage:channels",
    "mediapackage:origin_endpoints",
    "mq:broker",
    "rds:cluster",
    "rds:db",
    "redshift:cluster",
    "resiliencehub:app",
    "route53:healthcheck",
    "route53resolver:resolver-endpoint",
    "s3:bucket",
    "sagemaker:app",
    "sagemaker:domain",
    "sns:topic",
    "sqs:queue",
    "states:stateMachine",
    "storagegateway:gateway",
    "timestream:database",
    "transfer:server",
]

NONFUNCTIONAL_RESOURCE_TYPES = [
    "access-analyzer:analyzer",
    "acm:certificate",
    "apigateway:apikeys",
    "apigateway:domainnames",
    "apigateway:vpclinks",
    "apigateway:usageplans",
    "appconfig:application",
    "appconfig:deploymentstrategy",
    "appconfig:extensionassociation",
    "application-autoscaling:scalable-target",
    "applicationinsights:application",
    "apprunner:autoscalingconfiguration",
    "apprunner:observabilityconfiguration",
    "apprunner:vpcconnector",
    "apprunner:vpcingressconnection",
    "appsync:apis",
    "backup:backup-plan",
    "backup:backup-vault",
    "backup:recovery-point",
    "batch:job-definition",
    "cloud9:environment",
    "cloudformation:stack",
    "cloudformation:stackset",
    "cloudhsm:backup",
    "cloudhsm:cluster",
    "cloudhsm:hsm",
    "cloudtrail:trail",
    "cloudwatch:alarm",
    "cloudwatch:metric-stream",
    "codebuild:project",
    "codecommit:repository",
    "codedeploy:application",
    "codedeploy:deploymentgroup",
    "codepipeline:pipeline",
    "codestar-connections:connection",
    "cognito-idp:userpool",
    "config:aggregation-authorization",
    "config:config-rule",
    "datasync:location",
    "datasync:task",
    "dms:endpoint",
    "dms:rep",
    "dms:task",
    "ec2:dhcp-options",
    "ec2:elastic-ip",
    "ec2:fleet",
    "ec2:image",
    "ec2:internet-gateway",
    "ec2:key-pair",
    "ec2:launch-template",
    "ec2:natgateway",
    "ec2:network-acl",
    "ec2:network-interface",
    "ec2:prefix-list",
    "ec2:route-table",
    "ec2:security-group",
    "ec2:security-group-rule",
    "ec2:snapshot",
    "ec2:spot-instances-request",
    "ec2:subnet",
    "ec2:transit-gateway-attachment",
    "ec2:volume",
    "ec2:vpc",
    "ec2:vpc-endpoint",
    "ec2:vpc-flow-log",
    "ec2:vpc-peering-connection",
    "ec2:vpn-gateway",
    "ecs:task",
    "ecs:task-definition",
    "eks:addon",
    "elasticache:parametergroup",
    "elasticache:snapshot",
    "elasticache:subnetgroup",
    "elasticfilesystem:access-point",
    "elasticloadbalancing:listener",
    "elasticloadbalancing:listener-rule",
    "elasticloadbalancing:targetgroup",
    "elasticmapreduce:studio",
    "events:event-bus",
    "events:rule",
    "fis:experiment-template",
    "fms:policy",
    "fsx:backup",
    "fsx:storage-virtual-machine",
    "fsx:volume",
    "glue:connection",
    "glue:trigger",
    "guardduty:detector",
    "iam:instance-profile",
    "iam:oidc-provider",
    "iam:policy",
    "iam:role",
    "imagebuilder:distribution-configuration",
    "imagebuilder:image",
    "imagebuilder:image-pipeline",
    "imagebuilder:infrastructure-configuration",
    "iot:rule",
    "kms:key",
    "logs:log-group",
    "mgn:source-server",
    "mq:configuration",
    "network-firewall:firewall-policy",
    "network-firewall:stateful-rulegroup",
    "network-firewall:stateless-rulegroup",
    "quicksight:dashboard",
    "ram:resource-share",
    "rds:cluster-pg",
    "rds:cluster-snapshot",
    "rds:db-proxy",
    "rds:es",
    "rds:og",
    "rds:pg",
    "rds:ri",
    "rds:snapshot",
    "rds:subgrp",
    "redshift:parametergroup",
    "redshift:snapshot",
    "redshift:subnetgroup",
    "resiliencehub:resiliency-policy",
    "resource-groups:group",
    "route53:hostedzone",
    "route53resolver:resolver-rule",
    "sagemaker:action",
    "sagemaker:automl-job",
    "sagemaker:context",
    "sagemaker:endpoint",
    "sagemaker:endpoint-config",
    "sagemaker:experiment",
    "sagemaker:experiment-trial",
    "sagemaker:experiment-trial-component",
    "sagemaker:hyper-parameter-tuning-job",
    "sagemaker:model",
    "sagemaker:notebook-instance",
    "sagemaker:processing-job",
    "sagemaker:studio-lifecycle-config",
    "sagemaker:training-job",
    "sagemaker:transform-job",
    "sagemaker:user-profile",
    "secretsmanager:secret",
    "servicecatalog:applications",
    "servicecatalog:attribute-groups",
    "servicediscovery:namespace",
    "servicediscovery:service",
    "ses:configuration-set",
    "ses:identity",
    "ssm:association",
    "ssm:automation-execution",
    "ssm:document",
    "ssm:maintenancewindow",
    "ssm:opsitem",
    "ssm:parameter",
    "ssm:patchbaseline",
    "storagegateway:share",
    "synthetics:canary",
    "transfer:user",
    "wafv2:ipset",
    "workspaces:directory",
    "workspaces:workspace",
    "workspaces:workspaceimage",
]
