import { TransformerContextProvider } from '@aws-amplify/graphql-transformer-interfaces';
import { ModelDirectiveConfiguration } from '../../directive';
export type ModelRequestConfig = {
    modelName: string;
    operation: string;
    operationName: string;
};
export type ModelUpdateRequestConfig = ModelRequestConfig & {
    modelIndexFields: string[];
    isSyncEnabled: boolean;
};
export type ModelDeleteRequestConfig = ModelUpdateRequestConfig;
export type ModelCreateRequestConfig = ModelRequestConfig & {
    modelIndexFields: string[];
};
export type ModelCreateInitSlotConfig = {
    modelConfig: ModelDirectiveConfiguration;
};
export type ModelUpdateInitSlotConfig = ModelCreateInitSlotConfig;
export type ModelGetResponseConfig = ModelUpdateRequestConfig;
export type ModelDefaultResponseConfig = ModelRequestConfig & {
    isSyncEnabled: boolean;
    mutation: boolean;
};
export interface ModelVTLGenerator {
    generateUpdateRequestTemplate(config: ModelUpdateRequestConfig, ctx: TransformerContextProvider): string;
    generateCreateRequestTemplate(config: ModelCreateRequestConfig, ctx: TransformerContextProvider): string;
    generateCreateInitSlotTemplate(config: ModelCreateInitSlotConfig, initializeIdField: boolean): string;
    generateDeleteRequestTemplate(config: ModelDeleteRequestConfig, ctx: TransformerContextProvider): string;
    generateUpdateInitSlotTemplate(config: ModelUpdateInitSlotConfig): string;
    generateGetRequestTemplate(config: ModelRequestConfig, ctx: TransformerContextProvider): string;
    generateGetResponseTemplate(config: ModelGetResponseConfig): string;
    generateListRequestTemplate(config: ModelRequestConfig, ctx: TransformerContextProvider): string;
    generateSyncRequestTemplate(config: ModelRequestConfig): string;
    generateSubscriptionRequestTemplate(): string;
    generateSubscriptionResponseTemplate(): string;
    generateDefaultResponseMappingTemplate(config: ModelDefaultResponseConfig): string;
}
//# sourceMappingURL=vtl-generator.d.ts.map