import { Effect } from 'effect';
import { type CellRangeRef, type CellSnapshot, type CellValue, type DependencySnapshot, type ExplainCellSnapshot } from '@bilig/protocol';
import type { EngineRuntimeState, RuntimeStructuralFormulaSourceTransform } from '../runtime-state.js';
import type { EngineRuntimeColumnStoreService } from './runtime-column-store-service.js';
export interface EngineReadService {
    readonly exportSheetCsv: (sheetName: string) => Effect.Effect<string>;
    readonly getCellValue: (sheetName: string, address: string) => Effect.Effect<CellValue>;
    readonly getRangeValues: (range: CellRangeRef) => Effect.Effect<CellValue[][]>;
    readonly getCell: (sheetName: string, address: string) => Effect.Effect<CellSnapshot>;
    readonly getCellByIndex: (cellIndex: number) => Effect.Effect<CellSnapshot>;
    readonly getDependencies: (sheetName: string, address: string) => Effect.Effect<DependencySnapshot>;
    readonly getDependents: (sheetName: string, address: string) => Effect.Effect<DependencySnapshot>;
    readonly explainCell: (sheetName: string, address: string) => Effect.Effect<ExplainCellSnapshot>;
}
export declare function createEngineReadService(args: {
    readonly state: Pick<EngineRuntimeState, 'workbook' | 'strings' | 'formulas' | 'ranges'>;
    readonly runtimeColumnStore: EngineRuntimeColumnStoreService;
    readonly getFormulaFamilyStructuralSourceTransform: (cellIndex: number) => RuntimeStructuralFormulaSourceTransform | undefined;
    readonly forEachFormulaDependencyCell: (cellIndex: number, fn: (dependencyCellIndex: number) => void) => void;
    readonly getEntityDependents: (entityId: number) => Uint32Array;
    readonly cellToCsvValue: (cell: CellSnapshot) => string;
    readonly serializeCsv: (rows: string[][]) => string;
}): EngineReadService;
