import { Effect } from 'effect';
import { type CellRangeRef, type CellSnapshot } from '@bilig/protocol';
import type { EngineOp } from '@bilig/workbook';
import type { EngineRuntimeState } from '../runtime-state.js';
import { EngineCellStateError } from '../errors.js';
export interface EngineCellStateService {
    readonly captureStoredCellOps: (cellIndex: number, sheetName: string, address: string, sourceSheetName?: string, sourceAddress?: string) => Effect.Effect<EngineOp[], EngineCellStateError>;
    readonly restoreCellOps: (sheetName: string, address: string) => Effect.Effect<EngineOp[], EngineCellStateError>;
    readonly readRangeCells: (range: CellRangeRef) => Effect.Effect<CellSnapshot[][], EngineCellStateError>;
    readonly toCellStateOps: (sheetName: string, address: string, snapshot: CellSnapshot, sourceSheetName?: string, sourceAddress?: string, formatOverride?: string | null, styleIdOverride?: string) => Effect.Effect<EngineOp[], EngineCellStateError>;
    readonly captureStoredCellOpsNow: (cellIndex: number, sheetName: string, address: string, sourceSheetName?: string, sourceAddress?: string) => EngineOp[];
    readonly restoreCellOpsNow: (sheetName: string, address: string) => EngineOp[];
    readonly readRangeCellsNow: (range: CellRangeRef) => CellSnapshot[][];
    readonly toCellStateOpsNow: (sheetName: string, address: string, snapshot: CellSnapshot, sourceSheetName?: string, sourceAddress?: string, formatOverride?: string | null, styleIdOverride?: string) => EngineOp[];
}
export declare function createEngineCellStateService(args: {
    readonly state: Pick<EngineRuntimeState, 'workbook'>;
    readonly getCell: (sheetName: string, address: string) => CellSnapshot;
    readonly getCellByIndex: (cellIndex: number) => CellSnapshot;
}): EngineCellStateService;
