import { Effect } from 'effect';
import type { EngineEvent } from '@bilig/protocol';
import type { EngineOpBatch } from '@bilig/workbook';
import type { EngineRuntimeState } from '../runtime-state.js';
export interface EngineEventService {
    readonly subscribe: (listener: (event: EngineEvent) => void) => Effect.Effect<() => void>;
    readonly subscribeCell: (sheetName: string, address: string, listener: () => void) => Effect.Effect<() => void>;
    readonly subscribeCells: (sheetName: string, addresses: readonly string[], listener: () => void) => Effect.Effect<() => void>;
    readonly subscribeBatches: (listener: (batch: EngineOpBatch) => void) => Effect.Effect<() => void>;
}
export declare function createEngineEventService(state: Pick<EngineRuntimeState, 'events' | 'workbook' | 'batchListeners'>): EngineEventService;
