import { Effect } from 'effect';
import type { SelectionState } from '@bilig/protocol';
import type { EngineRuntimeState } from '../runtime-state.js';
interface SetSelectionOptions {
    anchorAddress?: string | null;
    range?: {
        startAddress: string;
        endAddress: string;
    } | null;
    editMode?: SelectionState['editMode'];
}
export interface EngineSelectionService {
    readonly subscribe: (listener: () => void) => Effect.Effect<() => void>;
    readonly getSelectionState: () => Effect.Effect<SelectionState>;
    readonly setSelection: (sheetName: string, address: string | null, options?: SetSelectionOptions) => Effect.Effect<boolean>;
}
export declare function createEngineSelectionService(state: Pick<EngineRuntimeState, 'selectionListeners' | 'getSelection' | 'setSelection'>): EngineSelectionService;
export {};
