import type { FormulaFamily, FormulaFamilyFreshUniformRunRegistrationArgs, FormulaFamilyRunUpsertArgs, FormulaFamilyStore, FormulaFamilyStructuralSourceTransform, FormulaFamilyStructuralSourceTransformEntry } from '../../formula/formula-family-store.js';
import type { RuntimeFormula } from '../runtime-state.js';
import type { FormulaBindingFamilyShapeKeyCache } from './formula-binding-family-shape-key.js';
import type { FormulaOwnerPosition } from './formula-binding-service-types.js';
import { type DeferredInitialFormulaFamilyRun } from './formula-initialization-family-runs.js';
export interface FormulaBindingFamilyIndexController {
    readonly clearNow: () => void;
    readonly registerFormulaFamilyNow: (cellIndex: number, formula: RuntimeFormula, ownerPosition?: FormulaOwnerPosition) => void;
    readonly registerFreshFormulaFamilyRunNow: (run: FormulaFamilyFreshUniformRunRegistrationArgs) => boolean;
    readonly upsertFormulaFamilyRunNow: (run: FormulaFamilyRunUpsertArgs) => void;
    readonly ensureNow: () => void;
    readonly deferRebuildNow: () => void;
    readonly deferRunsNow: (runs: readonly DeferredInitialFormulaFamilyRun[]) => void;
    readonly canUseNow: () => boolean;
    readonly isReadyNow: () => boolean;
    readonly countSheetMembersNow: (sheetId: number) => number;
    readonly tryDeferStructuralSourceTransformsNow: (sheetId: number, transform: FormulaFamilyStructuralSourceTransform, canDeferCellIndex: (cellIndex: number) => boolean) => number | undefined;
    readonly forEachFamilyNow: (fn: (family: FormulaFamily) => void) => void;
    readonly setStructuralSourceTransformNow: (familyId: number, transform: FormulaFamilyStructuralSourceTransform) => void;
    readonly getStructuralSourceTransformNow: (cellIndex: number) => FormulaFamilyStructuralSourceTransform | undefined;
    readonly hasStructuralSourceTransformsNow: () => boolean;
    readonly peekStructuralSourceTransformsNow: () => FormulaFamilyStructuralSourceTransformEntry[];
    readonly consumeStructuralSourceTransformsNow: () => FormulaFamilyStructuralSourceTransformEntry[];
}
export declare function createFormulaBindingFamilyIndexController(args: {
    readonly formulaFamilies: FormulaFamilyStore;
    readonly formulaFamilyShapeKeyCache: FormulaBindingFamilyShapeKeyCache;
    readonly registerFormulaFamilyInStoreNow: (cellIndex: number, formula: RuntimeFormula, ownerPosition?: FormulaOwnerPosition) => void;
    readonly countFormulaSheetMembersNow: (sheetId: number) => number;
    readonly rebuildFormulaFamilyIndexNow: () => void;
}): FormulaBindingFamilyIndexController;
