import { EnumTypeDefinitionNode, GraphQLSchema, InputObjectTypeDefinitionNode, OperationDefinitionNode, TypeNode } from 'graphql';
import { CSharpFieldType, JsonAttributesSourceConfiguration, MemberNamingFn } from '@graphql-codegen/c-sharp-common';
import { Types } from '@graphql-codegen/plugin-helpers';
import { ClientSideBasePluginConfig, ClientSideBaseVisitor, LoadedFragment } from '@graphql-codegen/visitor-plugin-common';
import { CSharpOperationsRawPluginConfig } from './config.js';
export interface CSharpOperationsPluginConfig extends ClientSideBasePluginConfig {
    namespaceName: string;
    namedClient: string;
    querySuffix: string;
    mutationSuffix: string;
    subscriptionSuffix: string;
    typesafeOperation: boolean;
    jsonAttributesConfiguration: JsonAttributesSourceConfiguration;
    memberNamingFunction: MemberNamingFn;
}
export declare class CSharpOperationsVisitor extends ClientSideBaseVisitor<CSharpOperationsRawPluginConfig, CSharpOperationsPluginConfig> {
    private _operationsToInclude;
    private _schemaAST;
    private readonly _fragmentList;
    constructor(schema: GraphQLSchema, fragments: LoadedFragment[], rawConfig: CSharpOperationsRawPluginConfig, documents?: Types.DocumentFile[]);
    private overruleConfigSettings;
    private _operationHasDirective;
    private _extractDirective;
    private _namedClient;
    private _extractNamedClient;
    protected _gql(node: OperationDefinitionNode): string;
    private _getDocumentNodeVariable;
    private _gqlInputSignature;
    getCSharpImports(): string;
    private _operationSuffix;
    protected resolveFieldType(typeNode: TypeNode, hasDefaultValue?: boolean): CSharpFieldType;
    private _getResponseFieldRecursive;
    private _getResponseClass;
    private _getVariablesClass;
    private _getOperationMethod;
    OperationDefinition(node: OperationDefinitionNode): string;
    InputObjectTypeDefinition(node: InputObjectTypeDefinitionNode): string;
    EnumTypeDefinition(node: EnumTypeDefinitionNode): string;
}
