import cdk = require('@aws-cdk/cdk');
export declare namespace cloudformation {
    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-alias.html
     */
    interface AliasResourceProps {
        /**
         * ``AWS::Lambda::Alias.FunctionName``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-alias.html#cfn-lambda-alias-functionname
         */
        functionName: string | cdk.Token;
        /**
         * ``AWS::Lambda::Alias.FunctionVersion``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-alias.html#cfn-lambda-alias-functionversion
         */
        functionVersion: string | cdk.Token;
        /**
         * ``AWS::Lambda::Alias.Name``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-alias.html#cfn-lambda-alias-name
         */
        aliasName: string | cdk.Token;
        /**
         * ``AWS::Lambda::Alias.Description``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-alias.html#cfn-lambda-alias-description
         */
        description?: string | cdk.Token;
        /**
         * ``AWS::Lambda::Alias.RoutingConfig``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-alias.html#cfn-lambda-alias-routingconfig
         */
        routingConfig?: AliasResource.AliasRoutingConfigurationProperty | cdk.Token;
    }
    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-alias.html
     */
    class AliasResource extends cdk.Resource {
        /**
         * The CloudFormation resource type name for this resource class.
         */
        static readonly resourceTypeName: string;
        /**
         * Creates a new ``AWS::Lambda::Alias``.
         *
         * @param parent     the ``cdk.Construct`` this ``AliasResource`` is a part of
         * @param name       the name of the resource in the ``cdk.Construct`` tree
         * @param properties the properties of this ``AliasResource``
         */
        constructor(parent: cdk.Construct, name: string, properties: AliasResourceProps);
        protected renderProperties(): {
            [key: string]: any;
        };
    }
    namespace AliasResource {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-alias-aliasroutingconfiguration.html
         */
        interface AliasRoutingConfigurationProperty {
            /**
             * ``AliasResource.AliasRoutingConfigurationProperty.AdditionalVersionWeights``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-alias-aliasroutingconfiguration.html#cfn-lambda-alias-aliasroutingconfiguration-additionalversionweights
             */
            additionalVersionWeights: Array<VersionWeightProperty | cdk.Token> | cdk.Token;
        }
    }
    namespace AliasResource {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-alias-versionweight.html
         */
        interface VersionWeightProperty {
            /**
             * ``AliasResource.VersionWeightProperty.FunctionVersion``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-alias-versionweight.html#cfn-lambda-alias-versionweight-functionversion
             */
            functionVersion: string | cdk.Token;
            /**
             * ``AliasResource.VersionWeightProperty.FunctionWeight``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-alias-versionweight.html#cfn-lambda-alias-versionweight-functionweight
             */
            functionWeight: number | cdk.Token;
        }
    }
}
export declare namespace cloudformation {
    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-eventsourcemapping.html
     */
    interface EventSourceMappingResourceProps {
        /**
         * ``AWS::Lambda::EventSourceMapping.EventSourceArn``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-eventsourcemapping.html#cfn-lambda-eventsourcemapping-eventsourcearn
         */
        eventSourceArn: string | cdk.Token;
        /**
         * ``AWS::Lambda::EventSourceMapping.FunctionName``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-eventsourcemapping.html#cfn-lambda-eventsourcemapping-functionname
         */
        functionName: string | cdk.Token;
        /**
         * ``AWS::Lambda::EventSourceMapping.BatchSize``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-eventsourcemapping.html#cfn-lambda-eventsourcemapping-batchsize
         */
        batchSize?: number | cdk.Token;
        /**
         * ``AWS::Lambda::EventSourceMapping.Enabled``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-eventsourcemapping.html#cfn-lambda-eventsourcemapping-enabled
         */
        enabled?: boolean | cdk.Token;
        /**
         * ``AWS::Lambda::EventSourceMapping.StartingPosition``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-eventsourcemapping.html#cfn-lambda-eventsourcemapping-startingposition
         */
        startingPosition?: string | cdk.Token;
    }
    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-eventsourcemapping.html
     */
    class EventSourceMappingResource extends cdk.Resource {
        /**
         * The CloudFormation resource type name for this resource class.
         */
        static readonly resourceTypeName: string;
        /**
         * Creates a new ``AWS::Lambda::EventSourceMapping``.
         *
         * @param parent     the ``cdk.Construct`` this ``EventSourceMappingResource`` is a part of
         * @param name       the name of the resource in the ``cdk.Construct`` tree
         * @param properties the properties of this ``EventSourceMappingResource``
         */
        constructor(parent: cdk.Construct, name: string, properties: EventSourceMappingResourceProps);
        protected renderProperties(): {
            [key: string]: any;
        };
    }
}
export declare namespace cloudformation {
    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html
     */
    interface FunctionResourceProps {
        /**
         * ``AWS::Lambda::Function.Code``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-code
         */
        code: FunctionResource.CodeProperty | cdk.Token;
        /**
         * ``AWS::Lambda::Function.Handler``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-handler
         */
        handler: string | cdk.Token;
        /**
         * ``AWS::Lambda::Function.Role``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-role
         */
        role: string | cdk.Token;
        /**
         * ``AWS::Lambda::Function.Runtime``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-runtime
         */
        runtime: string | cdk.Token;
        /**
         * ``AWS::Lambda::Function.DeadLetterConfig``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-deadletterconfig
         */
        deadLetterConfig?: FunctionResource.DeadLetterConfigProperty | cdk.Token;
        /**
         * ``AWS::Lambda::Function.Description``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-description
         */
        description?: string | cdk.Token;
        /**
         * ``AWS::Lambda::Function.Environment``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-environment
         */
        environment?: FunctionResource.EnvironmentProperty | cdk.Token;
        /**
         * ``AWS::Lambda::Function.FunctionName``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-functionname
         */
        functionName?: string | cdk.Token;
        /**
         * ``AWS::Lambda::Function.KmsKeyArn``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-kmskeyarn
         */
        kmsKeyArn?: string | cdk.Token;
        /**
         * ``AWS::Lambda::Function.MemorySize``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-memorysize
         */
        memorySize?: number | cdk.Token;
        /**
         * ``AWS::Lambda::Function.ReservedConcurrentExecutions``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-reservedconcurrentexecutions
         */
        reservedConcurrentExecutions?: number | cdk.Token;
        /**
         * ``AWS::Lambda::Function.Tags``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-tags
         */
        tags?: Array<cdk.Tag | cdk.Token> | cdk.Token;
        /**
         * ``AWS::Lambda::Function.Timeout``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-timeout
         */
        timeout?: number | cdk.Token;
        /**
         * ``AWS::Lambda::Function.TracingConfig``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-tracingconfig
         */
        tracingConfig?: FunctionResource.TracingConfigProperty | cdk.Token;
        /**
         * ``AWS::Lambda::Function.VpcConfig``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-vpcconfig
         */
        vpcConfig?: FunctionResource.VpcConfigProperty | cdk.Token;
    }
    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html
     */
    class FunctionResource extends cdk.Resource {
        /**
         * The CloudFormation resource type name for this resource class.
         */
        static readonly resourceTypeName: string;
        /**
         * @cloudformation_attribute Arn
         */
        readonly functionArn: FunctionArn;
        /**
         * Creates a new ``AWS::Lambda::Function``.
         *
         * @param parent     the ``cdk.Construct`` this ``FunctionResource`` is a part of
         * @param name       the name of the resource in the ``cdk.Construct`` tree
         * @param properties the properties of this ``FunctionResource``
         */
        constructor(parent: cdk.Construct, name: string, properties: FunctionResourceProps);
        protected renderProperties(): {
            [key: string]: any;
        };
    }
    namespace FunctionResource {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-code.html
         */
        interface CodeProperty {
            /**
             * ``FunctionResource.CodeProperty.S3Bucket``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-code.html#cfn-lambda-function-code-s3bucket
             */
            s3Bucket?: string | cdk.Token;
            /**
             * ``FunctionResource.CodeProperty.S3Key``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-code.html#cfn-lambda-function-code-s3key
             */
            s3Key?: string | cdk.Token;
            /**
             * ``FunctionResource.CodeProperty.S3ObjectVersion``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-code.html#cfn-lambda-function-code-s3objectversion
             */
            s3ObjectVersion?: string | cdk.Token;
            /**
             * ``FunctionResource.CodeProperty.ZipFile``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-code.html#cfn-lambda-function-code-zipfile
             */
            zipFile?: string | cdk.Token;
        }
    }
    namespace FunctionResource {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-deadletterconfig.html
         */
        interface DeadLetterConfigProperty {
            /**
             * ``FunctionResource.DeadLetterConfigProperty.TargetArn``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-deadletterconfig.html#cfn-lambda-function-deadletterconfig-targetarn
             */
            targetArn?: string | cdk.Token;
        }
    }
    namespace FunctionResource {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-environment.html
         */
        interface EnvironmentProperty {
            /**
             * ``FunctionResource.EnvironmentProperty.Variables``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-environment.html#cfn-lambda-function-environment-variables
             */
            variables?: {
                [key: string]: (string | cdk.Token);
            } | cdk.Token;
        }
    }
    namespace FunctionResource {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-tracingconfig.html
         */
        interface TracingConfigProperty {
            /**
             * ``FunctionResource.TracingConfigProperty.Mode``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-tracingconfig.html#cfn-lambda-function-tracingconfig-mode
             */
            mode?: string | cdk.Token;
        }
    }
    namespace FunctionResource {
        /**
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-vpcconfig.html
         */
        interface VpcConfigProperty {
            /**
             * ``FunctionResource.VpcConfigProperty.SecurityGroupIds``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-vpcconfig.html#cfn-lambda-function-vpcconfig-securitygroupids
             */
            securityGroupIds: Array<string | cdk.Token> | cdk.Token;
            /**
             * ``FunctionResource.VpcConfigProperty.SubnetIds``
             * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-vpcconfig.html#cfn-lambda-function-vpcconfig-subnetids
             */
            subnetIds: Array<string | cdk.Token> | cdk.Token;
        }
    }
}
export declare class FunctionArn extends cdk.Arn {
}
export declare namespace cloudformation {
    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-permission.html
     */
    interface PermissionResourceProps {
        /**
         * ``AWS::Lambda::Permission.Action``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-permission.html#cfn-lambda-permission-action
         */
        action: string | cdk.Token;
        /**
         * ``AWS::Lambda::Permission.FunctionName``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-permission.html#cfn-lambda-permission-functionname
         */
        functionName: string | cdk.Token;
        /**
         * ``AWS::Lambda::Permission.Principal``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-permission.html#cfn-lambda-permission-principal
         */
        principal: string | cdk.Token;
        /**
         * ``AWS::Lambda::Permission.EventSourceToken``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-permission.html#cfn-lambda-permission-eventsourcetoken
         */
        eventSourceToken?: string | cdk.Token;
        /**
         * ``AWS::Lambda::Permission.SourceAccount``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-permission.html#cfn-lambda-permission-sourceaccount
         */
        sourceAccount?: string | cdk.Token;
        /**
         * ``AWS::Lambda::Permission.SourceArn``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-permission.html#cfn-lambda-permission-sourcearn
         */
        sourceArn?: string | cdk.Token;
    }
    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-permission.html
     */
    class PermissionResource extends cdk.Resource {
        /**
         * The CloudFormation resource type name for this resource class.
         */
        static readonly resourceTypeName: string;
        /**
         * Creates a new ``AWS::Lambda::Permission``.
         *
         * @param parent     the ``cdk.Construct`` this ``PermissionResource`` is a part of
         * @param name       the name of the resource in the ``cdk.Construct`` tree
         * @param properties the properties of this ``PermissionResource``
         */
        constructor(parent: cdk.Construct, name: string, properties: PermissionResourceProps);
        protected renderProperties(): {
            [key: string]: any;
        };
    }
}
export declare namespace cloudformation {
    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-version.html
     */
    interface VersionResourceProps {
        /**
         * ``AWS::Lambda::Version.FunctionName``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-version.html#cfn-lambda-version-functionname
         */
        functionName: string | cdk.Token;
        /**
         * ``AWS::Lambda::Version.CodeSha256``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-version.html#cfn-lambda-version-codesha256
         */
        codeSha256?: string | cdk.Token;
        /**
         * ``AWS::Lambda::Version.Description``
         * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-version.html#cfn-lambda-version-description
         */
        description?: string | cdk.Token;
    }
    /**
     * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-version.html
     */
    class VersionResource extends cdk.Resource {
        /**
         * The CloudFormation resource type name for this resource class.
         */
        static readonly resourceTypeName: string;
        /**
         * @cloudformation_attribute Version
         */
        readonly version: Version;
        /**
         * Creates a new ``AWS::Lambda::Version``.
         *
         * @param parent     the ``cdk.Construct`` this ``VersionResource`` is a part of
         * @param name       the name of the resource in the ``cdk.Construct`` tree
         * @param properties the properties of this ``VersionResource``
         */
        constructor(parent: cdk.Construct, name: string, properties: VersionResourceProps);
        protected renderProperties(): {
            [key: string]: any;
        };
    }
}
export declare class Version extends cdk.Token {
}
