import type { ExecutionArgs } from "graphql/execution/execute";
import { FieldNode } from "graphql";
import { Agent } from "../../agent/Agent";
import { Context } from "../../agent/Context";
import type { Endpoint } from "../../agent/Config";
type Result = {
    block: false;
} | {
    block: true;
    field: FieldNode;
    source: "ip";
    remoteAddress: string;
    operationType: "query" | "mutation";
    endpoint: Endpoint;
    retryAfterSeconds: number;
} | {
    block: true;
    field: FieldNode;
    source: "user";
    userId: string;
    operationType: "query" | "mutation";
    endpoint: Endpoint;
    retryAfterSeconds: number;
} | {
    block: true;
    field: FieldNode;
    source: "group";
    groupId: string;
    operationType: "query" | "mutation";
    endpoint: Endpoint;
    retryAfterSeconds: number;
};
export declare function shouldRateLimitOperation(agent: Agent, context: Context, executeArgs: Pick<ExecutionArgs, "document" | "operationName">): Result;
export {};
