import type { CompiledFormula } from '@bilig/formula';
import type { FormulaFamilyFreshUniformRunRegistrationArgs, FormulaFamilyRunUpsertArgs } from '../../formula/formula-family-store.js';
import type { FormulaInstanceSnapshot } from '../../formula/formula-instance-table.js';
import type { RuntimeDirectAggregateDescriptor, RuntimeFormula } from '../runtime-state.js';
import type { DirectScalarCurrentOperand } from './direct-formula-index-collection.js';
export interface FreshDirectAggregateFormulaEntry {
    readonly row: number;
    readonly col: number;
    readonly source: string;
    readonly compiled: CompiledFormula;
    readonly templateId: number;
    readonly aggregateKind: RuntimeDirectAggregateDescriptor['aggregateKind'];
    readonly aggregateSheetName: string;
    readonly aggregateRowStart: number;
    readonly aggregateRowEnd: number;
    readonly aggregateColStart: number;
    readonly aggregateColEnd: number;
    readonly resultOffset: number | undefined;
    readonly result: DirectScalarCurrentOperand;
}
export type FreshDirectAggregateFormulaEntrySeed = Omit<FreshDirectAggregateFormulaEntry, 'result'>;
export interface FreshFormulaEntryPosition {
    readonly row: number;
    readonly col: number;
}
export interface ContiguousSingleColumnFormulaBatch {
    readonly rowStart: number;
    readonly col: number;
}
export interface FreshFormulaFamilyRunRegistrationArgs {
    readonly state: {
        readonly formulas: {
            get(cellIndex: number): RuntimeFormula | undefined;
        };
    };
    readonly registerFreshFormulaFamilyRun: ((run: FormulaFamilyFreshUniformRunRegistrationArgs) => boolean) | undefined;
    readonly upsertFormulaFamilyRun: ((run: FormulaFamilyRunUpsertArgs) => void) | undefined;
}
export declare function createFreshFormulaInstanceList(count: number): FormulaInstanceSnapshot[];
export declare function registerFreshDirectAggregateFormulaFamilyRun(args: FreshFormulaFamilyRunRegistrationArgs, sheetId: number, entries: readonly FreshFormulaEntryPosition[], cellIndices: readonly number[] | Uint32Array): void;
export declare function registerFreshBoundFormulaFamilyRun(args: FreshFormulaFamilyRunRegistrationArgs, sheetId: number, entries: readonly FreshFormulaEntryPosition[], cellIndices: readonly number[] | Uint32Array): void;
export declare function getContiguousSingleColumnFormulaBatch(entries: readonly FreshFormulaEntryPosition[]): ContiguousSingleColumnFormulaBatch | undefined;
