/**
 * Official Type definitions for JSS Formula Premium
 * https://jspreadsheet.com/products/formula
 */

declare function formula(expression: string, variables?: object, x?: number, y?: number, instance?: Function): any

declare namespace formula {

    /**
     * Define custom formulas
     */
    function setFormula(formulas: object) : void;
    function license(value: string) : void;

    /**
     * Define external variables
     */
    function setConst(variables: object) : void;
    function resetConst() : void;
    function define(variables: object) : void;
    function reset() : void;

    let adjustPrecision: boolean;
    let cache: boolean;

    /**
     * Transform a formula before executed.
     * @param {string} expression
     * Example:
     * formula.onbeforeformula = (expression) => expression.replace(/\./g, '').replace(/\,/g, '.')
     */
    function onbeforeformula(expression: string) : string
}

export default formula;
