import type { CellRangeRef } from '@bilig/protocol';
import type { WorkbookCommandReceipt, WorkbookCommandRequest } from '@bilig/workbook';
import type { SpreadsheetEngine } from './engine.js';
import { WorkbookCommandService } from './workbook-command-service.js';
import { WorkbookFeatureRegistry } from './workbook-feature-registry.js';
import { WorkbookProjectionInterceptorService } from './workbook-projection-interceptors.js';
export declare class WorkbookFacade {
    readonly engine: SpreadsheetEngine;
    readonly features: WorkbookFeatureRegistry;
    readonly projectionService: WorkbookProjectionInterceptorService;
    readonly commands: WorkbookCommandService;
    private readonly disposers;
    constructor(engine: SpreadsheetEngine);
    table(name: string): WorkbookTableFacade;
    selection(range: CellRangeRef): WorkbookSelectionFacade;
    command(request: WorkbookCommandRequest): WorkbookCommandFacade;
    projection(): WorkbookProjectionFacade;
    dispose(): void;
}
export declare class WorkbookTableFacade {
    private readonly engine;
    private readonly name;
    constructor(engine: SpreadsheetEngine, name: string);
    snapshot(): import("./workbook-metadata-types.js").WorkbookTableRecord | undefined;
    column(columnName: string): {
        tableName: string;
        columnName: string;
        columnIndex: number;
    };
}
export declare class WorkbookSelectionFacade {
    private readonly commands;
    private readonly range;
    constructor(commands: WorkbookCommandService, range: CellRangeRef);
    createTable(options?: {
        readonly name?: string;
        readonly hasHeaders?: boolean;
    }): WorkbookCommandFacade;
}
export declare class WorkbookCommandFacade {
    private readonly commands;
    private readonly request;
    constructor(commands: WorkbookCommandService, request: WorkbookCommandRequest);
    preview(): Promise<WorkbookCommandReceipt>;
    apply(): Promise<WorkbookCommandReceipt>;
    applyAndVerify(): Promise<WorkbookCommandReceipt>;
}
export declare class WorkbookProjectionFacade {
    private readonly projection;
    constructor(projection: WorkbookProjectionInterceptorService);
    rangeChrome(range: CellRangeRef): readonly import("@bilig/workbook/features").WorkbookRangeChromeProjection[];
}
export declare function createWorkbookFacade(engine: SpreadsheetEngine): WorkbookFacade;
