import { Path } from '@graphql-tools/utils';
import { DeferUsage } from './collectFields.cjs';
import { PendingExecutionGroup, StreamRecord, SuccessfulExecutionGroup } from './types.cjs';
export type DeliveryGroup = DeferredFragmentRecord | StreamRecord;
/** @internal */
export declare class DeferredFragmentRecord {
    path: Path | undefined;
    label: string | undefined;
    id?: string | undefined;
    parentDeferUsage: DeferUsage | undefined;
    pendingExecutionGroups: Set<PendingExecutionGroup>;
    successfulExecutionGroups: Set<SuccessfulExecutionGroup>;
    children: Set<DeliveryGroup>;
    pending: boolean;
    fns: Array<() => void>;
    constructor(path: Path | undefined, label: string | undefined, parentDeferUsage: DeferUsage | undefined);
    onPending(fn: () => void): void;
    setAsPending(): void;
}
export declare function isDeferredFragmentRecord(deliveryGroup: DeliveryGroup): deliveryGroup is DeferredFragmentRecord;
/**
 * @internal
 */
export declare class DeferredFragmentFactory {
    private _rootDeferredFragments;
    get(deferUsage: DeferUsage, path: Path | undefined): DeferredFragmentRecord;
    private _pathAtDepth;
}
