import { purry } from 'remeda' import { BasicArithmetic, BasicType, HeteroBasicOperations } from '../arithmetic' import { Quotient } from './index' export const getQuotientHeteroBasicOperations = ({ one }: BasicType) => ({ add, sub, mul, div, abs, mod, fromNumber }: BasicArithmetic>): HeteroBasicOperations, N, Quotient> => ({ add() { return purry((a: Quotient, b: N) => add(a, { numerator: b, denominator: one }), arguments) }, sub() { return purry((a: Quotient, b: N) => sub(a, { numerator: b, denominator: one }), arguments) }, mul() { return purry((a: Quotient, b: N) => mul(a, { numerator: b, denominator: one }), arguments) }, div() { return purry((a: Quotient, b: N) => div(a, { numerator: b, denominator: one }), arguments) }, mod() { return purry((a: Quotient, b: N) => mod(a, { numerator: b, denominator: one }), arguments) }, })