import { DirectiveNode, ObjectTypeDefinitionNode, InterfaceTypeDefinitionNode, FieldDefinitionNode, UnionTypeDefinitionNode, EnumTypeDefinitionNode, ScalarTypeDefinitionNode, InputObjectTypeDefinitionNode, InputValueDefinitionNode, EnumValueDefinitionNode, DirectiveDefinitionNode, TypeDefinitionNode, DocumentNode, ObjectTypeExtensionNode } from 'graphql';
import { TransformerBeforeStepContextProvider, TransformerContextProvider, TransformerPrepareStepContextProvider, TransformerSchemaVisitStepContextProvider, TransformerValidationStepContextProvider, TransformerTransformSchemaStepContextProvider } from './transformer-context/transformer-context-provider';
import { TransformerPreProcessContextProvider } from './transformer-context';
import { TransformerLog } from './transformer-log';
export declare enum TransformerPluginType {
    DATA_SOURCE_PROVIDER = "DATA_SOURCE_PROVIDER",
    DATA_SOURCE_ENHANCER = "DATA_SOURCE_ENHANCER",
    GENERIC = "GENERIC",
    AUTH = "AUTH"
}
export interface TransformerPluginProvider {
    pluginType: TransformerPluginType;
    name: string;
    readonly directive: DirectiveDefinitionNode;
    typeDefinitions: TypeDefinitionNode[];
    preMutateSchema?: (context: TransformerPreProcessContextProvider) => void;
    mutateSchema?: (context: TransformerPreProcessContextProvider) => DocumentNode;
    before?: (context: TransformerBeforeStepContextProvider) => void;
    object?: (definition: ObjectTypeDefinitionNode, directive: DirectiveNode, acc: TransformerSchemaVisitStepContextProvider) => void;
    interface?: (definition: InterfaceTypeDefinitionNode, directive: DirectiveNode, acc: TransformerSchemaVisitStepContextProvider) => void;
    field?: (parent: ObjectTypeDefinitionNode | InterfaceTypeDefinitionNode, definition: FieldDefinitionNode, directive: DirectiveNode, acc: TransformerSchemaVisitStepContextProvider) => void;
    fieldOfExtendedType?: (parent: ObjectTypeExtensionNode, definition: FieldDefinitionNode, directive: DirectiveNode, acc: TransformerSchemaVisitStepContextProvider) => void;
    argument?: (definition: InputValueDefinitionNode, directive: DirectiveNode, context: TransformerSchemaVisitStepContextProvider) => void;
    union?: (definition: UnionTypeDefinitionNode, directive: DirectiveNode, context: TransformerSchemaVisitStepContextProvider) => void;
    enum?: (definition: EnumTypeDefinitionNode, directive: DirectiveNode, context: TransformerSchemaVisitStepContextProvider) => void;
    enumValue?: (definition: EnumValueDefinitionNode, directive: DirectiveNode, context: TransformerSchemaVisitStepContextProvider) => void;
    scalar?: (definition: ScalarTypeDefinitionNode, directive: DirectiveNode, context: TransformerSchemaVisitStepContextProvider) => void;
    input?: (definition: InputObjectTypeDefinitionNode, directive: DirectiveNode, context: TransformerSchemaVisitStepContextProvider) => void;
    inputValue?: (definition: InputValueDefinitionNode, directive: DirectiveNode, context: TransformerSchemaVisitStepContextProvider) => void;
    validate?: (context: TransformerValidationStepContextProvider) => void;
    prepare?: (context: TransformerPrepareStepContextProvider) => void;
    transformSchema?: (context: TransformerTransformSchemaStepContextProvider) => void;
    generateResolvers?: (context: TransformerContextProvider) => void;
    after?: (context: TransformerContextProvider) => void;
    getLogs?: () => TransformerLog[];
}
//# sourceMappingURL=transformer-plugin-provider.d.ts.map