declare const FARM_DEFERRED_CONTENT_TYPE = "application/x-farm-deferred+json"; declare const FARM_DEFERRED_ERROR_CODE = "FARM_DEFERRED_DATA_ERROR"; declare const FARM_DEFERRED_BRAND: unique symbol; interface Deferred extends Promise { readonly [FARM_DEFERRED_BRAND]: true; } interface PreparedDeferredData { data: unknown; records: readonly DeferredRecord[]; } interface DeferredRecord { id: string; promise: Deferred; } type DeferredSettlement = { status: "fulfilled"; value: unknown; } | { status: "rejected"; error: { code: typeof FARM_DEFERRED_ERROR_CODE; message: string; }; }; type DeferredSettlements = Record; interface DeferredDataResponseOptions { onError?: (error: unknown, id: string) => void; } declare class DeferredDataError extends Error { readonly name = "DeferredDataError"; readonly code = "FARM_DEFERRED_DATA_ERROR"; constructor(message?: string); } declare function defer(value: PromiseLike): Deferred>; declare function isDeferred(value: unknown): value is Deferred; declare function prepareDeferredData(value: unknown): PreparedDeferredData; declare function snapshotDeferredData(records: readonly DeferredRecord[]): DeferredSettlements; declare function reviveDeferredData(value: T, settlements: DeferredSettlements): T; declare function createDeferredDataResponse(value: unknown, init?: ResponseInit, options?: DeferredDataResponseOptions): Response; declare function readDeferredDataResponse(response: Response): Promise; export { type Deferred, DeferredDataError, type DeferredDataResponseOptions, type DeferredRecord, type DeferredSettlement, type DeferredSettlements, FARM_DEFERRED_BRAND, FARM_DEFERRED_CONTENT_TYPE, FARM_DEFERRED_ERROR_CODE, type PreparedDeferredData, createDeferredDataResponse, defer, isDeferred, prepareDeferredData, readDeferredDataResponse, reviveDeferredData, snapshotDeferredData };