import type { DeferUsage, GroupedFieldSet } from './collectFields.cjs';
export type DeferUsageSet = ReadonlySet<DeferUsage>;
export interface ExecutionPlan {
    groupedFieldSet: GroupedFieldSet;
    newGroupedFieldSets: Map<DeferUsageSet, GroupedFieldSet>;
}
export declare function buildExecutionPlan(originalGroupedFieldSet: GroupedFieldSet, parentDeferUsages?: DeferUsageSet): ExecutionPlan;
export declare function buildBranchingExecutionPlan(originalGroupedFieldSet: GroupedFieldSet, parentDeferUsages?: DeferUsageSet): ExecutionPlan;
