@dahlia-labs/stableswap-sdk
Version:
SDK for Mobius's StableSwap program.
85 lines (80 loc) • 2.16 kB
text/typescript
import type { BigintIsh } from "@dahlia-labs/token-utils";
import { default as JSBI } from "jsbi";
import { computeD, computeY } from "./curve.js";
const assertBN = (actual: BigintIsh, expected: BigintIsh) => {
expect(actual.toString()).toEqual(expected.toString());
};
describe("Calculator tests", () => {
it("computeD", () => {
assertBN(
computeD(JSBI.BigInt(100), JSBI.BigInt(0), JSBI.BigInt(0)),
JSBI.BigInt(0)
);
assertBN(
computeD(
JSBI.BigInt(100),
JSBI.BigInt(1000000000),
JSBI.BigInt(1000000000)
),
JSBI.BigInt(2000000000)
);
assertBN(
computeD(JSBI.BigInt(73), JSBI.BigInt(92), JSBI.BigInt(81)),
JSBI.BigInt(173)
);
assertBN(
computeD(JSBI.BigInt(11503), JSBI.BigInt(28338), JSBI.BigInt(78889)),
JSBI.BigInt(107225)
);
assertBN(
computeD(JSBI.BigInt(8552), JSBI.BigInt(26), JSBI.BigInt(69321)),
JSBI.BigInt(66920)
);
assertBN(
computeD(JSBI.BigInt(496), JSBI.BigInt(62), JSBI.BigInt(68567)),
JSBI.BigInt(57447)
);
assertBN(
computeD(
JSBI.BigInt("17653203515214796177"),
JSBI.BigInt("13789683482691983066"),
JSBI.BigInt("3964443602730479576")
),
JSBI.BigInt("17754127085422462641")
);
});
it("computeY", () => {
assertBN(
computeY(JSBI.BigInt(100), JSBI.BigInt(100), JSBI.BigInt(0)),
JSBI.BigInt(0)
);
assertBN(
computeY(JSBI.BigInt(8), JSBI.BigInt(94), JSBI.BigInt(163)),
JSBI.BigInt(69)
);
assertBN(
computeY(
JSBI.BigInt(2137),
JSBI.BigInt(905777403660),
JSBI.BigInt(830914146046)
),
JSBI.BigInt(490376033)
);
assertBN(
computeY(
JSBI.BigInt("17095344176474858097"),
JSBI.BigInt(383),
JSBI.BigInt("2276818911077272163")
),
JSBI.BigInt("2276917873767753112")
);
assertBN(
computeY(
JSBI.BigInt("7644937799120520965"),
JSBI.BigInt("14818904982296505121"),
JSBI.BigInt("17480022366793075404")
),
JSBI.BigInt("2661117384496570284")
);
});
});