import { ComplexDecimal } from './complex-decimal';
import { MultiArray } from './multi-array';
import { NodeReturnList } from './evaluator';
export declare abstract class CoreFunctions {
    static functions: {
        [name: string]: Function;
    };
    /**
     * Convert linear indices to subscripts.
     * @param DIMS
     * @param IND
     * @returns
     */
    static ind2sub(DIMS: any, IND: any): any;
    /**
     * Convert subscripts to linear indices.
     * @param DIMS
     * @param S
     * @returns
     */
    static sub2ind(DIMS: any, ...S: any): any;
    /**
     * Returns array dimensions.
     * @param M MultiArray
     * @param DIM Dimensions
     * @returns Dimensions of `M` parameter.
     */
    static size(M: MultiArray | ComplexDecimal, ...DIM: any): MultiArray | ComplexDecimal;
    /**
     * Create array of all zeros.
     * @param dimension
     * @returns
     */
    static zeros(...dimension: any): MultiArray | ComplexDecimal;
    /**
     * Create array of all ones.
     * @param dimension
     * @returns
     */
    static ones(...dimension: any): MultiArray | ComplexDecimal;
    /**
     * Uniformly distributed pseudorandom numbers distributed on the
     * interval (0, 1).
     * @param dimension
     * @returns
     */
    static rand(...dimension: any): MultiArray | ComplexDecimal;
    /**
     * Uniformly distributed pseudorandom integers.
     * @param imax
     * @param args
     * @returns
     */
    static randi(range: MultiArray | ComplexDecimal, ...dimension: any): MultiArray | ComplexDecimal;
    /**
     * Return the concatenation of N-D array objects, ARRAY1, ARRAY2, ...,
     * ARRAYN along dimension `DIM`.
     * @param DIM Dimension of concatenation.
     * @param ARRAY Arrays to concatenate.
     * @returns Concatenated arrays along dimension `DIM`.
     */
    static cat(DIM: MultiArray | any, ...ARRAY: (MultiArray | any)[]): MultiArray;
    /**
     * Concatenate arrays horizontally.
     * @param ARRAY Arrays to concatenate horizontally.
     * @returns Concatenated arrays horizontally.
     */
    static horzcat(...ARRAY: (MultiArray | any)[]): MultiArray;
    /**
     * Concatenate arrays vertically.
     * @param ARRAY Arrays to concatenate vertically.
     * @returns Concatenated arrays vertically.
     */
    static vertcat(...ARRAY: (MultiArray | any)[]): MultiArray;
    /**
     * Calculate sum of elements along dimension DIM.
     * @param M Array
     * @param DIM Dimension
     * @returns Array with sum of elements along dimension DIM.
     */
    static sum(M: MultiArray, DIM?: ComplexDecimal): MultiArray | ComplexDecimal;
    /**
     * Calculate sum of squares of elements along dimension DIM.
     * @param M Matrix
     * @param DIM Dimension
     * @returns One dimensional matrix with sum of squares of elements along dimension DIM.
     */
    static sumsq(M: MultiArray, DIM?: ComplexDecimal): MultiArray | ComplexDecimal;
    /**
     * Calculate product of elements along dimension DIM.
     * @param M Matrix
     * @param DIM Dimension
     * @returns One dimensional matrix with product of elements along dimension DIM.
     */
    static prod(M: MultiArray, DIM?: ComplexDecimal): MultiArray | ComplexDecimal;
    /**
     * Calculate average or mean of elements along dimension DIM.
     * @param M Matrix
     * @param DIM Dimension
     * @returns One dimensional matrix with product of elements along dimension DIM.
     */
    static mean(M: MultiArray, DIM?: ComplexDecimal): MultiArray | ComplexDecimal;
    /**
     * Base method of min and max user functions.
     * @param op 'min' or 'max'
     * @param args One to three arguments like user function.
     * @returns Return like user function.
     */
    private static minMax;
    /**
     * Minimum elements of array.
     * @param M
     * @returns
     */
    static min(...args: any[]): MultiArray | NodeReturnList;
    /**
     * Maximum elements of array.
     * @param M
     * @returns
     */
    static max(...args: any[]): MultiArray | NodeReturnList;
}
