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