import { BaseDocumentsVisitor, type ConvertSchemaEnumToDeclarationBlockString, DeclarationKind, NormalizedAvoidOptionalsConfig, ParsedDocumentsConfig, type ParsedEnumValuesMap } from '@graphql-codegen/visitor-plugin-common';
import { type DocumentNode, EnumTypeDefinitionNode, GraphQLEnumType, GraphQLInputObjectType, GraphQLScalarType, type GraphQLSchema, InputObjectTypeDefinitionNode, InputValueDefinitionNode, type TypeDefinitionNode } from 'graphql';
import { TypeScriptDocumentsPluginConfig } from './config.js';
export interface TypeScriptDocumentsParsedConfig extends ParsedDocumentsConfig {
    arrayInputCoercion: boolean;
    avoidOptionals: NormalizedAvoidOptionalsConfig;
    immutableTypes: boolean;
    noExport: boolean;
    maybeValue: string;
    allowUndefinedQueryVariables: boolean;
    enumType: ConvertSchemaEnumToDeclarationBlockString['outputType'];
    futureProofEnums: boolean;
    enumValues: ParsedEnumValuesMap;
}
type UsedNamedInputTypes = Record<string, {
    type: 'GraphQLScalarType';
    node: GraphQLScalarType;
    tsType: string;
} | {
    type: 'GraphQLEnumType';
    node: GraphQLEnumType;
    tsType: string;
} | {
    type: 'GraphQLInputObjectType';
    node: GraphQLInputObjectType;
    tsType: string;
}>;
export declare class TypeScriptDocumentsVisitor extends BaseDocumentsVisitor<TypeScriptDocumentsPluginConfig, TypeScriptDocumentsParsedConfig> {
    protected _usedNamedInputTypes: UsedNamedInputTypes;
    private _outputPath;
    constructor(schema: GraphQLSchema, config: TypeScriptDocumentsPluginConfig, documentNode: DocumentNode, outputPath: string);
    EnumTypeDefinition(node: EnumTypeDefinitionNode): string | null;
    InputObjectTypeDefinition(node: InputObjectTypeDefinitionNode): string | null;
    InputValueDefinition(node: InputValueDefinitionNode, _key?: number | string, _parent?: any, _path?: Array<string | number>, ancestors?: Array<TypeDefinitionNode>): string;
    getImports(): Array<string>;
    getExternalSchemaTypeImports(): Array<string>;
    protected getPunctuation(_declarationKind: DeclarationKind): string;
    protected applyVariablesWrapper(variablesBlock: string, operationType: string): string;
    private collectInnerTypesRecursively;
    private collectUsedInputTypes;
    getEnumsImports(): string[];
    getExactUtilityType(): string | null;
    getIncrementalUtilityType(): string | null;
}
export {};
