import { type LiteralInput } from '@bilig/protocol';
import { type CellStore } from '../../cell-store.js';
import type { StringPool } from '../../string-pool.js';
import type { SheetRecord } from '../../workbook-store.js';
export declare const FAST_OPERATION_LITERAL_OVERWRITE_FLAGS: number;
export interface OperationLiteralVisibleCellSheet {
    readonly structureVersion: number;
    readonly logical: {
        readonly getCellVisiblePosition: (cellIndex: number) => {
            readonly row: number;
            readonly col: number;
        } | undefined;
    };
}
export interface OperationLiteralWriteWorkbook {
    readonly cellStore: CellStore;
    readonly notifyCellValueWritten: (cellIndex: number) => void;
    readonly getSheetById: (sheetId: number) => OperationLiteralVisibleCellSheet | undefined;
}
export interface OperationLiteralPredicateState {
    readonly workbook: {
        readonly cellStore: CellStore;
        readonly getCellFormat: (cellIndex: number) => unknown;
    };
    readonly strings: StringPool;
    readonly formulas: {
        readonly get: (cellIndex: number) => unknown;
    };
}
export declare function canFastPathOperationLiteralOverwrite(input: {
    readonly cellStore: CellStore;
    readonly formulas: {
        readonly get: (cellIndex: number) => unknown;
    };
    readonly cellIndex: number;
}): boolean;
export declare function isOperationNullLiteralWriteNoOp(input: {
    readonly state: OperationLiteralPredicateState;
    readonly cellIndex: number;
}): boolean;
export declare function isOperationClearCellNoOp(input: {
    readonly state: OperationLiteralPredicateState;
    readonly cellIndex: number;
}): boolean;
export declare function writeOperationLiteralToExistingCell(input: {
    readonly workbook: Pick<OperationLiteralWriteWorkbook, 'cellStore' | 'notifyCellValueWritten'>;
    readonly strings: StringPool;
    readonly cellIndex: number;
    readonly value: LiteralInput;
}): void;
export declare function writeOperationNumericLiteralToExistingCell(input: {
    readonly workbook: Pick<OperationLiteralWriteWorkbook, 'cellStore' | 'notifyCellValueWritten'>;
    readonly cellIndex: number;
    readonly value: number;
}): void;
export declare function writeOperationNumericLiteralToExistingCellWithoutColumnNotify(input: {
    readonly cellStore: CellStore;
    readonly cellIndex: number;
    readonly value: number;
}): void;
export declare function writeTrustedOperationExistingNumericLiteralToCell(input: {
    readonly cellStore: CellStore;
    readonly cellIndex: number;
    readonly sheet: Pick<SheetRecord, 'columnVersions'>;
    readonly col: number;
    readonly value: number;
}): void;
export declare function writeFastPathOperationLiteralToExistingCell(input: {
    readonly workbook: Pick<OperationLiteralWriteWorkbook, 'cellStore' | 'notifyCellValueWritten'>;
    readonly strings: StringPool;
    readonly cellIndex: number;
    readonly value: LiteralInput;
}): void;
export declare function canSkipOperationFormulaColumnVersion(input: {
    readonly workbook: Pick<OperationLiteralWriteWorkbook, 'cellStore' | 'getSheetById'>;
    readonly cellIndex: number;
    readonly hasTrackedColumnDependents: (sheetId: number, col: number) => boolean;
}): boolean;
export declare function cellsShareOperationVersionColumn(input: {
    readonly workbook: Pick<OperationLiteralWriteWorkbook, 'cellStore' | 'getSheetById'>;
    readonly leftCellIndex: number;
    readonly rightCellIndex: number;
}): boolean;
