import type { IExpression } from '../typings/expression'; import { LineInfo } from '../misc/utils'; import { Expression } from '../core/expression'; import { MichelsonType } from '../core/enums/type'; /** * Add two numerical values * * ```typescript * Add(Nat(1), Nat(1)); // Nat(2) * ``` * * @category | Math * * @param left Expression * @param right Expression * @param {LineInfo} line Source code line information (Used in error messages) * * @returns {IExpression} An expression */ export declare const Add: (left: IExpression, right: IExpression, line?: LineInfo) => Expression; /** * Multiply two numerical values * * ```typescript * Multiply(Nat(1), Nat(1)); // Nat(1) * ``` * * @category | Math * * @param left Expression * @param right Expression * @param {LineInfo} line Source code line information (Used in error messages) * * @returns {IExpression} An expression */ export declare const Multiply: (left: IExpression, right: IExpression, line?: LineInfo) => Expression; /** * Subtract two numerical values * * ```typescript * Subtract(Nat(1), Nat(1)); // Nat(0) * ``` * * @category | Math * * @param left Expression * @param right Expression * @param {LineInfo} line Source code line information (Used in error messages) * * @returns {IExpression} An expression */ export declare const Subtract: (left: IExpression, right: IExpression, line?: LineInfo) => Expression; /** * Division operation. * * ```typescript * Divide(Nat(1), Nat(1)); // Nat(1) * ``` * * @category | Math * * @param left Expression * @param right Expression * @param {LineInfo} line Source code line information (Used in error messages) * * @returns {IExpression} An expression */ export declare const Divide: (left: IExpression, right: IExpression, line?: LineInfo) => Expression; /** * Euclidean Division * * ```typescript * EuclideanDivision(Nat(13), Nat(3)); // Some(Pair(Nat(4), Nat(1))) * ``` * * @category | Math * * @param left Expression * @param right Expression * @param {LineInfo} line Source code line information (Used in error messages) * * @returns {IExpression} An expression of type `TOption(TPair(@quotient_type, @remainder_type))) */ export declare const EuclideanDivision: (left: IExpression, right: IExpression, line?: LineInfo) => IExpression; /** * Modulus * * ```typescript * Mod(Nat(13), Nat(3)); // Nat(1) * ``` * * @category | Math * * @param left Expression * @param right Expression * @param {LineInfo} line Source code line information (Used in error messages) * * @returns {IExpression} An expression. */ export declare const Mod: (left: IExpression, right: IExpression, line?: LineInfo) => Expression; /** * Logical left shift * * ```typescript * ShiftLeft(Nat(2), Nat(1)); // Nat(1) * ``` * * @category | Math * * @param left Expression * @param right Expression * @param {LineInfo} line Source code line information (Used in error messages) * * @returns {IExpression} An expression. */ export declare const ShiftLeft: (left: IExpression, right: IExpression, line?: LineInfo) => Expression; /** * Logical right shift * * ```typescript * ShiftRight(Nat(2), Nat(1)); // Nat(1) * ``` * * @category | Math * * @param left Expression * @param right Expression * @param {LineInfo} line Source code line information (Used in error messages) * * @returns {IExpression} An expression. */ export declare const ShiftRight: (left: IExpression, right: IExpression, line?: LineInfo) => Expression; /** * Computes the median of a list of integers. * * ```typescript * Median(List([Nat(2), Nat(1), Nat(3)]); // Nat(2) * ``` * * @category | Math * * @param list Expression * @param {LineInfo} line Source code line information (Used in error messages) * * @returns {IExpression} An expression that evaluates to `TNat()` or `TInt` depending on the input type. */ export declare const Median: (list: IExpression, line?: LineInfo) => import("../misc/proxy").Proxied>; export declare const Math: { Add: (left: IExpression, right: IExpression, line?: LineInfo) => Expression; Multiply: (left: IExpression, right: IExpression, line?: LineInfo) => Expression; Subtract: (left: IExpression, right: IExpression, line?: LineInfo) => Expression; Divide: (left: IExpression, right: IExpression, line?: LineInfo) => Expression; EuclideanDivision: (left: IExpression, right: IExpression, line?: LineInfo) => IExpression; Mod: (left: IExpression, right: IExpression, line?: LineInfo) => Expression; ShiftLeft: (left: IExpression, right: IExpression, line?: LineInfo) => Expression; ShiftRight: (left: IExpression, right: IExpression, line?: LineInfo) => Expression; Median: (list: IExpression, line?: LineInfo) => import("../misc/proxy").Proxied>; }; export default Math;