import type { CloudFormationResourceByType } from "../CloudFormation/Types";
import type { AwsApiGatewayBasePath, AwsApiGatewayDeployment, AwsApiGatewayDomain, AwsApiGatewayMethod, AwsApiGatewayResource, AwsApiGatewayRestApi, AwsApiGatewayStage } from "./AwsApiGateway";
import type { AwsCloudFormationStack } from "./AwsCloudFormation";
import type { AwsCloudFrontDistribution } from "./AwsCloudFront";
import type { AwsCloudWatchResources } from "./AwsCloudWatch";
import type { AwsCustomResource } from "./AwsCustomResource";
import type { AwsDynamoDbTable } from "./AwsDynamoDb";
import type { AwsIamRole } from "./AwsIam";
import type { AwsKinesisDataStreamResource, AwsKinesisDeliveryStream } from "./AwsKinesis";
import type { AwsLambdaPermission } from "./AwsLambda";
import type { AwsS3Bucket } from "./AwsS3";
import type { AwsSamServerlessApi, AwsSamServerlessFunction, AwsSamServerlessSimpleTable } from "./AwsSamServerless";
import type { AwsSnsTopic, AwsSnsTopicSubscriptionResource } from "./AwsSns";
import type { AwsSimpleQueueResource } from "./AwsSqs";
import type { HostedZone, RecordSet } from "./Route53";
export { type AwsTemplateOutput, type CloudFormationTag, type CloudFormationTags, isAwsTemplateOutput, mergeTemplates, type S3Location, } from "../CloudFormation";
export { type CloudFormationString, isCloudFormationString, isCloudFormationValue as isCloudFormationStringValidation, } from "../CloudFormation/IntrinsicFunctions";
export { AwsSamTemplate, ServerlessTags } from "../ServerlessAppModel";
/**
 * API Reference
 * https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction
 * https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/what-is-sam.html
 */
export declare type AwsResourceByType = CloudFormationResourceByType & {
    [K in AwsApiGatewayBasePath['Type']]: AwsApiGatewayBasePath;
} & {
    [K in AwsApiGatewayDeployment['Type']]: AwsApiGatewayDeployment;
} & {
    [K in AwsApiGatewayDomain['Type']]: AwsApiGatewayDomain;
} & {
    [K in AwsApiGatewayMethod['Type']]: AwsApiGatewayMethod;
} & {
    [K in AwsApiGatewayResource['Type']]: AwsApiGatewayResource;
} & {
    [K in AwsApiGatewayRestApi['Type']]: AwsApiGatewayRestApi;
} & {
    [K in AwsApiGatewayStage['Type']]: AwsApiGatewayStage;
} & {
    [K in AwsCloudFormationStack['Type']]: AwsCloudFormationStack;
} & {
    [K in AwsCloudFrontDistribution['Type']]: AwsCloudFrontDistribution;
} & {
    [K in AwsCustomResource['Type']]: AwsCustomResource;
} & {
    [K in AwsDynamoDbTable['Type']]: AwsDynamoDbTable;
} & {
    [K in AwsIamRole['Type']]: AwsIamRole;
} & {
    [K in AwsKinesisDataStreamResource['Type']]: AwsKinesisDataStreamResource;
} & {
    [K in AwsKinesisDeliveryStream['Type']]: AwsKinesisDeliveryStream;
} & {
    [K in AwsLambdaPermission['Type']]: AwsLambdaPermission;
} & {
    [K in AwsS3Bucket['Type']]: AwsS3Bucket;
} & {
    [K in AwsSamServerlessApi['Type']]: AwsSamServerlessApi;
} & {
    [K in AwsSamServerlessFunction['Type']]: AwsSamServerlessFunction;
} & {
    [K in AwsSamServerlessSimpleTable['Type']]: AwsSamServerlessSimpleTable;
} & {
    [K in AwsSimpleQueueResource['Type']]: AwsSimpleQueueResource;
} & {
    [K in AwsSnsTopic['Type']]: AwsSnsTopic;
} & {
    [K in AwsSnsTopicSubscriptionResource['Type']]: AwsSnsTopicSubscriptionResource;
} & {
    [K in HostedZone['Type']]: HostedZone;
} & {
    [K in keyof AwsCloudWatchResources]: AwsCloudWatchResources[K];
} & {
    [K in RecordSet['Type']]: RecordSet;
};
export declare type AwsResourceType = keyof AwsResourceByType;
export declare type AwsResource = AwsResourceByType[AwsResourceType];
