@kayenfi/limit-order-sdk 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +107 -0
- package/dist/abis/MockERC20.json +1606 -0
- package/dist/abis/deploylessMulticall2.json +30 -0
- package/dist/abis/multicall2.json +315 -0
- package/dist/src/builder/OrderBuilder.d.ts +17 -0
- package/dist/src/builder/OrderBuilder.js +59 -0
- package/dist/src/builder/OrderBuilder.js.map +1 -0
- package/dist/src/builder/V2DutchOrderBuilder.d.ts +33 -0
- package/dist/src/builder/V2DutchOrderBuilder.js +244 -0
- package/dist/src/builder/V2DutchOrderBuilder.js.map +1 -0
- package/dist/src/builder/index.d.ts +3 -0
- package/dist/src/builder/index.js +10 -0
- package/dist/src/builder/index.js.map +1 -0
- package/dist/src/constants.d.ts +37 -0
- package/dist/src/constants.js +73 -0
- package/dist/src/constants.js.map +1 -0
- package/dist/src/constants.test.d.ts +1 -0
- package/dist/src/constants.test.js +20 -0
- package/dist/src/constants.test.js.map +1 -0
- package/dist/src/contracts/DeploylessMulticall2.d.ts +37 -0
- package/dist/src/contracts/DeploylessMulticall2.js +3 -0
- package/dist/src/contracts/DeploylessMulticall2.js.map +1 -0
- package/dist/src/contracts/DutchLimitOrderReactor.d.ts +191 -0
- package/dist/src/contracts/DutchLimitOrderReactor.js +3 -0
- package/dist/src/contracts/DutchLimitOrderReactor.js.map +1 -0
- package/dist/src/contracts/DutchOrderReactor.d.ts +191 -0
- package/dist/src/contracts/DutchOrderReactor.js +3 -0
- package/dist/src/contracts/DutchOrderReactor.js.map +1 -0
- package/dist/src/contracts/ExclusiveDutchOrderReactor.d.ts +207 -0
- package/dist/src/contracts/ExclusiveDutchOrderReactor.js +3 -0
- package/dist/src/contracts/ExclusiveDutchOrderReactor.js.map +1 -0
- package/dist/src/contracts/ExclusiveFillerValidation.d.ts +105 -0
- package/dist/src/contracts/ExclusiveFillerValidation.js +3 -0
- package/dist/src/contracts/ExclusiveFillerValidation.js.map +1 -0
- package/dist/src/contracts/MockERC20.d.ts +242 -0
- package/dist/src/contracts/MockERC20.js +3 -0
- package/dist/src/contracts/MockERC20.js.map +1 -0
- package/dist/src/contracts/Multicall2.d.ts +218 -0
- package/dist/src/contracts/Multicall2.js +3 -0
- package/dist/src/contracts/Multicall2.js.map +1 -0
- package/dist/src/contracts/OrderQuoter.d.ts +131 -0
- package/dist/src/contracts/OrderQuoter.js +3 -0
- package/dist/src/contracts/OrderQuoter.js.map +1 -0
- package/dist/src/contracts/Permit2.d.ts +533 -0
- package/dist/src/contracts/Permit2.js +3 -0
- package/dist/src/contracts/Permit2.js.map +1 -0
- package/dist/src/contracts/SwapRouter02Executor.d.ts +240 -0
- package/dist/src/contracts/SwapRouter02Executor.js +3 -0
- package/dist/src/contracts/SwapRouter02Executor.js.map +1 -0
- package/dist/src/contracts/V2DutchOrderReactor.d.ts +207 -0
- package/dist/src/contracts/V2DutchOrderReactor.js +3 -0
- package/dist/src/contracts/V2DutchOrderReactor.js.map +1 -0
- package/dist/src/contracts/common.d.ts +22 -0
- package/dist/src/contracts/common.js +3 -0
- package/dist/src/contracts/common.js.map +1 -0
- package/dist/src/contracts/factories/DeploylessMulticall2__factory.d.ts +29 -0
- package/dist/src/contracts/factories/DeploylessMulticall2__factory.js +48 -0
- package/dist/src/contracts/factories/DeploylessMulticall2__factory.js.map +1 -0
- package/dist/src/contracts/factories/DutchLimitOrderReactor__factory.d.ts +87 -0
- package/dist/src/contracts/factories/DutchLimitOrderReactor__factory.js +385 -0
- package/dist/src/contracts/factories/DutchLimitOrderReactor__factory.js.map +1 -0
- package/dist/src/contracts/factories/DutchOrderReactor__factory.d.ts +87 -0
- package/dist/src/contracts/factories/DutchOrderReactor__factory.js +385 -0
- package/dist/src/contracts/factories/DutchOrderReactor__factory.js.map +1 -0
- package/dist/src/contracts/factories/ExclusiveDutchOrderReactor__factory.d.ts +297 -0
- package/dist/src/contracts/factories/ExclusiveDutchOrderReactor__factory.js +400 -0
- package/dist/src/contracts/factories/ExclusiveDutchOrderReactor__factory.js.map +1 -0
- package/dist/src/contracts/factories/ExclusiveFillerValidation__factory.d.ts +115 -0
- package/dist/src/contracts/factories/ExclusiveFillerValidation__factory.js +165 -0
- package/dist/src/contracts/factories/ExclusiveFillerValidation__factory.js.map +1 -0
- package/dist/src/contracts/factories/MockERC20__factory.d.ts +301 -0
- package/dist/src/contracts/factories/MockERC20__factory.js +408 -0
- package/dist/src/contracts/factories/MockERC20__factory.js.map +1 -0
- package/dist/src/contracts/factories/Multicall2__factory.d.ts +245 -0
- package/dist/src/contracts/factories/Multicall2__factory.js +333 -0
- package/dist/src/contracts/factories/Multicall2__factory.js.map +1 -0
- package/dist/src/contracts/factories/OrderQuoter__factory.d.ts +215 -0
- package/dist/src/contracts/factories/OrderQuoter__factory.js +295 -0
- package/dist/src/contracts/factories/OrderQuoter__factory.js.map +1 -0
- package/dist/src/contracts/factories/Permit2__factory.d.ts +720 -0
- package/dist/src/contracts/factories/Permit2__factory.js +942 -0
- package/dist/src/contracts/factories/Permit2__factory.js.map +1 -0
- package/dist/src/contracts/factories/SwapRouter02Executor__factory.d.ts +257 -0
- package/dist/src/contracts/factories/SwapRouter02Executor__factory.js +348 -0
- package/dist/src/contracts/factories/SwapRouter02Executor__factory.js.map +1 -0
- package/dist/src/contracts/factories/V2DutchOrderReactor__factory.d.ts +297 -0
- package/dist/src/contracts/factories/V2DutchOrderReactor__factory.js +400 -0
- package/dist/src/contracts/factories/V2DutchOrderReactor__factory.js.map +1 -0
- package/dist/src/contracts/factories/index.d.ts +9 -0
- package/dist/src/contracts/factories/index.js +25 -0
- package/dist/src/contracts/factories/index.js.map +1 -0
- package/dist/src/contracts/index.d.ts +19 -0
- package/dist/src/contracts/index.js +24 -0
- package/dist/src/contracts/index.js.map +1 -0
- package/dist/src/errors.d.ts +3 -0
- package/dist/src/errors.js +11 -0
- package/dist/src/errors.js.map +1 -0
- package/dist/src/index.d.ts +5 -0
- package/dist/src/index.js +9 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/order/DutchOrder.d.ts +67 -0
- package/dist/src/order/DutchOrder.js +291 -0
- package/dist/src/order/DutchOrder.js.map +1 -0
- package/dist/src/order/DutchOrder.test.d.ts +1 -0
- package/dist/src/order/DutchOrder.test.js +166 -0
- package/dist/src/order/DutchOrder.test.js.map +1 -0
- package/dist/src/order/V2DutchOrder.d.ts +120 -0
- package/dist/src/order/V2DutchOrder.js +391 -0
- package/dist/src/order/V2DutchOrder.js.map +1 -0
- package/dist/src/order/V2DutchOrder.test.d.ts +1 -0
- package/dist/src/order/V2DutchOrder.test.js +272 -0
- package/dist/src/order/V2DutchOrder.test.js.map +1 -0
- package/dist/src/order/index.d.ts +6 -0
- package/dist/src/order/index.js +7 -0
- package/dist/src/order/index.js.map +1 -0
- package/dist/src/order/types.d.ts +70 -0
- package/dist/src/order/types.js +3 -0
- package/dist/src/order/types.js.map +1 -0
- package/dist/src/order/validation.d.ts +24 -0
- package/dist/src/order/validation.js +61 -0
- package/dist/src/order/validation.js.map +1 -0
- package/dist/src/order/validation.test.d.ts +1 -0
- package/dist/src/order/validation.test.js +58 -0
- package/dist/src/order/validation.test.js.map +1 -0
- package/dist/src/trade/DutchOrderTrade.d.ts +33 -0
- package/dist/src/trade/DutchOrderTrade.js +81 -0
- package/dist/src/trade/DutchOrderTrade.js.map +1 -0
- package/dist/src/trade/DutchOrderTrade.test.d.ts +1 -0
- package/dist/src/trade/DutchOrderTrade.test.js +93 -0
- package/dist/src/trade/DutchOrderTrade.test.js.map +1 -0
- package/dist/src/trade/V2DutchOrderTrade.d.ts +34 -0
- package/dist/src/trade/V2DutchOrderTrade.js +81 -0
- package/dist/src/trade/V2DutchOrderTrade.js.map +1 -0
- package/dist/src/trade/V2DutchOrderTrade.test.d.ts +1 -0
- package/dist/src/trade/V2DutchOrderTrade.test.js +93 -0
- package/dist/src/trade/V2DutchOrderTrade.test.js.map +1 -0
- package/dist/src/trade/index.d.ts +1 -0
- package/dist/src/trade/index.js +5 -0
- package/dist/src/trade/index.js.map +1 -0
- package/dist/src/trade/utils.d.ts +6 -0
- package/dist/src/trade/utils.js +30 -0
- package/dist/src/trade/utils.js.map +1 -0
- package/dist/src/utils/EventWatcher.d.ts +41 -0
- package/dist/src/utils/EventWatcher.js +97 -0
- package/dist/src/utils/EventWatcher.js.map +1 -0
- package/dist/src/utils/NonceManager.d.ts +36 -0
- package/dist/src/utils/NonceManager.js +134 -0
- package/dist/src/utils/NonceManager.js.map +1 -0
- package/dist/src/utils/NonceManager.test.d.ts +1 -0
- package/dist/src/utils/NonceManager.test.js +131 -0
- package/dist/src/utils/NonceManager.test.js.map +1 -0
- package/dist/src/utils/OrderQuoter.d.ts +53 -0
- package/dist/src/utils/OrderQuoter.js +196 -0
- package/dist/src/utils/OrderQuoter.js.map +1 -0
- package/dist/src/utils/OrderValidator.d.ts +8 -0
- package/dist/src/utils/OrderValidator.js +28 -0
- package/dist/src/utils/OrderValidator.js.map +1 -0
- package/dist/src/utils/dutchDecay.d.ts +8 -0
- package/dist/src/utils/dutchDecay.js +32 -0
- package/dist/src/utils/dutchDecay.js.map +1 -0
- package/dist/src/utils/dutchDecay.test.d.ts +1 -0
- package/dist/src/utils/dutchDecay.test.js +61 -0
- package/dist/src/utils/dutchDecay.test.js.map +1 -0
- package/dist/src/utils/index.d.ts +11 -0
- package/dist/src/utils/index.js +50 -0
- package/dist/src/utils/index.js.map +1 -0
- package/dist/src/utils/multicall.d.ts +36 -0
- package/dist/src/utils/multicall.js +91 -0
- package/dist/src/utils/multicall.js.map +1 -0
- package/dist/src/utils/order.d.ts +32 -0
- package/dist/src/utils/order.js +86 -0
- package/dist/src/utils/order.js.map +1 -0
- package/dist/src/utils/order.test.d.ts +1 -0
- package/dist/src/utils/order.test.js +109 -0
- package/dist/src/utils/order.test.js.map +1 -0
- package/package.json +66 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getDecayedAmount = void 0;
|
|
4
|
+
function getDecayedAmount(config, atTime = Math.floor(Date.now() / 1000)) {
|
|
5
|
+
const { startAmount, endAmount, decayStartTime, decayEndTime } = config;
|
|
6
|
+
// decay is over, return the ending amount
|
|
7
|
+
if (decayEndTime <= atTime) {
|
|
8
|
+
return endAmount;
|
|
9
|
+
}
|
|
10
|
+
// decay hasnt started, return the starting amount
|
|
11
|
+
if (decayStartTime >= atTime) {
|
|
12
|
+
return startAmount;
|
|
13
|
+
}
|
|
14
|
+
// no decay, just return the static amount
|
|
15
|
+
if (startAmount.eq(endAmount)) {
|
|
16
|
+
return startAmount;
|
|
17
|
+
}
|
|
18
|
+
const duration = decayEndTime - decayStartTime;
|
|
19
|
+
const elapsed = atTime - decayStartTime;
|
|
20
|
+
if (startAmount.gt(endAmount)) {
|
|
21
|
+
// decaying downward
|
|
22
|
+
const decay = startAmount.sub(endAmount).mul(elapsed).div(duration);
|
|
23
|
+
return startAmount.sub(decay);
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
// decaying upward
|
|
27
|
+
const decay = endAmount.sub(startAmount).mul(elapsed).div(duration);
|
|
28
|
+
return startAmount.add(decay);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
exports.getDecayedAmount = getDecayedAmount;
|
|
32
|
+
//# sourceMappingURL=dutchDecay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dutchDecay.js","sourceRoot":"","sources":["../../../src/utils/dutchDecay.ts"],"names":[],"mappings":";;;AASA,SAAgB,gBAAgB,CAC9B,MAAwB,EACxB,SAAiB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;IAE9C,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,cAAc,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC;IAExE,0CAA0C;IAC1C,IAAI,YAAY,IAAI,MAAM,EAAE;QAC1B,OAAO,SAAS,CAAC;KAClB;IAED,kDAAkD;IAClD,IAAI,cAAc,IAAI,MAAM,EAAE;QAC5B,OAAO,WAAW,CAAC;KACpB;IAED,0CAA0C;IAC1C,IAAI,WAAW,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE;QAC7B,OAAO,WAAW,CAAC;KACpB;IAED,MAAM,QAAQ,GAAG,YAAY,GAAG,cAAc,CAAC;IAC/C,MAAM,OAAO,GAAG,MAAM,GAAG,cAAc,CAAC;IACxC,IAAI,WAAW,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE;QAC7B,oBAAoB;QACpB,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACpE,OAAO,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KAC/B;SAAM;QACL,kBAAkB;QAClB,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACpE,OAAO,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KAC/B;AACH,CAAC;AAhCD,4CAgCC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const ethers_1 = require("ethers");
|
|
4
|
+
const dutchDecay_1 = require("./dutchDecay");
|
|
5
|
+
describe("Dutch Decay", () => {
|
|
6
|
+
it("Returns endAmount if decay is over", () => {
|
|
7
|
+
const endAmount = ethers_1.BigNumber.from("100000000");
|
|
8
|
+
expect((0, dutchDecay_1.getDecayedAmount)({
|
|
9
|
+
startAmount: endAmount.div(2),
|
|
10
|
+
endAmount: endAmount,
|
|
11
|
+
decayStartTime: 1,
|
|
12
|
+
decayEndTime: 10,
|
|
13
|
+
}, 11)).toEqual(endAmount);
|
|
14
|
+
});
|
|
15
|
+
it("Returns endAmount if eq to decayEndTime", () => {
|
|
16
|
+
const endAmount = ethers_1.BigNumber.from("100000000");
|
|
17
|
+
expect((0, dutchDecay_1.getDecayedAmount)({
|
|
18
|
+
startAmount: endAmount.div(2),
|
|
19
|
+
endAmount: endAmount,
|
|
20
|
+
decayStartTime: 1,
|
|
21
|
+
decayEndTime: 10,
|
|
22
|
+
}, 10)).toEqual(endAmount);
|
|
23
|
+
});
|
|
24
|
+
it("Returns startAmount if decay hasnt started", () => {
|
|
25
|
+
const startAmount = ethers_1.BigNumber.from("100000000");
|
|
26
|
+
expect((0, dutchDecay_1.getDecayedAmount)({
|
|
27
|
+
startAmount: startAmount,
|
|
28
|
+
endAmount: startAmount.mul(2),
|
|
29
|
+
decayStartTime: 10,
|
|
30
|
+
decayEndTime: 100,
|
|
31
|
+
}, 9)).toEqual(startAmount);
|
|
32
|
+
});
|
|
33
|
+
it("Returns startAmount if eq to decayStartTime", () => {
|
|
34
|
+
const startAmount = ethers_1.BigNumber.from("100000000");
|
|
35
|
+
expect((0, dutchDecay_1.getDecayedAmount)({
|
|
36
|
+
startAmount: startAmount,
|
|
37
|
+
endAmount: startAmount.mul(2),
|
|
38
|
+
decayStartTime: 10,
|
|
39
|
+
decayEndTime: 100,
|
|
40
|
+
}, 10)).toEqual(startAmount);
|
|
41
|
+
});
|
|
42
|
+
it("Decays linearly upwards", () => {
|
|
43
|
+
const startAmount = ethers_1.BigNumber.from("100000000");
|
|
44
|
+
expect((0, dutchDecay_1.getDecayedAmount)({
|
|
45
|
+
startAmount: startAmount,
|
|
46
|
+
endAmount: startAmount.mul(2),
|
|
47
|
+
decayStartTime: 10,
|
|
48
|
+
decayEndTime: 20,
|
|
49
|
+
}, 15)).toEqual(startAmount.mul(3).div(2));
|
|
50
|
+
});
|
|
51
|
+
it("Decays linearly downwrads", () => {
|
|
52
|
+
const endAmount = ethers_1.BigNumber.from("100000000");
|
|
53
|
+
expect((0, dutchDecay_1.getDecayedAmount)({
|
|
54
|
+
startAmount: endAmount.mul(2),
|
|
55
|
+
endAmount: endAmount,
|
|
56
|
+
decayStartTime: 10,
|
|
57
|
+
decayEndTime: 20,
|
|
58
|
+
}, 15)).toEqual(endAmount.mul(3).div(2));
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
//# sourceMappingURL=dutchDecay.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dutchDecay.test.js","sourceRoot":"","sources":["../../../src/utils/dutchDecay.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { OrderType } from "../constants";
|
|
2
|
+
export * from "./OrderValidator";
|
|
3
|
+
export * from "./NonceManager";
|
|
4
|
+
export * from "./OrderQuoter";
|
|
5
|
+
export * from "./EventWatcher";
|
|
6
|
+
export * from "./multicall";
|
|
7
|
+
export * from "./dutchDecay";
|
|
8
|
+
export * from "./order";
|
|
9
|
+
export declare function stripHexPrefix(a: string): string;
|
|
10
|
+
export declare function getPermit2(chainId: number, permit2Address?: string): string;
|
|
11
|
+
export declare function getReactor(chainId: number, orderType: OrderType, reactorAddress?: string): string;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getReactor = exports.getPermit2 = exports.stripHexPrefix = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const constants_1 = require("../constants");
|
|
6
|
+
const errors_1 = require("../errors");
|
|
7
|
+
tslib_1.__exportStar(require("./OrderValidator"), exports);
|
|
8
|
+
tslib_1.__exportStar(require("./NonceManager"), exports);
|
|
9
|
+
tslib_1.__exportStar(require("./OrderQuoter"), exports);
|
|
10
|
+
tslib_1.__exportStar(require("./EventWatcher"), exports);
|
|
11
|
+
tslib_1.__exportStar(require("./multicall"), exports);
|
|
12
|
+
tslib_1.__exportStar(require("./dutchDecay"), exports);
|
|
13
|
+
tslib_1.__exportStar(require("./order"), exports);
|
|
14
|
+
function stripHexPrefix(a) {
|
|
15
|
+
if (a.startsWith("0x")) {
|
|
16
|
+
return a.slice(2);
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
return a;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
exports.stripHexPrefix = stripHexPrefix;
|
|
23
|
+
function getPermit2(chainId, permit2Address) {
|
|
24
|
+
if (permit2Address) {
|
|
25
|
+
return permit2Address;
|
|
26
|
+
}
|
|
27
|
+
else if (constants_1.PERMIT2_MAPPING[chainId]) {
|
|
28
|
+
return constants_1.PERMIT2_MAPPING[chainId];
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
throw new errors_1.MissingConfiguration("permit2", chainId.toString());
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
exports.getPermit2 = getPermit2;
|
|
35
|
+
function getReactor(chainId, orderType, reactorAddress) {
|
|
36
|
+
const mappedReactorAddress = constants_1.REACTOR_ADDRESS_MAPPING[chainId]
|
|
37
|
+
? constants_1.REACTOR_ADDRESS_MAPPING[chainId][orderType]
|
|
38
|
+
: undefined;
|
|
39
|
+
if (reactorAddress) {
|
|
40
|
+
return reactorAddress;
|
|
41
|
+
}
|
|
42
|
+
else if (mappedReactorAddress) {
|
|
43
|
+
return mappedReactorAddress;
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
throw new errors_1.MissingConfiguration("reactor", chainId.toString());
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
exports.getReactor = getReactor;
|
|
50
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":";;;;AAAA,4CAIsB;AACtB,sCAAiD;AAEjD,2DAAiC;AACjC,yDAA+B;AAC/B,wDAA8B;AAC9B,yDAA+B;AAC/B,sDAA4B;AAC5B,uDAA6B;AAC7B,kDAAwB;AAExB,SAAgB,cAAc,CAAC,CAAS;IACtC,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;QACtB,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KACnB;SAAM;QACL,OAAO,CAAC,CAAC;KACV;AACH,CAAC;AAND,wCAMC;AAED,SAAgB,UAAU,CAAC,OAAe,EAAE,cAAuB;IACjE,IAAI,cAAc,EAAE;QAClB,OAAO,cAAc,CAAC;KACvB;SAAM,IAAI,2BAAe,CAAC,OAAO,CAAC,EAAE;QACnC,OAAO,2BAAe,CAAC,OAAO,CAAC,CAAC;KACjC;SAAM;QACL,MAAM,IAAI,6BAAoB,CAAC,SAAS,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;KAC/D;AACH,CAAC;AARD,gCAQC;AAED,SAAgB,UAAU,CACxB,OAAe,EACf,SAAoB,EACpB,cAAuB;IAEvB,MAAM,oBAAoB,GAAG,mCAAuB,CAAC,OAAO,CAAC;QAC3D,CAAC,CAAC,mCAAuB,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC;QAC7C,CAAC,CAAC,SAAS,CAAC;IACd,IAAI,cAAc,EAAE;QAClB,OAAO,cAAc,CAAC;KACvB;SAAM,IAAI,oBAAoB,EAAE;QAC/B,OAAO,oBAAoB,CAAC;KAC7B;SAAM;QACL,MAAM,IAAI,6BAAoB,CAAC,SAAS,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;KAC/D;AACH,CAAC;AAfD,gCAeC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Interface } from "@ethersproject/abi";
|
|
2
|
+
import { StaticJsonRpcProvider } from "@ethersproject/providers";
|
|
3
|
+
import { BlockOverrides } from "../order";
|
|
4
|
+
export type MulticallParams = {
|
|
5
|
+
contractInterface: Interface;
|
|
6
|
+
functionName: string;
|
|
7
|
+
};
|
|
8
|
+
export type MulticallSameContractParams<TFunctionParams> = MulticallParams & {
|
|
9
|
+
address: string;
|
|
10
|
+
functionParams: TFunctionParams[];
|
|
11
|
+
};
|
|
12
|
+
export type MulticallSameFunctionParams<TFunctionParams> = MulticallParams & {
|
|
13
|
+
addresses: string[];
|
|
14
|
+
functionParam: TFunctionParams;
|
|
15
|
+
};
|
|
16
|
+
export type MulticallResult = {
|
|
17
|
+
success: boolean;
|
|
18
|
+
returnData: string;
|
|
19
|
+
};
|
|
20
|
+
type Call = {
|
|
21
|
+
target: string;
|
|
22
|
+
callData: string;
|
|
23
|
+
};
|
|
24
|
+
export declare function multicallSameContractManyFunctions<TFunctionParams extends any[] | undefined>(provider: StaticJsonRpcProvider, params: MulticallSameContractParams<TFunctionParams>, stateOverrrides?: {
|
|
25
|
+
code?: string;
|
|
26
|
+
state?: any;
|
|
27
|
+
}, blockOverrides?: BlockOverrides): Promise<MulticallResult[]>;
|
|
28
|
+
export declare function multicallSameFunctionManyContracts<TFunctionParams extends any[] | undefined>(provider: StaticJsonRpcProvider, params: MulticallSameFunctionParams<TFunctionParams>, stateOverrrides?: {
|
|
29
|
+
code?: string;
|
|
30
|
+
state?: any;
|
|
31
|
+
}, blockOverrides?: BlockOverrides): Promise<MulticallResult[]>;
|
|
32
|
+
export declare function multicall(provider: StaticJsonRpcProvider, calls: Call[], stateOverrides?: {
|
|
33
|
+
code?: string;
|
|
34
|
+
state?: any;
|
|
35
|
+
}, blockOverrides?: BlockOverrides): Promise<MulticallResult[]>;
|
|
36
|
+
export {};
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Uses deployless multicall to fetch responses and errors for multiple calls at once
|
|
3
|
+
// https://github.com/Destiner/deployless-multicall
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.multicall = exports.multicallSameFunctionManyContracts = exports.multicallSameContractManyFunctions = void 0;
|
|
6
|
+
const tslib_1 = require("tslib");
|
|
7
|
+
const abi_1 = require("@ethersproject/abi");
|
|
8
|
+
const bytes_1 = require("@ethersproject/bytes");
|
|
9
|
+
const ethers_1 = require("ethers");
|
|
10
|
+
const deploylessMulticall2_json_1 = tslib_1.__importDefault(require("../../abis/deploylessMulticall2.json"));
|
|
11
|
+
const multicall2_json_1 = tslib_1.__importDefault(require("../../abis/multicall2.json"));
|
|
12
|
+
const constants_1 = require("../constants");
|
|
13
|
+
const contracts_1 = require("../contracts");
|
|
14
|
+
const DEPLOYLESS_MULTICALL_BYTECODE = "0x608060405234801561001057600080fd5b5060405161087538038061087583398181016040528101906100329190610666565b6000815167ffffffffffffffff81111561004f5761004e610358565b5b60405190808252806020026020018201604052801561008857816020015b6100756102da565b81526020019060019003908161006d5790505b50905060005b82518110156101d3576000808483815181106100ad576100ac6106c2565b5b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff168584815181106100e2576100e16106c2565b5b6020026020010151602001516040516100fb9190610738565b6000604051808303816000865af19150503d8060008114610138576040519150601f19603f3d011682016040523d82523d6000602084013e61013d565b606091505b509150915085156101895781610188576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161017f906107d2565b60405180910390fd5b5b60405180604001604052808315158152602001828152508484815181106101b3576101b26106c2565b5b6020026020010181905250505080806101cb9061082b565b91505061008e565b50602081516040028260405103030160408160405103036001835111156102535760005b8351811015610251578060200260208501018160200260400183018261021f57855160200281525b6000831115610244576020808303510151602083510151038060208303510180835250505b50506001810190506101f7565b505b60005b8351811015610281578060200260208501018051516040602083510151035250600181019050610256565b5060005b83518110156102ae57806020026020850101604060208083510151035250600181019050610285565b506001835114156102cb5760208301604082018451602002815250505b60208152825160208201528181f35b6040518060400160405280600015158152602001606081525090565b6000604051905090565b600080fd5b600080fd5b60008115159050919050565b61031f8161030a565b811461032a57600080fd5b50565b60008151905061033c81610316565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61039082610347565b810181811067ffffffffffffffff821117156103af576103ae610358565b5b80604052505050565b60006103c26102f6565b90506103ce8282610387565b919050565b600067ffffffffffffffff8211156103ee576103ed610358565b5b602082029050602081019050919050565b600080fd5b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006104398261040e565b9050919050565b6104498161042e565b811461045457600080fd5b50565b60008151905061046681610440565b92915050565b600080fd5b600067ffffffffffffffff82111561048c5761048b610358565b5b61049582610347565b9050602081019050919050565b60005b838110156104c05780820151818401526020810190506104a5565b838111156104cf576000848401525b50505050565b60006104e86104e384610471565b6103b8565b9050828152602081018484840111156105045761050361046c565b5b61050f8482856104a2565b509392505050565b600082601f83011261052c5761052b610342565b5b815161053c8482602086016104d5565b91505092915050565b60006040828403121561055b5761055a610404565b5b61056560406103b8565b9050600061057584828501610457565b600083015250602082015167ffffffffffffffff81111561059957610598610409565b5b6105a584828501610517565b60208301525092915050565b60006105c46105bf846103d3565b6103b8565b905080838252602082019050602084028301858111156105e7576105e66103ff565b5b835b8181101561062e57805167ffffffffffffffff81111561060c5761060b610342565b5b8086016106198982610545565b855260208501945050506020810190506105e9565b5050509392505050565b600082601f83011261064d5761064c610342565b5b815161065d8482602086016105b1565b91505092915050565b6000806040838503121561067d5761067c610300565b5b600061068b8582860161032d565b925050602083015167ffffffffffffffff8111156106ac576106ab610305565b5b6106b885828601610638565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600081905092915050565b6000610712826106f1565b61071c81856106fc565b935061072c8185602086016104a2565b80840191505092915050565b60006107448284610707565b915081905092915050565b600082825260208201905092915050565b7f4d756c746963616c6c32206167677265676174653a2063616c6c206661696c6560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b60006107bc60218361074f565b91506107c782610760565b604082019050919050565b600060208201905081810360008301526107eb816107af565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000819050919050565b600061083682610821565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610869576108686107f2565b5b60018201905091905056fe";
|
|
15
|
+
// Perform multiple on-chain calls in a single http request
|
|
16
|
+
// return all results including errors
|
|
17
|
+
// Uses deployless method to function properly even on chains with no multicall contract deployed
|
|
18
|
+
function multicallSameContractManyFunctions(provider, params, stateOverrrides, blockOverrides) {
|
|
19
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
20
|
+
const { address, contractInterface, functionName, functionParams } = params;
|
|
21
|
+
const fragment = contractInterface.getFunction(functionName);
|
|
22
|
+
const calls = functionParams.map((functionParam) => {
|
|
23
|
+
const callData = contractInterface.encodeFunctionData(fragment, functionParam);
|
|
24
|
+
return {
|
|
25
|
+
target: address,
|
|
26
|
+
callData,
|
|
27
|
+
};
|
|
28
|
+
});
|
|
29
|
+
return multicall(provider, calls, stateOverrrides, blockOverrides);
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
exports.multicallSameContractManyFunctions = multicallSameContractManyFunctions;
|
|
33
|
+
function multicallSameFunctionManyContracts(provider, params, stateOverrrides, blockOverrides) {
|
|
34
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
35
|
+
const { addresses, contractInterface, functionName, functionParam } = params;
|
|
36
|
+
const fragment = contractInterface.getFunction(functionName);
|
|
37
|
+
const callData = contractInterface.encodeFunctionData(fragment, functionParam);
|
|
38
|
+
const calls = addresses.map((address) => {
|
|
39
|
+
return {
|
|
40
|
+
target: address,
|
|
41
|
+
callData,
|
|
42
|
+
};
|
|
43
|
+
});
|
|
44
|
+
return multicall(provider, calls, stateOverrrides, blockOverrides);
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
exports.multicallSameFunctionManyContracts = multicallSameFunctionManyContracts;
|
|
48
|
+
function multicall(provider, calls, stateOverrides, blockOverrides) {
|
|
49
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
50
|
+
const chainId = (yield provider.getNetwork()).chainId;
|
|
51
|
+
const code = yield provider.getCode((0, constants_1.multicallAddressOn)(chainId));
|
|
52
|
+
let response;
|
|
53
|
+
if (code.length > 2) {
|
|
54
|
+
const multicall = contracts_1.Multicall2__factory.connect((0, constants_1.multicallAddressOn)(chainId), provider);
|
|
55
|
+
const params = [
|
|
56
|
+
{
|
|
57
|
+
from: ethers_1.ethers.constants.AddressZero,
|
|
58
|
+
to: multicall.address,
|
|
59
|
+
data: multicall.interface.encodeFunctionData("tryAggregate", [false, calls]),
|
|
60
|
+
},
|
|
61
|
+
'latest',
|
|
62
|
+
(stateOverrides ? stateOverrides : {}),
|
|
63
|
+
];
|
|
64
|
+
if (blockOverrides)
|
|
65
|
+
params.push(blockOverrides);
|
|
66
|
+
response = yield provider.send("eth_call", params);
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
const deploylessInterface = new abi_1.Interface(deploylessMulticall2_json_1.default);
|
|
70
|
+
const args = deploylessInterface.encodeDeploy([false, calls]);
|
|
71
|
+
const data = (0, bytes_1.hexConcat)([DEPLOYLESS_MULTICALL_BYTECODE, args]);
|
|
72
|
+
const params = [
|
|
73
|
+
{
|
|
74
|
+
from: ethers_1.ethers.constants.AddressZero,
|
|
75
|
+
to: ethers_1.ethers.constants.AddressZero,
|
|
76
|
+
data,
|
|
77
|
+
},
|
|
78
|
+
'latest',
|
|
79
|
+
(stateOverrides ? stateOverrides : {}),
|
|
80
|
+
];
|
|
81
|
+
if (blockOverrides)
|
|
82
|
+
params.push(blockOverrides);
|
|
83
|
+
response = yield provider.send("eth_call", params);
|
|
84
|
+
}
|
|
85
|
+
const multicallInterface = new abi_1.Interface(multicall2_json_1.default);
|
|
86
|
+
return multicallInterface.decodeFunctionResult("tryAggregate", response)
|
|
87
|
+
.returnData;
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
exports.multicall = multicall;
|
|
91
|
+
//# sourceMappingURL=multicall.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multicall.js","sourceRoot":"","sources":["../../../src/utils/multicall.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { OrderType } from "../constants";
|
|
2
|
+
import { Order } from "../order";
|
|
3
|
+
declare abstract class OrderParser {
|
|
4
|
+
abstract orderInfoOffset: number;
|
|
5
|
+
abstract parseOrder(order: string, chainId: number): Order;
|
|
6
|
+
/**
|
|
7
|
+
* Parses a serialized order based on the order shape
|
|
8
|
+
* @dev called by derived classes which set the offset
|
|
9
|
+
*/
|
|
10
|
+
protected _parseOrder(order: string): OrderType;
|
|
11
|
+
/**
|
|
12
|
+
* Determines the OrderType from an Order object
|
|
13
|
+
* @return OrderType
|
|
14
|
+
*/
|
|
15
|
+
getOrderType(order: Order): OrderType;
|
|
16
|
+
/**
|
|
17
|
+
* Helper function to determine the OrderType from a serialized order
|
|
18
|
+
*/
|
|
19
|
+
getOrderTypeFromEncoded(order: string, chainId: number): OrderType;
|
|
20
|
+
}
|
|
21
|
+
export declare class UniswapXOrderParser extends OrderParser {
|
|
22
|
+
orderInfoOffset: number;
|
|
23
|
+
/**
|
|
24
|
+
* Parses a serialized order
|
|
25
|
+
*/
|
|
26
|
+
parseOrder(order: string, chainId: number): Order;
|
|
27
|
+
/**
|
|
28
|
+
* Determine the order type of a UniswapX order
|
|
29
|
+
*/
|
|
30
|
+
getOrderType(order: Order): OrderType;
|
|
31
|
+
}
|
|
32
|
+
export {};
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UniswapXOrderParser = void 0;
|
|
4
|
+
const ethers_1 = require("ethers");
|
|
5
|
+
const constants_1 = require("../constants");
|
|
6
|
+
const errors_1 = require("../errors");
|
|
7
|
+
const order_1 = require("../order");
|
|
8
|
+
const _1 = require(".");
|
|
9
|
+
const UNISWAPX_ORDER_INFO_OFFSET = 64;
|
|
10
|
+
const SLOT_LENGTH = 64;
|
|
11
|
+
const ADDRESS_LENGTH = 40;
|
|
12
|
+
class OrderParser {
|
|
13
|
+
/**
|
|
14
|
+
* Parses a serialized order based on the order shape
|
|
15
|
+
* @dev called by derived classes which set the offset
|
|
16
|
+
*/
|
|
17
|
+
_parseOrder(order) {
|
|
18
|
+
const strippedOrder = (0, _1.stripHexPrefix)(order);
|
|
19
|
+
// look up the tail offset of orderInfo
|
|
20
|
+
// orderInfo is always the first field in the order,
|
|
21
|
+
// but since it is dynamic size it is a pointer in the tail
|
|
22
|
+
const orderInfoOffsetBytes = parseInt(strippedOrder.slice(this.orderInfoOffset, this.orderInfoOffset + SLOT_LENGTH), 16);
|
|
23
|
+
// multiply tail offset by 2 to get in terms of hex characters instead of bytes
|
|
24
|
+
// and add one slot to skip the orderinfo size slot
|
|
25
|
+
const reactorAddressOffset = orderInfoOffsetBytes * 2 + SLOT_LENGTH;
|
|
26
|
+
const reactorAddressSlot = strippedOrder.slice(reactorAddressOffset, reactorAddressOffset + SLOT_LENGTH);
|
|
27
|
+
// slice off the 0 padding in front of the address
|
|
28
|
+
const reactorAddress = ethers_1.ethers.utils
|
|
29
|
+
.getAddress(reactorAddressSlot.slice(SLOT_LENGTH - ADDRESS_LENGTH))
|
|
30
|
+
.toLowerCase();
|
|
31
|
+
if (!constants_1.REVERSE_REACTOR_MAPPING[reactorAddress]) {
|
|
32
|
+
throw new errors_1.MissingConfiguration("reactor", reactorAddress);
|
|
33
|
+
}
|
|
34
|
+
return constants_1.REVERSE_REACTOR_MAPPING[reactorAddress].orderType;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Determines the OrderType from an Order object
|
|
38
|
+
* @return OrderType
|
|
39
|
+
*/
|
|
40
|
+
getOrderType(order) {
|
|
41
|
+
const { orderType } = constants_1.REVERSE_REACTOR_MAPPING[order.info.reactor.toLowerCase()];
|
|
42
|
+
return orderType;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Helper function to determine the OrderType from a serialized order
|
|
46
|
+
*/
|
|
47
|
+
getOrderTypeFromEncoded(order, chainId) {
|
|
48
|
+
const parsedOrder = this.parseOrder(order, chainId);
|
|
49
|
+
return this.getOrderType(parsedOrder);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
class UniswapXOrderParser extends OrderParser {
|
|
53
|
+
constructor() {
|
|
54
|
+
super(...arguments);
|
|
55
|
+
this.orderInfoOffset = UNISWAPX_ORDER_INFO_OFFSET;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Parses a serialized order
|
|
59
|
+
*/
|
|
60
|
+
parseOrder(order, chainId) {
|
|
61
|
+
const orderType = this._parseOrder(order);
|
|
62
|
+
switch (orderType) {
|
|
63
|
+
case constants_1.OrderType.Dutch_V2: {
|
|
64
|
+
// cosigned and unsigned serialized versions are the same format
|
|
65
|
+
const cosignedOrder = order_1.CosignedV2DutchOrder.parse(order, chainId);
|
|
66
|
+
// if no cosignature, returned unsigned variant
|
|
67
|
+
if (cosignedOrder.info.cosignature === "0x") {
|
|
68
|
+
return order_1.UnsignedV2DutchOrder.parse(order, chainId);
|
|
69
|
+
}
|
|
70
|
+
// if cosignature exists then returned cosigned version
|
|
71
|
+
return cosignedOrder;
|
|
72
|
+
}
|
|
73
|
+
default:
|
|
74
|
+
throw new errors_1.MissingConfiguration("orderType", orderType);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Determine the order type of a UniswapX order
|
|
79
|
+
*/
|
|
80
|
+
getOrderType(order) {
|
|
81
|
+
const { orderType } = constants_1.REVERSE_REACTOR_MAPPING[order.info.reactor.toLowerCase()];
|
|
82
|
+
return orderType;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
exports.UniswapXOrderParser = UniswapXOrderParser;
|
|
86
|
+
//# sourceMappingURL=order.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"order.js","sourceRoot":"","sources":["../../../src/utils/order.ts"],"names":[],"mappings":";;;AAAA,mCAAgC;AAEhC,4CAAkE;AAClE,sCAAiD;AACjD,oCAA6E;AAE7E,wBAAmC;AAEnC,MAAM,0BAA0B,GAAG,EAAE,CAAC;AACtC,MAAM,WAAW,GAAG,EAAE,CAAC;AACvB,MAAM,cAAc,GAAG,EAAE,CAAC;AAE1B,MAAe,WAAW;IAKxB;;;OAGG;IACO,WAAW,CAAC,KAAa;QACjC,MAAM,aAAa,GAAG,IAAA,iBAAc,EAAC,KAAK,CAAC,CAAC;QAC5C,uCAAuC;QACvC,oDAAoD;QACpD,2DAA2D;QAC3D,MAAM,oBAAoB,GAAG,QAAQ,CACnC,aAAa,CAAC,KAAK,CACjB,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,eAAe,GAAG,WAAW,CACnC,EACD,EAAE,CACH,CAAC;QACF,+EAA+E;QAC/E,mDAAmD;QACnD,MAAM,oBAAoB,GAAG,oBAAoB,GAAG,CAAC,GAAG,WAAW,CAAC;QACpE,MAAM,kBAAkB,GAAG,aAAa,CAAC,KAAK,CAC5C,oBAAoB,EACpB,oBAAoB,GAAG,WAAW,CACnC,CAAC;QACF,kDAAkD;QAClD,MAAM,cAAc,GAAG,eAAM,CAAC,KAAK;aAChC,UAAU,CAAC,kBAAkB,CAAC,KAAK,CAAC,WAAW,GAAG,cAAc,CAAC,CAAC;aAClE,WAAW,EAAE,CAAC;QAEjB,IAAI,CAAC,mCAAuB,CAAC,cAAc,CAAC,EAAE;YAC5C,MAAM,IAAI,6BAAoB,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;SAC3D;QAED,OAAO,mCAAuB,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC;IAC3D,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,KAAY;QACvB,MAAM,EAAE,SAAS,EAAE,GACjB,mCAAuB,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QAC5D,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,uBAAuB,CAAC,KAAa,EAAE,OAAe;QACpD,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;IACxC,CAAC;CACF;AAED,MAAa,mBAAoB,SAAQ,WAAW;IAApD;;QACE,oBAAe,GAAG,0BAA0B,CAAC;IA+B/C,CAAC;IA7BC;;OAEG;IACH,UAAU,CAAC,KAAa,EAAE,OAAe;QACvC,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC1C,QAAQ,SAAS,EAAE;YACjB,KAAK,qBAAS,CAAC,QAAQ,CAAC,CAAC;gBACvB,gEAAgE;gBAChE,MAAM,aAAa,GAAG,4BAAoB,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;gBACjE,+CAA+C;gBAC/C,IAAI,aAAa,CAAC,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE;oBAC3C,OAAO,4BAAoB,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;iBACnD;gBACD,uDAAuD;gBACvD,OAAO,aAAa,CAAC;aACtB;YACD;gBACE,MAAM,IAAI,6BAAoB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;SAC1D;IACH,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,KAAY;QACvB,MAAM,EAAE,SAAS,EAAE,GACjB,mCAAuB,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QAC5D,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AAhCD,kDAgCC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const ethers_1 = require("ethers");
|
|
4
|
+
const sdk_core_1 = require("@kayenfi/sdk-core");
|
|
5
|
+
const builder_1 = require("../builder");
|
|
6
|
+
const constants_1 = require("../constants");
|
|
7
|
+
const order_1 = require("../order");
|
|
8
|
+
const order_2 = require("./order");
|
|
9
|
+
describe("order utils", () => {
|
|
10
|
+
let cosignedV2DutchOrder;
|
|
11
|
+
let unsignedV2DutchOrder;
|
|
12
|
+
let chainId;
|
|
13
|
+
const uniswapXOrderParser = new order_2.UniswapXOrderParser();
|
|
14
|
+
beforeAll(() => {
|
|
15
|
+
chainId = sdk_core_1.ChainId.CHILIZ;
|
|
16
|
+
const deadline = Math.floor(Date.now() / 1000) + 1000;
|
|
17
|
+
const v2Builder = new builder_1.V2DutchOrderBuilder(chainId, undefined, "0x791d9b37Fce004Ccc708CE9729A952d997F82789")
|
|
18
|
+
.cosigner("0xe463635f6e73C1E595554C3ae216472D0fb929a9")
|
|
19
|
+
.deadline(deadline)
|
|
20
|
+
.decayEndTime(deadline)
|
|
21
|
+
.decayStartTime(deadline - 100)
|
|
22
|
+
.swapper(ethers_1.constants.AddressZero)
|
|
23
|
+
.nonce(ethers_1.BigNumber.from(100))
|
|
24
|
+
.input({
|
|
25
|
+
token: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
|
|
26
|
+
startAmount: ethers_1.BigNumber.from("1000000"),
|
|
27
|
+
endAmount: ethers_1.BigNumber.from("1000000"),
|
|
28
|
+
})
|
|
29
|
+
.output({
|
|
30
|
+
token: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
|
|
31
|
+
startAmount: ethers_1.BigNumber.from("1000000000000000000"),
|
|
32
|
+
endAmount: ethers_1.BigNumber.from("1000000000000000000"),
|
|
33
|
+
recipient: "0x0000000000000000000000000000000000000000",
|
|
34
|
+
})
|
|
35
|
+
.outputOverrides([ethers_1.BigNumber.from("100000000000000000000")]);
|
|
36
|
+
unsignedV2DutchOrder = v2Builder.buildPartial();
|
|
37
|
+
cosignedV2DutchOrder = v2Builder
|
|
38
|
+
.cosignature("0x65c6470fea0e1ca7d204b6904d0c1b0b640d7e6dcd4be3065497756e163c0399288c3eea0fba9b31ed00f34ccffe389ec3027bcd764df9fa853eeae8f68c9beb1b")
|
|
39
|
+
.build();
|
|
40
|
+
});
|
|
41
|
+
describe("parseOrder", () => {
|
|
42
|
+
it("parses CosignedV2DutchOrder", () => {
|
|
43
|
+
const encodedOrder = cosignedV2DutchOrder.serialize();
|
|
44
|
+
expect(uniswapXOrderParser.parseOrder(encodedOrder, chainId)).toEqual(cosignedV2DutchOrder);
|
|
45
|
+
});
|
|
46
|
+
it("parses CosignedV2DutchOrder 2", () => {
|
|
47
|
+
const FROM_ADDRESS = "0xabCd111111111111111111111111111111111111";
|
|
48
|
+
const USDC_MAINNET_CHECKSUMMED_ADDRESS = "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48";
|
|
49
|
+
const TIMESTAMP_SECONDS = 1660562791;
|
|
50
|
+
const WETH_MAINNET_CHECKSUMMED_ADDRESS = "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2";
|
|
51
|
+
const ENCODED_DUTCH_V2_ORDER = new builder_1.V2DutchOrderBuilder(sdk_core_1.ChainId.CHILIZ, "0x4983F6D7bae88e2E006584AeF58868348a90C7d9", // CHILIZ Dutch_V2 reactor
|
|
52
|
+
"0x791d9b37Fce004Ccc708CE9729A952d997F82789")
|
|
53
|
+
.decayStartTime(TIMESTAMP_SECONDS)
|
|
54
|
+
.decayEndTime(TIMESTAMP_SECONDS)
|
|
55
|
+
.input({
|
|
56
|
+
token: WETH_MAINNET_CHECKSUMMED_ADDRESS,
|
|
57
|
+
startAmount: ethers_1.BigNumber.from(10).pow(18).mul(2),
|
|
58
|
+
endAmount: ethers_1.BigNumber.from(10).pow(18),
|
|
59
|
+
})
|
|
60
|
+
.output({
|
|
61
|
+
token: USDC_MAINNET_CHECKSUMMED_ADDRESS,
|
|
62
|
+
startAmount: ethers_1.BigNumber.from(10).pow(6).mul(3),
|
|
63
|
+
endAmount: ethers_1.BigNumber.from(10).pow(6).mul(2),
|
|
64
|
+
recipient: FROM_ADDRESS,
|
|
65
|
+
})
|
|
66
|
+
.nonce(ethers_1.BigNumber.from(1))
|
|
67
|
+
.deadline(Math.floor(Date.now() / 1000 + 600))
|
|
68
|
+
.swapper(FROM_ADDRESS)
|
|
69
|
+
.inputOverride(ethers_1.BigNumber.from(10).pow(18).mul(2))
|
|
70
|
+
.outputOverrides([ethers_1.BigNumber.from(10).pow(6).mul(3)])
|
|
71
|
+
.exclusivityOverrideBps(ethers_1.BigNumber.from(0))
|
|
72
|
+
.cosigner("0x0000000000000000000000000000000000000000")
|
|
73
|
+
.cosignature("0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000")
|
|
74
|
+
.cosignerData({
|
|
75
|
+
decayStartTime: TIMESTAMP_SECONDS,
|
|
76
|
+
decayEndTime: TIMESTAMP_SECONDS,
|
|
77
|
+
exclusiveFiller: "0x0000000000000000000000000000000000000000",
|
|
78
|
+
exclusivityOverrideBps: ethers_1.BigNumber.from(0),
|
|
79
|
+
inputOverride: ethers_1.BigNumber.from(10).pow(18).mul(2),
|
|
80
|
+
outputOverrides: [ethers_1.BigNumber.from(10).pow(6).mul(3)],
|
|
81
|
+
})
|
|
82
|
+
.build()
|
|
83
|
+
.serialize();
|
|
84
|
+
//Missing configuration for reactor: 0xabcd111111111111111111111111111111111111 (swapper)
|
|
85
|
+
expect(uniswapXOrderParser.parseOrder(ENCODED_DUTCH_V2_ORDER, sdk_core_1.ChainId.CHILIZ)).toEqual(order_1.CosignedV2DutchOrder.parse(ENCODED_DUTCH_V2_ORDER, sdk_core_1.ChainId.CHILIZ));
|
|
86
|
+
});
|
|
87
|
+
it("parses UnsignedV2DutchOrder", () => {
|
|
88
|
+
const encodedOrder = unsignedV2DutchOrder.serialize();
|
|
89
|
+
expect(uniswapXOrderParser.parseOrder(encodedOrder, chainId)).toMatchObject(unsignedV2DutchOrder);
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
describe("getOrderType", () => {
|
|
93
|
+
it("parses CosignedV2DutchOrder type", () => {
|
|
94
|
+
expect(uniswapXOrderParser.getOrderType(cosignedV2DutchOrder)).toEqual(constants_1.OrderType.Dutch_V2);
|
|
95
|
+
});
|
|
96
|
+
it("parses UnsignedV2DutchOrder type", () => {
|
|
97
|
+
expect(uniswapXOrderParser.getOrderType(unsignedV2DutchOrder)).toEqual(constants_1.OrderType.Dutch_V2);
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
describe("getOrderTypeFromEncoded", () => {
|
|
101
|
+
it("parses UnsignedV2DutchOrder type", () => {
|
|
102
|
+
expect(uniswapXOrderParser.getOrderTypeFromEncoded(unsignedV2DutchOrder.serialize(), chainId)).toEqual(constants_1.OrderType.Dutch_V2);
|
|
103
|
+
});
|
|
104
|
+
it("parses CosignedV2DutchOrder type", () => {
|
|
105
|
+
expect(uniswapXOrderParser.getOrderTypeFromEncoded(cosignedV2DutchOrder.serialize(), chainId)).toEqual(constants_1.OrderType.Dutch_V2);
|
|
106
|
+
});
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
//# sourceMappingURL=order.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"order.test.js","sourceRoot":"","sources":["../../../src/utils/order.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@kayenfi/limit-order-sdk",
|
|
3
|
+
"author": "kayenfi",
|
|
4
|
+
"version": "0.0.1",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"fanx",
|
|
7
|
+
"ethereum"
|
|
8
|
+
],
|
|
9
|
+
"license": "MIT",
|
|
10
|
+
"main": "dist/src/index.js",
|
|
11
|
+
"typings": "dist/src/index.d.ts",
|
|
12
|
+
"module": "dist/limit-order-sdk.esm.js",
|
|
13
|
+
"files": [
|
|
14
|
+
"dist"
|
|
15
|
+
],
|
|
16
|
+
"engines": {
|
|
17
|
+
"node": ">=10"
|
|
18
|
+
},
|
|
19
|
+
"scripts": {
|
|
20
|
+
"build": "yarn run typechain && tsc -p tsconfig.json",
|
|
21
|
+
"lint": "eslint src --ext .ts --ignore-pattern '**/*.test.ts'",
|
|
22
|
+
"lint:fix": "eslint src --ext .ts --fix --ignore-pattern '**/*.test.ts'",
|
|
23
|
+
"prettier": "prettier \"src/**/*.ts\" --list-different",
|
|
24
|
+
"release": "semantic-release",
|
|
25
|
+
"test": "run-s build test:unit test:integration",
|
|
26
|
+
"test:unit": "jest --testPathPattern src --detectOpenHandles --forceExit --testPathIgnorePatterns dist",
|
|
27
|
+
"test:integration": "yarn build && cd ../.. && yarn install && cd sdks/limit-order-sdk/integration && yarn test",
|
|
28
|
+
"typechain": "typechain --target=ethers-v5 --out-dir src/contracts --glob ./abis/**/*.json"
|
|
29
|
+
},
|
|
30
|
+
"dependencies": {
|
|
31
|
+
"@ethersproject/bytes": "^5.7.0",
|
|
32
|
+
"@ethersproject/providers": "^5.7.0",
|
|
33
|
+
"@kayenfi/permit2-sdk": "^0.0.1",
|
|
34
|
+
"@kayenfi/sdk-core": "^0.0.1",
|
|
35
|
+
"ethers": "^5.7.0"
|
|
36
|
+
},
|
|
37
|
+
"devDependencies": {
|
|
38
|
+
"@typechain/ethers-v5": "^10.2.1",
|
|
39
|
+
"@types/jest": "^24.0.25",
|
|
40
|
+
"@types/node": "^18.7.16",
|
|
41
|
+
"@typescript-eslint/eslint-plugin": "^5.62",
|
|
42
|
+
"@typescript-eslint/parser": "^5.62",
|
|
43
|
+
"eslint": "^7.8.0",
|
|
44
|
+
"eslint-config-prettier": "^6.11.0",
|
|
45
|
+
"eslint-plugin-eslint-comments": "^3.2.0",
|
|
46
|
+
"eslint-plugin-functional": "^3.0.2",
|
|
47
|
+
"eslint-plugin-import": "^2.22.0",
|
|
48
|
+
"husky": "^8.0.3",
|
|
49
|
+
"jest": "^27.0.6",
|
|
50
|
+
"jest-environment-node": "^27.0.6",
|
|
51
|
+
"npm-run-all": "^4.1.5",
|
|
52
|
+
"prettier": "^2.4.1",
|
|
53
|
+
"ts-jest": "^27.0.4",
|
|
54
|
+
"ts-node": "^10.9.1",
|
|
55
|
+
"typechain": "^8.3.2",
|
|
56
|
+
"typescript": "^4.9.5"
|
|
57
|
+
},
|
|
58
|
+
"husky": {
|
|
59
|
+
"hooks": {
|
|
60
|
+
"pre-commit": "yarn fix"
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
"publishConfig": {
|
|
64
|
+
"access": "public"
|
|
65
|
+
}
|
|
66
|
+
}
|