import { GraphQLObjectType, GraphQLScalarType, GraphQLSchema, OperationTypeNode, GraphQLField, GraphQLOutputType } from 'graphql';
import { Maybe } from 'graphql/jsutils/Maybe';
import { LaboratoryOperation } from './operations';
export declare function healQuery(query: string): string;
export declare function isPathInQuery(query: string, path: string, operationName?: string): boolean;
export declare function addPathToQuery(query: string, path: string, operationName?: string): string;
export declare function deletePathFromQuery(query: string, path: string, operationName?: string): string;
export declare function getOperationHash(operation: Pick<LaboratoryOperation, 'query' | 'variables'>): Promise<string | null>;
export declare function getOperationName(query: string): string | null | undefined;
export declare function getOperationType(query: string): OperationTypeNode | null | undefined;
export declare function isArgInQuery(query: string, path: string, argName: string, operationName?: string): boolean;
export declare function extractOfType(type: GraphQLOutputType): GraphQLObjectType | GraphQLScalarType | null;
export declare function findFieldInSchema(path: string, schema: GraphQLSchema): GraphQLField<unknown, unknown, unknown> | null | undefined;
export declare function addArgToField(query: string, path: string, argName: string, schema: GraphQLSchema, operationName?: string): string;
export declare function removeArgFromField(query: string, path: string, argName: string, operationName?: string): string;
export declare function extractPaths(query: string): string[][];
export declare function getOpenPaths(query: string): string[];
export type SchemaPathSearchEntry = {
    path: string;
    segmentsLower: string[];
    pathLower: string;
    pathWithoutOperationLower: string;
};
export type SchemaSearchResult = {
    matchedPaths: string[];
    visiblePaths: Set<string>;
    forcedOpenPaths: Set<string>;
    hasMore: boolean;
    nodesVisited: number;
};
export declare function schemaToPaths(schema: GraphQLSchema, maxDepth?: number): string[][];
export declare function pathsToStrings(paths: readonly string[][]): string[];
export declare function createSchemaPathSearchIndex(paths: readonly string[]): SchemaPathSearchEntry[];
export declare function searchSchemaPathIndex(index: readonly SchemaPathSearchEntry[], search: string, limit?: number): string[];
export declare function buildVisiblePathSet(paths: readonly string[]): Set<string>;
export declare function buildForcedOpenPathSet(paths: readonly string[]): Set<string>;
export declare function searchSchemaPaths(schema: GraphQLSchema, search: string, options?: {
    maxDepth?: number;
    maxMatches?: number;
    maxNodes?: number;
    operationTypes?: OperationTypeNode[];
}): SchemaSearchResult;
export declare function handleTemplate(query: string, env: Record<string, any>): string;
export declare function getFieldByPath(path: string, schema: GraphQLSchema): Maybe<GraphQLField<unknown, unknown, unknown>>;
