import type { ASTNode, DocumentNode, FragmentDefinitionNode, FragmentSpreadNode, GraphQLError, GraphQLSchema, OperationDefinitionNode } from "graphql";
import * as graphqlLibrary from "graphql";
import { ValidationContext } from "graphql";
import type { CheckDocumentOutput, ErrorOperationLocation } from "./interfaces";
import type { TypeAndOperationPathInfo } from "./operationPaths";
import type { RuleError } from "./ruleError";
export declare class RulesContext extends ValidationContext {
    private typeInfo;
    private resolvedPreset;
    graphqlLibrary: typeof graphqlLibrary;
    constructor(schema: GraphQLSchema, ast: DocumentNode, typeInfo: TypeAndOperationPathInfo, resolvedPreset: GraphileConfig.ResolvedPreset, onError: (error: RuleError | GraphQLError) => void);
    _meta: CheckDocumentOutput["meta"];
    addMeta<TKey extends keyof CheckDocumentOutput["meta"]>(key: TKey, value: CheckDocumentOutput["meta"][TKey]): void;
    getMeta(): {
        count?: import("./interfaces").CheckDocumentCounts;
    };
    getTypeInfo(): TypeAndOperationPathInfo;
    getOperationPath(): string;
    getResolvedPreset(): GraphileConfig.ResolvedPreset;
    isIntrospection(): boolean;
    subPathByNode: Map<ASTNode, string>;
    operationPathsByNodeByOperation: Map<OperationDefinitionNode, Map<ASTNode, string[]>>;
    operationNamesByNode: Map<ASTNode, (string | undefined)[]>;
    _fragmentsByRoot: Map<OperationDefinitionNode | FragmentDefinitionNode, FragmentSpreadNode[]>;
    _nodesByRoot: Map<OperationDefinitionNode | FragmentDefinitionNode, ASTNode[]>;
    _operationDefinitions: OperationDefinitionNode[];
    _fragmentDefinitions: FragmentDefinitionNode[];
    initEnterNode(node: ASTNode): void;
    initLeaveNode(node: ASTNode): void;
    getOperationNamesForNodes(nodes: readonly ASTNode[] | undefined): (string | undefined)[];
    getErrorOperationLocationsForNodes(nodes: readonly ASTNode[] | undefined, limitToOperations?: ReadonlyArray<string | undefined>): ReadonlyArray<ErrorOperationLocation>;
}
