import type { Api } from 'datatables.net'; /** Reason associated with a DataTables draw owned by the editor. */ export type DrawOwnershipReason = 'create-success' | 'dialog-edit-success' | 'batch-edit-success' | 'inline-edit-success' | 'remove-success' | 'refresh'; /** Logical identity of the currently owned draw. */ export interface DrawOwnershipToken { readonly sequence: number; readonly reason: DrawOwnershipReason; } /** Distinguishes editor commit draws from unrelated DataTables redraws. */ export declare class DrawOwnership { private readonly table; private readonly timeoutMs; private activeToken; private sequence; private isDestroyed; private readonly lifecycleAbortController; private readonly pendingDraws; constructor(table: Api, timeoutMs?: number); /** Returns whether a draw event is currently owned by the editor. */ ownsDraw(): boolean; /** Runs a synchronous draw and resolves after its public draw event. */ runWithDraw(reason: DrawOwnershipReason, signal: AbortSignal, draw: () => void): Promise; /** Marks redraws performed by a consumer-owned asynchronous refresh. */ runWhile(reason: DrawOwnershipReason, signal: AbortSignal, action: () => Promise): Promise; /** Releases resources and prevents future owned draws. */ destroy(): void; private acquire; private release; private assertActive; }