import { Type } from '../'; import { DoubleType, InferMathTypePrec, IntegerArg, IntegralType, MathType, NumericType } from '.'; import { AnyExpression, Expression } from '../../expressions'; import { DateArg, DateType } from '../datetime/date'; import { NumberExpression } from './number'; export interface IntegralExpression extends AnyExpression { add(arg: T['input']): Expression>; add(arg: NumberExpression): Expression>; add(arg: IntegralExpression): IntegralExpression>; add(date: DateArg): Expression; sub(arg: T['input']): Expression>; sub(arg: NumberExpression): Expression>; sub(arg: IntegralExpression): IntegralExpression>; mul(arg: T['input']): Expression>; mul(arg: NumberExpression): Expression>; mul(arg: IntegralExpression): IntegralExpression>; div(arg: T['input']): Expression>; div(arg: NumberExpression): Expression>; div(arg: IntegralExpression): IntegralExpression>; mod(arg: T['input']): Expression>; mod(arg: NumberExpression): Expression>; mod(arg: IntegralExpression): IntegralExpression>; neg(): IntegralExpression; abs(): IntegralExpression; pow(arg: T['input']): Expression>; pow(arg: Expression): Expression>; pow(arg: NumberExpression | IntegralExpression): Expression>; sqrt(): Expression>; cbrt(): Expression>; and(arg: T['input']): IntegralExpression; and(arg: IntegralExpression): IntegralExpression>; or(arg: T['input']): IntegralExpression; or(arg: IntegralExpression): IntegralExpression>; xor(arg: T['input']): IntegralExpression; xor(arg: IntegralExpression): IntegralExpression>; not(): IntegralExpression; lshift(arg: IntegerArg): IntegralExpression; rshift(arg: IntegerArg): IntegralExpression; }