@deliquifiedlabs/uniswapx-sdk
Version:
SDK for the UniswapX protocol
93 lines • 4.52 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const sdk_core_1 = require("@deliquifiedlabs/sdk-core");
const ethers_1 = require("ethers");
const DutchOrderTrade_1 = require("./DutchOrderTrade");
const utils_1 = require("./utils");
const USDC = new sdk_core_1.Token(1, "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", 6, "USDC");
const DAI = new sdk_core_1.Token(1, "0x6B175474E89094C44Da98b954EedeAC495271d0F", 18, "DAI");
describe("DutchOrderTrade", () => {
const NON_FEE_OUTPUT_AMOUNT = ethers_1.BigNumber.from("1000000000000000000");
const NON_FEE_MINIMUM_AMOUNT_OUT = ethers_1.BigNumber.from("900000000000000000");
const orderInfo = {
deadline: Math.floor(new Date().getTime() / 1000) + 1000,
reactor: "0x0000000000000000000000000000000000000000",
swapper: "0x0000000000000000000000000000000000000000",
nonce: ethers_1.BigNumber.from(10),
additionalValidationContract: ethers_1.ethers.constants.AddressZero,
additionalValidationData: "0x",
exclusiveFiller: ethers_1.ethers.constants.AddressZero,
exclusivityOverrideBps: ethers_1.BigNumber.from(0),
decayStartTime: Math.floor(new Date().getTime() / 1000),
decayEndTime: Math.floor(new Date().getTime() / 1000) + 1000,
input: {
token: USDC.address,
startAmount: ethers_1.BigNumber.from(1000),
endAmount: ethers_1.BigNumber.from(1000),
},
outputs: [
{
token: DAI.address,
startAmount: NON_FEE_OUTPUT_AMOUNT,
endAmount: NON_FEE_MINIMUM_AMOUNT_OUT,
recipient: "0x0000000000000000000000000000000000000000",
},
{
token: DAI.address,
startAmount: ethers_1.BigNumber.from("1000"),
endAmount: ethers_1.BigNumber.from("2000"),
recipient: "0x0000000000000000000000000000000000000000",
},
],
};
const trade = new DutchOrderTrade_1.DutchOrderTrade({
currencyIn: USDC,
currenciesOut: [DAI],
orderInfo,
tradeType: sdk_core_1.TradeType.EXACT_INPUT,
});
it("returns the right input amount for an exact-in trade", () => {
expect(trade.inputAmount.quotient.toString()).toEqual(orderInfo.input.startAmount.toString());
});
it("returns the correct non-fee output amount", () => {
expect(trade.outputAmount.quotient.toString()).toEqual(NON_FEE_OUTPUT_AMOUNT.toString());
});
it("returns the correct minimum amount out", () => {
expect(trade.minimumAmountOut().quotient.toString()).toEqual(NON_FEE_MINIMUM_AMOUNT_OUT.toString());
});
it("works for native output trades", () => {
const lyxOutputOrderInfo = Object.assign(Object.assign({}, orderInfo), { outputs: [
{
token: utils_1.NativeAssets.LYX,
startAmount: NON_FEE_OUTPUT_AMOUNT,
endAmount: NON_FEE_MINIMUM_AMOUNT_OUT,
recipient: "0x0000000000000000000000000000000000000000",
},
] });
const lyxOutputTrade = new DutchOrderTrade_1.DutchOrderTrade({
currencyIn: USDC,
currenciesOut: [sdk_core_1.Lukso.onChain(1)],
orderInfo: lyxOutputOrderInfo,
tradeType: sdk_core_1.TradeType.EXACT_INPUT,
});
expect(lyxOutputTrade.outputAmount.currency).toEqual(sdk_core_1.Lukso.onChain(1));
});
it("works for native output trades where order info has 0 address", () => {
const lyxOutputOrderInfo = Object.assign(Object.assign({}, orderInfo), { outputs: [
{
token: ethers_1.constants.AddressZero,
startAmount: NON_FEE_OUTPUT_AMOUNT,
endAmount: NON_FEE_MINIMUM_AMOUNT_OUT,
recipient: "0x0000000000000000000000000000000000000000",
},
] });
const lyxOutputTrade = new DutchOrderTrade_1.DutchOrderTrade({
currencyIn: USDC,
currenciesOut: [sdk_core_1.Lukso.onChain(1)],
orderInfo: lyxOutputOrderInfo,
tradeType: sdk_core_1.TradeType.EXACT_INPUT,
});
expect(lyxOutputTrade.outputAmount.currency).toEqual(sdk_core_1.Lukso.onChain(1));
});
});
//# sourceMappingURL=DutchOrderTrade.test.js.map