import { DirectiveNode, EnumTypeDefinitionNode, EnumValueDefinitionNode, FieldDefinitionNode, GraphQLSchema, InputObjectTypeDefinitionNode, InputValueDefinitionNode, InterfaceTypeDefinitionNode, NamedTypeNode, ObjectTypeDefinitionNode, StringValueNode, TypeNode } from 'graphql';
import { CSharpFieldType, JsonAttributesSource, MemberNamingFn } from '@graphql-codegen/c-sharp-common';
import { BaseVisitor, EnumValuesMap, ParsedConfig } from '@graphql-codegen/visitor-plugin-common';
import { CSharpResolversPluginRawConfig } from './config.cjs';
export interface CSharpResolverParsedConfig extends ParsedConfig {
    namespaceName: string;
    className: string;
    listType: string;
    enumValues: EnumValuesMap;
    emitRecords: boolean;
    emitJsonAttributes: boolean;
    jsonAttributesSource: JsonAttributesSource;
    memberNamingFunction: MemberNamingFn;
}
export declare class CSharpResolversVisitor extends BaseVisitor<CSharpResolversPluginRawConfig, CSharpResolverParsedConfig> {
    private _schema;
    private readonly jsonAttributesConfiguration;
    constructor(rawConfig: CSharpResolversPluginRawConfig, _schema: GraphQLSchema);
    getImports(): string;
    wrapWithNamespace(content: string): string;
    wrapWithClass(content: string): string;
    protected getEnumValue(enumName: string, enumOption: string): string;
    EnumValueDefinition(node: EnumValueDefinitionNode): (enumName: string) => string;
    EnumTypeDefinition(node: EnumTypeDefinitionNode): string;
    getFieldHeader(node: InputValueDefinitionNode | FieldDefinitionNode | EnumValueDefinitionNode, fieldType?: CSharpFieldType): string;
    getDeprecationReason(directive: DirectiveNode): string;
    protected resolveInputFieldType(typeNode: TypeNode, hasDefaultValue?: boolean): CSharpFieldType;
    protected buildRecord(name: string, description: StringValueNode, inputValueArray: ReadonlyArray<FieldDefinitionNode>, interfaces?: ReadonlyArray<NamedTypeNode>): string;
    protected buildClass(name: string, description: StringValueNode, inputValueArray: ReadonlyArray<FieldDefinitionNode>, interfaces?: ReadonlyArray<NamedTypeNode>): string;
    protected buildInterface(name: string, description: StringValueNode, inputValueArray: ReadonlyArray<FieldDefinitionNode>): string;
    protected buildInputTransformer(name: string, description: StringValueNode, inputValueArray: ReadonlyArray<InputValueDefinitionNode>): string;
    InputObjectTypeDefinition(node: InputObjectTypeDefinitionNode): string;
    ObjectTypeDefinition(node: ObjectTypeDefinitionNode): string;
    InterfaceTypeDefinition(node: InterfaceTypeDefinitionNode): string;
}
