import type { Plugin } from '@envelop/core'; import type { GraphQLArmorCallbackConfiguration } from '@escape.tech/graphql-armor-types'; import { OperationDefinitionNode, ValidationContext } from 'graphql'; export type CostLimitOptions = { maxCost?: number; objectCost?: number; scalarCost?: number; depthCostFactor?: number; flattenFragments?: boolean; ignoreIntrospection?: boolean; fragmentRecursionCost?: number; exposeLimits?: boolean; errorMessage?: string; } & GraphQLArmorCallbackConfiguration; declare class CostLimitVisitor { readonly OperationDefinition: Record; private readonly context; private readonly config; private readonly visitedFragments; constructor(context: ValidationContext, options?: CostLimitOptions); onOperationDefinitionEnter(operation: OperationDefinitionNode): void; private computeComplexity; } export declare const costLimitRule: (options?: CostLimitOptions) => (context: ValidationContext) => CostLimitVisitor; export declare const costLimitPlugin: = {}>(options?: CostLimitOptions) => Plugin; export {};