@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.
Files changed (177) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +107 -0
  3. package/dist/abis/MockERC20.json +1606 -0
  4. package/dist/abis/deploylessMulticall2.json +30 -0
  5. package/dist/abis/multicall2.json +315 -0
  6. package/dist/src/builder/OrderBuilder.d.ts +17 -0
  7. package/dist/src/builder/OrderBuilder.js +59 -0
  8. package/dist/src/builder/OrderBuilder.js.map +1 -0
  9. package/dist/src/builder/V2DutchOrderBuilder.d.ts +33 -0
  10. package/dist/src/builder/V2DutchOrderBuilder.js +244 -0
  11. package/dist/src/builder/V2DutchOrderBuilder.js.map +1 -0
  12. package/dist/src/builder/index.d.ts +3 -0
  13. package/dist/src/builder/index.js +10 -0
  14. package/dist/src/builder/index.js.map +1 -0
  15. package/dist/src/constants.d.ts +37 -0
  16. package/dist/src/constants.js +73 -0
  17. package/dist/src/constants.js.map +1 -0
  18. package/dist/src/constants.test.d.ts +1 -0
  19. package/dist/src/constants.test.js +20 -0
  20. package/dist/src/constants.test.js.map +1 -0
  21. package/dist/src/contracts/DeploylessMulticall2.d.ts +37 -0
  22. package/dist/src/contracts/DeploylessMulticall2.js +3 -0
  23. package/dist/src/contracts/DeploylessMulticall2.js.map +1 -0
  24. package/dist/src/contracts/DutchLimitOrderReactor.d.ts +191 -0
  25. package/dist/src/contracts/DutchLimitOrderReactor.js +3 -0
  26. package/dist/src/contracts/DutchLimitOrderReactor.js.map +1 -0
  27. package/dist/src/contracts/DutchOrderReactor.d.ts +191 -0
  28. package/dist/src/contracts/DutchOrderReactor.js +3 -0
  29. package/dist/src/contracts/DutchOrderReactor.js.map +1 -0
  30. package/dist/src/contracts/ExclusiveDutchOrderReactor.d.ts +207 -0
  31. package/dist/src/contracts/ExclusiveDutchOrderReactor.js +3 -0
  32. package/dist/src/contracts/ExclusiveDutchOrderReactor.js.map +1 -0
  33. package/dist/src/contracts/ExclusiveFillerValidation.d.ts +105 -0
  34. package/dist/src/contracts/ExclusiveFillerValidation.js +3 -0
  35. package/dist/src/contracts/ExclusiveFillerValidation.js.map +1 -0
  36. package/dist/src/contracts/MockERC20.d.ts +242 -0
  37. package/dist/src/contracts/MockERC20.js +3 -0
  38. package/dist/src/contracts/MockERC20.js.map +1 -0
  39. package/dist/src/contracts/Multicall2.d.ts +218 -0
  40. package/dist/src/contracts/Multicall2.js +3 -0
  41. package/dist/src/contracts/Multicall2.js.map +1 -0
  42. package/dist/src/contracts/OrderQuoter.d.ts +131 -0
  43. package/dist/src/contracts/OrderQuoter.js +3 -0
  44. package/dist/src/contracts/OrderQuoter.js.map +1 -0
  45. package/dist/src/contracts/Permit2.d.ts +533 -0
  46. package/dist/src/contracts/Permit2.js +3 -0
  47. package/dist/src/contracts/Permit2.js.map +1 -0
  48. package/dist/src/contracts/SwapRouter02Executor.d.ts +240 -0
  49. package/dist/src/contracts/SwapRouter02Executor.js +3 -0
  50. package/dist/src/contracts/SwapRouter02Executor.js.map +1 -0
  51. package/dist/src/contracts/V2DutchOrderReactor.d.ts +207 -0
  52. package/dist/src/contracts/V2DutchOrderReactor.js +3 -0
  53. package/dist/src/contracts/V2DutchOrderReactor.js.map +1 -0
  54. package/dist/src/contracts/common.d.ts +22 -0
  55. package/dist/src/contracts/common.js +3 -0
  56. package/dist/src/contracts/common.js.map +1 -0
  57. package/dist/src/contracts/factories/DeploylessMulticall2__factory.d.ts +29 -0
  58. package/dist/src/contracts/factories/DeploylessMulticall2__factory.js +48 -0
  59. package/dist/src/contracts/factories/DeploylessMulticall2__factory.js.map +1 -0
  60. package/dist/src/contracts/factories/DutchLimitOrderReactor__factory.d.ts +87 -0
  61. package/dist/src/contracts/factories/DutchLimitOrderReactor__factory.js +385 -0
  62. package/dist/src/contracts/factories/DutchLimitOrderReactor__factory.js.map +1 -0
  63. package/dist/src/contracts/factories/DutchOrderReactor__factory.d.ts +87 -0
  64. package/dist/src/contracts/factories/DutchOrderReactor__factory.js +385 -0
  65. package/dist/src/contracts/factories/DutchOrderReactor__factory.js.map +1 -0
  66. package/dist/src/contracts/factories/ExclusiveDutchOrderReactor__factory.d.ts +297 -0
  67. package/dist/src/contracts/factories/ExclusiveDutchOrderReactor__factory.js +400 -0
  68. package/dist/src/contracts/factories/ExclusiveDutchOrderReactor__factory.js.map +1 -0
  69. package/dist/src/contracts/factories/ExclusiveFillerValidation__factory.d.ts +115 -0
  70. package/dist/src/contracts/factories/ExclusiveFillerValidation__factory.js +165 -0
  71. package/dist/src/contracts/factories/ExclusiveFillerValidation__factory.js.map +1 -0
  72. package/dist/src/contracts/factories/MockERC20__factory.d.ts +301 -0
  73. package/dist/src/contracts/factories/MockERC20__factory.js +408 -0
  74. package/dist/src/contracts/factories/MockERC20__factory.js.map +1 -0
  75. package/dist/src/contracts/factories/Multicall2__factory.d.ts +245 -0
  76. package/dist/src/contracts/factories/Multicall2__factory.js +333 -0
  77. package/dist/src/contracts/factories/Multicall2__factory.js.map +1 -0
  78. package/dist/src/contracts/factories/OrderQuoter__factory.d.ts +215 -0
  79. package/dist/src/contracts/factories/OrderQuoter__factory.js +295 -0
  80. package/dist/src/contracts/factories/OrderQuoter__factory.js.map +1 -0
  81. package/dist/src/contracts/factories/Permit2__factory.d.ts +720 -0
  82. package/dist/src/contracts/factories/Permit2__factory.js +942 -0
  83. package/dist/src/contracts/factories/Permit2__factory.js.map +1 -0
  84. package/dist/src/contracts/factories/SwapRouter02Executor__factory.d.ts +257 -0
  85. package/dist/src/contracts/factories/SwapRouter02Executor__factory.js +348 -0
  86. package/dist/src/contracts/factories/SwapRouter02Executor__factory.js.map +1 -0
  87. package/dist/src/contracts/factories/V2DutchOrderReactor__factory.d.ts +297 -0
  88. package/dist/src/contracts/factories/V2DutchOrderReactor__factory.js +400 -0
  89. package/dist/src/contracts/factories/V2DutchOrderReactor__factory.js.map +1 -0
  90. package/dist/src/contracts/factories/index.d.ts +9 -0
  91. package/dist/src/contracts/factories/index.js +25 -0
  92. package/dist/src/contracts/factories/index.js.map +1 -0
  93. package/dist/src/contracts/index.d.ts +19 -0
  94. package/dist/src/contracts/index.js +24 -0
  95. package/dist/src/contracts/index.js.map +1 -0
  96. package/dist/src/errors.d.ts +3 -0
  97. package/dist/src/errors.js +11 -0
  98. package/dist/src/errors.js.map +1 -0
  99. package/dist/src/index.d.ts +5 -0
  100. package/dist/src/index.js +9 -0
  101. package/dist/src/index.js.map +1 -0
  102. package/dist/src/order/DutchOrder.d.ts +67 -0
  103. package/dist/src/order/DutchOrder.js +291 -0
  104. package/dist/src/order/DutchOrder.js.map +1 -0
  105. package/dist/src/order/DutchOrder.test.d.ts +1 -0
  106. package/dist/src/order/DutchOrder.test.js +166 -0
  107. package/dist/src/order/DutchOrder.test.js.map +1 -0
  108. package/dist/src/order/V2DutchOrder.d.ts +120 -0
  109. package/dist/src/order/V2DutchOrder.js +391 -0
  110. package/dist/src/order/V2DutchOrder.js.map +1 -0
  111. package/dist/src/order/V2DutchOrder.test.d.ts +1 -0
  112. package/dist/src/order/V2DutchOrder.test.js +272 -0
  113. package/dist/src/order/V2DutchOrder.test.js.map +1 -0
  114. package/dist/src/order/index.d.ts +6 -0
  115. package/dist/src/order/index.js +7 -0
  116. package/dist/src/order/index.js.map +1 -0
  117. package/dist/src/order/types.d.ts +70 -0
  118. package/dist/src/order/types.js +3 -0
  119. package/dist/src/order/types.js.map +1 -0
  120. package/dist/src/order/validation.d.ts +24 -0
  121. package/dist/src/order/validation.js +61 -0
  122. package/dist/src/order/validation.js.map +1 -0
  123. package/dist/src/order/validation.test.d.ts +1 -0
  124. package/dist/src/order/validation.test.js +58 -0
  125. package/dist/src/order/validation.test.js.map +1 -0
  126. package/dist/src/trade/DutchOrderTrade.d.ts +33 -0
  127. package/dist/src/trade/DutchOrderTrade.js +81 -0
  128. package/dist/src/trade/DutchOrderTrade.js.map +1 -0
  129. package/dist/src/trade/DutchOrderTrade.test.d.ts +1 -0
  130. package/dist/src/trade/DutchOrderTrade.test.js +93 -0
  131. package/dist/src/trade/DutchOrderTrade.test.js.map +1 -0
  132. package/dist/src/trade/V2DutchOrderTrade.d.ts +34 -0
  133. package/dist/src/trade/V2DutchOrderTrade.js +81 -0
  134. package/dist/src/trade/V2DutchOrderTrade.js.map +1 -0
  135. package/dist/src/trade/V2DutchOrderTrade.test.d.ts +1 -0
  136. package/dist/src/trade/V2DutchOrderTrade.test.js +93 -0
  137. package/dist/src/trade/V2DutchOrderTrade.test.js.map +1 -0
  138. package/dist/src/trade/index.d.ts +1 -0
  139. package/dist/src/trade/index.js +5 -0
  140. package/dist/src/trade/index.js.map +1 -0
  141. package/dist/src/trade/utils.d.ts +6 -0
  142. package/dist/src/trade/utils.js +30 -0
  143. package/dist/src/trade/utils.js.map +1 -0
  144. package/dist/src/utils/EventWatcher.d.ts +41 -0
  145. package/dist/src/utils/EventWatcher.js +97 -0
  146. package/dist/src/utils/EventWatcher.js.map +1 -0
  147. package/dist/src/utils/NonceManager.d.ts +36 -0
  148. package/dist/src/utils/NonceManager.js +134 -0
  149. package/dist/src/utils/NonceManager.js.map +1 -0
  150. package/dist/src/utils/NonceManager.test.d.ts +1 -0
  151. package/dist/src/utils/NonceManager.test.js +131 -0
  152. package/dist/src/utils/NonceManager.test.js.map +1 -0
  153. package/dist/src/utils/OrderQuoter.d.ts +53 -0
  154. package/dist/src/utils/OrderQuoter.js +196 -0
  155. package/dist/src/utils/OrderQuoter.js.map +1 -0
  156. package/dist/src/utils/OrderValidator.d.ts +8 -0
  157. package/dist/src/utils/OrderValidator.js +28 -0
  158. package/dist/src/utils/OrderValidator.js.map +1 -0
  159. package/dist/src/utils/dutchDecay.d.ts +8 -0
  160. package/dist/src/utils/dutchDecay.js +32 -0
  161. package/dist/src/utils/dutchDecay.js.map +1 -0
  162. package/dist/src/utils/dutchDecay.test.d.ts +1 -0
  163. package/dist/src/utils/dutchDecay.test.js +61 -0
  164. package/dist/src/utils/dutchDecay.test.js.map +1 -0
  165. package/dist/src/utils/index.d.ts +11 -0
  166. package/dist/src/utils/index.js +50 -0
  167. package/dist/src/utils/index.js.map +1 -0
  168. package/dist/src/utils/multicall.d.ts +36 -0
  169. package/dist/src/utils/multicall.js +91 -0
  170. package/dist/src/utils/multicall.js.map +1 -0
  171. package/dist/src/utils/order.d.ts +32 -0
  172. package/dist/src/utils/order.js +86 -0
  173. package/dist/src/utils/order.js.map +1 -0
  174. package/dist/src/utils/order.test.d.ts +1 -0
  175. package/dist/src/utils/order.test.js +109 -0
  176. package/dist/src/utils/order.test.js.map +1 -0
  177. 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
+ }