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 }