import { CreateApiPulumiAppParams } from "@webiny/pulumi-aws/enterprise";
import { PluginCollection } from "@webiny/plugins/types";
export { ApiOutput } from "@webiny/pulumi-aws";
export interface CreateApiAppParams extends CreateApiPulumiAppParams {
    plugins?: PluginCollection;
}
export declare function createApiApp(projectAppParams?: CreateApiAppParams): {
    id: string;
    name: string;
    description: string;
    cli: {
        watch: {
            depth: number;
            function: string;
        };
    };
    pulumi: import("@webiny/pulumi").PulumiApp<{
        fileManager: {
            functions: {
                manage: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/lambda/function").Function>;
                download: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/lambda/function").Function>;
            };
            bucketNotification: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/s3/bucketNotification").BucketNotification>;
        };
        graphql: {
            role: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/iam/role").Role>;
            policy: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/iam/policy").Policy>;
            functions: {
                graphql: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/lambda/function").Function>;
            };
            addRoute: (routeParams: import("@webiny/pulumi-aws").AddRouteParams) => any;
        };
        apiGateway: {
            api: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/apigatewayv2/api").Api>;
            stage: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/apigatewayv2/stage").Stage>;
            routes: Record<string, {
                integration: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/apigatewayv2/integration").Integration>;
                route: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/apigatewayv2/route").Route>;
                permission: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/lambda/permission").Permission>;
            }>;
            addRoute: (name: string, params: import("@webiny/pulumi-aws").ApiRouteParams) => void;
        };
        websocket: {
            websocketApi: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/apigatewayv2/api").Api>;
            websocketApiStage: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/apigatewayv2/stage").Stage>;
            websocketApiConnectRoute: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/apigatewayv2/route").Route>;
            websocketApiDisconnectRoute: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/apigatewayv2/route").Route>;
            websocketApiDefaultRoute: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/apigatewayv2/route").Route>;
            websocketLambdaPermission: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/lambda/permission").Permission>;
            lambdaWebsocketPolicy: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/iam/policy").Policy>;
            lambdaWebsocketRolePolicyAttachment: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/iam/rolePolicyAttachment").RolePolicyAttachment>;
            websocketApiUrl: import("@pulumi/pulumi").Output<string>;
        };
        cloudfront: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/cloudfront/distribution").Distribution>;
        apwScheduler: {
            executeAction: {
                role: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/iam/role").Role>;
                policy: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/iam/policy").Policy>;
                lambda: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/lambda/function").Function>;
            };
            scheduleAction: {
                role: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/iam/role").Role>;
                policy: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/iam/policy").Policy>;
                lambda: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/lambda/function").Function>;
            };
            eventRule: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/cloudwatch/eventRule").EventRule>;
            eventTarget: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/cloudwatch/eventTarget").EventTarget>;
        };
        migration: {
            function: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/lambda/function").Function>;
        };
        backgroundTask: {
            backgroundTask: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/lambda/function").Function>;
            stepFunction: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/sfn/stateMachine").StateMachine>;
            stepFunctionRole: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/iam/role").Role>;
            stepFunctionPolicy: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/iam/policy").Policy>;
            eventPolicy: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/iam/policy").Policy>;
            eventRolePolicyAttachment: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/iam/rolePolicyAttachment").RolePolicyAttachment>;
            eventTarget: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/cloudwatch/eventTarget").EventTarget>;
        };
    }> & import("@webiny/pulumi-aws/utils/lambdaEnvVariables").WithCommonLambdaEnvVariables & import("@webiny/pulumi-aws/utils/withServiceManifest").WithServiceManifest;
    plugins: ((PluginCollection | import("@webiny/plugins/types").Plugin<Record<string, any>> | import("@webiny/plugins/types").PluginFactory)[] | (import("@webiny/cli-plugin-deploy-pulumi/plugins").BeforeDeployPlugin | {
        type: string;
        hook({ projectApplication }: Record<string, any>): Promise<void>;
    } | import("@webiny/cli-plugin-deploy-pulumi/plugins").AfterBuildPlugin | {
        type: string;
        name: string;
        hook({ inputs, env, projectApplication }: Record<string, any>, context: import("@webiny/cli/types").CliContext): Promise<void>;
    })[])[];
};
