r'''
# `aws_appsync_channel_namespace`

Refer to the Terraform Registry for docs: [`aws_appsync_channel_namespace`](https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/appsync_channel_namespace).
'''
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)

import abc
import builtins
import datetime
import enum
import typing

import jsii
import publication
import typing_extensions

import typeguard
from importlib.metadata import version as _metadata_package_version
TYPEGUARD_MAJOR_VERSION = int(_metadata_package_version('typeguard').split('.')[0])

def check_type(argname: str, value: object, expected_type: typing.Any) -> typing.Any:
    if TYPEGUARD_MAJOR_VERSION <= 2:
        return typeguard.check_type(argname=argname, value=value, expected_type=expected_type) # type:ignore
    else:
        if isinstance(value, jsii._reference_map.InterfaceDynamicProxy): # pyright: ignore [reportAttributeAccessIssue]
           pass
        else:
            if TYPEGUARD_MAJOR_VERSION == 3:
                typeguard.config.collection_check_strategy = typeguard.CollectionCheckStrategy.ALL_ITEMS # type:ignore
                typeguard.check_type(value=value, expected_type=expected_type) # type:ignore
            else:
                typeguard.check_type(value=value, expected_type=expected_type, collection_check_strategy=typeguard.CollectionCheckStrategy.ALL_ITEMS) # type:ignore

from .._jsii import *

import cdktn as _cdktn_78ede62e
import constructs as _constructs_77d1e7e8


class AppsyncChannelNamespace(
    _cdktn_78ede62e.TerraformResource,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.appsyncChannelNamespace.AppsyncChannelNamespace",
):
    '''Represents a {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/appsync_channel_namespace aws_appsync_channel_namespace}.'''

    def __init__(
        self,
        scope: "_constructs_77d1e7e8.Construct",
        id: builtins.str,
        *,
        api_id: builtins.str,
        name: builtins.str,
        code_handlers: typing.Optional[builtins.str] = None,
        handler_configs: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["AppsyncChannelNamespaceHandlerConfigs", typing.Dict[builtins.str, typing.Any]]]]] = None,
        publish_auth_mode: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["AppsyncChannelNamespacePublishAuthMode", typing.Dict[builtins.str, typing.Any]]]]] = None,
        region: typing.Optional[builtins.str] = None,
        subscribe_auth_mode: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["AppsyncChannelNamespaceSubscribeAuthMode", typing.Dict[builtins.str, typing.Any]]]]] = None,
        tags: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
        connection: typing.Optional[typing.Union[typing.Union["_cdktn_78ede62e.SSHProvisionerConnection", typing.Dict[builtins.str, typing.Any]], typing.Union["_cdktn_78ede62e.WinrmProvisionerConnection", typing.Dict[builtins.str, typing.Any]]]] = None,
        count: typing.Optional[typing.Union[jsii.Number, "_cdktn_78ede62e.TerraformCount"]] = None,
        depends_on: typing.Optional[typing.Sequence["_cdktn_78ede62e.ITerraformDependable"]] = None,
        for_each: typing.Optional["_cdktn_78ede62e.ITerraformIterator"] = None,
        lifecycle: typing.Optional[typing.Union["_cdktn_78ede62e.TerraformResourceLifecycle", typing.Dict[builtins.str, typing.Any]]] = None,
        provider: typing.Optional["_cdktn_78ede62e.TerraformProvider"] = None,
        provisioners: typing.Optional[typing.Sequence[typing.Union[typing.Union["_cdktn_78ede62e.FileProvisioner", typing.Dict[builtins.str, typing.Any]], typing.Union["_cdktn_78ede62e.LocalExecProvisioner", typing.Dict[builtins.str, typing.Any]], typing.Union["_cdktn_78ede62e.RemoteExecProvisioner", typing.Dict[builtins.str, typing.Any]]]]] = None,
    ) -> None:
        '''Create a new {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/appsync_channel_namespace aws_appsync_channel_namespace} Resource.

        :param scope: The scope in which to define this construct.
        :param id: The scoped construct ID. Must be unique amongst siblings in the same scope
        :param api_id: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/appsync_channel_namespace#api_id AppsyncChannelNamespace#api_id}.
        :param name: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/appsync_channel_namespace#name AppsyncChannelNamespace#name}.
        :param code_handlers: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/appsync_channel_namespace#code_handlers AppsyncChannelNamespace#code_handlers}.
        :param handler_configs: handler_configs block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/appsync_channel_namespace#handler_configs AppsyncChannelNamespace#handler_configs}
        :param publish_auth_mode: publish_auth_mode block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/appsync_channel_namespace#publish_auth_mode AppsyncChannelNamespace#publish_auth_mode}
        :param region: Region where this resource will be `managed <https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints>`_. Defaults to the Region set in the `provider configuration <https://registry.terraform.io/providers/hashicorp/aws/latest/docs#aws-configuration-reference>`_. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/appsync_channel_namespace#region AppsyncChannelNamespace#region}
        :param subscribe_auth_mode: subscribe_auth_mode block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/appsync_channel_namespace#subscribe_auth_mode AppsyncChannelNamespace#subscribe_auth_mode}
        :param tags: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/appsync_channel_namespace#tags AppsyncChannelNamespace#tags}.
        :param connection: 
        :param count: 
        :param depends_on: 
        :param for_each: 
        :param lifecycle: 
        :param provider: 
        :param provisioners: 
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__4ea04a3f9ff2f9aafcd2188462c00bdab15943953356131d8257b61c6808889c)
            check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
            check_type(argname="argument id", value=id, expected_type=type_hints["id"])
        config = AppsyncChannelNamespaceConfig(
            api_id=api_id,
            name=name,
            code_handlers=code_handlers,
            handler_configs=handler_configs,
            publish_auth_mode=publish_auth_mode,
            region=region,
            subscribe_auth_mode=subscribe_auth_mode,
            tags=tags,
            connection=connection,
            count=count,
            depends_on=depends_on,
            for_each=for_each,
            lifecycle=lifecycle,
            provider=provider,
            provisioners=provisioners,
        )

        jsii.create(self.__class__, self, [scope, id, config])

    @jsii.member(jsii_name="generateConfigForImport")
    @builtins.classmethod
    def generate_config_for_import(
        cls,
        scope: "_constructs_77d1e7e8.Construct",
        import_to_id: builtins.str,
        import_from_id: builtins.str,
        provider: typing.Optional["_cdktn_78ede62e.TerraformProvider"] = None,
    ) -> "_cdktn_78ede62e.ImportableResource":
        '''Generates CDKTN code for importing a AppsyncChannelNamespace resource upon running "cdktn plan ".

        :param scope: The scope in which to define this construct.
        :param import_to_id: The construct id used in the generated config for the AppsyncChannelNamespace to import.
        :param import_from_id: The id of the existing AppsyncChannelNamespace that should be imported. Refer to the {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/appsync_channel_namespace#import import section} in the documentation of this resource for the id to use
        :param provider: ? Optional instance of the provider where the AppsyncChannelNamespace to import is found.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__6b13aae2cb37fd2b789985156a4f414e7d2092d5eb31b5ee0c2d35a9bc731164)
            check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
            check_type(argname="argument import_to_id", value=import_to_id, expected_type=type_hints["import_to_id"])
            check_type(argname="argument import_from_id", value=import_from_id, expected_type=type_hints["import_from_id"])
            check_type(argname="argument provider", value=provider, expected_type=type_hints["provider"])
        return typing.cast("_cdktn_78ede62e.ImportableResource", jsii.sinvoke(cls, "generateConfigForImport", [scope, import_to_id, import_from_id, provider]))

    @jsii.member(jsii_name="putHandlerConfigs")
    def put_handler_configs(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["AppsyncChannelNamespaceHandlerConfigs", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__ef3c35c374dae3b52b3d0cf665184dde32f6c980972b1a9c817ebb187207d078)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putHandlerConfigs", [value]))

    @jsii.member(jsii_name="putPublishAuthMode")
    def put_publish_auth_mode(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["AppsyncChannelNamespacePublishAuthMode", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__3d2d3b91ea45d57ff092dacca31988a87ca697d43783f7a064356343426daf50)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putPublishAuthMode", [value]))

    @jsii.member(jsii_name="putSubscribeAuthMode")
    def put_subscribe_auth_mode(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["AppsyncChannelNamespaceSubscribeAuthMode", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__3d3eaf6e10fb05cc7a102de7ed3fe290cfb66c7c2a6a3ae8b804d1e4a539d747)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putSubscribeAuthMode", [value]))

    @jsii.member(jsii_name="resetCodeHandlers")
    def reset_code_handlers(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetCodeHandlers", []))

    @jsii.member(jsii_name="resetHandlerConfigs")
    def reset_handler_configs(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetHandlerConfigs", []))

    @jsii.member(jsii_name="resetPublishAuthMode")
    def reset_publish_auth_mode(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetPublishAuthMode", []))

    @jsii.member(jsii_name="resetRegion")
    def reset_region(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetRegion", []))

    @jsii.member(jsii_name="resetSubscribeAuthMode")
    def reset_subscribe_auth_mode(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetSubscribeAuthMode", []))

    @jsii.member(jsii_name="resetTags")
    def reset_tags(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetTags", []))

    @jsii.member(jsii_name="synthesizeAttributes")
    def _synthesize_attributes(self) -> typing.Mapping[builtins.str, typing.Any]:
        return typing.cast(typing.Mapping[builtins.str, typing.Any], jsii.invoke(self, "synthesizeAttributes", []))

    @jsii.member(jsii_name="synthesizeHclAttributes")
    def _synthesize_hcl_attributes(self) -> typing.Mapping[builtins.str, typing.Any]:
        return typing.cast(typing.Mapping[builtins.str, typing.Any], jsii.invoke(self, "synthesizeHclAttributes", []))

    @jsii.python.classproperty
    @jsii.member(jsii_name="tfResourceType")
    def TF_RESOURCE_TYPE(cls) -> builtins.str:
        return typing.cast(builtins.str, jsii.sget(cls, "tfResourceType"))

    @builtins.property
    @jsii.member(jsii_name="channelNamespaceArn")
    def channel_namespace_arn(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "channelNamespaceArn"))

    @builtins.property
    @jsii.member(jsii_name="handlerConfigs")
    def handler_configs(self) -> "AppsyncChannelNamespaceHandlerConfigsList":
        return typing.cast("AppsyncChannelNamespaceHandlerConfigsList", jsii.get(self, "handlerConfigs"))

    @builtins.property
    @jsii.member(jsii_name="publishAuthMode")
    def publish_auth_mode(self) -> "AppsyncChannelNamespacePublishAuthModeList":
        return typing.cast("AppsyncChannelNamespacePublishAuthModeList", jsii.get(self, "publishAuthMode"))

    @builtins.property
    @jsii.member(jsii_name="subscribeAuthMode")
    def subscribe_auth_mode(self) -> "AppsyncChannelNamespaceSubscribeAuthModeList":
        return typing.cast("AppsyncChannelNamespaceSubscribeAuthModeList", jsii.get(self, "subscribeAuthMode"))

    @builtins.property
    @jsii.member(jsii_name="tagsAll")
    def tags_all(self) -> "_cdktn_78ede62e.StringMap":
        return typing.cast("_cdktn_78ede62e.StringMap", jsii.get(self, "tagsAll"))

    @builtins.property
    @jsii.member(jsii_name="apiIdInput")
    def api_id_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "apiIdInput"))

    @builtins.property
    @jsii.member(jsii_name="codeHandlersInput")
    def code_handlers_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "codeHandlersInput"))

    @builtins.property
    @jsii.member(jsii_name="handlerConfigsInput")
    def handler_configs_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["AppsyncChannelNamespaceHandlerConfigs"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["AppsyncChannelNamespaceHandlerConfigs"]]], jsii.get(self, "handlerConfigsInput"))

    @builtins.property
    @jsii.member(jsii_name="nameInput")
    def name_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "nameInput"))

    @builtins.property
    @jsii.member(jsii_name="publishAuthModeInput")
    def publish_auth_mode_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["AppsyncChannelNamespacePublishAuthMode"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["AppsyncChannelNamespacePublishAuthMode"]]], jsii.get(self, "publishAuthModeInput"))

    @builtins.property
    @jsii.member(jsii_name="regionInput")
    def region_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "regionInput"))

    @builtins.property
    @jsii.member(jsii_name="subscribeAuthModeInput")
    def subscribe_auth_mode_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["AppsyncChannelNamespaceSubscribeAuthMode"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["AppsyncChannelNamespaceSubscribeAuthMode"]]], jsii.get(self, "subscribeAuthModeInput"))

    @builtins.property
    @jsii.member(jsii_name="tagsInput")
    def tags_input(self) -> typing.Optional[typing.Mapping[builtins.str, builtins.str]]:
        return typing.cast(typing.Optional[typing.Mapping[builtins.str, builtins.str]], jsii.get(self, "tagsInput"))

    @builtins.property
    @jsii.member(jsii_name="apiId")
    def api_id(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "apiId"))

    @api_id.setter
    def api_id(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__b7e742bf23e75810b4f9f3f7e7cd56f644f129da63ddde43b95a09d6d9341918)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "apiId", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="codeHandlers")
    def code_handlers(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "codeHandlers"))

    @code_handlers.setter
    def code_handlers(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__c7df74c74be3dac159cda06aa4faf439542a29ea704a399fda351cb4bd5e86bd)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "codeHandlers", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="name")
    def name(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "name"))

    @name.setter
    def name(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__c278712b87c97b86a4a3864476da463f0f3669b760e3de1a9fd5a920dd61001e)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "name", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="region")
    def region(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "region"))

    @region.setter
    def region(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__1de8aa64209b8081e850bb15d4654b22a0bf450cea95bed94988b70fb3f9e64e)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "region", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="tags")
    def tags(self) -> typing.Mapping[builtins.str, builtins.str]:
        return typing.cast(typing.Mapping[builtins.str, builtins.str], jsii.get(self, "tags"))

    @tags.setter
    def tags(self, value: typing.Mapping[builtins.str, builtins.str]) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__59d4cbbd92d65194a2f1f82865fe1bbb77680423029924951c45c6b2ff30ecaa)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "tags", value) # pyright: ignore[reportArgumentType]


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.appsyncChannelNamespace.AppsyncChannelNamespaceConfig",
    jsii_struct_bases=[_cdktn_78ede62e.TerraformMetaArguments],
    name_mapping={
        "connection": "connection",
        "count": "count",
        "depends_on": "dependsOn",
        "for_each": "forEach",
        "lifecycle": "lifecycle",
        "provider": "provider",
        "provisioners": "provisioners",
        "api_id": "apiId",
        "name": "name",
        "code_handlers": "codeHandlers",
        "handler_configs": "handlerConfigs",
        "publish_auth_mode": "publishAuthMode",
        "region": "region",
        "subscribe_auth_mode": "subscribeAuthMode",
        "tags": "tags",
    },
)
class AppsyncChannelNamespaceConfig(_cdktn_78ede62e.TerraformMetaArguments):
    def __init__(
        self,
        *,
        connection: typing.Optional[typing.Union[typing.Union["_cdktn_78ede62e.SSHProvisionerConnection", typing.Dict[builtins.str, typing.Any]], typing.Union["_cdktn_78ede62e.WinrmProvisionerConnection", typing.Dict[builtins.str, typing.Any]]]] = None,
        count: typing.Optional[typing.Union[jsii.Number, "_cdktn_78ede62e.TerraformCount"]] = None,
        depends_on: typing.Optional[typing.Sequence["_cdktn_78ede62e.ITerraformDependable"]] = None,
        for_each: typing.Optional["_cdktn_78ede62e.ITerraformIterator"] = None,
        lifecycle: typing.Optional[typing.Union["_cdktn_78ede62e.TerraformResourceLifecycle", typing.Dict[builtins.str, typing.Any]]] = None,
        provider: typing.Optional["_cdktn_78ede62e.TerraformProvider"] = None,
        provisioners: typing.Optional[typing.Sequence[typing.Union[typing.Union["_cdktn_78ede62e.FileProvisioner", typing.Dict[builtins.str, typing.Any]], typing.Union["_cdktn_78ede62e.LocalExecProvisioner", typing.Dict[builtins.str, typing.Any]], typing.Union["_cdktn_78ede62e.RemoteExecProvisioner", typing.Dict[builtins.str, typing.Any]]]]] = None,
        api_id: builtins.str,
        name: builtins.str,
        code_handlers: typing.Optional[builtins.str] = None,
        handler_configs: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["AppsyncChannelNamespaceHandlerConfigs", typing.Dict[builtins.str, typing.Any]]]]] = None,
        publish_auth_mode: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["AppsyncChannelNamespacePublishAuthMode", typing.Dict[builtins.str, typing.Any]]]]] = None,
        region: typing.Optional[builtins.str] = None,
        subscribe_auth_mode: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["AppsyncChannelNamespaceSubscribeAuthMode", typing.Dict[builtins.str, typing.Any]]]]] = None,
        tags: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
    ) -> None:
        '''
        :param connection: 
        :param count: 
        :param depends_on: 
        :param for_each: 
        :param lifecycle: 
        :param provider: 
        :param provisioners: 
        :param api_id: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/appsync_channel_namespace#api_id AppsyncChannelNamespace#api_id}.
        :param name: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/appsync_channel_namespace#name AppsyncChannelNamespace#name}.
        :param code_handlers: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/appsync_channel_namespace#code_handlers AppsyncChannelNamespace#code_handlers}.
        :param handler_configs: handler_configs block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/appsync_channel_namespace#handler_configs AppsyncChannelNamespace#handler_configs}
        :param publish_auth_mode: publish_auth_mode block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/appsync_channel_namespace#publish_auth_mode AppsyncChannelNamespace#publish_auth_mode}
        :param region: Region where this resource will be `managed <https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints>`_. Defaults to the Region set in the `provider configuration <https://registry.terraform.io/providers/hashicorp/aws/latest/docs#aws-configuration-reference>`_. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/appsync_channel_namespace#region AppsyncChannelNamespace#region}
        :param subscribe_auth_mode: subscribe_auth_mode block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/appsync_channel_namespace#subscribe_auth_mode AppsyncChannelNamespace#subscribe_auth_mode}
        :param tags: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/appsync_channel_namespace#tags AppsyncChannelNamespace#tags}.
        '''
        if isinstance(lifecycle, dict):
            lifecycle = _cdktn_78ede62e.TerraformResourceLifecycle(**lifecycle)
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__d2f70884ad67d186d9b8424a1244de30dc1de945d8fa12426139cc8cd4851d7c)
            check_type(argname="argument connection", value=connection, expected_type=type_hints["connection"])
            check_type(argname="argument count", value=count, expected_type=type_hints["count"])
            check_type(argname="argument depends_on", value=depends_on, expected_type=type_hints["depends_on"])
            check_type(argname="argument for_each", value=for_each, expected_type=type_hints["for_each"])
            check_type(argname="argument lifecycle", value=lifecycle, expected_type=type_hints["lifecycle"])
            check_type(argname="argument provider", value=provider, expected_type=type_hints["provider"])
            check_type(argname="argument provisioners", value=provisioners, expected_type=type_hints["provisioners"])
            check_type(argname="argument api_id", value=api_id, expected_type=type_hints["api_id"])
            check_type(argname="argument name", value=name, expected_type=type_hints["name"])
            check_type(argname="argument code_handlers", value=code_handlers, expected_type=type_hints["code_handlers"])
            check_type(argname="argument handler_configs", value=handler_configs, expected_type=type_hints["handler_configs"])
            check_type(argname="argument publish_auth_mode", value=publish_auth_mode, expected_type=type_hints["publish_auth_mode"])
            check_type(argname="argument region", value=region, expected_type=type_hints["region"])
            check_type(argname="argument subscribe_auth_mode", value=subscribe_auth_mode, expected_type=type_hints["subscribe_auth_mode"])
            check_type(argname="argument tags", value=tags, expected_type=type_hints["tags"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "api_id": api_id,
            "name": name,
        }
        if connection is not None:
            self._values["connection"] = connection
        if count is not None:
            self._values["count"] = count
        if depends_on is not None:
            self._values["depends_on"] = depends_on
        if for_each is not None:
            self._values["for_each"] = for_each
        if lifecycle is not None:
            self._values["lifecycle"] = lifecycle
        if provider is not None:
            self._values["provider"] = provider
        if provisioners is not None:
            self._values["provisioners"] = provisioners
        if code_handlers is not None:
            self._values["code_handlers"] = code_handlers
        if handler_configs is not None:
            self._values["handler_configs"] = handler_configs
        if publish_auth_mode is not None:
            self._values["publish_auth_mode"] = publish_auth_mode
        if region is not None:
            self._values["region"] = region
        if subscribe_auth_mode is not None:
            self._values["subscribe_auth_mode"] = subscribe_auth_mode
        if tags is not None:
            self._values["tags"] = tags

    @builtins.property
    def connection(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.SSHProvisionerConnection", "_cdktn_78ede62e.WinrmProvisionerConnection"]]:
        '''
        :stability: experimental
        '''
        result = self._values.get("connection")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.SSHProvisionerConnection", "_cdktn_78ede62e.WinrmProvisionerConnection"]], result)

    @builtins.property
    def count(
        self,
    ) -> typing.Optional[typing.Union[jsii.Number, "_cdktn_78ede62e.TerraformCount"]]:
        '''
        :stability: experimental
        '''
        result = self._values.get("count")
        return typing.cast(typing.Optional[typing.Union[jsii.Number, "_cdktn_78ede62e.TerraformCount"]], result)

    @builtins.property
    def depends_on(
        self,
    ) -> typing.Optional[typing.List["_cdktn_78ede62e.ITerraformDependable"]]:
        '''
        :stability: experimental
        '''
        result = self._values.get("depends_on")
        return typing.cast(typing.Optional[typing.List["_cdktn_78ede62e.ITerraformDependable"]], result)

    @builtins.property
    def for_each(self) -> typing.Optional["_cdktn_78ede62e.ITerraformIterator"]:
        '''
        :stability: experimental
        '''
        result = self._values.get("for_each")
        return typing.cast(typing.Optional["_cdktn_78ede62e.ITerraformIterator"], result)

    @builtins.property
    def lifecycle(
        self,
    ) -> typing.Optional["_cdktn_78ede62e.TerraformResourceLifecycle"]:
        '''
        :stability: experimental
        '''
        result = self._values.get("lifecycle")
        return typing.cast(typing.Optional["_cdktn_78ede62e.TerraformResourceLifecycle"], result)

    @builtins.property
    def provider(self) -> typing.Optional["_cdktn_78ede62e.TerraformProvider"]:
        '''
        :stability: experimental
        '''
        result = self._values.get("provider")
        return typing.cast(typing.Optional["_cdktn_78ede62e.TerraformProvider"], result)

    @builtins.property
    def provisioners(
        self,
    ) -> typing.Optional[typing.List[typing.Union["_cdktn_78ede62e.FileProvisioner", "_cdktn_78ede62e.LocalExecProvisioner", "_cdktn_78ede62e.RemoteExecProvisioner"]]]:
        '''
        :stability: experimental
        '''
        result = self._values.get("provisioners")
        return typing.cast(typing.Optional[typing.List[typing.Union["_cdktn_78ede62e.FileProvisioner", "_cdktn_78ede62e.LocalExecProvisioner", "_cdktn_78ede62e.RemoteExecProvisioner"]]], result)

    @builtins.property
    def api_id(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/appsync_channel_namespace#api_id AppsyncChannelNamespace#api_id}.'''
        result = self._values.get("api_id")
        assert result is not None, "Required property 'api_id' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def name(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/appsync_channel_namespace#name AppsyncChannelNamespace#name}.'''
        result = self._values.get("name")
        assert result is not None, "Required property 'name' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def code_handlers(self) -> typing.Optional[builtins.str]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/appsync_channel_namespace#code_handlers AppsyncChannelNamespace#code_handlers}.'''
        result = self._values.get("code_handlers")
        return typing.cast(typing.Optional[builtins.str], result)

    @builtins.property
    def handler_configs(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["AppsyncChannelNamespaceHandlerConfigs"]]]:
        '''handler_configs block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/appsync_channel_namespace#handler_configs AppsyncChannelNamespace#handler_configs}
        '''
        result = self._values.get("handler_configs")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["AppsyncChannelNamespaceHandlerConfigs"]]], result)

    @builtins.property
    def publish_auth_mode(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["AppsyncChannelNamespacePublishAuthMode"]]]:
        '''publish_auth_mode block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/appsync_channel_namespace#publish_auth_mode AppsyncChannelNamespace#publish_auth_mode}
        '''
        result = self._values.get("publish_auth_mode")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["AppsyncChannelNamespacePublishAuthMode"]]], result)

    @builtins.property
    def region(self) -> typing.Optional[builtins.str]:
        '''Region where this resource will be `managed <https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints>`_. Defaults to the Region set in the `provider configuration <https://registry.terraform.io/providers/hashicorp/aws/latest/docs#aws-configuration-reference>`_.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/appsync_channel_namespace#region AppsyncChannelNamespace#region}
        '''
        result = self._values.get("region")
        return typing.cast(typing.Optional[builtins.str], result)

    @builtins.property
    def subscribe_auth_mode(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["AppsyncChannelNamespaceSubscribeAuthMode"]]]:
        '''subscribe_auth_mode block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/appsync_channel_namespace#subscribe_auth_mode AppsyncChannelNamespace#subscribe_auth_mode}
        '''
        result = self._values.get("subscribe_auth_mode")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["AppsyncChannelNamespaceSubscribeAuthMode"]]], result)

    @builtins.property
    def tags(self) -> typing.Optional[typing.Mapping[builtins.str, builtins.str]]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/appsync_channel_namespace#tags AppsyncChannelNamespace#tags}.'''
        result = self._values.get("tags")
        return typing.cast(typing.Optional[typing.Mapping[builtins.str, builtins.str]], result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "AppsyncChannelNamespaceConfig(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.appsyncChannelNamespace.AppsyncChannelNamespaceHandlerConfigs",
    jsii_struct_bases=[],
    name_mapping={"on_publish": "onPublish", "on_subscribe": "onSubscribe"},
)
class AppsyncChannelNamespaceHandlerConfigs:
    def __init__(
        self,
        *,
        on_publish: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["AppsyncChannelNamespaceHandlerConfigsOnPublish", typing.Dict[builtins.str, typing.Any]]]]] = None,
        on_subscribe: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["AppsyncChannelNamespaceHandlerConfigsOnSubscribe", typing.Dict[builtins.str, typing.Any]]]]] = None,
    ) -> None:
        '''
        :param on_publish: on_publish block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/appsync_channel_namespace#on_publish AppsyncChannelNamespace#on_publish}
        :param on_subscribe: on_subscribe block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/appsync_channel_namespace#on_subscribe AppsyncChannelNamespace#on_subscribe}
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__d14a598f8f1bcfdb1a658f1f209dc8312dde1b8a18ee0b90ace85fba1e4f32e0)
            check_type(argname="argument on_publish", value=on_publish, expected_type=type_hints["on_publish"])
            check_type(argname="argument on_subscribe", value=on_subscribe, expected_type=type_hints["on_subscribe"])
        self._values: typing.Dict[builtins.str, typing.Any] = {}
        if on_publish is not None:
            self._values["on_publish"] = on_publish
        if on_subscribe is not None:
            self._values["on_subscribe"] = on_subscribe

    @builtins.property
    def on_publish(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["AppsyncChannelNamespaceHandlerConfigsOnPublish"]]]:
        '''on_publish block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/appsync_channel_namespace#on_publish AppsyncChannelNamespace#on_publish}
        '''
        result = self._values.get("on_publish")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["AppsyncChannelNamespaceHandlerConfigsOnPublish"]]], result)

    @builtins.property
    def on_subscribe(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["AppsyncChannelNamespaceHandlerConfigsOnSubscribe"]]]:
        '''on_subscribe block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/appsync_channel_namespace#on_subscribe AppsyncChannelNamespace#on_subscribe}
        '''
        result = self._values.get("on_subscribe")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["AppsyncChannelNamespaceHandlerConfigsOnSubscribe"]]], result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "AppsyncChannelNamespaceHandlerConfigs(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


class AppsyncChannelNamespaceHandlerConfigsList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.appsyncChannelNamespace.AppsyncChannelNamespaceHandlerConfigsList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__28a697cb55f226f4258dae635d75edd96e3e0ec8dbb79322484d27602c17869e)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "AppsyncChannelNamespaceHandlerConfigsOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__37235f2d13250a42f3944778796f75df71eeaeb620129ff57b1ca5679d9a452d)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("AppsyncChannelNamespaceHandlerConfigsOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["AppsyncChannelNamespaceHandlerConfigs"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["AppsyncChannelNamespaceHandlerConfigs"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["AppsyncChannelNamespaceHandlerConfigs"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__f73f2372968a15036df53e2f64e828575e93330954a32066ebb1ad82f91e7507)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.appsyncChannelNamespace.AppsyncChannelNamespaceHandlerConfigsOnPublish",
    jsii_struct_bases=[],
    name_mapping={"behavior": "behavior", "integration": "integration"},
)
class AppsyncChannelNamespaceHandlerConfigsOnPublish:
    def __init__(
        self,
        *,
        behavior: builtins.str,
        integration: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["AppsyncChannelNamespaceHandlerConfigsOnPublishIntegration", typing.Dict[builtins.str, typing.Any]]]]] = None,
    ) -> None:
        '''
        :param behavior: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/appsync_channel_namespace#behavior AppsyncChannelNamespace#behavior}.
        :param integration: integration block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/appsync_channel_namespace#integration AppsyncChannelNamespace#integration}
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__e0b012d6e387269114e0f0e1506e63dbe35f8d129497bf2e1d9da5ab45a4043b)
            check_type(argname="argument behavior", value=behavior, expected_type=type_hints["behavior"])
            check_type(argname="argument integration", value=integration, expected_type=type_hints["integration"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "behavior": behavior,
        }
        if integration is not None:
            self._values["integration"] = integration

    @builtins.property
    def behavior(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/appsync_channel_namespace#behavior AppsyncChannelNamespace#behavior}.'''
        result = self._values.get("behavior")
        assert result is not None, "Required property 'behavior' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def integration(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["AppsyncChannelNamespaceHandlerConfigsOnPublishIntegration"]]]:
        '''integration block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/appsync_channel_namespace#integration AppsyncChannelNamespace#integration}
        '''
        result = self._values.get("integration")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["AppsyncChannelNamespaceHandlerConfigsOnPublishIntegration"]]], result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "AppsyncChannelNamespaceHandlerConfigsOnPublish(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.appsyncChannelNamespace.AppsyncChannelNamespaceHandlerConfigsOnPublishIntegration",
    jsii_struct_bases=[],
    name_mapping={
        "data_source_name": "dataSourceName",
        "lambda_config": "lambdaConfig",
    },
)
class AppsyncChannelNamespaceHandlerConfigsOnPublishIntegration:
    def __init__(
        self,
        *,
        data_source_name: builtins.str,
        lambda_config: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["AppsyncChannelNamespaceHandlerConfigsOnPublishIntegrationLambdaConfig", typing.Dict[builtins.str, typing.Any]]]]] = None,
    ) -> None:
        '''
        :param data_source_name: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/appsync_channel_namespace#data_source_name AppsyncChannelNamespace#data_source_name}.
        :param lambda_config: lambda_config block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/appsync_channel_namespace#lambda_config AppsyncChannelNamespace#lambda_config}
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__3ecb16d9bdf36db22b774d92bc22e4484abf3e85e52a32151b76d882c9277942)
            check_type(argname="argument data_source_name", value=data_source_name, expected_type=type_hints["data_source_name"])
            check_type(argname="argument lambda_config", value=lambda_config, expected_type=type_hints["lambda_config"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "data_source_name": data_source_name,
        }
        if lambda_config is not None:
            self._values["lambda_config"] = lambda_config

    @builtins.property
    def data_source_name(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/appsync_channel_namespace#data_source_name AppsyncChannelNamespace#data_source_name}.'''
        result = self._values.get("data_source_name")
        assert result is not None, "Required property 'data_source_name' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def lambda_config(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["AppsyncChannelNamespaceHandlerConfigsOnPublishIntegrationLambdaConfig"]]]:
        '''lambda_config block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/appsync_channel_namespace#lambda_config AppsyncChannelNamespace#lambda_config}
        '''
        result = self._values.get("lambda_config")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["AppsyncChannelNamespaceHandlerConfigsOnPublishIntegrationLambdaConfig"]]], result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "AppsyncChannelNamespaceHandlerConfigsOnPublishIntegration(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.appsyncChannelNamespace.AppsyncChannelNamespaceHandlerConfigsOnPublishIntegrationLambdaConfig",
    jsii_struct_bases=[],
    name_mapping={"invoke_type": "invokeType"},
)
class AppsyncChannelNamespaceHandlerConfigsOnPublishIntegrationLambdaConfig:
    def __init__(self, *, invoke_type: typing.Optional[builtins.str] = None) -> None:
        '''
        :param invoke_type: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/appsync_channel_namespace#invoke_type AppsyncChannelNamespace#invoke_type}.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__61a5b71e1c1376901279eea7cffe9eaf009be7ae0da3502595eb8a07dbc18049)
            check_type(argname="argument invoke_type", value=invoke_type, expected_type=type_hints["invoke_type"])
        self._values: typing.Dict[builtins.str, typing.Any] = {}
        if invoke_type is not None:
            self._values["invoke_type"] = invoke_type

    @builtins.property
    def invoke_type(self) -> typing.Optional[builtins.str]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/appsync_channel_namespace#invoke_type AppsyncChannelNamespace#invoke_type}.'''
        result = self._values.get("invoke_type")
        return typing.cast(typing.Optional[builtins.str], result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "AppsyncChannelNamespaceHandlerConfigsOnPublishIntegrationLambdaConfig(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


class AppsyncChannelNamespaceHandlerConfigsOnPublishIntegrationLambdaConfigList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.appsyncChannelNamespace.AppsyncChannelNamespaceHandlerConfigsOnPublishIntegrationLambdaConfigList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__a58e697bb42d96a7ede3439cf9ef12cad5331d3aa86020c0549de7231ffdcf21)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "AppsyncChannelNamespaceHandlerConfigsOnPublishIntegrationLambdaConfigOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__7d5c6b8c0707cae2bd1f92dd4870af2a8877a98dfe7bea6b6c4794bc508ff8e5)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("AppsyncChannelNamespaceHandlerConfigsOnPublishIntegrationLambdaConfigOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["AppsyncChannelNamespaceHandlerConfigsOnPublishIntegrationLambdaConfig"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["AppsyncChannelNamespaceHandlerConfigsOnPublishIntegrationLambdaConfig"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["AppsyncChannelNamespaceHandlerConfigsOnPublishIntegrationLambdaConfig"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__5432e4318b4d83240c479110ac741b8f3a3ff5a71f65de863a7f3c13e9b72054)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class AppsyncChannelNamespaceHandlerConfigsOnPublishIntegrationLambdaConfigOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.appsyncChannelNamespace.AppsyncChannelNamespaceHandlerConfigsOnPublishIntegrationLambdaConfigOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__ec5ef8b00afd6ba8de1dac60a9335682d37e1f1ad70f114f6f0c02c00cba72df)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @jsii.member(jsii_name="resetInvokeType")
    def reset_invoke_type(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetInvokeType", []))

    @builtins.property
    @jsii.member(jsii_name="invokeTypeInput")
    def invoke_type_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "invokeTypeInput"))

    @builtins.property
    @jsii.member(jsii_name="invokeType")
    def invoke_type(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "invokeType"))

    @invoke_type.setter
    def invoke_type(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__46eb5db18ac955dcf64bc1af762b5d26691ca42979bc47b9752081d271db8721)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "invokeType", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "AppsyncChannelNamespaceHandlerConfigsOnPublishIntegrationLambdaConfig"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "AppsyncChannelNamespaceHandlerConfigsOnPublishIntegrationLambdaConfig"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "AppsyncChannelNamespaceHandlerConfigsOnPublishIntegrationLambdaConfig"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__f081fc3f21f723fa562b3dfc9dabe54717db7fd0fe4652d03c9924b7356a3e36)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class AppsyncChannelNamespaceHandlerConfigsOnPublishIntegrationList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.appsyncChannelNamespace.AppsyncChannelNamespaceHandlerConfigsOnPublishIntegrationList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__cd86003e1730f54ea5ed478355c3f8541e3e6e373b13153756bc69a3d8acef02)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "AppsyncChannelNamespaceHandlerConfigsOnPublishIntegrationOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__98e60f7b35fc2b317a1cbf10a0bff9ae2d077c6f327b61848b7b3ecef040b023)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("AppsyncChannelNamespaceHandlerConfigsOnPublishIntegrationOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["AppsyncChannelNamespaceHandlerConfigsOnPublishIntegration"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["AppsyncChannelNamespaceHandlerConfigsOnPublishIntegration"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["AppsyncChannelNamespaceHandlerConfigsOnPublishIntegration"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__983eb2e729dab2a618efb278f7a4f933241aef69e61b0d6082002c5fd7e245f3)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class AppsyncChannelNamespaceHandlerConfigsOnPublishIntegrationOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.appsyncChannelNamespace.AppsyncChannelNamespaceHandlerConfigsOnPublishIntegrationOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__7babae2c4af3957792aeec02ce8182700731bca98d8bf1eddb02e3fe82073b67)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @jsii.member(jsii_name="putLambdaConfig")
    def put_lambda_config(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["AppsyncChannelNamespaceHandlerConfigsOnPublishIntegrationLambdaConfig", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__7149bf813ec379f9573b398337901ee55d88e1b1cee078cdf13311b4334ea00a)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putLambdaConfig", [value]))

    @jsii.member(jsii_name="resetLambdaConfig")
    def reset_lambda_config(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetLambdaConfig", []))

    @builtins.property
    @jsii.member(jsii_name="lambdaConfig")
    def lambda_config(
        self,
    ) -> "AppsyncChannelNamespaceHandlerConfigsOnPublishIntegrationLambdaConfigList":
        return typing.cast("AppsyncChannelNamespaceHandlerConfigsOnPublishIntegrationLambdaConfigList", jsii.get(self, "lambdaConfig"))

    @builtins.property
    @jsii.member(jsii_name="dataSourceNameInput")
    def data_source_name_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "dataSourceNameInput"))

    @builtins.property
    @jsii.member(jsii_name="lambdaConfigInput")
    def lambda_config_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["AppsyncChannelNamespaceHandlerConfigsOnPublishIntegrationLambdaConfig"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["AppsyncChannelNamespaceHandlerConfigsOnPublishIntegrationLambdaConfig"]]], jsii.get(self, "lambdaConfigInput"))

    @builtins.property
    @jsii.member(jsii_name="dataSourceName")
    def data_source_name(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "dataSourceName"))

    @data_source_name.setter
    def data_source_name(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__b88e4e3f57689844f83485081704a25ce5473255f9b947f3d6f344be97b3598d)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "dataSourceName", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "AppsyncChannelNamespaceHandlerConfigsOnPublishIntegration"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "AppsyncChannelNamespaceHandlerConfigsOnPublishIntegration"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "AppsyncChannelNamespaceHandlerConfigsOnPublishIntegration"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__660172153b6ec866a479681b693be8444ebb21536b027cfcdb16c43d1d7b3571)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class AppsyncChannelNamespaceHandlerConfigsOnPublishList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.appsyncChannelNamespace.AppsyncChannelNamespaceHandlerConfigsOnPublishList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__f44665e2403d24ba52b168234003d820ec65e985a7afaf3c91c63aabbc589123)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "AppsyncChannelNamespaceHandlerConfigsOnPublishOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__404c7ac59dd0b78ca1280b27ba32fdd7b195bd9c47ec5011a6d3ca934fdcd1d2)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("AppsyncChannelNamespaceHandlerConfigsOnPublishOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["AppsyncChannelNamespaceHandlerConfigsOnPublish"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["AppsyncChannelNamespaceHandlerConfigsOnPublish"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["AppsyncChannelNamespaceHandlerConfigsOnPublish"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__430de5f9fba34d9ff0dfaf77cebac9de71994dc0a2cc1464c670022d793c0e36)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class AppsyncChannelNamespaceHandlerConfigsOnPublishOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.appsyncChannelNamespace.AppsyncChannelNamespaceHandlerConfigsOnPublishOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__07085c8c6054330814783699488a7eb43ad3623c0f75b844f0a5b063ea55fee6)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @jsii.member(jsii_name="putIntegration")
    def put_integration(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["AppsyncChannelNamespaceHandlerConfigsOnPublishIntegration", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__96922d2277d5d3d2bcc54d5dcd7de3cebbd344f389a29d332ceab6f2ee21ff91)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putIntegration", [value]))

    @jsii.member(jsii_name="resetIntegration")
    def reset_integration(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetIntegration", []))

    @builtins.property
    @jsii.member(jsii_name="integration")
    def integration(
        self,
    ) -> "AppsyncChannelNamespaceHandlerConfigsOnPublishIntegrationList":
        return typing.cast("AppsyncChannelNamespaceHandlerConfigsOnPublishIntegrationList", jsii.get(self, "integration"))

    @builtins.property
    @jsii.member(jsii_name="behaviorInput")
    def behavior_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "behaviorInput"))

    @builtins.property
    @jsii.member(jsii_name="integrationInput")
    def integration_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["AppsyncChannelNamespaceHandlerConfigsOnPublishIntegration"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["AppsyncChannelNamespaceHandlerConfigsOnPublishIntegration"]]], jsii.get(self, "integrationInput"))

    @builtins.property
    @jsii.member(jsii_name="behavior")
    def behavior(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "behavior"))

    @behavior.setter
    def behavior(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__da096ea95f960a8883f86c5ae96096d921450eb01fdd0c109643f23586d880e7)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "behavior", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "AppsyncChannelNamespaceHandlerConfigsOnPublish"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "AppsyncChannelNamespaceHandlerConfigsOnPublish"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "AppsyncChannelNamespaceHandlerConfigsOnPublish"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__79b9be2320a74ef88bf9b3fbdb29d50edf984cd36cb2f1032e816ddefa9b9f99)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.appsyncChannelNamespace.AppsyncChannelNamespaceHandlerConfigsOnSubscribe",
    jsii_struct_bases=[],
    name_mapping={"behavior": "behavior", "integration": "integration"},
)
class AppsyncChannelNamespaceHandlerConfigsOnSubscribe:
    def __init__(
        self,
        *,
        behavior: builtins.str,
        integration: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["AppsyncChannelNamespaceHandlerConfigsOnSubscribeIntegration", typing.Dict[builtins.str, typing.Any]]]]] = None,
    ) -> None:
        '''
        :param behavior: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/appsync_channel_namespace#behavior AppsyncChannelNamespace#behavior}.
        :param integration: integration block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/appsync_channel_namespace#integration AppsyncChannelNamespace#integration}
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__166a731c2b44a45a012a4b8f94a9688c41b207249d65a4baaa9879f4e934392f)
            check_type(argname="argument behavior", value=behavior, expected_type=type_hints["behavior"])
            check_type(argname="argument integration", value=integration, expected_type=type_hints["integration"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "behavior": behavior,
        }
        if integration is not None:
            self._values["integration"] = integration

    @builtins.property
    def behavior(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/appsync_channel_namespace#behavior AppsyncChannelNamespace#behavior}.'''
        result = self._values.get("behavior")
        assert result is not None, "Required property 'behavior' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def integration(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["AppsyncChannelNamespaceHandlerConfigsOnSubscribeIntegration"]]]:
        '''integration block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/appsync_channel_namespace#integration AppsyncChannelNamespace#integration}
        '''
        result = self._values.get("integration")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["AppsyncChannelNamespaceHandlerConfigsOnSubscribeIntegration"]]], result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "AppsyncChannelNamespaceHandlerConfigsOnSubscribe(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.appsyncChannelNamespace.AppsyncChannelNamespaceHandlerConfigsOnSubscribeIntegration",
    jsii_struct_bases=[],
    name_mapping={
        "data_source_name": "dataSourceName",
        "lambda_config": "lambdaConfig",
    },
)
class AppsyncChannelNamespaceHandlerConfigsOnSubscribeIntegration:
    def __init__(
        self,
        *,
        data_source_name: builtins.str,
        lambda_config: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["AppsyncChannelNamespaceHandlerConfigsOnSubscribeIntegrationLambdaConfig", typing.Dict[builtins.str, typing.Any]]]]] = None,
    ) -> None:
        '''
        :param data_source_name: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/appsync_channel_namespace#data_source_name AppsyncChannelNamespace#data_source_name}.
        :param lambda_config: lambda_config block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/appsync_channel_namespace#lambda_config AppsyncChannelNamespace#lambda_config}
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__081df70a9c389334a9a50df3e58527c5fbeb25b33401d7ccbd408a9a56facf31)
            check_type(argname="argument data_source_name", value=data_source_name, expected_type=type_hints["data_source_name"])
            check_type(argname="argument lambda_config", value=lambda_config, expected_type=type_hints["lambda_config"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "data_source_name": data_source_name,
        }
        if lambda_config is not None:
            self._values["lambda_config"] = lambda_config

    @builtins.property
    def data_source_name(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/appsync_channel_namespace#data_source_name AppsyncChannelNamespace#data_source_name}.'''
        result = self._values.get("data_source_name")
        assert result is not None, "Required property 'data_source_name' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def lambda_config(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["AppsyncChannelNamespaceHandlerConfigsOnSubscribeIntegrationLambdaConfig"]]]:
        '''lambda_config block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/appsync_channel_namespace#lambda_config AppsyncChannelNamespace#lambda_config}
        '''
        result = self._values.get("lambda_config")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["AppsyncChannelNamespaceHandlerConfigsOnSubscribeIntegrationLambdaConfig"]]], result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "AppsyncChannelNamespaceHandlerConfigsOnSubscribeIntegration(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.appsyncChannelNamespace.AppsyncChannelNamespaceHandlerConfigsOnSubscribeIntegrationLambdaConfig",
    jsii_struct_bases=[],
    name_mapping={"invoke_type": "invokeType"},
)
class AppsyncChannelNamespaceHandlerConfigsOnSubscribeIntegrationLambdaConfig:
    def __init__(self, *, invoke_type: typing.Optional[builtins.str] = None) -> None:
        '''
        :param invoke_type: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/appsync_channel_namespace#invoke_type AppsyncChannelNamespace#invoke_type}.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__d6427231b7ecf52050e7518712f4f1a343a5ce21b4182e6eccbfe7d4afbe848c)
            check_type(argname="argument invoke_type", value=invoke_type, expected_type=type_hints["invoke_type"])
        self._values: typing.Dict[builtins.str, typing.Any] = {}
        if invoke_type is not None:
            self._values["invoke_type"] = invoke_type

    @builtins.property
    def invoke_type(self) -> typing.Optional[builtins.str]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/appsync_channel_namespace#invoke_type AppsyncChannelNamespace#invoke_type}.'''
        result = self._values.get("invoke_type")
        return typing.cast(typing.Optional[builtins.str], result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "AppsyncChannelNamespaceHandlerConfigsOnSubscribeIntegrationLambdaConfig(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


class AppsyncChannelNamespaceHandlerConfigsOnSubscribeIntegrationLambdaConfigList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.appsyncChannelNamespace.AppsyncChannelNamespaceHandlerConfigsOnSubscribeIntegrationLambdaConfigList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__bc87fbdae9fe1893884825e6c848591924950e8d7aabdf1414258ca33e7640bd)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "AppsyncChannelNamespaceHandlerConfigsOnSubscribeIntegrationLambdaConfigOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__5ef01e6be942bea6d47f7b8ee9452f07f0305eff882daa5a632a43fdf4fe510d)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("AppsyncChannelNamespaceHandlerConfigsOnSubscribeIntegrationLambdaConfigOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["AppsyncChannelNamespaceHandlerConfigsOnSubscribeIntegrationLambdaConfig"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["AppsyncChannelNamespaceHandlerConfigsOnSubscribeIntegrationLambdaConfig"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["AppsyncChannelNamespaceHandlerConfigsOnSubscribeIntegrationLambdaConfig"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__6f588639406b37e9c3ca3c5434bd6aecf15e4ff0e1f5884e3cc51d68936f5569)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class AppsyncChannelNamespaceHandlerConfigsOnSubscribeIntegrationLambdaConfigOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.appsyncChannelNamespace.AppsyncChannelNamespaceHandlerConfigsOnSubscribeIntegrationLambdaConfigOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__31f9a47457cac19c006f59e6f94abbe0d86db8eac114e5ac31047631b2326ded)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @jsii.member(jsii_name="resetInvokeType")
    def reset_invoke_type(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetInvokeType", []))

    @builtins.property
    @jsii.member(jsii_name="invokeTypeInput")
    def invoke_type_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "invokeTypeInput"))

    @builtins.property
    @jsii.member(jsii_name="invokeType")
    def invoke_type(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "invokeType"))

    @invoke_type.setter
    def invoke_type(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__347a77f03679dcde0373a57d38ec89b1bc9fe3787c9321250dfaba4f767825ba)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "invokeType", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "AppsyncChannelNamespaceHandlerConfigsOnSubscribeIntegrationLambdaConfig"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "AppsyncChannelNamespaceHandlerConfigsOnSubscribeIntegrationLambdaConfig"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "AppsyncChannelNamespaceHandlerConfigsOnSubscribeIntegrationLambdaConfig"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__c92040c1bc3fd6d87c5e2afde072b8970bcb3b46fa28198583eecfafd2807691)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class AppsyncChannelNamespaceHandlerConfigsOnSubscribeIntegrationList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.appsyncChannelNamespace.AppsyncChannelNamespaceHandlerConfigsOnSubscribeIntegrationList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__b48c5de21d41d85044fea668abddbb0e947fa371104d06d17d372d20fd0accba)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "AppsyncChannelNamespaceHandlerConfigsOnSubscribeIntegrationOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__e03cec76ea4b9389b6a0fc94d3a28e6597d2c11152bae0e56fe7522187fcee2c)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("AppsyncChannelNamespaceHandlerConfigsOnSubscribeIntegrationOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["AppsyncChannelNamespaceHandlerConfigsOnSubscribeIntegration"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["AppsyncChannelNamespaceHandlerConfigsOnSubscribeIntegration"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["AppsyncChannelNamespaceHandlerConfigsOnSubscribeIntegration"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__f628381d59bc51e613ef6b9c853114f2ffd3b1cd1ec93eabcee06af3bc1a9c96)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class AppsyncChannelNamespaceHandlerConfigsOnSubscribeIntegrationOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.appsyncChannelNamespace.AppsyncChannelNamespaceHandlerConfigsOnSubscribeIntegrationOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__ef7a666257a828d87aa642af760dd62c9f3e609aea36c1ba330a00865a8d7148)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @jsii.member(jsii_name="putLambdaConfig")
    def put_lambda_config(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["AppsyncChannelNamespaceHandlerConfigsOnSubscribeIntegrationLambdaConfig", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__e6beebd59d8eae22e4c929268ed9c65bf67bb77114dcd80ee3847de2eee88c94)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putLambdaConfig", [value]))

    @jsii.member(jsii_name="resetLambdaConfig")
    def reset_lambda_config(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetLambdaConfig", []))

    @builtins.property
    @jsii.member(jsii_name="lambdaConfig")
    def lambda_config(
        self,
    ) -> "AppsyncChannelNamespaceHandlerConfigsOnSubscribeIntegrationLambdaConfigList":
        return typing.cast("AppsyncChannelNamespaceHandlerConfigsOnSubscribeIntegrationLambdaConfigList", jsii.get(self, "lambdaConfig"))

    @builtins.property
    @jsii.member(jsii_name="dataSourceNameInput")
    def data_source_name_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "dataSourceNameInput"))

    @builtins.property
    @jsii.member(jsii_name="lambdaConfigInput")
    def lambda_config_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["AppsyncChannelNamespaceHandlerConfigsOnSubscribeIntegrationLambdaConfig"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["AppsyncChannelNamespaceHandlerConfigsOnSubscribeIntegrationLambdaConfig"]]], jsii.get(self, "lambdaConfigInput"))

    @builtins.property
    @jsii.member(jsii_name="dataSourceName")
    def data_source_name(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "dataSourceName"))

    @data_source_name.setter
    def data_source_name(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__b5bf5d3b1997c51d189efef95ce672ebe55b4194fa9ebc47ec4af7e3ed074c51)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "dataSourceName", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "AppsyncChannelNamespaceHandlerConfigsOnSubscribeIntegration"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "AppsyncChannelNamespaceHandlerConfigsOnSubscribeIntegration"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "AppsyncChannelNamespaceHandlerConfigsOnSubscribeIntegration"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__043d865994ba7b6d5feaba38975ea3aaee87ceeae3e0b114a60415a570dd650f)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class AppsyncChannelNamespaceHandlerConfigsOnSubscribeList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.appsyncChannelNamespace.AppsyncChannelNamespaceHandlerConfigsOnSubscribeList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__5c8c911653f3496c8598b1ba431f666cd0fc8c475e44c0e0560df8075b159077)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "AppsyncChannelNamespaceHandlerConfigsOnSubscribeOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__5bd571a21afc327aaf4ace2874648ad9aaf226a8e4dd236ac60e4de67d85d1e7)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("AppsyncChannelNamespaceHandlerConfigsOnSubscribeOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["AppsyncChannelNamespaceHandlerConfigsOnSubscribe"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["AppsyncChannelNamespaceHandlerConfigsOnSubscribe"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["AppsyncChannelNamespaceHandlerConfigsOnSubscribe"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__0f276d732c43ce4b3736b99fc4caed5e616d144f885c89db3320f10d9ad9540c)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class AppsyncChannelNamespaceHandlerConfigsOnSubscribeOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.appsyncChannelNamespace.AppsyncChannelNamespaceHandlerConfigsOnSubscribeOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__3064eb4616456ea4c0518bc90f37da089a1ed4a511ea4f4a368e94531848d838)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @jsii.member(jsii_name="putIntegration")
    def put_integration(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["AppsyncChannelNamespaceHandlerConfigsOnSubscribeIntegration", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__e064b5f82f87153248e6ddd9399b9b2c78ca4a5f511377c1d4d976b67cc02d83)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putIntegration", [value]))

    @jsii.member(jsii_name="resetIntegration")
    def reset_integration(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetIntegration", []))

    @builtins.property
    @jsii.member(jsii_name="integration")
    def integration(
        self,
    ) -> "AppsyncChannelNamespaceHandlerConfigsOnSubscribeIntegrationList":
        return typing.cast("AppsyncChannelNamespaceHandlerConfigsOnSubscribeIntegrationList", jsii.get(self, "integration"))

    @builtins.property
    @jsii.member(jsii_name="behaviorInput")
    def behavior_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "behaviorInput"))

    @builtins.property
    @jsii.member(jsii_name="integrationInput")
    def integration_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["AppsyncChannelNamespaceHandlerConfigsOnSubscribeIntegration"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["AppsyncChannelNamespaceHandlerConfigsOnSubscribeIntegration"]]], jsii.get(self, "integrationInput"))

    @builtins.property
    @jsii.member(jsii_name="behavior")
    def behavior(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "behavior"))

    @behavior.setter
    def behavior(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__bf6af68d2822454143726624cc0d103c34bdec9065f83552519d0db787ad5a3c)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "behavior", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "AppsyncChannelNamespaceHandlerConfigsOnSubscribe"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "AppsyncChannelNamespaceHandlerConfigsOnSubscribe"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "AppsyncChannelNamespaceHandlerConfigsOnSubscribe"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__a260032ff74d25b45d2c51292b85f097171b0499544344f88a3720815dcc60c0)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class AppsyncChannelNamespaceHandlerConfigsOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.appsyncChannelNamespace.AppsyncChannelNamespaceHandlerConfigsOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__bb6692b005fb0753471b34381d0b93a97f3a21387ffa904945257cc2721ac1b7)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @jsii.member(jsii_name="putOnPublish")
    def put_on_publish(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["AppsyncChannelNamespaceHandlerConfigsOnPublish", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__bfc0f6896dd0b86786c8a476fda74c824057a62ee532d9205b8b93aa09656abf)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putOnPublish", [value]))

    @jsii.member(jsii_name="putOnSubscribe")
    def put_on_subscribe(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["AppsyncChannelNamespaceHandlerConfigsOnSubscribe", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__9fe797cb01902c55f9a8f3f1a3065a4c25027dde06445062eb5a7a1dd1b21225)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putOnSubscribe", [value]))

    @jsii.member(jsii_name="resetOnPublish")
    def reset_on_publish(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetOnPublish", []))

    @jsii.member(jsii_name="resetOnSubscribe")
    def reset_on_subscribe(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetOnSubscribe", []))

    @builtins.property
    @jsii.member(jsii_name="onPublish")
    def on_publish(self) -> "AppsyncChannelNamespaceHandlerConfigsOnPublishList":
        return typing.cast("AppsyncChannelNamespaceHandlerConfigsOnPublishList", jsii.get(self, "onPublish"))

    @builtins.property
    @jsii.member(jsii_name="onSubscribe")
    def on_subscribe(self) -> "AppsyncChannelNamespaceHandlerConfigsOnSubscribeList":
        return typing.cast("AppsyncChannelNamespaceHandlerConfigsOnSubscribeList", jsii.get(self, "onSubscribe"))

    @builtins.property
    @jsii.member(jsii_name="onPublishInput")
    def on_publish_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["AppsyncChannelNamespaceHandlerConfigsOnPublish"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["AppsyncChannelNamespaceHandlerConfigsOnPublish"]]], jsii.get(self, "onPublishInput"))

    @builtins.property
    @jsii.member(jsii_name="onSubscribeInput")
    def on_subscribe_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["AppsyncChannelNamespaceHandlerConfigsOnSubscribe"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["AppsyncChannelNamespaceHandlerConfigsOnSubscribe"]]], jsii.get(self, "onSubscribeInput"))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "AppsyncChannelNamespaceHandlerConfigs"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "AppsyncChannelNamespaceHandlerConfigs"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "AppsyncChannelNamespaceHandlerConfigs"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__06255e0dc6acd1571799404f5931db8504d1e281b763701ebddbe39a059c2dcf)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.appsyncChannelNamespace.AppsyncChannelNamespacePublishAuthMode",
    jsii_struct_bases=[],
    name_mapping={"auth_type": "authType"},
)
class AppsyncChannelNamespacePublishAuthMode:
    def __init__(self, *, auth_type: builtins.str) -> None:
        '''
        :param auth_type: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/appsync_channel_namespace#auth_type AppsyncChannelNamespace#auth_type}.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__bae8e2dcb0091bffd6e5fea9a7586d56637c2433772f50971e860656dcfb7773)
            check_type(argname="argument auth_type", value=auth_type, expected_type=type_hints["auth_type"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "auth_type": auth_type,
        }

    @builtins.property
    def auth_type(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/appsync_channel_namespace#auth_type AppsyncChannelNamespace#auth_type}.'''
        result = self._values.get("auth_type")
        assert result is not None, "Required property 'auth_type' is missing"
        return typing.cast(builtins.str, result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "AppsyncChannelNamespacePublishAuthMode(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


class AppsyncChannelNamespacePublishAuthModeList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.appsyncChannelNamespace.AppsyncChannelNamespacePublishAuthModeList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__02ab13053dac6c4707c8789ec059a0df944249a25a254df456329b703bb86c94)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "AppsyncChannelNamespacePublishAuthModeOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__29dba8f5e18eb4be442dca729453c541c621722ab41c087c6e641b21c5e35a1e)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("AppsyncChannelNamespacePublishAuthModeOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["AppsyncChannelNamespacePublishAuthMode"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["AppsyncChannelNamespacePublishAuthMode"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["AppsyncChannelNamespacePublishAuthMode"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__b7302823f5db09c5b7e7ea9292a109c399a61b36cb723fec6fff482605048454)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class AppsyncChannelNamespacePublishAuthModeOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.appsyncChannelNamespace.AppsyncChannelNamespacePublishAuthModeOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__22f2349c115e8df43132f87a0ce375831ae258f92013c738c435252e54226a2a)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @builtins.property
    @jsii.member(jsii_name="authTypeInput")
    def auth_type_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "authTypeInput"))

    @builtins.property
    @jsii.member(jsii_name="authType")
    def auth_type(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "authType"))

    @auth_type.setter
    def auth_type(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__759a218ec31d344a401f3e44d6d66932dab5ac58ad0547c3ee63260fab9cdd85)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "authType", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "AppsyncChannelNamespacePublishAuthMode"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "AppsyncChannelNamespacePublishAuthMode"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "AppsyncChannelNamespacePublishAuthMode"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__01103b2c4d79a8603f25fa69c7025a4cbfa0554096c5c0e41bea08181c33ac1a)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.appsyncChannelNamespace.AppsyncChannelNamespaceSubscribeAuthMode",
    jsii_struct_bases=[],
    name_mapping={"auth_type": "authType"},
)
class AppsyncChannelNamespaceSubscribeAuthMode:
    def __init__(self, *, auth_type: builtins.str) -> None:
        '''
        :param auth_type: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/appsync_channel_namespace#auth_type AppsyncChannelNamespace#auth_type}.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__4781fbc741abc9e8d575dd1b93b2624dde79f9d5bacbfe07d5ab98e61589a72c)
            check_type(argname="argument auth_type", value=auth_type, expected_type=type_hints["auth_type"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "auth_type": auth_type,
        }

    @builtins.property
    def auth_type(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/appsync_channel_namespace#auth_type AppsyncChannelNamespace#auth_type}.'''
        result = self._values.get("auth_type")
        assert result is not None, "Required property 'auth_type' is missing"
        return typing.cast(builtins.str, result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "AppsyncChannelNamespaceSubscribeAuthMode(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


class AppsyncChannelNamespaceSubscribeAuthModeList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.appsyncChannelNamespace.AppsyncChannelNamespaceSubscribeAuthModeList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__8262614795c37a0fc92d3511842304461aec80fa7a3803d3272ede9f7b471164)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "AppsyncChannelNamespaceSubscribeAuthModeOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__acf62a35fe0d437d834f131714f56bb813a07745ca4a084d60915968de1ebddf)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("AppsyncChannelNamespaceSubscribeAuthModeOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["AppsyncChannelNamespaceSubscribeAuthMode"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["AppsyncChannelNamespaceSubscribeAuthMode"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["AppsyncChannelNamespaceSubscribeAuthMode"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__8c3dedd4b25490359b2d375f02b1439eacf392c18d80ef6421a9c6aa9ea48e8e)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class AppsyncChannelNamespaceSubscribeAuthModeOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.appsyncChannelNamespace.AppsyncChannelNamespaceSubscribeAuthModeOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__de41996d15c04abc072f9423afcc4ccb728001598e4260efe3aa3f126816784e)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @builtins.property
    @jsii.member(jsii_name="authTypeInput")
    def auth_type_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "authTypeInput"))

    @builtins.property
    @jsii.member(jsii_name="authType")
    def auth_type(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "authType"))

    @auth_type.setter
    def auth_type(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__87ac1c51149d738a77431fefbb6924b86ec88681da8ab81f7793ea799a168ac8)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "authType", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "AppsyncChannelNamespaceSubscribeAuthMode"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "AppsyncChannelNamespaceSubscribeAuthMode"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "AppsyncChannelNamespaceSubscribeAuthMode"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__807903c09daa5b25698a859fd6193210770edc739c03ca33ab2e9af3a881769b)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


__all__ = [
    "AppsyncChannelNamespace",
    "AppsyncChannelNamespaceConfig",
    "AppsyncChannelNamespaceHandlerConfigs",
    "AppsyncChannelNamespaceHandlerConfigsList",
    "AppsyncChannelNamespaceHandlerConfigsOnPublish",
    "AppsyncChannelNamespaceHandlerConfigsOnPublishIntegration",
    "AppsyncChannelNamespaceHandlerConfigsOnPublishIntegrationLambdaConfig",
    "AppsyncChannelNamespaceHandlerConfigsOnPublishIntegrationLambdaConfigList",
    "AppsyncChannelNamespaceHandlerConfigsOnPublishIntegrationLambdaConfigOutputReference",
    "AppsyncChannelNamespaceHandlerConfigsOnPublishIntegrationList",
    "AppsyncChannelNamespaceHandlerConfigsOnPublishIntegrationOutputReference",
    "AppsyncChannelNamespaceHandlerConfigsOnPublishList",
    "AppsyncChannelNamespaceHandlerConfigsOnPublishOutputReference",
    "AppsyncChannelNamespaceHandlerConfigsOnSubscribe",
    "AppsyncChannelNamespaceHandlerConfigsOnSubscribeIntegration",
    "AppsyncChannelNamespaceHandlerConfigsOnSubscribeIntegrationLambdaConfig",
    "AppsyncChannelNamespaceHandlerConfigsOnSubscribeIntegrationLambdaConfigList",
    "AppsyncChannelNamespaceHandlerConfigsOnSubscribeIntegrationLambdaConfigOutputReference",
    "AppsyncChannelNamespaceHandlerConfigsOnSubscribeIntegrationList",
    "AppsyncChannelNamespaceHandlerConfigsOnSubscribeIntegrationOutputReference",
    "AppsyncChannelNamespaceHandlerConfigsOnSubscribeList",
    "AppsyncChannelNamespaceHandlerConfigsOnSubscribeOutputReference",
    "AppsyncChannelNamespaceHandlerConfigsOutputReference",
    "AppsyncChannelNamespacePublishAuthMode",
    "AppsyncChannelNamespacePublishAuthModeList",
    "AppsyncChannelNamespacePublishAuthModeOutputReference",
    "AppsyncChannelNamespaceSubscribeAuthMode",
    "AppsyncChannelNamespaceSubscribeAuthModeList",
    "AppsyncChannelNamespaceSubscribeAuthModeOutputReference",
]

publication.publish()

def _typecheckingstub__4ea04a3f9ff2f9aafcd2188462c00bdab15943953356131d8257b61c6808889c(
    scope: _constructs_77d1e7e8.Construct,
    id: builtins.str,
    *,
    api_id: builtins.str,
    name: builtins.str,
    code_handlers: typing.Optional[builtins.str] = None,
    handler_configs: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[AppsyncChannelNamespaceHandlerConfigs, typing.Dict[builtins.str, typing.Any]]]]] = None,
    publish_auth_mode: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[AppsyncChannelNamespacePublishAuthMode, typing.Dict[builtins.str, typing.Any]]]]] = None,
    region: typing.Optional[builtins.str] = None,
    subscribe_auth_mode: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[AppsyncChannelNamespaceSubscribeAuthMode, typing.Dict[builtins.str, typing.Any]]]]] = None,
    tags: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
    connection: typing.Optional[typing.Union[typing.Union[_cdktn_78ede62e.SSHProvisionerConnection, typing.Dict[builtins.str, typing.Any]], typing.Union[_cdktn_78ede62e.WinrmProvisionerConnection, typing.Dict[builtins.str, typing.Any]]]] = None,
    count: typing.Optional[typing.Union[jsii.Number, _cdktn_78ede62e.TerraformCount]] = None,
    depends_on: typing.Optional[typing.Sequence[_cdktn_78ede62e.ITerraformDependable]] = None,
    for_each: typing.Optional[_cdktn_78ede62e.ITerraformIterator] = None,
    lifecycle: typing.Optional[typing.Union[_cdktn_78ede62e.TerraformResourceLifecycle, typing.Dict[builtins.str, typing.Any]]] = None,
    provider: typing.Optional[_cdktn_78ede62e.TerraformProvider] = None,
    provisioners: typing.Optional[typing.Sequence[typing.Union[typing.Union[_cdktn_78ede62e.FileProvisioner, typing.Dict[builtins.str, typing.Any]], typing.Union[_cdktn_78ede62e.LocalExecProvisioner, typing.Dict[builtins.str, typing.Any]], typing.Union[_cdktn_78ede62e.RemoteExecProvisioner, typing.Dict[builtins.str, typing.Any]]]]] = None,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__6b13aae2cb37fd2b789985156a4f414e7d2092d5eb31b5ee0c2d35a9bc731164(
    scope: _constructs_77d1e7e8.Construct,
    import_to_id: builtins.str,
    import_from_id: builtins.str,
    provider: typing.Optional[_cdktn_78ede62e.TerraformProvider] = None,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__ef3c35c374dae3b52b3d0cf665184dde32f6c980972b1a9c817ebb187207d078(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[AppsyncChannelNamespaceHandlerConfigs, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__3d2d3b91ea45d57ff092dacca31988a87ca697d43783f7a064356343426daf50(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[AppsyncChannelNamespacePublishAuthMode, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__3d3eaf6e10fb05cc7a102de7ed3fe290cfb66c7c2a6a3ae8b804d1e4a539d747(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[AppsyncChannelNamespaceSubscribeAuthMode, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__b7e742bf23e75810b4f9f3f7e7cd56f644f129da63ddde43b95a09d6d9341918(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__c7df74c74be3dac159cda06aa4faf439542a29ea704a399fda351cb4bd5e86bd(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__c278712b87c97b86a4a3864476da463f0f3669b760e3de1a9fd5a920dd61001e(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__1de8aa64209b8081e850bb15d4654b22a0bf450cea95bed94988b70fb3f9e64e(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__59d4cbbd92d65194a2f1f82865fe1bbb77680423029924951c45c6b2ff30ecaa(
    value: typing.Mapping[builtins.str, builtins.str],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__d2f70884ad67d186d9b8424a1244de30dc1de945d8fa12426139cc8cd4851d7c(
    *,
    connection: typing.Optional[typing.Union[typing.Union[_cdktn_78ede62e.SSHProvisionerConnection, typing.Dict[builtins.str, typing.Any]], typing.Union[_cdktn_78ede62e.WinrmProvisionerConnection, typing.Dict[builtins.str, typing.Any]]]] = None,
    count: typing.Optional[typing.Union[jsii.Number, _cdktn_78ede62e.TerraformCount]] = None,
    depends_on: typing.Optional[typing.Sequence[_cdktn_78ede62e.ITerraformDependable]] = None,
    for_each: typing.Optional[_cdktn_78ede62e.ITerraformIterator] = None,
    lifecycle: typing.Optional[typing.Union[_cdktn_78ede62e.TerraformResourceLifecycle, typing.Dict[builtins.str, typing.Any]]] = None,
    provider: typing.Optional[_cdktn_78ede62e.TerraformProvider] = None,
    provisioners: typing.Optional[typing.Sequence[typing.Union[typing.Union[_cdktn_78ede62e.FileProvisioner, typing.Dict[builtins.str, typing.Any]], typing.Union[_cdktn_78ede62e.LocalExecProvisioner, typing.Dict[builtins.str, typing.Any]], typing.Union[_cdktn_78ede62e.RemoteExecProvisioner, typing.Dict[builtins.str, typing.Any]]]]] = None,
    api_id: builtins.str,
    name: builtins.str,
    code_handlers: typing.Optional[builtins.str] = None,
    handler_configs: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[AppsyncChannelNamespaceHandlerConfigs, typing.Dict[builtins.str, typing.Any]]]]] = None,
    publish_auth_mode: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[AppsyncChannelNamespacePublishAuthMode, typing.Dict[builtins.str, typing.Any]]]]] = None,
    region: typing.Optional[builtins.str] = None,
    subscribe_auth_mode: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[AppsyncChannelNamespaceSubscribeAuthMode, typing.Dict[builtins.str, typing.Any]]]]] = None,
    tags: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__d14a598f8f1bcfdb1a658f1f209dc8312dde1b8a18ee0b90ace85fba1e4f32e0(
    *,
    on_publish: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[AppsyncChannelNamespaceHandlerConfigsOnPublish, typing.Dict[builtins.str, typing.Any]]]]] = None,
    on_subscribe: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[AppsyncChannelNamespaceHandlerConfigsOnSubscribe, typing.Dict[builtins.str, typing.Any]]]]] = None,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__28a697cb55f226f4258dae635d75edd96e3e0ec8dbb79322484d27602c17869e(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__37235f2d13250a42f3944778796f75df71eeaeb620129ff57b1ca5679d9a452d(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__f73f2372968a15036df53e2f64e828575e93330954a32066ebb1ad82f91e7507(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[AppsyncChannelNamespaceHandlerConfigs]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__e0b012d6e387269114e0f0e1506e63dbe35f8d129497bf2e1d9da5ab45a4043b(
    *,
    behavior: builtins.str,
    integration: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[AppsyncChannelNamespaceHandlerConfigsOnPublishIntegration, typing.Dict[builtins.str, typing.Any]]]]] = None,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__3ecb16d9bdf36db22b774d92bc22e4484abf3e85e52a32151b76d882c9277942(
    *,
    data_source_name: builtins.str,
    lambda_config: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[AppsyncChannelNamespaceHandlerConfigsOnPublishIntegrationLambdaConfig, typing.Dict[builtins.str, typing.Any]]]]] = None,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__61a5b71e1c1376901279eea7cffe9eaf009be7ae0da3502595eb8a07dbc18049(
    *,
    invoke_type: typing.Optional[builtins.str] = None,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__a58e697bb42d96a7ede3439cf9ef12cad5331d3aa86020c0549de7231ffdcf21(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__7d5c6b8c0707cae2bd1f92dd4870af2a8877a98dfe7bea6b6c4794bc508ff8e5(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__5432e4318b4d83240c479110ac741b8f3a3ff5a71f65de863a7f3c13e9b72054(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[AppsyncChannelNamespaceHandlerConfigsOnPublishIntegrationLambdaConfig]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__ec5ef8b00afd6ba8de1dac60a9335682d37e1f1ad70f114f6f0c02c00cba72df(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__46eb5db18ac955dcf64bc1af762b5d26691ca42979bc47b9752081d271db8721(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__f081fc3f21f723fa562b3dfc9dabe54717db7fd0fe4652d03c9924b7356a3e36(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, AppsyncChannelNamespaceHandlerConfigsOnPublishIntegrationLambdaConfig]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__cd86003e1730f54ea5ed478355c3f8541e3e6e373b13153756bc69a3d8acef02(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__98e60f7b35fc2b317a1cbf10a0bff9ae2d077c6f327b61848b7b3ecef040b023(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__983eb2e729dab2a618efb278f7a4f933241aef69e61b0d6082002c5fd7e245f3(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[AppsyncChannelNamespaceHandlerConfigsOnPublishIntegration]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__7babae2c4af3957792aeec02ce8182700731bca98d8bf1eddb02e3fe82073b67(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__7149bf813ec379f9573b398337901ee55d88e1b1cee078cdf13311b4334ea00a(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[AppsyncChannelNamespaceHandlerConfigsOnPublishIntegrationLambdaConfig, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__b88e4e3f57689844f83485081704a25ce5473255f9b947f3d6f344be97b3598d(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__660172153b6ec866a479681b693be8444ebb21536b027cfcdb16c43d1d7b3571(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, AppsyncChannelNamespaceHandlerConfigsOnPublishIntegration]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__f44665e2403d24ba52b168234003d820ec65e985a7afaf3c91c63aabbc589123(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__404c7ac59dd0b78ca1280b27ba32fdd7b195bd9c47ec5011a6d3ca934fdcd1d2(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__430de5f9fba34d9ff0dfaf77cebac9de71994dc0a2cc1464c670022d793c0e36(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[AppsyncChannelNamespaceHandlerConfigsOnPublish]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__07085c8c6054330814783699488a7eb43ad3623c0f75b844f0a5b063ea55fee6(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__96922d2277d5d3d2bcc54d5dcd7de3cebbd344f389a29d332ceab6f2ee21ff91(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[AppsyncChannelNamespaceHandlerConfigsOnPublishIntegration, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__da096ea95f960a8883f86c5ae96096d921450eb01fdd0c109643f23586d880e7(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__79b9be2320a74ef88bf9b3fbdb29d50edf984cd36cb2f1032e816ddefa9b9f99(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, AppsyncChannelNamespaceHandlerConfigsOnPublish]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__166a731c2b44a45a012a4b8f94a9688c41b207249d65a4baaa9879f4e934392f(
    *,
    behavior: builtins.str,
    integration: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[AppsyncChannelNamespaceHandlerConfigsOnSubscribeIntegration, typing.Dict[builtins.str, typing.Any]]]]] = None,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__081df70a9c389334a9a50df3e58527c5fbeb25b33401d7ccbd408a9a56facf31(
    *,
    data_source_name: builtins.str,
    lambda_config: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[AppsyncChannelNamespaceHandlerConfigsOnSubscribeIntegrationLambdaConfig, typing.Dict[builtins.str, typing.Any]]]]] = None,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__d6427231b7ecf52050e7518712f4f1a343a5ce21b4182e6eccbfe7d4afbe848c(
    *,
    invoke_type: typing.Optional[builtins.str] = None,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__bc87fbdae9fe1893884825e6c848591924950e8d7aabdf1414258ca33e7640bd(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__5ef01e6be942bea6d47f7b8ee9452f07f0305eff882daa5a632a43fdf4fe510d(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__6f588639406b37e9c3ca3c5434bd6aecf15e4ff0e1f5884e3cc51d68936f5569(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[AppsyncChannelNamespaceHandlerConfigsOnSubscribeIntegrationLambdaConfig]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__31f9a47457cac19c006f59e6f94abbe0d86db8eac114e5ac31047631b2326ded(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__347a77f03679dcde0373a57d38ec89b1bc9fe3787c9321250dfaba4f767825ba(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__c92040c1bc3fd6d87c5e2afde072b8970bcb3b46fa28198583eecfafd2807691(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, AppsyncChannelNamespaceHandlerConfigsOnSubscribeIntegrationLambdaConfig]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__b48c5de21d41d85044fea668abddbb0e947fa371104d06d17d372d20fd0accba(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__e03cec76ea4b9389b6a0fc94d3a28e6597d2c11152bae0e56fe7522187fcee2c(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__f628381d59bc51e613ef6b9c853114f2ffd3b1cd1ec93eabcee06af3bc1a9c96(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[AppsyncChannelNamespaceHandlerConfigsOnSubscribeIntegration]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__ef7a666257a828d87aa642af760dd62c9f3e609aea36c1ba330a00865a8d7148(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__e6beebd59d8eae22e4c929268ed9c65bf67bb77114dcd80ee3847de2eee88c94(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[AppsyncChannelNamespaceHandlerConfigsOnSubscribeIntegrationLambdaConfig, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__b5bf5d3b1997c51d189efef95ce672ebe55b4194fa9ebc47ec4af7e3ed074c51(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__043d865994ba7b6d5feaba38975ea3aaee87ceeae3e0b114a60415a570dd650f(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, AppsyncChannelNamespaceHandlerConfigsOnSubscribeIntegration]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__5c8c911653f3496c8598b1ba431f666cd0fc8c475e44c0e0560df8075b159077(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__5bd571a21afc327aaf4ace2874648ad9aaf226a8e4dd236ac60e4de67d85d1e7(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__0f276d732c43ce4b3736b99fc4caed5e616d144f885c89db3320f10d9ad9540c(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[AppsyncChannelNamespaceHandlerConfigsOnSubscribe]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__3064eb4616456ea4c0518bc90f37da089a1ed4a511ea4f4a368e94531848d838(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__e064b5f82f87153248e6ddd9399b9b2c78ca4a5f511377c1d4d976b67cc02d83(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[AppsyncChannelNamespaceHandlerConfigsOnSubscribeIntegration, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__bf6af68d2822454143726624cc0d103c34bdec9065f83552519d0db787ad5a3c(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__a260032ff74d25b45d2c51292b85f097171b0499544344f88a3720815dcc60c0(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, AppsyncChannelNamespaceHandlerConfigsOnSubscribe]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__bb6692b005fb0753471b34381d0b93a97f3a21387ffa904945257cc2721ac1b7(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__bfc0f6896dd0b86786c8a476fda74c824057a62ee532d9205b8b93aa09656abf(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[AppsyncChannelNamespaceHandlerConfigsOnPublish, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__9fe797cb01902c55f9a8f3f1a3065a4c25027dde06445062eb5a7a1dd1b21225(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[AppsyncChannelNamespaceHandlerConfigsOnSubscribe, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__06255e0dc6acd1571799404f5931db8504d1e281b763701ebddbe39a059c2dcf(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, AppsyncChannelNamespaceHandlerConfigs]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__bae8e2dcb0091bffd6e5fea9a7586d56637c2433772f50971e860656dcfb7773(
    *,
    auth_type: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__02ab13053dac6c4707c8789ec059a0df944249a25a254df456329b703bb86c94(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__29dba8f5e18eb4be442dca729453c541c621722ab41c087c6e641b21c5e35a1e(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__b7302823f5db09c5b7e7ea9292a109c399a61b36cb723fec6fff482605048454(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[AppsyncChannelNamespacePublishAuthMode]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__22f2349c115e8df43132f87a0ce375831ae258f92013c738c435252e54226a2a(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__759a218ec31d344a401f3e44d6d66932dab5ac58ad0547c3ee63260fab9cdd85(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__01103b2c4d79a8603f25fa69c7025a4cbfa0554096c5c0e41bea08181c33ac1a(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, AppsyncChannelNamespacePublishAuthMode]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__4781fbc741abc9e8d575dd1b93b2624dde79f9d5bacbfe07d5ab98e61589a72c(
    *,
    auth_type: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__8262614795c37a0fc92d3511842304461aec80fa7a3803d3272ede9f7b471164(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__acf62a35fe0d437d834f131714f56bb813a07745ca4a084d60915968de1ebddf(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__8c3dedd4b25490359b2d375f02b1439eacf392c18d80ef6421a9c6aa9ea48e8e(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[AppsyncChannelNamespaceSubscribeAuthMode]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__de41996d15c04abc072f9423afcc4ccb728001598e4260efe3aa3f126816784e(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__87ac1c51149d738a77431fefbb6924b86ec88681da8ab81f7793ea799a168ac8(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__807903c09daa5b25698a859fd6193210770edc739c03ca33ab2e9af3a881769b(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, AppsyncChannelNamespaceSubscribeAuthMode]],
) -> None:
    """Type checking stubs"""
    pass
