import type { CompiledFormula } from '@bilig/formula';
import { type FormulaTemplateResolution, type FormulaTemplateSnapshot } from '../../formula/template-bank.js';
import type { EngineCounters } from '../../perf/engine-counters.js';
export interface EngineFormulaTemplateNormalizationService {
    readonly clear: () => void;
    readonly reset: () => void;
    readonly compileForCell: (source: string, ownerRow: number, ownerCol: number) => CompiledFormula;
    readonly resolveForCell: (source: string, ownerRow: number, ownerCol: number) => FormulaTemplateResolution;
    readonly resolveByTemplateId: (templateId: number, source: string, ownerRow: number, ownerCol: number) => FormulaTemplateResolution | undefined;
    readonly resolveTrustedByTemplateId: (templateId: number, source: string, ownerRow: number, ownerCol: number) => FormulaTemplateResolution | undefined;
    readonly getTemplateSnapshot: (templateId: number) => FormulaTemplateSnapshot | undefined;
    readonly listTemplates: () => FormulaTemplateSnapshot[];
    readonly hydrateTemplates: (snapshots: readonly FormulaTemplateSnapshot[]) => void;
}
export declare function createEngineFormulaTemplateNormalizationService(args?: {
    readonly counters?: EngineCounters;
}): EngineFormulaTemplateNormalizationService;
