/**
 * Operate admin datatable — sort, empty, search, inline cell edit.
 * DOM-only; no kernel imports.
 * Specs: trellis-admin-datatable-extract.md, trellis-admin-datatable-cell-edit.md
 */
export type TableEmptyState = 'hidden' | 'no-lanes' | 'no-matches';
export type CellCommitDetail = {
    entityId: string;
    col: 'branch' | 'issue';
    field: string;
    value: string | null;
};
export type AdminDatatableHandle = {
    applySearchQuery(q: string): void;
    refresh(): void;
    destroy(): void;
};
/** Pure: compare two cell strings (numeric when both parse). */
export declare function compareCellValues(av: string, bv: string): number;
/** Pure: empty veil state from row counts. */
export declare function resolveEmptyState(rowCount: number, visibleCount: number): TableEmptyState;
/** Empty/whitespace OK (→ null); else must match TRL-N. */
export declare function isValidIssueId(raw: string): boolean;
/** Empty → null; else canonical TRL-N (uppercase prefix). */
export declare function normalizeIssueCommit(raw: string): string | null;
export declare function isValidBranchCommit(raw: string): boolean;
/**
 * Resolve lane entity id for edit/commit.
 * Prefer data-entity-id; fall back to lane column text (TML may lag attrs).
 */
export declare function resolveLaneEntityId(tr: HTMLTableRowElement): string;
export type CellEditCol = 'branch' | 'issue';
/** Last painted branch/issue per lane — TML may lag textContent on first focus/F2. */
export type CellValueCache = Map<string, Partial<Record<CellEditCol, string>>>;
/** Pure: resolve edit baseline from live cell + optional cache (Escape restore target). */
export declare function resolveCellEditPrior(td: HTMLTableCellElement, tr: HTMLTableRowElement, col: CellEditCol, cache?: Readonly<CellValueCache>): {
    priorRaw: string;
    priorDisplay: string;
};
export declare function mountAdminDatatable(root: HTMLElement, opts?: {
    onEmptyChange?: (state: TableEmptyState) => void;
    onCellCommit?: (detail: CellCommitDetail) => void | Promise<void>;
}): AdminDatatableHandle;
//# sourceMappingURL=admin-datatable.d.ts.map