import { DynamoDbDataSourceOptions, FunctionRuntimeTemplate, MappingTemplateProvider, SearchableDataSourceOptions, TransformHostProvider, VpcConfig } from '@aws-amplify/graphql-transformer-interfaces';
import { BaseDataSource, DataSourceOptions, DynamoDbDataSource, HttpDataSource, HttpDataSourceOptions, LambdaDataSource, NoneDataSource, CfnResolver, CfnFunctionConfiguration } from 'aws-cdk-lib/aws-appsync';
import { ITable } from 'aws-cdk-lib/aws-dynamodb';
import { IRole } from 'aws-cdk-lib/aws-iam';
import { IFunction, ILayerVersion, Runtime } from 'aws-cdk-lib/aws-lambda';
import { Duration } from 'aws-cdk-lib';
import { Construct } from 'constructs';
import { AppSyncFunctionConfiguration } from './appsync-function';
import { SearchableDataSource } from './cdk-compat/searchable-datasource';
import { GraphQLApi } from './graphql-api';
export interface DefaultTransformHostOptions {
    readonly api: GraphQLApi;
}
export declare class DefaultTransformHost implements TransformHostProvider {
    private dataSources;
    private resolvers;
    private appsyncFunctions;
    private api;
    constructor(options: DefaultTransformHostOptions);
    setAPI(api: GraphQLApi): void;
    hasDataSource(name: string): boolean;
    getDataSource: (name: string) => BaseDataSource | void;
    hasResolver: (typeName: string, fieldName: string) => boolean;
    getResolver: (typeName: string, fieldName: string) => CfnResolver | void;
    addSearchableDataSource(name: string, awsRegion: string, endpoint: string, options?: SearchableDataSourceOptions, scope?: Construct): SearchableDataSource;
    addHttpDataSource: (name: string, endpoint: string, options?: DataSourceOptions, scope?: Construct) => HttpDataSource;
    addDynamoDbDataSource: (name: string, table: ITable, options?: DynamoDbDataSourceOptions, scope?: Construct) => DynamoDbDataSource;
    addNoneDataSource: (name: string, options?: DataSourceOptions, scope?: Construct) => NoneDataSource;
    addLambdaDataSource: (name: string, lambdaFunction: IFunction, options?: DataSourceOptions, scope?: Construct) => LambdaDataSource;
    addAppSyncJsRuntimeFunction: (name: string, codeMappingTemplate: MappingTemplateProvider, dataSourceName: string, scope?: Construct) => AppSyncFunctionConfiguration;
    addAppSyncVtlRuntimeFunction: (name: string, requestMappingTemplate: MappingTemplateProvider, responseMappingTemplate: MappingTemplateProvider, dataSourceName: string, scope?: Construct) => AppSyncFunctionConfiguration;
    addAppSyncFunction: (name: string, mappingTemplate: FunctionRuntimeTemplate, dataSourceName: string, scope?: Construct, runtime?: CfnFunctionConfiguration.AppSyncRuntimeProperty) => AppSyncFunctionConfiguration;
    addJsRuntimeResolver: (typeName: string, fieldName: string, codeMappingTemplate: MappingTemplateProvider, resolverLogicalId?: string, dataSourceName?: string, pipelineConfig?: string[], scope?: Construct) => CfnResolver;
    addVtlRuntimeResolver: (typeName: string, fieldName: string, requestMappingTemplate: MappingTemplateProvider, responseMappingTemplate: MappingTemplateProvider, resolverLogicalId?: string, dataSourceName?: string, pipelineConfig?: string[], scope?: Construct) => CfnResolver;
    addResolver: (typeName: string, fieldName: string, mappingTemplate: FunctionRuntimeTemplate, resolverLogicalId?: string, dataSourceName?: string, pipelineConfig?: string[], scope?: Construct, runtime?: CfnFunctionConfiguration.AppSyncRuntimeProperty) => CfnResolver;
    addLambdaFunction: (functionName: string, functionKey: string, handlerName: string, filePath: string, runtime: Runtime, layers?: ILayerVersion[], role?: IRole, environment?: {
        [key: string]: string;
    } | undefined, timeout?: Duration, scope?: Construct, vpc?: VpcConfig, description?: string) => IFunction;
    protected doAddNoneDataSource(id: string, options?: DataSourceOptions, scope?: Construct): NoneDataSource;
    protected doAddDynamoDbDataSource(id: string, table: ITable, options?: DynamoDbDataSourceOptions, scope?: Construct): DynamoDbDataSource;
    protected doAddHttpDataSource(id: string, endpoint: string, options?: HttpDataSourceOptions, scope?: Construct): HttpDataSource;
    protected doAddSearchableDataSource(id: string, endpoint: string, region: string, options?: SearchableDataSourceOptions, scope?: Construct): SearchableDataSource;
    protected doAddLambdaDataSource(id: string, lambdaFunction: IFunction, options?: DataSourceOptions, scope?: Construct): LambdaDataSource;
    private getMappingTemplateHash;
    private bindMappingTemplate;
}
//# sourceMappingURL=transform-host.d.ts.map