import type { CellRangeRef } from '@bilig/protocol';
import type { WorkbookCommandMetadataProjection, WorkbookCommandRequest, WorkbookFeatureId, WorkbookProjectionInterceptorPoint, WorkbookProjectionInterceptorRegistration, WorkbookRangeChromeProjection } from '@bilig/workbook/features';
import type { SpreadsheetEngine } from './engine.js';
export interface WorkbookProjectionHandlerContext {
    readonly engine: SpreadsheetEngine;
    readonly featureId: WorkbookFeatureId;
}
export interface WorkbookRangeChromeProjectionInput {
    readonly range: CellRangeRef;
}
export interface WorkbookCommandMetadataProjectionInput {
    readonly request: WorkbookCommandRequest;
}
export interface WorkbookProjectionInterceptor extends WorkbookProjectionInterceptorRegistration {
    readonly projectRangeChrome?: (input: WorkbookRangeChromeProjectionInput, context: WorkbookProjectionHandlerContext) => readonly WorkbookRangeChromeProjection[];
    readonly projectCommandMetadata?: (input: WorkbookCommandMetadataProjectionInput, context: WorkbookProjectionHandlerContext) => WorkbookCommandMetadataProjection | undefined;
}
export declare class WorkbookProjectionInterceptorService {
    private readonly engine;
    private readonly interceptors;
    private registrationCounter;
    constructor(engine: SpreadsheetEngine);
    register(interceptor: WorkbookProjectionInterceptor): () => void;
    list(point?: WorkbookProjectionInterceptorPoint): readonly WorkbookProjectionInterceptorRegistration[];
    rangeChrome(range: CellRangeRef): readonly WorkbookRangeChromeProjection[];
    commandMetadata(request: WorkbookCommandRequest): readonly WorkbookCommandMetadataProjection[];
    private context;
    private sortInterceptors;
}
