import { DataSourceProvider, MutationFieldType, QueryFieldType, SubscriptionFieldType, TransformerContextProvider, TransformerResolverProvider } from '@aws-amplify/graphql-transformer-interfaces';
import { ObjectTypeDefinitionNode } from 'graphql';
import { ModelVTLGenerator } from '../resolvers';
import { ModelDirectiveConfiguration } from '../directive';
import { ModelTransformerOptions } from '../types';
export declare abstract class ModelResourceGenerator {
    protected datasourceMap: Record<string, DataSourceProvider>;
    private resolverMap;
    protected generatorType: string;
    private enabled;
    private provisioned;
    private unprovisioned;
    protected models: Array<ObjectTypeDefinitionNode>;
    protected modelDirectiveMap: Map<string, ModelDirectiveConfiguration>;
    protected options: ModelTransformerOptions;
    constructor(options?: ModelTransformerOptions);
    getGeneratorType(): string;
    protected isEnabled(): boolean;
    protected isProvisioned(): boolean;
    protected isUnprovisioned(): boolean;
    enableGenerator(): void;
    enableProvisioned(): void;
    enableUnprovisioned(): void;
    addModelDefinition(def: ObjectTypeDefinitionNode, config: ModelDirectiveConfiguration): void;
    abstract generateResources(ctx: TransformerContextProvider): void;
    abstract getVTLGenerator(): ModelVTLGenerator;
    protected generateResolvers(context: TransformerContextProvider): void;
    generateGetResolver: (ctx: TransformerContextProvider, type: ObjectTypeDefinitionNode, typeName: string, fieldName: string, resolverLogicalId: string) => TransformerResolverProvider;
    generateListResolver: (ctx: TransformerContextProvider, type: ObjectTypeDefinitionNode, typeName: string, fieldName: string, resolverLogicalId: string) => TransformerResolverProvider;
    generateCreateResolver: (ctx: TransformerContextProvider, type: ObjectTypeDefinitionNode, typeName: string, fieldName: string, resolverLogicalId: string) => TransformerResolverProvider;
    generateUpdateResolver: (ctx: TransformerContextProvider, type: ObjectTypeDefinitionNode, modelConfig: ModelDirectiveConfiguration, typeName: string, fieldName: string, resolverLogicalId: string) => TransformerResolverProvider;
    generateDeleteResolver: (ctx: TransformerContextProvider, type: ObjectTypeDefinitionNode, typeName: string, fieldName: string, resolverLogicalId: string) => TransformerResolverProvider;
    generateOnCreateResolver: (ctx: TransformerContextProvider, typeName: string, fieldName: string, resolverLogicalId: string) => TransformerResolverProvider;
    generateOnUpdateResolver: (ctx: TransformerContextProvider, typeName: string, fieldName: string, resolverLogicalId: string) => TransformerResolverProvider;
    generateOnDeleteResolver: (ctx: TransformerContextProvider, typeName: string, fieldName: string, resolverLogicalId: string) => TransformerResolverProvider;
    generateSyncResolver: (ctx: TransformerContextProvider, type: ObjectTypeDefinitionNode, typeName: string, fieldName: string, resolverLogicalId: string) => TransformerResolverProvider;
    getQueryFieldNames: (type: ObjectTypeDefinitionNode) => Set<{
        fieldName: string;
        typeName: string;
        type: QueryFieldType;
        resolverLogicalId: string;
    }>;
    getMutationFieldNames: (type: ObjectTypeDefinitionNode) => Set<{
        fieldName: string;
        typeName: string;
        type: MutationFieldType;
        resolverLogicalId: string;
    }>;
    getSubscriptionFieldNames: (type: ObjectTypeDefinitionNode) => Set<{
        fieldName: string;
        typeName: string;
        type: SubscriptionFieldType;
        resolverLogicalId: string;
    }>;
}
//# sourceMappingURL=model-resource-generator.d.ts.map