import { AmplifyMigrationOperation } from '../../../_common/operation';
import { Planner } from '../../../_common/planner';
import { BackendGenerator } from '../backend.generator';
import { Gen1App, DiscoveredResource } from '../../../_common/gen1-app';
import { RootPackageJsonGenerator } from '../../package.json.generator';
import { AuthGenerator } from '../auth/auth.generator';
import { S3Generator } from '../storage/s3.generator';
import { SpinningLogger } from '../../../_common/spinning-logger';
interface FunctionGeneratorOptions {
    readonly gen1App: Gen1App;
    readonly backendGenerator: BackendGenerator;
    readonly packageJsonGenerator: RootPackageJsonGenerator;
    readonly outputDir: string;
    readonly resource: DiscoveredResource;
    readonly logger: SpinningLogger;
}
export declare class FunctionGenerator implements Planner {
    private readonly gen1App;
    private readonly backendGenerator;
    private authGenerator;
    private s3Generator;
    private readonly packageJsonGenerator;
    private readonly outputDir;
    private readonly resource;
    private readonly renderer;
    private readonly logger;
    constructor(options: FunctionGeneratorOptions);
    setAuthGenerator(authGenerator: AuthGenerator): void;
    setS3Generator(s3Generator: S3Generator): void;
    plan(): Promise<AmplifyMigrationOperation[]>;
    private contributeAuthAccess;
    private contributeAuthTrigger;
    private contributeStorageAccess;
    private contributeStorageTrigger;
    private copyFunctionSource;
    private contributeDependencies;
    private deriveApplyEscapeHatchArguments;
    private detectDataTriggerModels;
    private detectDynamoTriggerTables;
    private isKinesisTrigger;
    private readPolicyStatements;
    private extractDynamoActions;
    private extractKinesisActions;
    private extractAppSyncPermissions;
    private extractAuthPermissions;
}
export {};
//# sourceMappingURL=function.generator.d.ts.map