import { Effect } from 'effect';
import { type CellRangeRef, type CellSnapshot, type LiteralInput } from '@bilig/protocol';
import type { EngineOp } from '@bilig/workbook';
import { type CsvParseOptions } from '../../csv.js';
import { WorkbookStore } from '../../workbook-store.js';
import { EngineMutationError } from '../errors.js';
export interface MutationRangeOperations {
    readonly setRangeValues: (range: CellRangeRef, values: readonly (readonly LiteralInput[])[]) => Effect.Effect<void, EngineMutationError>;
    readonly setRangeFormulas: (range: CellRangeRef, formulas: readonly (readonly string[])[]) => Effect.Effect<void, EngineMutationError>;
    readonly clearRange: (range: CellRangeRef) => Effect.Effect<void, EngineMutationError>;
    readonly fillRange: (source: CellRangeRef, target: CellRangeRef) => Effect.Effect<void, EngineMutationError>;
    readonly copyRange: (source: CellRangeRef, target: CellRangeRef) => Effect.Effect<void, EngineMutationError>;
    readonly moveRange: (source: CellRangeRef, target: CellRangeRef) => Effect.Effect<void, EngineMutationError>;
    readonly importSheetCsv: (sheetName: string, csv: string, options?: CsvParseOptions) => Effect.Effect<void, EngineMutationError>;
}
interface MutationRangeOperationsRuntime {
    readonly workbook: WorkbookStore;
    readonly getCellByIndex: (cellIndex: number) => CellSnapshot;
    readonly readRangeCells: (range: CellRangeRef) => CellSnapshot[][];
    readonly toCellStateOps: (sheetName: string, address: string, snapshot: CellSnapshot, sourceSheetName?: string, sourceAddress?: string) => EngineOp[];
    readonly executeLocal: (ops: EngineOp[], potentialNewCells?: number, options?: {
        readonly returnUndoOps?: boolean;
    }) => Effect.Effect<readonly EngineOp[] | null, EngineMutationError>;
}
export declare function createMutationRangeOperations(args: MutationRangeOperationsRuntime): MutationRangeOperations;
export {};
