import { AppSyncAuthConfiguration, TransformerPluginProvider, TransformHostProvider, TransformerLog, NestedStackProvider, SynthParameters, LogConfig } from '@aws-amplify/graphql-transformer-interfaces';
import type { AssetProvider, StackManagerProvider, TransformParameterProvider, TransformParameters, DataSourceStrategiesProvider, RDSLayerMappingProvider, RDSSNSTopicMappingProvider } from '@aws-amplify/graphql-transformer-interfaces';
import { DocumentNode } from 'graphql/language';
import { Construct } from 'constructs';
import { ResolverConfig } from '../config/transformer-config';
import { GraphQLApi } from '../graphql-api';
import { TransformerOutput } from '../transformer-context/output';
import { UserDefinedSlot } from './types';
export interface GraphQLTransformOptions {
    readonly transformers: TransformerPluginProvider[];
    readonly stackMapping?: StackMapping;
    readonly authConfig?: AppSyncAuthConfiguration;
    readonly transformParameters?: Partial<TransformParameters>;
    readonly host?: TransformHostProvider;
    readonly userDefinedSlots?: Record<string, UserDefinedSlot[]>;
    readonly resolverConfig?: ResolverConfig;
}
export interface TransformOption extends DataSourceStrategiesProvider, RDSLayerMappingProvider, RDSSNSTopicMappingProvider {
    scope: Construct;
    nestedStackProvider: NestedStackProvider;
    parameterProvider?: TransformParameterProvider;
    assetProvider: AssetProvider;
    synthParameters: SynthParameters;
    schema: string;
    logging?: true | LogConfig;
}
export type StackMapping = {
    [resourceId: string]: string;
};
export declare class GraphQLTransform {
    private readonly options;
    private transformers;
    private stackMappingOverrides;
    private readonly authConfig;
    private readonly resolverConfig?;
    private readonly userDefinedSlots;
    private readonly transformParameters;
    private seenTransformations;
    private logs;
    constructor(options: GraphQLTransformOptions);
    preProcessSchema(schema: DocumentNode): DocumentNode;
    transform({ assetProvider, dataSourceStrategies, nestedStackProvider, parameterProvider, rdsLayerMapping, rdsSnsTopicMapping, schema, scope, sqlDirectiveDataSourceStrategies, synthParameters, logging, }: TransformOption): void;
    protected generateGraphQlApi(stackManager: StackManagerProvider, assetProvider: AssetProvider, synthParameters: SynthParameters, output: TransformerOutput, transformParameters: TransformParameters, logging?: true | LogConfig): GraphQLApi;
    private collectResolvers;
    private transformObject;
    private transformField;
    private transformArgument;
    private transformInterface;
    private transformScalar;
    private transformUnion;
    private transformEnum;
    private transformEnumValue;
    private transformInputObject;
    private transformInputField;
    getLogs(): TransformerLog[];
    private ensureNoneDataSource;
}
//# sourceMappingURL=transform.d.ts.map