@1inch/fusion-sdk 1.0.1-rc.9 → 2.0.0

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 (87) hide show
  1. package/dist/api/orders/order-api.spec.js +230 -144
  2. package/dist/api/orders/order-api.spec.js.map +1 -1
  3. package/dist/api/orders/orders.api.d.ts +1 -0
  4. package/dist/api/orders/orders.api.js +4 -3
  5. package/dist/api/orders/orders.api.js.map +1 -1
  6. package/dist/api/orders/types.d.ts +8 -0
  7. package/dist/api/orders/types.js.map +1 -1
  8. package/dist/api/quoter/quote/order-params.d.ts +1 -0
  9. package/dist/api/quoter/quote/order-params.js +1 -0
  10. package/dist/api/quoter/quote/order-params.js.map +1 -1
  11. package/dist/api/quoter/quote/quote.d.ts +1 -1
  12. package/dist/api/quoter/quote/quote.js +17 -10
  13. package/dist/api/quoter/quote/quote.js.map +1 -1
  14. package/dist/api/quoter/quote/types.d.ts +1 -0
  15. package/dist/api/quoter/quoter.api.d.ts +1 -0
  16. package/dist/api/quoter/quoter.api.js +3 -2
  17. package/dist/api/quoter/quoter.api.js.map +1 -1
  18. package/dist/api/quoter/quoter.api.spec.js +21 -6
  19. package/dist/api/quoter/quoter.api.spec.js.map +1 -1
  20. package/dist/api/quoter/quoter.request.d.ts +1 -0
  21. package/dist/api/quoter/quoter.request.js +3 -1
  22. package/dist/api/quoter/quoter.request.js.map +1 -1
  23. package/dist/api/quoter/types.d.ts +4 -3
  24. package/dist/api/quoter/types.js.map +1 -1
  25. package/dist/api/relayer/relayer.api.d.ts +1 -0
  26. package/dist/api/relayer/relayer.api.js +3 -2
  27. package/dist/api/relayer/relayer.api.js.map +1 -1
  28. package/dist/api/relayer/relayer.api.spec.js +8 -5
  29. package/dist/api/relayer/relayer.api.spec.js.map +1 -1
  30. package/dist/api/relayer/relayer.request.d.ts +1 -0
  31. package/dist/api/relayer/relayer.request.js +3 -1
  32. package/dist/api/relayer/relayer.request.js.map +1 -1
  33. package/dist/api/relayer/types.d.ts +1 -0
  34. package/dist/auction-calculator/auction-calculator.d.ts +20 -11
  35. package/dist/auction-calculator/auction-calculator.js +54 -25
  36. package/dist/auction-calculator/auction-calculator.js.map +1 -1
  37. package/dist/auction-calculator/index.d.ts +0 -1
  38. package/dist/auction-calculator/index.js +0 -1
  39. package/dist/auction-calculator/index.js.map +1 -1
  40. package/dist/fusion-order/auction-details/auction-details.d.ts +2 -0
  41. package/dist/fusion-order/auction-details/auction-details.js +3 -0
  42. package/dist/fusion-order/auction-details/auction-details.js.map +1 -1
  43. package/dist/fusion-order/auction-details/auction-details.spec.js +3 -3
  44. package/dist/fusion-order/auction-details/auction-details.spec.js.map +1 -1
  45. package/dist/fusion-order/fusion-extension.d.ts +12 -4
  46. package/dist/fusion-order/fusion-extension.js +37 -9
  47. package/dist/fusion-order/fusion-extension.js.map +1 -1
  48. package/dist/fusion-order/fusion-extension.spec.d.ts +1 -0
  49. package/dist/fusion-order/fusion-extension.spec.js +75 -0
  50. package/dist/fusion-order/fusion-extension.spec.js.map +1 -0
  51. package/dist/fusion-order/fusion-order.d.ts +42 -3
  52. package/dist/fusion-order/fusion-order.js +93 -21
  53. package/dist/fusion-order/fusion-order.js.map +1 -1
  54. package/dist/fusion-order/fusion-order.spec.js +79 -1
  55. package/dist/fusion-order/fusion-order.spec.js.map +1 -1
  56. package/dist/fusion-order/index.d.ts +1 -0
  57. package/dist/fusion-order/index.js +1 -0
  58. package/dist/fusion-order/index.js.map +1 -1
  59. package/dist/fusion-order/settlement-post-interaction-data/settlement-post-interaction-data.d.ts +6 -2
  60. package/dist/fusion-order/settlement-post-interaction-data/settlement-post-interaction-data.js +39 -8
  61. package/dist/fusion-order/settlement-post-interaction-data/settlement-post-interaction-data.js.map +1 -1
  62. package/dist/fusion-order/settlement-post-interaction-data/settlement-post-interaction-data.spec.js +34 -2
  63. package/dist/fusion-order/settlement-post-interaction-data/settlement-post-interaction-data.spec.js.map +1 -1
  64. package/dist/fusion-order/settlement-post-interaction-data/types.d.ts +1 -0
  65. package/dist/fusion-order/source-track.d.ts +1 -0
  66. package/dist/fusion-order/source-track.js +29 -0
  67. package/dist/fusion-order/source-track.js.map +1 -0
  68. package/dist/index.d.ts +1 -1
  69. package/dist/index.js.map +1 -1
  70. package/dist/sdk/sdk.js +16 -14
  71. package/dist/sdk/sdk.js.map +1 -1
  72. package/dist/sdk/types.d.ts +5 -0
  73. package/dist/sdk/utils.js +5 -2
  74. package/dist/sdk/utils.js.map +1 -1
  75. package/dist/utils/amounts.d.ts +1 -1
  76. package/dist/utils/amounts.js +3 -3
  77. package/dist/utils/amounts.js.map +1 -1
  78. package/dist/ws-api/types.d.ts +1 -0
  79. package/dist/ws-api/ws-api.d.ts +1 -0
  80. package/dist/ws-api/ws-api.js +2 -1
  81. package/dist/ws-api/ws-api.js.map +1 -1
  82. package/dist/ws-api/ws.spec.js +113 -106
  83. package/dist/ws-api/ws.spec.js.map +1 -1
  84. package/package.json +22 -22
  85. package/dist/auction-calculator/calc.d.ts +0 -9
  86. package/dist/auction-calculator/calc.js +0 -22
  87. package/dist/auction-calculator/calc.js.map +0 -1
@@ -9,8 +9,8 @@ const assert_1 = __importDefault(require("assert"));
9
9
  const fusion_extension_1 = require("./fusion-extension");
10
10
  const auction_details_1 = require("./auction-details");
11
11
  const settlement_post_interaction_data_1 = require("./settlement-post-interaction-data");
12
+ const source_track_1 = require("./source-track");
12
13
  const auction_calculator_1 = require("../auction-calculator");
13
- const utils_1 = require("../utils");
14
14
  const constants_1 = require("../constants");
15
15
  const amounts_1 = require("../utils/amounts");
16
16
  const time_1 = require("../utils/time");
@@ -20,18 +20,25 @@ class FusionOrder {
20
20
  * Fusion extension address
21
21
  * @see https://github.com/1inch/limit-order-settlement
22
22
  */
23
- extensionContract, orderInfo, auctionDetails, postInteractionData, extra = FusionOrder.defaultExtra) {
24
- const { allowPartialFills, allowMultipleFills, unwrapWETH, enablePermit2, orderExpirationDelay, nonce, permit } = {
25
- ...FusionOrder.defaultExtra,
26
- ...extra
27
- };
23
+ settlementExtensionContract, orderInfo, auctionDetails, postInteractionData, extra = FusionOrder.defaultExtra) {
24
+ this.settlementExtensionContract = settlementExtensionContract;
25
+ const allowPartialFills = extra.allowPartialFills ??
26
+ FusionOrder.defaultExtra.allowPartialFills;
27
+ const allowMultipleFills = extra.allowMultipleFills ??
28
+ FusionOrder.defaultExtra.allowMultipleFills;
29
+ const unwrapWETH = extra.unwrapWETH ?? FusionOrder.defaultExtra.unwrapWETH;
30
+ const enablePermit2 = extra.enablePermit2 ?? FusionOrder.defaultExtra.enablePermit2;
31
+ const orderExpirationDelay = extra.orderExpirationDelay ??
32
+ FusionOrder.defaultExtra.orderExpirationDelay;
33
+ const { nonce, permit } = extra;
28
34
  const deadline = auctionDetails.startTime +
29
35
  auctionDetails.duration +
30
36
  orderExpirationDelay;
31
37
  const makerTraits = limit_order_sdk_1.MakerTraits.default()
32
38
  .withExpiration(deadline)
33
39
  .setPartialFills(allowPartialFills)
34
- .setMultipleFills(allowMultipleFills);
40
+ .setMultipleFills(allowMultipleFills)
41
+ .enablePostInteraction();
35
42
  if (makerTraits.isBitInvalidatorMode()) {
36
43
  (0, assert_1.default)(nonce !== undefined, 'Nonce required, when partial fill or multiple fill disallowed');
37
44
  }
@@ -44,14 +51,22 @@ class FusionOrder {
44
51
  if (nonce !== undefined) {
45
52
  makerTraits.withNonce(nonce);
46
53
  }
47
- const extension = new fusion_extension_1.FusionExtension(extensionContract, auctionDetails, postInteractionData);
48
- if (permit) {
49
- extension.withMakerPermit(orderInfo.makerAsset, permit);
50
- }
54
+ /**
55
+ * @see https://github.com/1inch/limit-order-settlement/blob/0afb4785cb825fe959c534ff4f1a771d4d33cdf4/contracts/extensions/IntegratorFeeExtension.sol#L65
56
+ */
57
+ const receiver = postInteractionData.integratorFee?.ratio
58
+ ? settlementExtensionContract
59
+ : orderInfo.receiver;
60
+ const extension = new fusion_extension_1.FusionExtension(settlementExtensionContract, auctionDetails, postInteractionData, permit ? new limit_order_sdk_1.Interaction(orderInfo.makerAsset, permit) : undefined);
51
61
  const builtExtension = extension.build();
62
+ const salt = limit_order_sdk_1.LimitOrder.buildSalt(builtExtension, orderInfo.salt);
63
+ const saltWithInjectedTrackCode = orderInfo.salt
64
+ ? salt
65
+ : (0, source_track_1.injectTrackCode)(salt, extra.source);
52
66
  this.inner = new limit_order_sdk_1.LimitOrder({
53
67
  ...orderInfo,
54
- salt: limit_order_sdk_1.LimitOrder.buildSalt(builtExtension, orderInfo.salt)
68
+ receiver,
69
+ salt: saltWithInjectedTrackCode
55
70
  }, makerTraits, builtExtension);
56
71
  this.fusionExtension = extension;
57
72
  }
@@ -82,6 +97,31 @@ class FusionOrder {
82
97
  get deadline() {
83
98
  return this.inner.makerTraits.expiration() || 0n;
84
99
  }
100
+ /**
101
+ * Timestamp in sec
102
+ */
103
+ get auctionStartTime() {
104
+ return this.fusionExtension.auctionDetails.startTime;
105
+ }
106
+ /**
107
+ * Timestamp in sec
108
+ */
109
+ get auctionEndTime() {
110
+ const { startTime, duration } = this.fusionExtension.auctionDetails;
111
+ return startTime + duration;
112
+ }
113
+ get isBitInvalidatorMode() {
114
+ return this.inner.makerTraits.isBitInvalidatorMode();
115
+ }
116
+ get partialFillAllowed() {
117
+ return this.inner.makerTraits.isPartialFillAllowed();
118
+ }
119
+ get multipleFillsAllowed() {
120
+ return this.inner.makerTraits.isMultipleFillsAllowed();
121
+ }
122
+ get nonce() {
123
+ return this.inner.makerTraits.nonceOrEpoch();
124
+ }
85
125
  static new(
86
126
  /**
87
127
  * Fusion extension address
@@ -92,7 +132,8 @@ class FusionOrder {
92
132
  bankFee: details.fees?.bankFee || 0n,
93
133
  integratorFee: details.fees?.integratorFee,
94
134
  whitelist: details.whitelist,
95
- resolvingStartTime: details.resolvingStartTime ?? (0, time_1.now)()
135
+ resolvingStartTime: details.resolvingStartTime ?? (0, time_1.now)(),
136
+ customReceiver: orderInfo.receiver
96
137
  }), extra);
97
138
  }
98
139
  /**
@@ -104,8 +145,10 @@ class FusionOrder {
104
145
  (0, assert_1.default)(limit_order_sdk_1.Address.fromFirstBytes(extension.takingAmountData).equal(settlementContract) &&
105
146
  limit_order_sdk_1.Address.fromFirstBytes(extension.postInteraction).equal(settlementContract), 'Invalid extension, all calls should be to the same address');
106
147
  const makerTraits = new limit_order_sdk_1.MakerTraits(BigInt(order.makerTraits));
107
- const auctionDetails = auction_details_1.AuctionDetails.decode((0, utils_1.add0x)(extension.makingAmountData.slice(42)));
108
- const postInteractionData = settlement_post_interaction_data_1.SettlementPostInteractionData.decode((0, utils_1.add0x)(extension.postInteraction.slice(42)));
148
+ (0, assert_1.default)(!makerTraits.isPrivate(), 'fusion order can not be private');
149
+ (0, assert_1.default)(makerTraits.hasPostInteraction(), 'post-interaction must be enabled');
150
+ const auctionDetails = auction_details_1.AuctionDetails.fromExtension(extension);
151
+ const postInteractionData = settlement_post_interaction_data_1.SettlementPostInteractionData.fromExtension(extension);
109
152
  const deadline = makerTraits.expiration();
110
153
  const orderExpirationDelay = deadline === null
111
154
  ? undefined
@@ -126,7 +169,7 @@ class FusionOrder {
126
169
  nonce: makerTraits.nonceOrEpoch(),
127
170
  permit: extension.makerPermit === constants_1.ZX
128
171
  ? undefined
129
- : extension.makerPermit,
172
+ : limit_order_sdk_1.Interaction.decode(extension.makerPermit).data,
130
173
  unwrapWETH: makerTraits.isNativeUnwrapEnabled(),
131
174
  orderExpirationDelay
132
175
  });
@@ -134,14 +177,14 @@ class FusionOrder {
134
177
  build() {
135
178
  return this.inner.build();
136
179
  }
137
- getOrderHash(domain = (0, limit_order_sdk_1.getLimitOrderV4Domain)(1)) {
138
- return this.inner.getOrderHash(domain);
180
+ getOrderHash(chainId) {
181
+ return this.inner.getOrderHash(chainId);
139
182
  }
140
- getTypedData(domain = (0, limit_order_sdk_1.getLimitOrderV4Domain)(1)) {
141
- return this.inner.getTypedData(domain);
183
+ getTypedData(chainId) {
184
+ return this.inner.getTypedData(chainId);
142
185
  }
143
186
  getCalculator() {
144
- return auction_calculator_1.AuctionCalculator.fromAuctionData(this.fusionExtension.postInteractionData, this.fusionExtension.details);
187
+ return auction_calculator_1.AuctionCalculator.fromAuctionData(this.fusionExtension.postInteractionData, this.fusionExtension.auctionDetails);
145
188
  }
146
189
  /**
147
190
  * Calculates required taking amount for passed `makingAmount` at block time `time`
@@ -165,8 +208,37 @@ class FusionOrder {
165
208
  canExecuteAt(executor, executionTime) {
166
209
  return this.fusionExtension.postInteractionData.canExecuteAt(executor, executionTime);
167
210
  }
211
+ /**
212
+ * Check is order expired at a given time
213
+ *
214
+ * @param time timestamp in seconds
215
+ */
216
+ isExpiredAt(time) {
217
+ return time > this.deadline;
218
+ }
219
+ /**
220
+ * Returns how much fee will be credited from a resolver deposit account
221
+ * Token of fee set in Settlement extension constructor
222
+ * Actual deployments can be found at https://github.com/1inch/limit-order-settlement/tree/master/deployments
223
+ *
224
+ * @param filledMakingAmount which resolver fills
225
+ * @see https://github.com/1inch/limit-order-settlement/blob/0e3cae3653092ebb4ea5d2a338c87a54351ad883/contracts/extensions/ResolverFeeExtension.sol#L29
226
+ */
227
+ getResolverFee(filledMakingAmount) {
228
+ return ((this.fusionExtension.postInteractionData.bankFee *
229
+ FusionOrder._ORDER_FEE_BASE_POINTS *
230
+ filledMakingAmount) /
231
+ this.makingAmount);
232
+ }
233
+ /**
234
+ * Check if `wallet` can fill order before other
235
+ */
236
+ isExclusiveResolver(wallet) {
237
+ return this.fusionExtension.postInteractionData.isExclusiveResolver(wallet);
238
+ }
168
239
  }
169
240
  exports.FusionOrder = FusionOrder;
241
+ FusionOrder._ORDER_FEE_BASE_POINTS = 10n ** 15n;
170
242
  FusionOrder.defaultExtra = {
171
243
  allowPartialFills: true,
172
244
  allowMultipleFills: true,
@@ -1 +1 @@
1
- {"version":3,"file":"fusion-order.js","sourceRoot":"","sources":["../../src/fusion-order/fusion-order.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fusion-order.js","sourceRoot":"","sources":["../../src/fusion-order/fusion-order.ts"],"names":[],"mappings":";;;;;;AAAA,4DAS+B;AAC/B,oDAA2B;AAC3B,yDAAkD;AAClD,uDAAgD;AAChD,yFAI2C;AAC3C,iDAA8C;AAC9C,8DAAuD;AACvD,4CAA+B;AAC/B,8CAAiD;AACjD,wCAAiC;AAEjC,MAAa,WAAW;IAepB;IACI;;;OAGG;IACa,2BAAoC,EACpD,SAAwB,EACxB,cAA8B,EAC9B,mBAAkD,EAClD,QA0BI,WAAW,CAAC,YAAY;QA9BZ,gCAA2B,GAA3B,2BAA2B,CAAS;QAgCpD,MAAM,iBAAiB,GACnB,KAAK,CAAC,iBAAiB;YACvB,WAAW,CAAC,YAAY,CAAC,iBAAiB,CAAA;QAC9C,MAAM,kBAAkB,GACpB,KAAK,CAAC,kBAAkB;YACxB,WAAW,CAAC,YAAY,CAAC,kBAAkB,CAAA;QAC/C,MAAM,UAAU,GACZ,KAAK,CAAC,UAAU,IAAI,WAAW,CAAC,YAAY,CAAC,UAAU,CAAA;QAC3D,MAAM,aAAa,GACf,KAAK,CAAC,aAAa,IAAI,WAAW,CAAC,YAAY,CAAC,aAAa,CAAA;QACjE,MAAM,oBAAoB,GACtB,KAAK,CAAC,oBAAoB;YAC1B,WAAW,CAAC,YAAY,CAAC,oBAAoB,CAAA;QAEjD,MAAM,EAAC,KAAK,EAAE,MAAM,EAAC,GAAG,KAAK,CAAA;QAE7B,MAAM,QAAQ,GACV,cAAc,CAAC,SAAS;YACxB,cAAc,CAAC,QAAQ;YACvB,oBAAoB,CAAA;QAExB,MAAM,WAAW,GAAG,6BAAW,CAAC,OAAO,EAAE;aACpC,cAAc,CAAC,QAAQ,CAAC;aACxB,eAAe,CAAC,iBAAiB,CAAC;aAClC,gBAAgB,CAAC,kBAAkB,CAAC;aACpC,qBAAqB,EAAE,CAAA;QAE5B,IAAI,WAAW,CAAC,oBAAoB,EAAE,EAAE;YACpC,IAAA,gBAAM,EACF,KAAK,KAAK,SAAS,EACnB,+DAA+D,CAClE,CAAA;SACJ;QAED,IAAI,UAAU,EAAE;YACZ,WAAW,CAAC,kBAAkB,EAAE,CAAA;SACnC;QAED,IAAI,aAAa,EAAE;YACf,WAAW,CAAC,aAAa,EAAE,CAAA;SAC9B;QAED,IAAI,KAAK,KAAK,SAAS,EAAE;YACrB,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;SAC/B;QAED;;WAEG;QACH,MAAM,QAAQ,GAAG,mBAAmB,CAAC,aAAa,EAAE,KAAK;YACrD,CAAC,CAAC,2BAA2B;YAC7B,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAA;QAExB,MAAM,SAAS,GAAG,IAAI,kCAAe,CACjC,2BAA2B,EAC3B,cAAc,EACd,mBAAmB,EACnB,MAAM,CAAC,CAAC,CAAC,IAAI,6BAAW,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CACrE,CAAA;QAED,MAAM,cAAc,GAAG,SAAS,CAAC,KAAK,EAAE,CAAA;QACxC,MAAM,IAAI,GAAG,4BAAU,CAAC,SAAS,CAAC,cAAc,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;QACjE,MAAM,yBAAyB,GAAG,SAAS,CAAC,IAAI;YAC5C,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,IAAA,8BAAe,EAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;QAEzC,IAAI,CAAC,KAAK,GAAG,IAAI,4BAAU,CACvB;YACI,GAAG,SAAS;YACZ,QAAQ;YACR,IAAI,EAAE,yBAAyB;SAClC,EACD,WAAW,EACX,cAAc,CACjB,CAAA;QAED,IAAI,CAAC,eAAe,GAAG,SAAS,CAAA;IACpC,CAAC;IAED,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAA;IAC/B,CAAC;IAED,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAA;IAC3B,CAAC;IAED,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAA;IAChC,CAAC;IAED,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAA;IAChC,CAAC;IAED,IAAI,YAAY;QACZ,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAA;IAClC,CAAC;IAED,IAAI,YAAY;QACZ,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAA;IAClC,CAAC;IAED,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAA;IAC9B,CAAC;IAED;;OAEG;IACH,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,EAAE,CAAA;IACpD,CAAC;IAED;;OAEG;IACH,IAAI,gBAAgB;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,SAAS,CAAA;IACxD,CAAC;IAED;;OAEG;IACH,IAAI,cAAc;QACd,MAAM,EAAC,SAAS,EAAE,QAAQ,EAAC,GAAG,IAAI,CAAC,eAAe,CAAC,cAAc,CAAA;QAEjE,OAAO,SAAS,GAAG,QAAQ,CAAA;IAC/B,CAAC;IAED,IAAI,oBAAoB;QACpB,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,oBAAoB,EAAE,CAAA;IACxD,CAAC;IAED,IAAI,kBAAkB;QAClB,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,oBAAoB,EAAE,CAAA;IACxD,CAAC;IAED,IAAI,oBAAoB;QACpB,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,sBAAsB,EAAE,CAAA;IAC1D,CAAC;IAED,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,YAAY,EAAE,CAAA;IAChD,CAAC;IAED,MAAM,CAAC,GAAG;IACN;;;OAGG;IACH,mBAA4B,EAC5B,SAAwB,EACxB,OAWC,EACD,KAwBC;QAED,OAAO,IAAI,WAAW,CAClB,mBAAmB,EACnB,SAAS,EACT,OAAO,CAAC,OAAO,EACf,gEAA6B,CAAC,GAAG,CAAC;YAC9B,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,IAAI,EAAE;YACpC,aAAa,EAAE,OAAO,CAAC,IAAI,EAAE,aAAa;YAC1C,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,IAAI,IAAA,UAAG,GAAE;YACvD,cAAc,EAAE,SAAS,CAAC,QAAQ;SACrC,CAAC,EACF,KAAK,CACR,CAAA;IACL,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,oBAAoB,CACvB,KAAyB,EACzB,SAAoB;QAEpB,MAAM,kBAAkB,GAAG,yBAAO,CAAC,cAAc,CAC7C,SAAS,CAAC,gBAAgB,CAC7B,CAAA;QAED,IAAA,gBAAM,EACF,yBAAO,CAAC,cAAc,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,KAAK,CACpD,kBAAkB,CACrB;YACG,yBAAO,CAAC,cAAc,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,KAAK,CACnD,kBAAkB,CACrB,EACL,4DAA4D,CAC/D,CAAA;QAED,MAAM,WAAW,GAAG,IAAI,6BAAW,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAA;QAE9D,IAAA,gBAAM,EAAC,CAAC,WAAW,CAAC,SAAS,EAAE,EAAE,iCAAiC,CAAC,CAAA;QACnE,IAAA,gBAAM,EACF,WAAW,CAAC,kBAAkB,EAAE,EAChC,kCAAkC,CACrC,CAAA;QAED,MAAM,cAAc,GAAG,gCAAc,CAAC,aAAa,CAAC,SAAS,CAAC,CAAA;QAE9D,MAAM,mBAAmB,GACrB,gEAA6B,CAAC,aAAa,CAAC,SAAS,CAAC,CAAA;QAE1D,MAAM,QAAQ,GAAG,WAAW,CAAC,UAAU,EAAE,CAAA;QAEzC,MAAM,oBAAoB,GACtB,QAAQ,KAAK,IAAI;YACb,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,QAAQ,GAAG,cAAc,CAAC,SAAS,GAAG,cAAc,CAAC,QAAQ,CAAA;QAEvE,OAAO,IAAI,WAAW,CAClB,kBAAkB,EAClB;YACI,kDAAkD;YAClD,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI;YAChC,KAAK,EAAE,IAAI,yBAAO,CAAC,KAAK,CAAC,KAAK,CAAC;YAC/B,QAAQ,EAAE,IAAI,yBAAO,CAAC,KAAK,CAAC,QAAQ,CAAC;YACrC,UAAU,EAAE,IAAI,yBAAO,CAAC,KAAK,CAAC,UAAU,CAAC;YACzC,UAAU,EAAE,IAAI,yBAAO,CAAC,KAAK,CAAC,UAAU,CAAC;YACzC,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC;YACxC,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC;SAC3C,EACD,cAAc,EACd,mBAAmB,EACnB;YACI,kBAAkB,EAAE,WAAW,CAAC,sBAAsB,EAAE;YACxD,iBAAiB,EAAE,WAAW,CAAC,oBAAoB,EAAE;YACrD,aAAa,EAAE,WAAW,CAAC,SAAS,EAAE;YACtC,KAAK,EAAE,WAAW,CAAC,YAAY,EAAE;YACjC,MAAM,EACF,SAAS,CAAC,WAAW,KAAK,cAAE;gBACxB,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,6BAAW,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,IAAI;YACxD,UAAU,EAAE,WAAW,CAAC,qBAAqB,EAAE;YAC/C,oBAAoB;SACvB,CACJ,CAAA;IACL,CAAC;IAEM,KAAK;QACR,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;IAC7B,CAAC;IAEM,YAAY,CAAC,OAAe;QAC/B,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;IAC3C,CAAC;IAEM,YAAY,CAAC,OAAe;QAC/B,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;IAC3C,CAAC;IAEM,aAAa;QAChB,OAAO,sCAAiB,CAAC,eAAe,CACpC,IAAI,CAAC,eAAe,CAAC,mBAAmB,EACxC,IAAI,CAAC,eAAe,CAAC,cAAc,CACtC,CAAA;IACL,CAAC;IAED;;;;;;SAMK;IACE,gBAAgB,CACnB,YAAoB,EACpB,IAAY,EACZ,YAAY,GAAG,EAAE;QAEjB,MAAM,YAAY,GAAG,IAAA,0BAAgB,EACjC,YAAY,EACZ,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,YAAY,CACpB,CAAA;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAA;QAEvC,MAAM,IAAI,GAAG,UAAU,CAAC,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,CAAA;QAExD,OAAO,UAAU,CAAC,uBAAuB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;IACjE,CAAC;IAED;;;;;OAKG;IACI,YAAY,CAAC,QAAiB,EAAE,aAAqB;QACxD,OAAO,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,YAAY,CACxD,QAAQ,EACR,aAAa,CAChB,CAAA;IACL,CAAC;IAED;;;;OAIG;IACI,WAAW,CAAC,IAAY;QAC3B,OAAO,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAA;IAC/B,CAAC;IAED;;;;;;;OAOG;IACI,cAAc,CAAC,kBAA0B;QAC5C,OAAO,CACH,CAAC,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,OAAO;YAC7C,WAAW,CAAC,sBAAsB;YAClC,kBAAkB,CAAC;YACvB,IAAI,CAAC,YAAY,CACpB,CAAA;IACL,CAAC;IAED;;OAEG;IACI,mBAAmB,CAAC,MAAe;QACtC,OAAO,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,mBAAmB,CAC/D,MAAM,CACT,CAAA;IACL,CAAC;;AAnaL,kCAoaC;AAnakB,kCAAsB,GAAG,GAAG,IAAI,GAAG,CAAA;AAEnC,wBAAY,GAAG;IAC1B,iBAAiB,EAAE,IAAI;IACvB,kBAAkB,EAAE,IAAI;IACxB,UAAU,EAAE,KAAK;IACjB,aAAa,EAAE,KAAK;IACpB,oBAAoB,EAAE,GAAG;CAC5B,CAAA"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const limit_order_sdk_1 = require("@1inch/limit-order-sdk");
4
+ const ethers_1 = require("ethers");
4
5
  const fusion_order_1 = require("./fusion-order");
5
6
  const auction_details_1 = require("./auction-details");
6
7
  describe('Fusion Order', () => {
@@ -41,7 +42,7 @@ describe('Fusion Order', () => {
41
42
  receiver: '0x0000000000000000000000000000000000000000',
42
43
  takerAsset: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',
43
44
  takingAmount: '1420000000',
44
- makerTraits: '29852648006495581632639394572552351243421169944806257724550573036760110989312',
45
+ makerTraits: '33471150795161712739625987854073848363835856965607525350783622537007396290560',
45
46
  salt: '14969955465678758833706505435513058355190519874774'
46
47
  });
47
48
  const makerTraits = new limit_order_sdk_1.MakerTraits(BigInt(builtOrder.makerTraits));
@@ -79,5 +80,82 @@ describe('Fusion Order', () => {
79
80
  });
80
81
  expect(fusion_order_1.FusionOrder.fromDataAndExtension(order.build(), order.extension)).toStrictEqual(order);
81
82
  });
83
+ it('should decode fusion order from order + extension with provided source', () => {
84
+ const extensionContract = new limit_order_sdk_1.Address('0x8273f37417da37c4a6c3995e82cf442f87a25d9c');
85
+ const order = fusion_order_1.FusionOrder.new(extensionContract, {
86
+ makerAsset: new limit_order_sdk_1.Address('0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'),
87
+ takerAsset: new limit_order_sdk_1.Address('0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'),
88
+ makingAmount: 1000000000000000000n,
89
+ takingAmount: 1420000000n,
90
+ maker: new limit_order_sdk_1.Address('0x00000000219ab540356cbb839cbe05303d7705fa'),
91
+ salt: 10n
92
+ }, {
93
+ auction: new auction_details_1.AuctionDetails({
94
+ duration: 180n,
95
+ startTime: 1673548149n,
96
+ initialRateBump: 50000,
97
+ points: [
98
+ {
99
+ coefficient: 20000,
100
+ delay: 12
101
+ }
102
+ ]
103
+ }),
104
+ whitelist: [
105
+ {
106
+ address: new limit_order_sdk_1.Address('0x00000000219ab540356cbb839cbe05303d7705fa'),
107
+ allowFrom: 0n
108
+ }
109
+ ]
110
+ }, {
111
+ source: 'test'
112
+ });
113
+ expect(fusion_order_1.FusionOrder.fromDataAndExtension(order.build(), order.extension)).toStrictEqual(order);
114
+ });
115
+ it('Should calculate taking amount', () => {
116
+ const now = 10000n;
117
+ const order = fusion_order_1.FusionOrder.new(new limit_order_sdk_1.Address('0x8273f37417da37c4a6c3995e82cf442f87a25d9c'), {
118
+ makerAsset: new limit_order_sdk_1.Address('0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48' // USDC
119
+ ),
120
+ takerAsset: new limit_order_sdk_1.Address('0x111111111117dc0aa78b770fa6a738034120c302' // 1INCH
121
+ ),
122
+ maker: limit_order_sdk_1.Address.fromBigInt(1n),
123
+ makingAmount: (0, ethers_1.parseUnits)('150', 6),
124
+ takingAmount: (0, ethers_1.parseUnits)('200')
125
+ }, {
126
+ auction: new auction_details_1.AuctionDetails({
127
+ startTime: now,
128
+ duration: 120n,
129
+ initialRateBump: 10000000,
130
+ points: []
131
+ }),
132
+ whitelist: [
133
+ {
134
+ address: new limit_order_sdk_1.Address('0x00000000219ab540356cbb839cbe05303d7705fa'),
135
+ allowFrom: 0n
136
+ }
137
+ ],
138
+ resolvingStartTime: 0n
139
+ }, {
140
+ source: 'some_id'
141
+ });
142
+ expect(order.calcTakingAmount(order.makingAmount, now)).toEqual(2n * order.takingAmount // because init rate bump is 100%
143
+ );
144
+ });
145
+ it('Should calculate taking amount 2', () => {
146
+ const order = fusion_order_1.FusionOrder.fromDataAndExtension({
147
+ salt: '9445680526437905167361671445680544159946878658630243245775199089669376863246',
148
+ maker: '0x6edc317f3208b10c46f4ff97faa04dd632487408',
149
+ receiver: '0x0000000000000000000000000000000000000000',
150
+ makerAsset: '0x6b175474e89094c44da98b954eedeac495271d0f',
151
+ takerAsset: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
152
+ makerTraits: '62419173104490761595518734106245825327156011637372339461913926769802108469248',
153
+ makingAmount: '100000000000000000000',
154
+ takingAmount: '29266814473325164'
155
+ }, limit_order_sdk_1.Extension.decode('0x000000cb0000005e0000005e0000005e0000005e0000002f0000000000000000fb2809a5314473e1165f6b58018e20ed8f07b84000000000000000662f5c9b0002580d653601a4b500180bc0800048fb2809a5314473e1165f6b58018e20ed8f07b84000000000000000662f5c9b0002580d653601a4b500180bc0800048fb2809a5314473e1165f6b58018e20ed8f07b840662f5c83b09498030ae3416b66dc00007bf29735c20c566e5a0c0000950fa635aec75b30781a0000d18bd45f0b94f54a968f000076d49414ad2b8371a4220000a59ca88d5813e693528f000038700d5181a674fdb9a2000038'));
156
+ const now = 1714380275n;
157
+ const baseFee = 10844562822n;
158
+ expect(order.calcTakingAmount(order.makingAmount, now, baseFee)).toEqual(30411732255521644n);
159
+ });
82
160
  });
83
161
  //# sourceMappingURL=fusion-order.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fusion-order.spec.js","sourceRoot":"","sources":["../../src/fusion-order/fusion-order.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fusion-order.spec.js","sourceRoot":"","sources":["../../src/fusion-order/fusion-order.spec.ts"],"names":[],"mappings":";;AAAA,4DAAsE;AACtE,mCAAiC;AACjC,iDAA0C;AAC1C,uDAAgD;AAEhD,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC1B,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QAClC,MAAM,iBAAiB,GAAG,IAAI,yBAAO,CACjC,4CAA4C,CAC/C,CAAA;QAED,MAAM,KAAK,GAAG,0BAAW,CAAC,GAAG,CACzB,iBAAiB,EACjB;YACI,UAAU,EAAE,IAAI,yBAAO,CACnB,4CAA4C,CAC/C;YACD,UAAU,EAAE,IAAI,yBAAO,CACnB,4CAA4C,CAC/C;YACD,YAAY,EAAE,oBAAoB;YAClC,YAAY,EAAE,WAAW;YACzB,KAAK,EAAE,IAAI,yBAAO,CACd,4CAA4C,CAC/C;YACD,IAAI,EAAE,GAAG;SACZ,EACD;YACI,OAAO,EAAE,IAAI,gCAAc,CAAC;gBACxB,QAAQ,EAAE,IAAI;gBACd,SAAS,EAAE,WAAW;gBACtB,eAAe,EAAE,KAAK;gBACtB,MAAM,EAAE;oBACJ;wBACI,WAAW,EAAE,KAAK;wBAClB,KAAK,EAAE,EAAE;qBACZ;iBACJ;aACJ,CAAC;YACF,SAAS,EAAE;gBACP;oBACI,OAAO,EAAE,IAAI,yBAAO,CAChB,4CAA4C,CAC/C;oBACD,SAAS,EAAE,EAAE;iBAChB;aACJ;YACD,kBAAkB,EAAE,WAAW;SAClC,CACJ,CAAA;QAED,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,EAAE,CAAA;QAChC,MAAM,CAAC,UAAU,CAAC,CAAC,aAAa,CAAC;YAC7B,KAAK,EAAE,4CAA4C;YACnD,UAAU,EAAE,4CAA4C;YACxD,YAAY,EAAE,qBAAqB;YACnC,QAAQ,EAAE,4CAA4C;YACtD,UAAU,EAAE,4CAA4C;YACxD,YAAY,EAAE,YAAY;YAC1B,WAAW,EACP,+EAA+E;YACnF,IAAI,EAAE,oDAAoD;SAC7D,CAAC,CAAA;QAEF,MAAM,WAAW,GAAG,IAAI,6BAAW,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAA;QACnE,MAAM,CAAC,WAAW,CAAC,qBAAqB,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAC1D,MAAM,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QAC9C,MAAM,CAAC,WAAW,CAAC,oBAAoB,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5D,CAAC,CAAC,CAAA;IACF,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QACzD,MAAM,iBAAiB,GAAG,IAAI,yBAAO,CACjC,4CAA4C,CAC/C,CAAA;QAED,MAAM,KAAK,GAAG,0BAAW,CAAC,GAAG,CACzB,iBAAiB,EACjB;YACI,UAAU,EAAE,IAAI,yBAAO,CACnB,4CAA4C,CAC/C;YACD,UAAU,EAAE,IAAI,yBAAO,CACnB,4CAA4C,CAC/C;YACD,YAAY,EAAE,oBAAoB;YAClC,YAAY,EAAE,WAAW;YACzB,KAAK,EAAE,IAAI,yBAAO,CACd,4CAA4C,CAC/C;YACD,IAAI,EAAE,GAAG;SACZ,EACD;YACI,OAAO,EAAE,IAAI,gCAAc,CAAC;gBACxB,QAAQ,EAAE,IAAI;gBACd,SAAS,EAAE,WAAW;gBACtB,eAAe,EAAE,KAAK;gBACtB,MAAM,EAAE;oBACJ;wBACI,WAAW,EAAE,KAAK;wBAClB,KAAK,EAAE,EAAE;qBACZ;iBACJ;aACJ,CAAC;YACF,SAAS,EAAE;gBACP;oBACI,OAAO,EAAE,IAAI,yBAAO,CAChB,4CAA4C,CAC/C;oBACD,SAAS,EAAE,EAAE;iBAChB;aACJ;SACJ,CACJ,CAAA;QAED,MAAM,CACF,0BAAW,CAAC,oBAAoB,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC,SAAS,CAAC,CACnE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;IAC1B,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,wEAAwE,EAAE,GAAG,EAAE;QAC9E,MAAM,iBAAiB,GAAG,IAAI,yBAAO,CACjC,4CAA4C,CAC/C,CAAA;QAED,MAAM,KAAK,GAAG,0BAAW,CAAC,GAAG,CACzB,iBAAiB,EACjB;YACI,UAAU,EAAE,IAAI,yBAAO,CACnB,4CAA4C,CAC/C;YACD,UAAU,EAAE,IAAI,yBAAO,CACnB,4CAA4C,CAC/C;YACD,YAAY,EAAE,oBAAoB;YAClC,YAAY,EAAE,WAAW;YACzB,KAAK,EAAE,IAAI,yBAAO,CACd,4CAA4C,CAC/C;YACD,IAAI,EAAE,GAAG;SACZ,EACD;YACI,OAAO,EAAE,IAAI,gCAAc,CAAC;gBACxB,QAAQ,EAAE,IAAI;gBACd,SAAS,EAAE,WAAW;gBACtB,eAAe,EAAE,KAAK;gBACtB,MAAM,EAAE;oBACJ;wBACI,WAAW,EAAE,KAAK;wBAClB,KAAK,EAAE,EAAE;qBACZ;iBACJ;aACJ,CAAC;YACF,SAAS,EAAE;gBACP;oBACI,OAAO,EAAE,IAAI,yBAAO,CAChB,4CAA4C,CAC/C;oBACD,SAAS,EAAE,EAAE;iBAChB;aACJ;SACJ,EACD;YACI,MAAM,EAAE,MAAM;SACjB,CACJ,CAAA;QAED,MAAM,CACF,0BAAW,CAAC,oBAAoB,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC,SAAS,CAAC,CACnE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;IAC1B,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACtC,MAAM,GAAG,GAAG,MAAM,CAAA;QAClB,MAAM,KAAK,GAAG,0BAAW,CAAC,GAAG,CACzB,IAAI,yBAAO,CAAC,4CAA4C,CAAC,EACzD;YACI,UAAU,EAAE,IAAI,yBAAO,CACnB,4CAA4C,CAAC,OAAO;aACvD;YACD,UAAU,EAAE,IAAI,yBAAO,CACnB,4CAA4C,CAAC,QAAQ;aACxD;YACD,KAAK,EAAE,yBAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YAC7B,YAAY,EAAE,IAAA,mBAAU,EAAC,KAAK,EAAE,CAAC,CAAC;YAClC,YAAY,EAAE,IAAA,mBAAU,EAAC,KAAK,CAAC;SAClC,EACD;YACI,OAAO,EAAE,IAAI,gCAAc,CAAC;gBACxB,SAAS,EAAE,GAAG;gBACd,QAAQ,EAAE,IAAI;gBACd,eAAe,EAAE,QAAU;gBAC3B,MAAM,EAAE,EAAE;aACb,CAAC;YACF,SAAS,EAAE;gBACP;oBACI,OAAO,EAAE,IAAI,yBAAO,CAChB,4CAA4C,CAC/C;oBACD,SAAS,EAAE,EAAE;iBAChB;aACJ;YACD,kBAAkB,EAAE,EAAE;SACzB,EACD;YACI,MAAM,EAAE,SAAS;SACpB,CACJ,CAAA;QAED,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,CAC3D,EAAE,GAAG,KAAK,CAAC,YAAY,CAAC,iCAAiC;SAC5D,CAAA;IACL,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QACxC,MAAM,KAAK,GAAG,0BAAW,CAAC,oBAAoB,CAC1C;YACI,IAAI,EAAE,8EAA8E;YACpF,KAAK,EAAE,4CAA4C;YACnD,QAAQ,EAAE,4CAA4C;YACtD,UAAU,EAAE,4CAA4C;YACxD,UAAU,EAAE,4CAA4C;YACxD,WAAW,EACP,+EAA+E;YACnF,YAAY,EAAE,uBAAuB;YACrC,YAAY,EAAE,mBAAmB;SACpC,EACD,2BAAS,CAAC,MAAM,CACZ,0dAA0d,CAC7d,CACJ,CAAA;QACD,MAAM,GAAG,GAAG,WAAW,CAAA;QACvB,MAAM,OAAO,GAAG,YAAY,CAAA;QAE5B,MAAM,CACF,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,YAAY,EAAE,GAAG,EAAE,OAAO,CAAC,CAC3D,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAA;IACjC,CAAC,CAAC,CAAA;AACN,CAAC,CAAC,CAAA"}
@@ -1,3 +1,4 @@
1
1
  export * from './fusion-order';
2
2
  export * from './auction-details';
3
3
  export * from './settlement-post-interaction-data';
4
+ export * from './fusion-extension';
@@ -17,4 +17,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./fusion-order"), exports);
18
18
  __exportStar(require("./auction-details"), exports);
19
19
  __exportStar(require("./settlement-post-interaction-data"), exports);
20
+ __exportStar(require("./fusion-extension"), exports);
20
21
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/fusion-order/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA8B;AAC9B,oDAAiC;AACjC,qEAAkD"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/fusion-order/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA8B;AAC9B,oDAAiC;AACjC,qEAAkD;AAClD,qDAAkC"}
@@ -1,28 +1,31 @@
1
- import { Address } from '@1inch/limit-order-sdk';
1
+ import { Address, Extension } from '@1inch/limit-order-sdk';
2
2
  import { IntegratorFee, SettlementSuffixData } from './types';
3
3
  export declare class SettlementPostInteractionData {
4
4
  readonly whitelist: WhitelistItem[];
5
5
  readonly integratorFee?: IntegratorFee;
6
6
  readonly bankFee: bigint;
7
7
  readonly resolvingStartTime: bigint;
8
+ readonly customReceiver?: Address;
8
9
  private constructor();
9
10
  static new(data: SettlementSuffixData): SettlementPostInteractionData;
10
11
  /**
11
12
  * Construct `SettlementPostInteractionData` from bytes
12
13
  * @param data bytes with 0x prefix in next format:
13
14
  * - [uint32 feeBank] only when first bit of `bitMask` enabled
14
- * - [uint160 integratorFeeReceiver, uint32 integratorFeeRation] only when second bit of `bitMask` enabled
15
+ * - [uint16 integratorFeeRation, uint160 integratorFeeReceiver, [uint160 customReceiver]] only when second bit of `bitMask` enabled
15
16
  * - uint32 auctionStartTime
16
17
  * - (bytes10 last10bytesOfAddress, uint16 auctionDelay) * N whitelist info
17
18
  * - uint8 bitMask:
18
19
  * 0b0000_0001 - fee bank mask
19
20
  * 0b0000_0010 - integrator fee mask
21
+ * 0b0000_0100 - is custom receiver present (only used when integrator fee enabled)
20
22
  * 0b1111_1000 - resolvers count mask
21
23
  *
22
24
  * All data is tight packed
23
25
  * @see SettlementPostInteractionData.encode
24
26
  */
25
27
  static decode(data: string): SettlementPostInteractionData;
28
+ static fromExtension(extension: Extension): SettlementPostInteractionData;
26
29
  /**
27
30
  * Serialize post-interaction data to bytes
28
31
  */
@@ -34,6 +37,7 @@ export declare class SettlementPostInteractionData {
34
37
  * @param executionTime timestamp in sec at which order planning to execute
35
38
  */
36
39
  canExecuteAt(executor: Address, executionTime: bigint): boolean;
40
+ isExclusiveResolver(wallet: Address): boolean;
37
41
  }
38
42
  type WhitelistItem = {
39
43
  /**
@@ -16,6 +16,10 @@ class SettlementPostInteractionData {
16
16
  this.integratorFee = data?.integratorFee;
17
17
  this.bankFee = data.bankFee || 0n;
18
18
  this.resolvingStartTime = data.resolvingStartTime;
19
+ this.customReceiver = data.customReceiver;
20
+ if (this.integratorFee?.ratio) {
21
+ (0, assert_1.default)(!this.integratorFee.receiver.isZero(), 'Fee receiver can not be zero when fee set');
22
+ }
19
23
  }
20
24
  static new(data) {
21
25
  (0, assert_1.default)(data.whitelist.length, 'Whitelist can not be empty');
@@ -47,12 +51,13 @@ class SettlementPostInteractionData {
47
51
  * Construct `SettlementPostInteractionData` from bytes
48
52
  * @param data bytes with 0x prefix in next format:
49
53
  * - [uint32 feeBank] only when first bit of `bitMask` enabled
50
- * - [uint160 integratorFeeReceiver, uint32 integratorFeeRation] only when second bit of `bitMask` enabled
54
+ * - [uint16 integratorFeeRation, uint160 integratorFeeReceiver, [uint160 customReceiver]] only when second bit of `bitMask` enabled
51
55
  * - uint32 auctionStartTime
52
56
  * - (bytes10 last10bytesOfAddress, uint16 auctionDelay) * N whitelist info
53
57
  * - uint8 bitMask:
54
58
  * 0b0000_0001 - fee bank mask
55
59
  * 0b0000_0010 - integrator fee mask
60
+ * 0b0000_0100 - is custom receiver present (only used when integrator fee enabled)
56
61
  * 0b1111_1000 - resolvers count mask
57
62
  *
58
63
  * All data is tight packed
@@ -61,21 +66,26 @@ class SettlementPostInteractionData {
61
66
  static decode(data) {
62
67
  (0, assert_1.default)((0, validations_1.isHexBytes)(data), 'Post interaction data must be valid bytes string');
63
68
  const iter = byte_utils_1.BytesIter.BigInt(data);
64
- const extra = iter.nextByte(byte_utils_1.BytesIter.SIDE.Back);
69
+ const flags = new byte_utils_1.BN(iter.nextByte(byte_utils_1.BytesIter.SIDE.Back));
65
70
  let bankFee = 0n;
66
71
  let integratorFee;
72
+ let customReceiver;
67
73
  // fee bank presented
68
- if ((extra & 1n) === 1n) {
74
+ if (flags.getBit(0n)) {
69
75
  bankFee = iter.nextUint32();
70
76
  }
71
77
  // integrator fee presented
72
- if ((extra & 2n) === 2n) {
78
+ if (flags.getBit(1n)) {
79
+ const integratorFeeRatio = iter.nextUint16();
73
80
  const integratorAddress = iter.nextUint160();
74
- const integratorFeeRatio = iter.nextUint32();
75
81
  integratorFee = {
76
82
  ratio: integratorFeeRatio,
77
83
  receiver: limit_order_sdk_1.Address.fromBigInt(integratorAddress)
78
84
  };
85
+ // custom receiver presented
86
+ if (flags.getBit(2n)) {
87
+ customReceiver = limit_order_sdk_1.Address.fromBigInt(iter.nextUint160());
88
+ }
79
89
  }
80
90
  const resolvingStartTime = iter.nextUint32();
81
91
  const whitelist = [];
@@ -94,9 +104,13 @@ class SettlementPostInteractionData {
94
104
  integratorFee,
95
105
  bankFee,
96
106
  resolvingStartTime,
97
- whitelist
107
+ whitelist,
108
+ customReceiver
98
109
  });
99
110
  }
111
+ static fromExtension(extension) {
112
+ return SettlementPostInteractionData.decode((0, utils_1.add0x)(extension.postInteraction.slice(42)));
113
+ }
100
114
  /**
101
115
  * Serialize post-interaction data to bytes
102
116
  */
@@ -104,6 +118,7 @@ class SettlementPostInteractionData {
104
118
  /**
105
119
  * 0b0000_0001 - fee bank mask
106
120
  * 0b0000_0010 - integrator fee mask
121
+ * 0b0000_0100 - is custom receiver present
107
122
  * 0b1111_1000 - resolvers count mask
108
123
  */
109
124
  let bitMask = new byte_utils_1.BN(0n);
@@ -117,8 +132,12 @@ class SettlementPostInteractionData {
117
132
  if (this.integratorFee?.ratio) {
118
133
  bitMask = bitMask.setBit(1n, 1);
119
134
  bytes
120
- .addAddress(this.integratorFee.receiver.toString())
121
- .addUint32(this.integratorFee.ratio);
135
+ .addUint16(this.integratorFee.ratio)
136
+ .addAddress(this.integratorFee.receiver.toString());
137
+ if (this.customReceiver && !this.customReceiver.isZero()) {
138
+ bitMask = bitMask.setBit(2n, 1);
139
+ bytes.addAddress(this.customReceiver.toString());
140
+ }
122
141
  }
123
142
  bytes.addUint32(this.resolvingStartTime);
124
143
  // whitelist data
@@ -149,6 +168,18 @@ class SettlementPostInteractionData {
149
168
  }
150
169
  return false;
151
170
  }
171
+ isExclusiveResolver(wallet) {
172
+ const addressHalf = wallet.toString().slice(-20);
173
+ // only one resolver, so check if it is the passed address
174
+ if (this.whitelist.length === 1) {
175
+ return addressHalf === this.whitelist[0].addressHalf;
176
+ }
177
+ // more than 1 address can fill at the same time, no exclusivity
178
+ if (this.whitelist[0].delay === this.whitelist[1].delay) {
179
+ return false;
180
+ }
181
+ return addressHalf === this.whitelist[0].addressHalf;
182
+ }
152
183
  }
153
184
  exports.SettlementPostInteractionData = SettlementPostInteractionData;
154
185
  //# sourceMappingURL=settlement-post-interaction-data.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"settlement-post-interaction-data.js","sourceRoot":"","sources":["../../../src/fusion-order/settlement-post-interaction-data/settlement-post-interaction-data.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"settlement-post-interaction-data.js","sourceRoot":"","sources":["../../../src/fusion-order/settlement-post-interaction-data/settlement-post-interaction-data.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@ const byte_utils_1 = require("@1inch/byte-utils");
5
5
  const settlement_post_interaction_data_1 = require("./settlement-post-interaction-data");
6
6
  const utils_1 = require("../../sdk/utils");
7
7
  describe('SettlementPostInteractionData', () => {
8
- it('Should encode/decode with no fees and whitelist', () => {
8
+ it('Should encode/decode with bank fee and whitelist', () => {
9
9
  const data = settlement_post_interaction_data_1.SettlementPostInteractionData.new({
10
10
  bankFee: 1n,
11
11
  resolvingStartTime: 1708117482n,
@@ -20,6 +20,20 @@ describe('SettlementPostInteractionData', () => {
20
20
  expect((0, byte_utils_1.getBytesCount)(encoded)).toEqual(21n);
21
21
  expect(settlement_post_interaction_data_1.SettlementPostInteractionData.decode(encoded)).toStrictEqual(data);
22
22
  });
23
+ it('Should encode/decode with no fees and whitelist', () => {
24
+ const data = settlement_post_interaction_data_1.SettlementPostInteractionData.new({
25
+ resolvingStartTime: 1708117482n,
26
+ whitelist: [
27
+ {
28
+ address: limit_order_sdk_1.Address.ZERO_ADDRESS,
29
+ allowFrom: 0n
30
+ }
31
+ ]
32
+ });
33
+ const encoded = data.encode();
34
+ expect((0, byte_utils_1.getBytesCount)(encoded)).toEqual(17n);
35
+ expect(settlement_post_interaction_data_1.SettlementPostInteractionData.decode(encoded)).toStrictEqual(data);
36
+ });
23
37
  it('Should encode/decode with fees and whitelist', () => {
24
38
  const data = settlement_post_interaction_data_1.SettlementPostInteractionData.new({
25
39
  bankFee: 0n,
@@ -31,12 +45,30 @@ describe('SettlementPostInteractionData', () => {
31
45
  }
32
46
  ],
33
47
  integratorFee: {
34
- receiver: limit_order_sdk_1.Address.ZERO_ADDRESS,
48
+ receiver: limit_order_sdk_1.Address.fromBigInt(1n),
35
49
  ratio: (0, utils_1.bpsToRatioFormat)(10)
36
50
  }
37
51
  });
38
52
  expect(settlement_post_interaction_data_1.SettlementPostInteractionData.decode(data.encode())).toStrictEqual(data);
39
53
  });
54
+ it('Should encode/decode with fees, custom receiver and whitelist', () => {
55
+ const data = settlement_post_interaction_data_1.SettlementPostInteractionData.new({
56
+ bankFee: 0n,
57
+ resolvingStartTime: 1708117482n,
58
+ whitelist: [
59
+ {
60
+ address: limit_order_sdk_1.Address.ZERO_ADDRESS,
61
+ allowFrom: 0n
62
+ }
63
+ ],
64
+ integratorFee: {
65
+ receiver: limit_order_sdk_1.Address.fromBigInt(1n),
66
+ ratio: (0, utils_1.bpsToRatioFormat)(10)
67
+ },
68
+ customReceiver: limit_order_sdk_1.Address.fromBigInt(1337n)
69
+ });
70
+ expect(settlement_post_interaction_data_1.SettlementPostInteractionData.decode(data.encode())).toStrictEqual(data);
71
+ });
40
72
  it('Should generate correct whitelist', () => {
41
73
  const start = 1708117482n;
42
74
  const data = settlement_post_interaction_data_1.SettlementPostInteractionData.new({
@@ -1 +1 @@
1
- {"version":3,"file":"settlement-post-interaction-data.spec.js","sourceRoot":"","sources":["../../../src/fusion-order/settlement-post-interaction-data/settlement-post-interaction-data.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"settlement-post-interaction-data.spec.js","sourceRoot":"","sources":["../../../src/fusion-order/settlement-post-interaction-data/settlement-post-interaction-data.spec.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,7 @@ export type SettlementSuffixData = {
11
11
  integratorFee?: IntegratorFee;
12
12
  bankFee?: bigint;
13
13
  resolvingStartTime: bigint;
14
+ customReceiver?: Address;
14
15
  };
15
16
  export type IntegratorFee = {
16
17
  /**
@@ -0,0 +1 @@
1
+ export declare function injectTrackCode(salt: bigint, source?: string): bigint;