import type { CellAddress, CellValue } from './base';
export interface IFormulaCell {
    sheet: string;
    address: CellAddress;
    formula: string;
    value: CellValue;
    dependencies: CellAddress[];
    error?: string;
}
export interface FormulaCell {
    sheet: string;
    row: number;
    col: number;
}
export interface IFormulaResult {
    value: CellValue;
    error?: string;
}
export interface FormulaResult {
    value: any;
    error?: string | any;
}
export interface IFormulaFunction {
    name: string;
    description: string;
    params: Array<{
        name: string;
        description: string;
        optional?: boolean;
    }>;
    execute: (...args: any[]) => CellValue;
}
export interface IFormulaManagerOptions {
    enabled: boolean;
    customFunctions?: Record<string, IFormulaFunction>;
    maxRecursionDepth?: number;
    cacheResults?: boolean;
}
export interface IFormulaManager {
    exportFormulas: (sheetKey: string) => Record<string, string>;
    isCellFormula: (cell: {
        sheet: string;
        row: number;
        col: number;
    }) => boolean;
    getCellFormula: (cell: {
        sheet: string;
        row: number;
        col: number;
    }) => string | undefined;
    setCellContent: (cell: {
        sheet: string;
        row: number;
        col: number;
    }, value: string) => void;
}
