@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
@@ -1,11 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AuctionCalculator = void 0;
4
- const calc_1 = require("./calc");
5
4
  const constants_1 = require("./constants");
6
5
  const sdk_1 = require("../sdk");
7
6
  class AuctionCalculator {
8
- constructor(startTime, duration, initialRateBump, points, takerFeeRatio, gasCost = { gasBumpEstimate: 0n, gasPriceEstimate: 0n }) {
7
+ constructor(startTime, duration, initialRateBump, points, takerFeeRatio, gasCost = {
8
+ gasBumpEstimate: 0n,
9
+ gasPriceEstimate: 0n
10
+ }) {
9
11
  this.startTime = startTime;
10
12
  this.duration = duration;
11
13
  this.initialRateBump = initialRateBump;
@@ -13,19 +15,48 @@ class AuctionCalculator {
13
15
  this.takerFeeRatio = takerFeeRatio;
14
16
  this.gasCost = gasCost;
15
17
  }
18
+ get finishTime() {
19
+ return this.startTime + this.duration;
20
+ }
16
21
  static fromAuctionData(data, details) {
17
- return new AuctionCalculator(data.resolvingStartTime, details.duration, details.initialRateBump, details.points, data.integratorFee?.ratio || 0n, details.gasCost);
22
+ return new AuctionCalculator(details.startTime, details.duration, details.initialRateBump, details.points, data.integratorFee?.ratio || 0n, details.gasCost);
23
+ }
24
+ static calcInitialRateBump(startAmount, endAmount) {
25
+ const bump = (constants_1.RATE_BUMP_DENOMINATOR * startAmount) / endAmount -
26
+ constants_1.RATE_BUMP_DENOMINATOR;
27
+ return Number(bump);
18
28
  }
19
29
  /**
20
- * @see https://github.com/1inch/limit-order-settlement/blob/1b6757eecb2574953b543821db6f7bbff5afee48/contracts/extensions/BaseExtension.sol#L56
30
+ * Important!: method implementation is different from contract implementation
31
+ * Because of that, sdk amount can be less than contract amount by 1 wad
32
+ *
33
+ * @see https://github.com/1inch/limit-order-settlement/blob/2eef6f86bf0142024f9a8bf054a0256b41d8362a/contracts/extensions/BaseExtension.sol#L66
21
34
  */
22
- calcAuctionTakingAmount(takingAmount, rate) {
35
+ static calcAuctionTakingAmount(takingAmount, rate, takerFeeRatio) {
23
36
  const auctionTakingAmount = (BigInt(takingAmount) * (BigInt(rate) + constants_1.RATE_BUMP_DENOMINATOR)) /
24
37
  constants_1.RATE_BUMP_DENOMINATOR;
25
- if (this.takerFeeRatio === 0n) {
38
+ if (takerFeeRatio === 0n) {
26
39
  return auctionTakingAmount;
27
40
  }
28
- return (0, sdk_1.addRatioToAmount)(auctionTakingAmount, this.takerFeeRatio);
41
+ return (0, sdk_1.addRatioToAmount)(auctionTakingAmount, takerFeeRatio);
42
+ }
43
+ /**
44
+ * Encode estimation `baseFee` as `gasPriceEstimate` for `AuctionGasCostInfo`
45
+ */
46
+ static baseFeeToGasPriceEstimate(baseFee) {
47
+ return baseFee / AuctionCalculator.GAS_PRICE_BASE;
48
+ }
49
+ /**
50
+ * Calculates `gasBumpEstimate` for `AuctionGasCostInfo`
51
+ *
52
+ * @param endTakingAmount min return in destToken
53
+ * @param gasCostInToToken gas cost in destToken
54
+ */
55
+ static calcGasBumpEstimate(endTakingAmount, gasCostInToToken) {
56
+ return (gasCostInToToken * constants_1.RATE_BUMP_DENOMINATOR) / endTakingAmount;
57
+ }
58
+ calcAuctionTakingAmount(takingAmount, rate) {
59
+ return AuctionCalculator.calcAuctionTakingAmount(takingAmount, rate, this.takerFeeRatio);
29
60
  }
30
61
  /**
31
62
  * @see https://github.com/1inch/limit-order-settlement/blob/273defdf7b0f1867299dcbc306f32f035579310f/contracts/extensions/BaseExtension.sol#L121
@@ -48,30 +79,28 @@ class AuctionCalculator {
48
79
  this.gasCost.gasPriceEstimate /
49
80
  AuctionCalculator.GAS_PRICE_BASE);
50
81
  }
51
- getAuctionBump(time) {
52
- let cumulativeTime = BigInt(this.startTime);
53
- const lastTime = BigInt(this.duration) + cumulativeTime;
54
- const startBump = BigInt(this.initialRateBump);
55
- const currentTime = BigInt(time);
56
- if (currentTime <= cumulativeTime) {
82
+ getAuctionBump(blockTime) {
83
+ const auctionFinishTime = this.finishTime;
84
+ if (blockTime <= this.startTime) {
57
85
  return this.initialRateBump;
58
86
  }
59
- else if (currentTime >= lastTime) {
87
+ else if (blockTime >= auctionFinishTime) {
60
88
  return 0n;
61
89
  }
62
- let prevCoefficient = startBump;
63
- let prevCumulativeTime = cumulativeTime;
64
- for (let i = this.points.length - 1; i >= 0; i--) {
65
- const { coefficient, delay } = this.points[i];
66
- cumulativeTime = cumulativeTime + BigInt(delay);
67
- const coefficientBN = BigInt(coefficient);
68
- if (cumulativeTime >= currentTime) {
69
- return (0, calc_1.linearInterpolation)(prevCumulativeTime, cumulativeTime, prevCoefficient, coefficientBN, currentTime);
90
+ let currentPointTime = this.startTime;
91
+ let currentRateBump = this.initialRateBump;
92
+ for (const { coefficient: nextRateBump, delay } of this.points) {
93
+ const nextPointTime = BigInt(delay) + currentPointTime;
94
+ if (blockTime <= nextPointTime) {
95
+ return (((blockTime - currentPointTime) * BigInt(nextRateBump) +
96
+ (nextPointTime - blockTime) * currentRateBump) /
97
+ (nextPointTime - currentPointTime));
70
98
  }
71
- prevCumulativeTime = cumulativeTime;
72
- prevCoefficient = coefficientBN;
99
+ currentPointTime = nextPointTime;
100
+ currentRateBump = BigInt(nextRateBump);
73
101
  }
74
- return (0, calc_1.linearInterpolation)(prevCumulativeTime, lastTime, prevCoefficient, 0n, currentTime);
102
+ return (((auctionFinishTime - blockTime) * currentRateBump) /
103
+ (auctionFinishTime - currentPointTime));
75
104
  }
76
105
  }
77
106
  exports.AuctionCalculator = AuctionCalculator;
@@ -1 +1 @@
1
- {"version":3,"file":"auction-calculator.js","sourceRoot":"","sources":["../../src/auction-calculator/auction-calculator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auction-calculator.js","sourceRoot":"","sources":["../../src/auction-calculator/auction-calculator.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,2 @@
1
1
  export * from './auction-calculator';
2
- export * from './calc';
3
2
  export * from './constants';
@@ -15,6 +15,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./auction-calculator"), exports);
18
- __exportStar(require("./calc"), exports);
19
18
  __exportStar(require("./constants"), exports);
20
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auction-calculator/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAAoC;AACpC,yCAAsB;AACtB,8CAA2B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auction-calculator/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAAoC;AACpC,8CAA2B"}
@@ -1,3 +1,4 @@
1
+ import { Extension } from '@1inch/limit-order-sdk';
1
2
  import { AuctionGasCostInfo, AuctionPoint } from './types';
2
3
  export declare class AuctionDetails {
3
4
  readonly startTime: bigint;
@@ -40,6 +41,7 @@ export declare class AuctionDetails {
40
41
  * @see AuctionDetails.encode
41
42
  */
42
43
  static decode(data: string): AuctionDetails;
44
+ static fromExtension(extension: Extension): AuctionDetails;
43
45
  /**
44
46
  * Serialize auction data to bytes
45
47
  */
@@ -67,6 +67,9 @@ class AuctionDetails {
67
67
  }
68
68
  });
69
69
  }
70
+ static fromExtension(extension) {
71
+ return AuctionDetails.decode((0, utils_1.add0x)(extension.makingAmountData.slice(42)));
72
+ }
70
73
  /**
71
74
  * Serialize auction data to bytes
72
75
  */
@@ -1 +1 @@
1
- {"version":3,"file":"auction-details.js","sourceRoot":"","sources":["../../../src/fusion-order/auction-details/auction-details.ts"],"names":[],"mappings":";;;;;;AAAA,mCAA6B;AAC7B,kDAA2C;AAC3C,oDAA2B;AAE3B,mDAA4C;AAC5C,uCAAkC;AAClC,+CAAwD;AAExD,MAAa,cAAc;IAoBvB,YAAY,OASX;QACG,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QAC1C,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAA;QACtD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAA;QAChC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;QAC5B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI;YAC9B,eAAe,EAAE,EAAE;YACnB,gBAAgB,EAAE,EAAE;SACvB,CAAA;QAED,IAAA,gBAAM,EAAC,IAAI,CAAC,OAAO,CAAC,eAAe,IAAI,uBAAW,CAAC,CAAA;QACnD,IAAA,gBAAM,EAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,IAAI,uBAAW,CAAC,CAAA;QACpD,IAAA,gBAAM,EAAC,IAAI,CAAC,SAAS,IAAI,uBAAW,CAAC,CAAA;QACrC,IAAA,gBAAM,EAAC,IAAI,CAAC,QAAQ,IAAI,uBAAW,CAAC,CAAA;QACpC,IAAA,gBAAM,EAAC,IAAI,CAAC,eAAe,IAAI,uBAAW,CAAC,CAAA;IAC/C,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,MAAM,CAAC,MAAM,CAAC,IAAY;QACtB,IAAA,gBAAM,EAAC,IAAA,wBAAU,EAAC,IAAI,CAAC,EAAE,8BAA8B,CAAC,CAAA;QACxD,MAAM,IAAI,GAAG,sBAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAEnC,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,EAAE,CAAA;QACzC,MAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,EAAE,CAAA;QAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,CAAA;QAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,CAAA;QAClC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAA;QAC1C,MAAM,MAAM,GAAG,EAAoB,CAAA;QAEnC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;YACpB,MAAM,CAAC,IAAI,CAAC;gBACR,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;gBACtC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;aACnC,CAAC,CAAA;SACL;QAED,OAAO,IAAI,cAAc,CAAC;YACtB,SAAS,EAAE,KAAK;YAChB,QAAQ,EAAE,QAAQ;YAClB,eAAe,EAAE,QAAQ;YACzB,MAAM;YACN,OAAO,EAAE;gBACL,eAAe;gBACf,gBAAgB;aACnB;SACJ,CAAC,CAAA;IACN,CAAC;IAED;;OAEG;IACI,MAAM;QACT,IAAI,OAAO,GAAG,eAAM,CAAC,cAAc,CAC/B,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAClD;YACI,IAAI,CAAC,OAAO,CAAC,eAAe;YAC5B,IAAI,CAAC,OAAO,CAAC,gBAAgB;YAC7B,IAAI,CAAC,SAAS;YACd,IAAI,CAAC,QAAQ;YACb,IAAI,CAAC,eAAe;SACvB,CACJ,CAAA;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACzC,OAAO,IAAI,IAAA,cAAM,EACb,eAAM,CAAC,cAAc,CACjB,CAAC,QAAQ,EAAE,QAAQ,CAAC,EACpB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CACrD,CACJ,CAAA;SACJ;QAED,OAAO,OAAO,CAAA;IAClB,CAAC;CACJ;AArHD,wCAqHC"}
1
+ {"version":3,"file":"auction-details.js","sourceRoot":"","sources":["../../../src/fusion-order/auction-details/auction-details.ts"],"names":[],"mappings":"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"}
@@ -10,11 +10,11 @@ describe('Auction details', () => {
10
10
  points: [
11
11
  {
12
12
  delay: 10,
13
- coefficient: 40000
13
+ coefficient: 10000
14
14
  },
15
15
  {
16
- delay: 10,
17
- coefficient: 40000
16
+ delay: 20,
17
+ coefficient: 5000
18
18
  }
19
19
  ]
20
20
  });
@@ -1 +1 @@
1
- {"version":3,"file":"auction-details.spec.js","sourceRoot":"","sources":["../../../src/fusion-order/auction-details/auction-details.spec.ts"],"names":[],"mappings":";;AAAA,uDAAgD;AAEhD,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACpC,MAAM,OAAO,GAAG,IAAI,gCAAc,CAAC;YAC/B,QAAQ,EAAE,IAAI;YACd,SAAS,EAAE,WAAW;YACtB,eAAe,EAAE,KAAK;YACtB,MAAM,EAAE;gBACJ;oBACI,KAAK,EAAE,EAAE;oBACT,WAAW,EAAE,KAAK;iBACrB;gBAED;oBACI,KAAK,EAAE,EAAE;oBACT,WAAW,EAAE,KAAK;iBACrB;aACJ;SACJ,CAAC,CAAA;QAEF,MAAM,CAAC,gCAAc,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;IAC1E,CAAC,CAAC,CAAA;AACN,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"auction-details.spec.js","sourceRoot":"","sources":["../../../src/fusion-order/auction-details/auction-details.spec.ts"],"names":[],"mappings":";;AAAA,uDAAgD;AAEhD,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACpC,MAAM,OAAO,GAAG,IAAI,gCAAc,CAAC;YAC/B,QAAQ,EAAE,IAAI;YACd,SAAS,EAAE,WAAW;YACtB,eAAe,EAAE,KAAK;YACtB,MAAM,EAAE;gBACJ;oBACI,KAAK,EAAE,EAAE;oBACT,WAAW,EAAE,KAAK;iBACrB;gBACD;oBACI,KAAK,EAAE,EAAE;oBACT,WAAW,EAAE,IAAI;iBACpB;aACJ;SACJ,CAAC,CAAA;QAEF,MAAM,CAAC,gCAAc,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;IAC1E,CAAC,CAAC,CAAA;AACN,CAAC,CAAC,CAAA"}
@@ -1,10 +1,18 @@
1
- import { Address, Extension, ExtensionBuilder } from '@1inch/limit-order-sdk';
1
+ import { Address, Extension, Interaction } from '@1inch/limit-order-sdk';
2
2
  import { AuctionDetails } from './auction-details';
3
3
  import { SettlementPostInteractionData } from './settlement-post-interaction-data';
4
- export declare class FusionExtension extends ExtensionBuilder {
4
+ export declare class FusionExtension {
5
5
  readonly address: Address;
6
- readonly details: AuctionDetails;
6
+ readonly auctionDetails: AuctionDetails;
7
7
  readonly postInteractionData: SettlementPostInteractionData;
8
- constructor(address: Address, details: AuctionDetails, postInteractionData: SettlementPostInteractionData);
8
+ readonly makerPermit?: Interaction | undefined;
9
+ private readonly builder;
10
+ constructor(address: Address, auctionDetails: AuctionDetails, postInteractionData: SettlementPostInteractionData, makerPermit?: Interaction | undefined);
11
+ /**
12
+ * Create `FusionExtension` from bytes
13
+ *
14
+ * @param bytes 0x prefixed bytes
15
+ */
16
+ static decode(bytes: string): FusionExtension;
9
17
  build(): Extension;
10
18
  }
@@ -1,20 +1,48 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.FusionExtension = void 0;
4
7
  const limit_order_sdk_1 = require("@1inch/limit-order-sdk");
5
- class FusionExtension extends limit_order_sdk_1.ExtensionBuilder {
6
- constructor(address, details, postInteractionData) {
7
- super();
8
+ const assert_1 = __importDefault(require("assert"));
9
+ const auction_details_1 = require("./auction-details");
10
+ const settlement_post_interaction_data_1 = require("./settlement-post-interaction-data");
11
+ class FusionExtension {
12
+ constructor(address, auctionDetails, postInteractionData, makerPermit) {
8
13
  this.address = address;
9
- this.details = details;
14
+ this.auctionDetails = auctionDetails;
10
15
  this.postInteractionData = postInteractionData;
11
- }
12
- build() {
13
- const detailsBytes = this.details.encode();
14
- this.withMakingAmountData(this.address, detailsBytes)
16
+ this.makerPermit = makerPermit;
17
+ this.builder = new limit_order_sdk_1.ExtensionBuilder();
18
+ const detailsBytes = this.auctionDetails.encode();
19
+ this.builder
20
+ .withMakingAmountData(this.address, detailsBytes)
15
21
  .withTakingAmountData(this.address, detailsBytes)
16
22
  .withPostInteraction(new limit_order_sdk_1.Interaction(this.address, this.postInteractionData.encode()));
17
- return super.build();
23
+ if (makerPermit) {
24
+ this.builder.withMakerPermit(makerPermit.target, makerPermit.data);
25
+ }
26
+ }
27
+ /**
28
+ * Create `FusionExtension` from bytes
29
+ *
30
+ * @param bytes 0x prefixed bytes
31
+ */
32
+ static decode(bytes) {
33
+ const extension = limit_order_sdk_1.Extension.decode(bytes);
34
+ const settlementContract = limit_order_sdk_1.Address.fromFirstBytes(extension.makingAmountData);
35
+ (0, assert_1.default)(limit_order_sdk_1.Address.fromFirstBytes(extension.takingAmountData).equal(settlementContract) &&
36
+ limit_order_sdk_1.Address.fromFirstBytes(extension.postInteraction).equal(settlementContract), 'Invalid extension, all calls should be to the same address');
37
+ const auctionDetails = auction_details_1.AuctionDetails.fromExtension(extension);
38
+ const postInteractionData = settlement_post_interaction_data_1.SettlementPostInteractionData.fromExtension(extension);
39
+ const permit = extension.hasMakerPermit
40
+ ? limit_order_sdk_1.Interaction.decode(extension.makerPermit)
41
+ : undefined;
42
+ return new FusionExtension(settlementContract, auctionDetails, postInteractionData, permit);
43
+ }
44
+ build() {
45
+ return this.builder.build();
18
46
  }
19
47
  }
20
48
  exports.FusionExtension = FusionExtension;
@@ -1 +1 @@
1
- {"version":3,"file":"fusion-extension.js","sourceRoot":"","sources":["../../src/fusion-order/fusion-extension.ts"],"names":[],"mappings":";;;AAAA,4DAK+B;AAI/B,MAAa,eAAgB,SAAQ,kCAAgB;IACjD,YACoB,OAAgB,EAChB,OAAuB,EACvB,mBAAkD;QAElE,KAAK,EAAE,CAAA;QAJS,YAAO,GAAP,OAAO,CAAS;QAChB,YAAO,GAAP,OAAO,CAAgB;QACvB,wBAAmB,GAAnB,mBAAmB,CAA+B;IAGtE,CAAC;IAEM,KAAK;QACR,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAA;QAE1C,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC;aAChD,oBAAoB,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC;aAChD,mBAAmB,CAChB,IAAI,6BAAW,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,CAAC,CACnE,CAAA;QAEL,OAAO,KAAK,CAAC,KAAK,EAAE,CAAA;IACxB,CAAC;CACJ;AApBD,0CAoBC"}
1
+ {"version":3,"file":"fusion-extension.js","sourceRoot":"","sources":["../../src/fusion-order/fusion-extension.ts"],"names":[],"mappings":";;;;;;AAAA,4DAK+B;AAC/B,oDAA2B;AAE3B,uDAAgD;AAChD,yFAAgF;AAEhF,MAAa,eAAe;IAGxB,YACoB,OAAgB,EAChB,cAA8B,EAC9B,mBAAkD,EAClD,WAAyB;QAHzB,YAAO,GAAP,OAAO,CAAS;QAChB,mBAAc,GAAd,cAAc,CAAgB;QAC9B,wBAAmB,GAAnB,mBAAmB,CAA+B;QAClD,gBAAW,GAAX,WAAW,CAAc;QAN5B,YAAO,GAAG,IAAI,kCAAgB,EAAE,CAAA;QAQ7C,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAA;QAEjD,IAAI,CAAC,OAAO;aACP,oBAAoB,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC;aAChD,oBAAoB,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC;aAChD,mBAAmB,CAChB,IAAI,6BAAW,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,CAAC,CACnE,CAAA;QAEL,IAAI,WAAW,EAAE;YACb,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,CAAA;SACrE;IACL,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,MAAM,CAAC,KAAa;QAC9B,MAAM,SAAS,GAAG,2BAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAEzC,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,cAAc,GAAG,gCAAc,CAAC,aAAa,CAAC,SAAS,CAAC,CAAA;QAE9D,MAAM,mBAAmB,GACrB,gEAA6B,CAAC,aAAa,CAAC,SAAS,CAAC,CAAA;QAE1D,MAAM,MAAM,GAAG,SAAS,CAAC,cAAc;YACnC,CAAC,CAAC,6BAAW,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC;YAC3C,CAAC,CAAC,SAAS,CAAA;QAEf,OAAO,IAAI,eAAe,CACtB,kBAAkB,EAClB,cAAc,EACd,mBAAmB,EACnB,MAAM,CACT,CAAA;IACL,CAAC;IAEM,KAAK;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;IAC/B,CAAC;CACJ;AAjED,0CAiEC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const limit_order_sdk_1 = require("@1inch/limit-order-sdk");
4
+ const fusion_order_1 = require("./fusion-order");
5
+ const auction_details_1 = require("./auction-details");
6
+ const fusion_extension_1 = require("./fusion-extension");
7
+ describe('FusionExtension', () => {
8
+ it('should decode', () => {
9
+ const extensionContract = new limit_order_sdk_1.Address('0x8273f37417da37c4a6c3995e82cf442f87a25d9c');
10
+ const order = fusion_order_1.FusionOrder.new(extensionContract, {
11
+ makerAsset: new limit_order_sdk_1.Address('0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'),
12
+ takerAsset: new limit_order_sdk_1.Address('0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'),
13
+ makingAmount: 1000000000000000000n,
14
+ takingAmount: 1420000000n,
15
+ maker: new limit_order_sdk_1.Address('0x00000000219ab540356cbb839cbe05303d7705fa'),
16
+ salt: 10n
17
+ }, {
18
+ auction: new auction_details_1.AuctionDetails({
19
+ duration: 180n,
20
+ startTime: 1673548149n,
21
+ initialRateBump: 50000,
22
+ points: [
23
+ {
24
+ coefficient: 20000,
25
+ delay: 12
26
+ }
27
+ ]
28
+ }),
29
+ whitelist: [
30
+ {
31
+ address: new limit_order_sdk_1.Address('0x00000000219ab540356cbb839cbe05303d7705fa'),
32
+ allowFrom: 0n
33
+ }
34
+ ],
35
+ resolvingStartTime: 1673548139n
36
+ });
37
+ const fusionExtension = fusion_extension_1.FusionExtension.decode(order.extension.encode());
38
+ expect(fusionExtension).toStrictEqual(order.fusionExtension);
39
+ });
40
+ it('should decode with permit', () => {
41
+ const extensionContract = new limit_order_sdk_1.Address('0x8273f37417da37c4a6c3995e82cf442f87a25d9c');
42
+ const order = fusion_order_1.FusionOrder.new(extensionContract, {
43
+ makerAsset: new limit_order_sdk_1.Address('0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'),
44
+ takerAsset: new limit_order_sdk_1.Address('0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'),
45
+ makingAmount: 1000000000000000000n,
46
+ takingAmount: 1420000000n,
47
+ maker: new limit_order_sdk_1.Address('0x00000000219ab540356cbb839cbe05303d7705fa'),
48
+ salt: 10n
49
+ }, {
50
+ auction: new auction_details_1.AuctionDetails({
51
+ duration: 180n,
52
+ startTime: 1673548149n,
53
+ initialRateBump: 50000,
54
+ points: [
55
+ {
56
+ coefficient: 20000,
57
+ delay: 12
58
+ }
59
+ ]
60
+ }),
61
+ whitelist: [
62
+ {
63
+ address: new limit_order_sdk_1.Address('0x00000000219ab540356cbb839cbe05303d7705fa'),
64
+ allowFrom: 0n
65
+ }
66
+ ],
67
+ resolvingStartTime: 1673548139n
68
+ }, {
69
+ permit: '0xdeadbeef'
70
+ });
71
+ const fusionExtension = fusion_extension_1.FusionExtension.decode(order.extension.encode());
72
+ expect(fusionExtension).toStrictEqual(order.fusionExtension);
73
+ });
74
+ });
75
+ //# sourceMappingURL=fusion-extension.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fusion-extension.spec.js","sourceRoot":"","sources":["../../src/fusion-order/fusion-extension.spec.ts"],"names":[],"mappings":";;AAAA,4DAA8C;AAC9C,iDAA0C;AAC1C,uDAAgD;AAChD,yDAAkD;AAElD,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,eAAe,EAAE,GAAG,EAAE;QACrB,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;QACD,MAAM,eAAe,GAAG,kCAAe,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAA;QACxE,MAAM,CAAC,eAAe,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,CAAC,CAAA;IAChE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACjC,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,EACD;YACI,MAAM,EAAE,YAAY;SACvB,CACJ,CAAA;QACD,MAAM,eAAe,GAAG,kCAAe,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAA;QACxE,MAAM,CAAC,eAAe,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,CAAC,CAAA;IAChE,CAAC,CAAC,CAAA;AACN,CAAC,CAAC,CAAA"}
@@ -4,6 +4,12 @@ import { AuctionDetails } from './auction-details';
4
4
  import { AuctionWhitelistItem, IntegratorFee } from './settlement-post-interaction-data';
5
5
  import { AuctionCalculator } from '../auction-calculator';
6
6
  export declare class FusionOrder {
7
+ /**
8
+ * Fusion extension address
9
+ * @see https://github.com/1inch/limit-order-settlement
10
+ */
11
+ readonly settlementExtensionContract: Address;
12
+ private static _ORDER_FEE_BASE_POINTS;
7
13
  private static defaultExtra;
8
14
  readonly fusionExtension: FusionExtension;
9
15
  private inner;
@@ -19,6 +25,18 @@ export declare class FusionOrder {
19
25
  * Timestamp in sec
20
26
  */
21
27
  get deadline(): bigint;
28
+ /**
29
+ * Timestamp in sec
30
+ */
31
+ get auctionStartTime(): bigint;
32
+ /**
33
+ * Timestamp in sec
34
+ */
35
+ get auctionEndTime(): bigint;
36
+ get isBitInvalidatorMode(): boolean;
37
+ get partialFillAllowed(): boolean;
38
+ get multipleFillsAllowed(): boolean;
39
+ get nonce(): bigint;
22
40
  static new(
23
41
  /**
24
42
  * Fusion extension address
@@ -38,7 +56,8 @@ export declare class FusionOrder {
38
56
  }, extra?: {
39
57
  unwrapWETH?: boolean;
40
58
  /**
41
- * Required if `allowPartialFills` is false
59
+ * Required if `allowPartialFills` or `allowMultipleFills` is false
60
+ * Max size is 40bit
42
61
  */
43
62
  nonce?: bigint;
44
63
  permit?: string;
@@ -56,6 +75,7 @@ export declare class FusionOrder {
56
75
  */
57
76
  orderExpirationDelay?: bigint;
58
77
  enablePermit2?: boolean;
78
+ source?: string;
59
79
  }): FusionOrder;
60
80
  /**
61
81
  * Create FusionOrder from order data and extension
@@ -63,8 +83,8 @@ export declare class FusionOrder {
63
83
  */
64
84
  static fromDataAndExtension(order: LimitOrderV4Struct, extension: Extension): FusionOrder;
65
85
  build(): LimitOrderV4Struct;
66
- getOrderHash(domain?: import("@1inch/limit-order-sdk").EIP712DomainType): string;
67
- getTypedData(domain?: import("@1inch/limit-order-sdk").EIP712DomainType): EIP712TypedData;
86
+ getOrderHash(chainId: number): string;
87
+ getTypedData(chainId: number): EIP712TypedData;
68
88
  getCalculator(): AuctionCalculator;
69
89
  /**
70
90
  * Calculates required taking amount for passed `makingAmount` at block time `time`
@@ -81,4 +101,23 @@ export declare class FusionOrder {
81
101
  * @param executionTime timestamp in sec at which order planning to execute
82
102
  */
83
103
  canExecuteAt(executor: Address, executionTime: bigint): boolean;
104
+ /**
105
+ * Check is order expired at a given time
106
+ *
107
+ * @param time timestamp in seconds
108
+ */
109
+ isExpiredAt(time: bigint): boolean;
110
+ /**
111
+ * Returns how much fee will be credited from a resolver deposit account
112
+ * Token of fee set in Settlement extension constructor
113
+ * Actual deployments can be found at https://github.com/1inch/limit-order-settlement/tree/master/deployments
114
+ *
115
+ * @param filledMakingAmount which resolver fills
116
+ * @see https://github.com/1inch/limit-order-settlement/blob/0e3cae3653092ebb4ea5d2a338c87a54351ad883/contracts/extensions/ResolverFeeExtension.sol#L29
117
+ */
118
+ getResolverFee(filledMakingAmount: bigint): bigint;
119
+ /**
120
+ * Check if `wallet` can fill order before other
121
+ */
122
+ isExclusiveResolver(wallet: Address): boolean;
84
123
  }