import { AppSyncFunctionConfigurationProvider, DataSourceProvider, FunctionRuntimeTemplate, GraphQLAPIProvider, JSRuntimeTemplate, MappingTemplateProvider, TransformerContextProvider, TransformerResolverProvider, TransformerResolversManagerProvider, VTLRuntimeTemplate } from '@aws-amplify/graphql-transformer-interfaces';
import { CfnFunctionConfiguration } from 'aws-cdk-lib/aws-appsync';
import { Stack } from 'aws-cdk-lib';
import { Construct } from 'constructs';
type FunctionRuntimeTemplatePartialVTL = Partial<VTLRuntimeTemplate> | JSRuntimeTemplate;
type Slot = {
    mappingTemplate?: FunctionRuntimeTemplatePartialVTL;
    dataSource?: DataSourceProvider;
    runtime?: CfnFunctionConfiguration.AppSyncRuntimeProperty;
};
export declare const NONE_DATA_SOURCE_NAME = "NONE_DS";
export declare class ResolverManager implements TransformerResolversManagerProvider {
    private resolvers;
    generateQueryResolver: (typeName: string, fieldName: string, resolverLogicalId: string, dataSource: DataSourceProvider, requestMappingTemplate: MappingTemplateProvider, responseMappingTemplate: MappingTemplateProvider) => TransformerResolver;
    generateMutationResolver: (typeName: string, fieldName: string, resolverLogicalId: string, dataSource: DataSourceProvider, requestMappingTemplate: MappingTemplateProvider, responseMappingTemplate: MappingTemplateProvider) => TransformerResolver;
    generateSubscriptionResolver: (typeName: string, fieldName: string, resolverLogicalId: string, requestMappingTemplate: MappingTemplateProvider, responseMappingTemplate: MappingTemplateProvider) => TransformerResolver;
    addResolver: (typeName: string, fieldName: string, resolver: TransformerResolverProvider) => TransformerResolverProvider;
    getResolver: (typeName: string, fieldName: string) => TransformerResolverProvider | undefined;
    hasResolver: (typeName: string, fieldName: string) => boolean;
    removeResolver: (typeName: string, fieldName: string) => TransformerResolverProvider;
    collectResolvers: () => Map<string, TransformerResolverProvider>;
}
export declare class TransformerResolver implements TransformerResolverProvider {
    private typeName;
    private fieldName;
    private resolverLogicalId;
    private mappingTemplate;
    private requestSlots;
    private responseSlots;
    private datasource?;
    private runtime?;
    private readonly slotMap;
    private readonly slotNames;
    private scope?;
    constructor(typeName: string, fieldName: string, resolverLogicalId: string, mappingTemplate: FunctionRuntimeTemplate, requestSlots: string[], responseSlots: string[], datasource?: DataSourceProvider | undefined, runtime?: CfnFunctionConfiguration.AppSyncRuntimeProperty | undefined);
    mapToStack: (stack: Stack) => void;
    setScope: (scope: Construct) => void;
    addJsFunctionToSlot: (slotName: string, codeMappingTemplate: MappingTemplateProvider, dataSource?: DataSourceProvider) => void;
    addVtlFunctionToSlot: (slotName: string, requestMappingTemplate?: MappingTemplateProvider, responseMappingTemplate?: MappingTemplateProvider, dataSource?: DataSourceProvider) => void;
    private addToSlot;
    slotExists: (slotName: string, mappingTemplate: FunctionRuntimeTemplatePartialVTL) => boolean;
    findSlot: (slotName: string, mappingTemplate: FunctionRuntimeTemplatePartialVTL) => Slot | undefined;
    updateSlot: (slotName: string, mappingTemplate: FunctionRuntimeTemplatePartialVTL) => void;
    synthesize: (context: TransformerContextProvider, api: GraphQLAPIProvider) => void;
    synthesizeResolvers: (scope: Construct, api: GraphQLAPIProvider, slotsNames: string[]) => AppSyncFunctionConfigurationProvider[];
    private substituteSlotInfo;
    private ensureNoneDataSource;
    private createStashStatementGenerator;
    private getMappingTemplateNames;
}
export {};
//# sourceMappingURL=resolver.d.ts.map