// Copyright 2015-2021 JC Fisher // Contains type definitions for typescript users. export declare enum basisOptions { US = 0, Actual, Actual360, // Copyright 2015-2021 JC Fisher Actual365, European } export declare enum roundingMode { Floor = 0, Ceiling = 1 } export declare enum paymentTiming { End = 0, Beginning = 1 } export declare enum months { Jan = 1, Feb = 2, Mar = 3, Apr = 4, May = 5, Jun = 6, Jul = 7, Aug = 8, Sep = 9, Oct = 10, Nov = 11, Dec = 12 } export declare enum dateUnits { Years = "Y", Months = "M", Weeks = "W", Days = "D", DaysIgnoringMonthsAndYears = "MD", MonthsIgnoringDaysandYears = "YM", DaysIgnoringYears = "YD" } export declare enum matchType { GreaterThan = -1, Exact = 0, LessThan = 1 } /** Compute absolute value */ export function abs(value: number): number; /** Compute absolute value */ export function accrint( issue: string | Date, first: string | Date, settlement: string | Date, rate: number, par: number, frequency: number, basis: basisOptions ): number; /** Compute the inverse cosine of a number */ export function acos(value: number): number; /** Compute the hyperbolic inverse cosine of a value. */ export function acosh(value: number): number; /** Compute the arccotangent of a given number. */ export function acot(value: number): number; /** Compute the arccotangent of a given number. */ export function acoth(value: number): number; /** Compute sum of a and b. */ export function add(a: number, b: number): number; /** Converts a row and column into an address. */ export function address( row: string, col: string, absolute_relative_mode?: number, use_a1_notation?: boolean, sheet?: string ): string; /** Reduces list of truthy values into true or false value. */ export function and(...criteria: Array): boolean; /** Compute the inverse sin of a given number. */ export function asin(value: number): number; /** Compute the inverse hyperbolic sin of a given number. */ export function asinh(value: number): number; /** Assign properties from a list of objects into the initial object. */ export function assign(initial: object, ...list: Array): number; /** Compute the arctangent (in radians) of the given number. */ export function atan(value: number): number; /** Compute the arctangent (in radians) of x and y. */ export function atan2(x: number, y: number): number; /** Compute the inverse arctangent (in radians) of the given number */ export function atanh(x: number): number; /** Compute the average of a list of numbers. */ export function average(...items: Array): number; /** Convert a number into a text representation with the given radix. */ export function base( number: number, radix: number, min_length?: number ): string; /** Converts binary string into decimal value. */ export function bin2dec(value: string): number; /** Functional equivalent to if-elseif-else. */ export function branch(...cases: Array): boolean; /** Convert snakecase to camelcase. */ export function camelcase(value: string): string; /** Compute number rounded up, away from zero, to the nearest multiple of significance. */ export function ceiling( number: number, significance: number, mode?: roundingMode ): number; /** Computes row and column in a location in a flat array. */ export function cellindex(row: number, col: number): number; /** Computes the list of keys that are different between two objects. */ export function changed(a: object, b: object): object; /** Compile a formula expression into a function. */ export function compile(exp: string): Function; /** Convert an ascii code into a string. */ export function char(number: number): string; /** Return the item that corresponds to the index. */ export function choose(index: number, ...items: Array): any; /** Compute object with blank properties removed. */ export function clean(obj: object): object; /** Return the character code for a character in a string, optionally specify an index. */ export function code(text: string, index: number): string; /** Convert column letter into number. */ export function columnletter(letter: string): number; /** Convert column number into letter. */ export function columnnumber(number: number): string; /** Compile multiple strings into a one. */ export function concatenate( ...values: Array ): string; /** Compute the cosine of a value. */ export function cos(value: number): number; /** Compute the cumulative interest paid on a loan between start_period and end_period. */ export function cumipmt( rate: number, periods: number, value: number, start_period: number, end_period: number, type: paymentTiming ): number; /** Compute the serial number given a year, month and day. */ export function date(year: number, month: months, day: number): number; /** Compute the difference between two dates given a start date, end date and unit. */ export function datedif( start_date: number | string | Date, end_date: number | string | Date, unit: dateUnits ): number; /** Compute serial number. */ export function datevalue(d: number | string | Date): number; /** Return day of month. */ export function day(d: number | string | Date): number; /** Return number of days between 2 dates based on a 360 day year. */ export function days360( start_date: number | string | Date, end_date: number | string | Date, method?: boolean ); /** Convert a decimal number into a binary number. */ export function dec2bin(input: number, places?: number): string; /** Decode a base64 encoded string. */ export function decodebase64(str: string): string; /** Decode metadata in JSON Web Token. */ export function decodejwt(token: string): object; /** Converts radians into degrees. */ export function degrees(radians: number): number; /** Convert differences between two objects */ export function diff(a: object, b: object): object; /** Compute the product of two numbers. */ export function divide(numerator: number, denominator: number): number; /** Compute the serial number for a date that is a given number of months before or after a given date. */ export function edate( start_date: number | string | Date, months: number ): number; /** Compute the last day of the month in future or past months. */ export function eomonth(start_date: number | string | Date, months); /** Compare two values with case insensitivity for strings. */ export function eq(a: any, b: any): boolean; /** Compute number rounded up to the nearest even integer. */ export function even(number: number): number; /** Compare two values with strict equivalence. */ export function exact(a: any, b: any): boolean; /** Filter a range with one or more filters. */ export function filter( range: Array>, ...filters: Array | Function | string> ): Array>; /** Search for index of text within a string, optionally starting after position. */ export function find( find_text: string, within_text: string, position?: number ): number; /** Convert nested array into flat array. */ export function flatten(ref: Array): Array; /** Compute a number rounded down to a specified significance. */ export function floor(value: number, significance?: number): number; /** Compute future value. */ export function fv( rate: number, periods: number, payment: number, value?: number, type?: number ): number; /** Pluck property from object. */ export function get(property: string, object: object): any; /** Group a list of objects by one or more fields. */ export function group(list: Array, ...fields: Array): object; /** Compute if a is greater than b. */ export function gt(a: any, b: any): boolean; /** Compute if a is greater than or equal to b. */ export function gte(a: any, b: any): boolean; /** Compute a v4 globally unique identifier. */ export function guid(): string; /** Find a needle in a table searching horizontally. */ export function hlookup( needle: any, table: Array, index?: number, exactmatch?: boolean ); /** Compute the hours from a value between 0 and 1; or from date. */ export function hour(value: number | Date): number; /** Return value when non-blank or value_if_blank. */ export function ifblank(value: any, value_if_blank: any): any; /** Return value when non-empty or value_if_empty. */ export function ifempty(value: any, value_if_empty: any): any; /** Return value when non-error or value_if_error. */ export function iferror(value: any, value_if_error: any): any; /** Return value when not #!NA or value_if_na. */ export function ifna(value: any, value_if_na: any): any; /** Return true when searchElement is present in searchList. */ export function includes( searchElement: any, searchList: Array, fromIndex?: number ): boolean; /** Compute index of the reference in a row and column from a 2d array */ export function index( reference: Array, row_num: number, column_num?: number ): any; /** Computes the column number a cell index. */ export function index2col(index: number): number; /** Computes the row number a cell index. */ export function index2row(index: number): number; /** Convert a number into an integer. */ export function int(value: number): number; /** Compute the portion of the periodic payment which is interest for a fixed rate loan or annuity. */ export function ipmt( rate: number, period: number, periods: number, present: number, future?: number, type?: number ): number; /** Return true when value is an array. */ export function isarray(value: any): boolean; /** Return true when value is a binary string. */ export function isbinary(value: string): boolean; /** Return true when value is blank (null or undefined). */ export function isblank(value: any): boolean; /** Return true when value is boolean. */ export function isboolean(value: any): boolean; /** Return true when value is boolean. */ export function isboolean(value: any): boolean; /** Return true when value is a Date. */ export function isdate(value: any): boolean; /** return true when value is a valid email. */ export function isemail(value: string): boolean; /** Return true when value is empty (null, undefined, blank string or empty with 0 length). */ export function isempty(value: any): boolean; /** Return true when value is error except #NA!. */ export function iserr(value: any): boolean; /** Return true when any value is error. */ export function iserror(...values: Array): boolean; /** Return true when value is even. */ export function iseven(value: number): boolean; /** Return true when value is falsy. */ export function isfalsy(value: any): boolean; /** Return true when value is a function. */ export function isfunction(value: any): boolean; /** Return true when value is a date in a leapyear. */ export function isleapyear(value: number | string | Date): boolean; /** Return true when value is all lowercase. */ export function islowercase(value: string): boolean; /** Return true when value is error #NA!. */ export function isna(value: any): boolean; /** Return true when value is NaN. */ export function isnan(value: any): boolean; /** Return true when value is a number. */ export function isnumber(value: any): boolean; /** Return true when value is an object. */ export function isobject(value: any): boolean; /** Return true when value is odd. */ export function isodd(value: number): boolean; /** Compute number of the ISO week number of the year for a given date. */ export function isoweeknum(date: number | string | Date): number; /** Return true when value is a reference. */ export function isref(value: any): boolean; /** Return true when value is text. */ export function istext(value: any): boolean; /** Return true when value is truthy. */ export function istruthy(value: any): boolean; /** Return true when value is all uppercase. */ export function isuppercase(value: string): boolean; /** Return true when value is a valid url. */ export function isurl(value: string): boolean; /** Return true when value is a whole number. */ export function iswholenumber(value: number): boolean; /** Join a list of values into a string with a delimiter, defaults to ", ". */ export function join(list: Array, delim?: string): string; /** Return list of properties in an object. */ export function keys(subject: object): Array; /** Return left most `text` truncated to `number` of characters. */ export function left(text: string, number: number): string; /** Return length of text or list. */ export function len(text: string | Array): number; //** Lookup value from an array. */ export function lookup( lookup_value: any, lookup_array: Array, results_vector?: Array ): any; /** Convert `value` to lower case. */ export function lower(value: string): string; /** Compute if a is less than b. */ export function lt(a: any, b: any): boolean; /** Compute if a is less than or equal to b. */ export function lte(a: any, b: any): boolean; /** Map each value in the `list` with `func`. */ export function map(list: Array, func: Function): Array; /** Return the index in `lookup_array` by searching for `lookup_value`. */ export function match( lookup_value: any, lookup_array: Array, matchType?: matchType ); /** Return largest value from `list`. */ export function max(...list: Array): number; /** Merge objects from setA and setB with corresponding indexes. */ export function merge(setA: Array, setB: Array): Array; /** Return smallest value from `list`. */ export function min(...list: Array): number; /** Invert the `value`. */ export function minus(value: number): number; /** Compute the minutes from a value between 0 and 1; or from a date. */ export function minute(value: number | Date): number; /** Compute the remainder of division. */ export function mod(number: number, divisor: number): number; /** Compute the month of a `date`. */ export function month(date: number | string | Date): number; /** Compute product of a and b. */ export function multiply(a: number, b: number): number; /** Convert `value` into a number. */ export function n(value: any): number; /** Return true when at least one value is false. */ export function nand(...criteria: Array): boolean; /** Return true when a and b are not equal. */ export function ne(a: any, b: any): boolean; /** Return true when all values are true or all values are false. */ export function nor(...criteria: Array): boolean; /** Negate `value`. */ export function not(value: boolean | number): boolean; /** Return true when searchElement is not present in searchList. */ export function notincludes( searchElement: any, searchList: Array, fromIndex?: number ): boolean; /** Return serial number for current time. */ export function now(value: boolean | number): boolean; /** Return the number of periods for an investment. */ export function nper( rate: number, pmt: number, pv: number, fv?: number, type?: number ): number; /** Compute the net present value of an investment. */ export function npv(rate: number, ...values: Array): number; // Filters non-numeric values from `values`. export function numbers(...values: Array): Array; /** Convert a text value into a number value. */ export function numbervalue( text: string, decimal_separator?: string, group_separator?: string ): number; /** Convert an octal value into a decimal value. */ export function oct2dec(octalNumber: string): number; /** Return true when any of the values are true or 1. */ export function or(...criteria: Array): boolean; /** Parse `exp` into an abstract syntax tree. */ export function parse(exp: string): object; /** Convert `value` into a boolean. */ export function parsebool(value: any): boolean; /** Convert `value` into a date. */ export function parsedate(value: any): Date; /** Convert `queryString` into an object. */ export function parsequery(queryString: any): object; /** Return PI. */ export function pi(): number; /** Pluck a property from a list of objects. */ export function pluck(prop: string, list: Array): Array; /** Convert `value` to number. */ export function plus(value: number): number; /** Compute a loan payment */ export function pmt( rate: number, periods: number, present: number, future?: number, type?: number ): number; /** Compute the power of `value` to the `nth`. */ export function power(value: number, nth: number): number; /** Convert text into proper case. */ export function proper(text: string): string; /** Compute present value. */ export function pv( rate: number, periods: number, payment: number, future?: number, type?: number ): number; /** Execute a `query` against `data`. */ export function query(data: Array, query: object): Array; /** Reduce an array to a value with `func`. */ export function reduce( arr: Array, func: Function, ...rest: Array ): any; /** Create a reference object with `top` left and `bottom` right. */ export function ref(top: number | Function, bottom: number | Function): object; /** Replace `num_chars` at `start` in `text` with `new_text`. */ export function replace( text: string, start: number, num_chars: number, new_text: string ): string; /** Repeat `text` a `number` of times. */ export function rept(text: string, number: number): string; /** Return right most `text` truncated to `number` of characters. */ export function right(text: string, number: number): string; /** Round `value` to a fixed `precision`. */ export function round(value: number, precision: number): number; /** Round up `value` to a fixed `precision`. */ export function roundup(value: number, precision: number): number; /** Execute a formula `exp` with `params`. */ export function run(exp: string, params: object): any; /** Search for `find_text` in `within_text` with wildcards ?, \*, ~?, and ~\*. */ export function search( find_text: string, within_text: string, position?: number ): number; /** Compute the seconds from a value between 0 and 1; or from date. */ export function second(value: number | Date): number; /** Select fields from object or array of objects. */ export function select( fields: string | Array, object: object | Array ): object | Array; /** Convert date into serial number. */ export function serial(date: Date): number; /** Compute sin of value. */ export function sin(value: number): number; /** Convert pascal case to snake case. */ export function snakecase(value: string): string; /** Return true when needle found in list. */ export function some(needle: any, list: Array): boolean; /** Sort data with criteria of ordered pairs (field, asc, ...). */ export function sort( data: Array, ...criteria: Array ): Array; /** Split `text` with `delimiter`. */ export function split(text: string, delimiter: string): Array; /** Substitute `old_text` in `text` with `new_text`, optionally only 1 `occurence`. */ export function substitute( text: string, old_text: string, new_text: string, occurrence?: number ): string; /** Lightweight template engine. */ export function substituteAll( content: string, locals: object, startToken?: string, endToken?: string ); /** Compute the difference of two numbers. */ export function subtract(a: number, b: number): number; /** Sum a list of `numbers`. */ export function sum(...numbers: Array): number; /** Append/prepend character to keys of subject. */ export function surroundKeys( subject: object, start?: string, end?: string ): object; /** Search the odd args and return even value when odd arg equals targetValue. */ export function SWITCH(targetValue: any, ...args: Array): any; /** Compute the tagent of a value. */ export function tan(value: number): number; /** Compute tau (pi * 2) */ export function tau(): number; /** Format number. */ export function text( value: number, format: string, currency_char: string ): string; /** Compute time fraction with hour, minute and second. */ export function time(hour: number, minute: number, second: number): number; /** Compute time fraction with time string. */ export function timevalue(time: string): number; /** Return serial number for current date. */ export function today(): number; /** Remove whitespace from beginning and end of `text`. */ export function trim(text: string): string; /** Drop decimal from number. */ export function trunc(value: number): number; /** Nest array with given `length`. */ export function unflatten(list: Array, length?: number): Array; /** Compute unique values in list. */ export function unique(list: Array): Array; /** Convert text to upper case. */ export function upper(text: string): string; /** Find a needle in a table searching vertically. */ export function vlookup( needle: any, table: Array, index?: number, exactmatch?: boolean ): any; /** Create walker function with config. */ export function walker(config): Function; /** Compute the exclusive or for a given set of `values`. */ export function xor(...values: Array): boolean; /** Parse year out of date. */ export function year(date: string | number | Date): number; /** Compute the fraction of a year between two dates. */ export function yearfrac( start_date: string | number | Date, end_date: string | number | Date, basis?: basisOptions ): number;