import type { EngineEvent } from '@bilig/protocol';
import type { EngineTrackedEvent } from '../../events.js';
import type { EnginePatchEmitterService } from '../../patches/patch-emitter.js';
import type { EngineRuntimeState } from '../runtime-state.js';
export interface EngineFullInvalidationEvents {
    readonly hasListeners: () => boolean;
    readonly hasTrackedListeners: () => boolean;
    readonly hasCellListeners: () => boolean;
    readonly emitAllWatched: (event: EngineEvent) => void;
    readonly emitTracked: (event: EngineTrackedEvent) => void;
}
export interface EngineFullInvalidationService {
    readonly emitFullSnapshotInvalidation: (options: {
        readonly incrementMetrics: boolean;
    }) => void;
}
export declare function createEngineFullInvalidationService(args: {
    readonly state: {
        readonly events: EngineFullInvalidationEvents;
        readonly getLastMetrics: Pick<EngineRuntimeState, 'getLastMetrics'>['getLastMetrics'];
        readonly setLastMetrics: Pick<EngineRuntimeState, 'setLastMetrics'>['setLastMetrics'];
    };
    readonly patchEmitter: Pick<EnginePatchEmitterService, 'captureChangedPatches'>;
}): EngineFullInvalidationService;
