import { DepGraph } from 'dependency-graph';
import type { DocumentNode, FieldNode, FragmentDefinitionNode, FragmentSpreadNode, InlineFragmentNode, OperationDefinitionNode, Source } from 'graphql';
import { GraphQLError } from 'graphql';
export type CalculateOperationComplexityConfig = {
    scalarCost: number;
    objectCost: number;
    depthCostFactor: number;
};
export type ValidateOperationComplexityConfig = {
    maxComplexityScore: number;
    complexityScalarCost: number;
    complexityObjectCost: number;
    complexityDepthCostFactor: number;
};
export declare function validateComplexity({ source, doc, maxComplexityScore, config, fragmentGraph, }: {
    source: Source;
    doc: DocumentNode;
    maxComplexityScore: number;
    config: CalculateOperationComplexityConfig;
    fragmentGraph: DepGraph<FragmentDefinitionNode>;
}): GraphQLError | void;
export declare function calculateOperationComplexity(node: FieldNode | FragmentDefinitionNode | InlineFragmentNode | OperationDefinitionNode | FragmentSpreadNode, config: CalculateOperationComplexityConfig, getFragmentByName: (fragmentName: string) => FragmentDefinitionNode | undefined, depth?: number): number;
