import ts from 'typescript';
import { GraphqlApi } from '@aws-sdk/client-appsync';
import { ClassifiedVtlFiles, ParsedExtended } from './data.generator';
export interface ExtendedResolverFile {
    readonly typeName: string;
    readonly fieldName: string;
    readonly slot: string;
    readonly order: number;
    readonly reqFile?: string;
    readonly resFile?: string;
}
export interface SpliceEntry {
    readonly resolverFile: ExtendedResolverFile;
    readonly spliceIndex: number;
}
export interface PipelineSpliceResult {
    readonly typeName: string;
    readonly fieldName: string;
    readonly entries: readonly SpliceEntry[];
}
export declare const ALL_SLOTS: readonly string[];
export declare const PIPELINE_3_SLOT_MAP: Readonly<Record<string, number>>;
export declare const PIPELINE_4_SLOT_MAP: Readonly<Record<string, number>>;
export declare function groupExtendedResolverFiles(extended: readonly ParsedExtended[]): Map<string, ExtendedResolverFile[]>;
export declare function computeSpliceIndexes(typeName: string, fieldName: string, resolverFiles: readonly ExtendedResolverFile[]): PipelineSpliceResult;
export interface DataRenderOptions {
    readonly schema: string;
    readonly tableMappings: Record<string, string>;
    readonly authorizationModes?: any;
    readonly graphqlApi: GraphqlApi;
    readonly hasAuth?: boolean;
    readonly apiId?: string;
    readonly classifiedResolvers?: ClassifiedVtlFiles;
}
export declare class DataRenderer {
    private readonly envName;
    constructor(envName: string);
    render(opts: DataRenderOptions): ts.NodeArray<ts.Node>;
    private renderNamedImport;
    private renderBackendTypeImport;
    private renderSchemaDeclaration;
    private renderDefineDataExport;
    private renderApplyEscapeHatches;
    private prepareSchema;
    private renderTableMappings;
    private renderAuthorizationModes;
    private addAuthModeConfig;
    private addApiKeyConfig;
    private addLambdaConfig;
    private addOidcConfig;
    private renderLogging;
    private extractLoggingConfig;
    private extractAdditionalAuthProviders;
    private buildAdditionalAuthProviderStatements;
    private buildIamAuthGrantStatements;
    private buildOverrideResolverStatements;
    private buildOverrideLoopBody;
    private buildExtendedResolverStatements;
    renderNoneDataSource(): ts.Statement;
    renderAppsyncFunction(resolverFile: ExtendedResolverFile): ts.Statement;
    renderSpliceStatements(spliceResult: PipelineSpliceResult): ts.Statement[];
}
//# sourceMappingURL=data.renderer.d.ts.map