@1inch/fusion-sdk 1.0.1-rc.4 → 1.0.1-rc.40

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 (100) hide show
  1. package/dist/api/orders/order-api.spec.js +6 -5
  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 +2 -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 +5 -1
  12. package/dist/api/quoter/quote/quote.js +18 -10
  13. package/dist/api/quoter/quote/quote.js.map +1 -1
  14. package/dist/api/quoter/quote/types.d.ts +5 -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 +23 -4
  35. package/dist/auction-calculator/auction-calculator.js +40 -6
  36. package/dist/auction-calculator/auction-calculator.js.map +1 -1
  37. package/dist/auction-calculator/auction-calculator.spec.js +7 -5
  38. package/dist/auction-calculator/auction-calculator.spec.js.map +1 -1
  39. package/dist/auction-calculator/calc.d.ts +8 -0
  40. package/dist/auction-calculator/calc.js +8 -0
  41. package/dist/auction-calculator/calc.js.map +1 -1
  42. package/dist/auction-calculator/constants.js +1 -1
  43. package/dist/auction-calculator/constants.js.map +1 -1
  44. package/dist/connector/blockchain/private-key-provider.connector.js +2 -0
  45. package/dist/connector/blockchain/private-key-provider.connector.js.map +1 -1
  46. package/dist/connector/ws/websocket-client.connector.js +2 -0
  47. package/dist/connector/ws/websocket-client.connector.js.map +1 -1
  48. package/dist/constants.d.ts +1 -0
  49. package/dist/constants.js +2 -1
  50. package/dist/constants.js.map +1 -1
  51. package/dist/fusion-order/auction-details/auction-details.d.ts +29 -0
  52. package/dist/fusion-order/auction-details/auction-details.js +21 -0
  53. package/dist/fusion-order/auction-details/auction-details.js.map +1 -1
  54. package/dist/fusion-order/auction-details/types.d.ts +12 -0
  55. package/dist/fusion-order/fusion-extension.d.ts +12 -4
  56. package/dist/fusion-order/fusion-extension.js +37 -9
  57. package/dist/fusion-order/fusion-extension.js.map +1 -1
  58. package/dist/fusion-order/fusion-extension.spec.d.ts +1 -0
  59. package/dist/fusion-order/fusion-extension.spec.js +75 -0
  60. package/dist/fusion-order/fusion-extension.spec.js.map +1 -0
  61. package/dist/fusion-order/fusion-order.d.ts +83 -3
  62. package/dist/fusion-order/fusion-order.js +124 -23
  63. package/dist/fusion-order/fusion-order.js.map +1 -1
  64. package/dist/fusion-order/fusion-order.spec.js +69 -5
  65. package/dist/fusion-order/fusion-order.spec.js.map +1 -1
  66. package/dist/fusion-order/settlement-post-interaction-data/settlement-post-interaction-data.d.ts +38 -1
  67. package/dist/fusion-order/settlement-post-interaction-data/settlement-post-interaction-data.js +125 -46
  68. package/dist/fusion-order/settlement-post-interaction-data/settlement-post-interaction-data.js.map +1 -1
  69. package/dist/fusion-order/settlement-post-interaction-data/settlement-post-interaction-data.spec.js +95 -8
  70. package/dist/fusion-order/settlement-post-interaction-data/settlement-post-interaction-data.spec.js.map +1 -1
  71. package/dist/fusion-order/settlement-post-interaction-data/types.d.ts +12 -3
  72. package/dist/fusion-order/source-track.d.ts +1 -0
  73. package/dist/fusion-order/source-track.js +16 -0
  74. package/dist/fusion-order/source-track.js.map +1 -0
  75. package/dist/index.d.ts +2 -2
  76. package/dist/index.js +11 -2
  77. package/dist/index.js.map +1 -1
  78. package/dist/sdk/sdk.js +12 -10
  79. package/dist/sdk/sdk.js.map +1 -1
  80. package/dist/sdk/types.d.ts +14 -0
  81. package/dist/sdk/utils.js +5 -2
  82. package/dist/sdk/utils.js.map +1 -1
  83. package/dist/utils/amounts.d.ts +17 -1
  84. package/dist/utils/amounts.js +19 -3
  85. package/dist/utils/amounts.js.map +1 -1
  86. package/dist/utils/time.d.ts +1 -0
  87. package/dist/utils/time.js +8 -0
  88. package/dist/utils/time.js.map +1 -0
  89. package/dist/validations.d.ts +4 -0
  90. package/dist/validations.js +4 -0
  91. package/dist/validations.js.map +1 -1
  92. package/dist/ws-api/ws-api.d.ts +1 -0
  93. package/dist/ws-api/ws-api.js +2 -1
  94. package/dist/ws-api/ws-api.js.map +1 -1
  95. package/dist/ws-api/ws.spec.js +9 -8
  96. package/dist/ws-api/ws.spec.js.map +1 -1
  97. package/package.json +31 -24
  98. package/dist/limit-order-contract/index.d.ts +0 -1
  99. package/dist/limit-order-contract/index.js +0 -6
  100. package/dist/limit-order-contract/index.js.map +0 -1
@@ -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;
@@ -15,27 +21,101 @@ export declare class FusionOrder {
15
21
  get takingAmount(): bigint;
16
22
  get makingAmount(): bigint;
17
23
  get receiver(): Address;
24
+ /**
25
+ * Timestamp in sec
26
+ */
18
27
  get deadline(): bigint;
19
- static new(settlementExtension: Address, orderInfo: OrderInfoData, details: {
28
+ /**
29
+ * Timestamp in sec
30
+ */
31
+ get auctionStartTime(): bigint;
32
+ /**
33
+ * Timestamp in sec
34
+ */
35
+ get auctionEndTime(): bigint;
36
+ get partialFillAllowed(): boolean;
37
+ get multipleFillsAllowed(): boolean;
38
+ static new(
39
+ /**
40
+ * Fusion extension address
41
+ * @see https://github.com/1inch/limit-order-settlement
42
+ */
43
+ settlementExtension: Address, orderInfo: OrderInfoData, details: {
20
44
  auction: AuctionDetails;
21
45
  fees?: {
22
46
  integratorFee?: IntegratorFee;
23
47
  bankFee?: bigint;
24
48
  };
25
49
  whitelist: AuctionWhitelistItem[];
50
+ /**
51
+ * Time from which order can be executed
52
+ */
53
+ resolvingStartTime?: bigint;
26
54
  }, extra?: {
27
55
  unwrapWETH?: boolean;
56
+ /**
57
+ * Required if `allowPartialFills` or `allowMultipleFills` is false
58
+ * Max size is 40bit
59
+ */
28
60
  nonce?: bigint;
29
61
  permit?: string;
62
+ /**
63
+ * Default is true
64
+ */
30
65
  allowPartialFills?: boolean;
66
+ /**
67
+ * Default is true
68
+ */
31
69
  allowMultipleFills?: boolean;
70
+ /**
71
+ * Order will expire in `orderExpirationDelay` after auction ends
72
+ * Default 12s
73
+ */
32
74
  orderExpirationDelay?: bigint;
33
75
  enablePermit2?: boolean;
76
+ source?: string;
34
77
  }): FusionOrder;
78
+ /**
79
+ * Create FusionOrder from order data and extension
80
+ *
81
+ */
35
82
  static fromDataAndExtension(order: LimitOrderV4Struct, extension: Extension): FusionOrder;
36
83
  build(): LimitOrderV4Struct;
37
- getOrderHash(domain?: import("@1inch/limit-order-sdk").EIP712DomainType): string;
38
- getTypedData(domain?: import("@1inch/limit-order-sdk").EIP712DomainType): EIP712TypedData;
84
+ getOrderHash(chainId: number): string;
85
+ getTypedData(chainId: number): EIP712TypedData;
39
86
  getCalculator(): AuctionCalculator;
87
+ /**
88
+ * Calculates required taking amount for passed `makingAmount` at block time `time`
89
+ *
90
+ * @param makingAmount maker swap amount
91
+ * @param time execution time in sec
92
+ * @param blockBaseFee block fee in wei.
93
+ * */
40
94
  calcTakingAmount(makingAmount: bigint, time: bigint, blockBaseFee?: bigint): bigint;
95
+ /**
96
+ * Check whether address allowed to execute order at the given time
97
+ *
98
+ * @param executor address of executor
99
+ * @param executionTime timestamp in sec at which order planning to execute
100
+ */
101
+ canExecuteAt(executor: Address, executionTime: bigint): boolean;
102
+ /**
103
+ * Check is order expired at a given time
104
+ *
105
+ * @param time timestamp in seconds
106
+ */
107
+ isExpiredAt(time: bigint): boolean;
108
+ /**
109
+ * Returns how much fee will be credited from a resolver deposit account
110
+ * Token of fee set in Settlement extension constructor
111
+ * Actual deployments can be found at https://github.com/1inch/limit-order-settlement/tree/master/deployments
112
+ *
113
+ * @param filledMakingAmount which resolver fills
114
+ * @see https://github.com/1inch/limit-order-settlement/blob/0e3cae3653092ebb4ea5d2a338c87a54351ad883/contracts/extensions/ResolverFeeExtension.sol#L29
115
+ */
116
+ getResolverFee(filledMakingAmount: bigint): bigint;
117
+ /**
118
+ * Check if `wallet` can fill order before other
119
+ */
120
+ isExclusiveResolver(wallet: Address): boolean;
41
121
  }
@@ -9,23 +9,36 @@ 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
+ const time_1 = require("../utils/time");
16
17
  class FusionOrder {
17
- constructor(extensionContract, orderInfo, auctionDetails, postInteractionData, extra = FusionOrder.defaultExtra) {
18
- const { allowPartialFills, allowMultipleFills, unwrapWETH, enablePermit2, orderExpirationDelay, nonce, permit } = {
19
- ...FusionOrder.defaultExtra,
20
- ...extra
21
- };
18
+ constructor(
19
+ /**
20
+ * Fusion extension address
21
+ * @see https://github.com/1inch/limit-order-settlement
22
+ */
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;
22
34
  const deadline = auctionDetails.startTime +
23
35
  auctionDetails.duration +
24
36
  orderExpirationDelay;
25
37
  const makerTraits = limit_order_sdk_1.MakerTraits.default()
26
38
  .withExpiration(deadline)
27
39
  .setPartialFills(allowPartialFills)
28
- .setMultipleFills(allowMultipleFills);
40
+ .setMultipleFills(allowMultipleFills)
41
+ .enablePostInteraction();
29
42
  if (makerTraits.isBitInvalidatorMode()) {
30
43
  (0, assert_1.default)(nonce !== undefined, 'Nonce required, when partial fill or multiple fill disallowed');
31
44
  }
@@ -38,14 +51,22 @@ class FusionOrder {
38
51
  if (nonce !== undefined) {
39
52
  makerTraits.withNonce(nonce);
40
53
  }
41
- const extension = new fusion_extension_1.FusionExtension(extensionContract, auctionDetails, postInteractionData);
42
- if (permit) {
43
- extension.withMakerPermit(orderInfo.makerAsset, permit);
44
- }
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);
45
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);
46
66
  this.inner = new limit_order_sdk_1.LimitOrder({
47
67
  ...orderInfo,
48
- salt: limit_order_sdk_1.LimitOrder.buildSalt(builtExtension, orderInfo.salt)
68
+ receiver,
69
+ salt: saltWithInjectedTrackCode
49
70
  }, makerTraits, builtExtension);
50
71
  this.fusionExtension = extension;
51
72
  }
@@ -70,29 +91,64 @@ class FusionOrder {
70
91
  get receiver() {
71
92
  return this.inner.receiver;
72
93
  }
94
+ /**
95
+ * Timestamp in sec
96
+ */
73
97
  get deadline() {
74
98
  return this.inner.makerTraits.expiration() || 0n;
75
99
  }
76
- static new(settlementExtension, orderInfo, details, extra = FusionOrder.defaultExtra) {
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 partialFillAllowed() {
114
+ return this.inner.makerTraits.isPartialFillAllowed();
115
+ }
116
+ get multipleFillsAllowed() {
117
+ return this.inner.makerTraits.isMultipleFillsAllowed();
118
+ }
119
+ static new(
120
+ /**
121
+ * Fusion extension address
122
+ * @see https://github.com/1inch/limit-order-settlement
123
+ */
124
+ settlementExtension, orderInfo, details, extra) {
77
125
  return new FusionOrder(settlementExtension, orderInfo, details.auction, settlement_post_interaction_data_1.SettlementPostInteractionData.new({
78
126
  bankFee: details.fees?.bankFee || 0n,
79
127
  integratorFee: details.fees?.integratorFee,
80
128
  whitelist: details.whitelist,
81
- auctionStartTime: details.auction.startTime
129
+ resolvingStartTime: details.resolvingStartTime ?? (0, time_1.now)(),
130
+ customReceiver: orderInfo.receiver
82
131
  }), extra);
83
132
  }
133
+ /**
134
+ * Create FusionOrder from order data and extension
135
+ *
136
+ */
84
137
  static fromDataAndExtension(order, extension) {
85
138
  const settlementContract = limit_order_sdk_1.Address.fromFirstBytes(extension.makingAmountData);
86
139
  (0, assert_1.default)(limit_order_sdk_1.Address.fromFirstBytes(extension.takingAmountData).equal(settlementContract) &&
87
140
  limit_order_sdk_1.Address.fromFirstBytes(extension.postInteraction).equal(settlementContract), 'Invalid extension, all calls should be to the same address');
88
141
  const makerTraits = new limit_order_sdk_1.MakerTraits(BigInt(order.makerTraits));
89
- const auctionDetails = auction_details_1.AuctionDetails.decode((0, utils_1.add0x)(extension.makingAmountData.slice(42)));
90
- const postInteractionData = settlement_post_interaction_data_1.SettlementPostInteractionData.decode((0, utils_1.add0x)(extension.postInteraction.slice(42)));
142
+ (0, assert_1.default)(!makerTraits.isPrivate(), 'fusion order can not be private');
143
+ (0, assert_1.default)(makerTraits.hasPostInteraction(), 'post-interaction must be enabled');
144
+ const auctionDetails = auction_details_1.AuctionDetails.fromExtension(extension);
145
+ const postInteractionData = settlement_post_interaction_data_1.SettlementPostInteractionData.fromExtension(extension);
91
146
  const deadline = makerTraits.expiration();
92
147
  const orderExpirationDelay = deadline === null
93
148
  ? undefined
94
149
  : deadline - auctionDetails.startTime - auctionDetails.duration;
95
150
  return new FusionOrder(settlementContract, {
151
+ // shift because of how LimitOrder.buildSalt works
96
152
  salt: BigInt(order.salt) >> 160n,
97
153
  maker: new limit_order_sdk_1.Address(order.maker),
98
154
  receiver: new limit_order_sdk_1.Address(order.receiver),
@@ -107,7 +163,7 @@ class FusionOrder {
107
163
  nonce: makerTraits.nonceOrEpoch(),
108
164
  permit: extension.makerPermit === constants_1.ZX
109
165
  ? undefined
110
- : extension.makerPermit,
166
+ : limit_order_sdk_1.Interaction.decode(extension.makerPermit).data,
111
167
  unwrapWETH: makerTraits.isNativeUnwrapEnabled(),
112
168
  orderExpirationDelay
113
169
  });
@@ -115,23 +171,68 @@ class FusionOrder {
115
171
  build() {
116
172
  return this.inner.build();
117
173
  }
118
- getOrderHash(domain = (0, limit_order_sdk_1.getLimitOrderV4Domain)(1)) {
119
- return this.inner.getOrderHash(domain);
174
+ getOrderHash(chainId) {
175
+ return this.inner.getOrderHash(chainId);
120
176
  }
121
- getTypedData(domain = (0, limit_order_sdk_1.getLimitOrderV4Domain)(1)) {
122
- return this.inner.getTypedData(domain);
177
+ getTypedData(chainId) {
178
+ return this.inner.getTypedData(chainId);
123
179
  }
124
180
  getCalculator() {
125
- return auction_calculator_1.AuctionCalculator.fromAuctionData(this.fusionExtension.postInteractionData, this.fusionExtension.details);
126
- }
181
+ return auction_calculator_1.AuctionCalculator.fromAuctionData(this.fusionExtension.postInteractionData, this.fusionExtension.auctionDetails);
182
+ }
183
+ /**
184
+ * Calculates required taking amount for passed `makingAmount` at block time `time`
185
+ *
186
+ * @param makingAmount maker swap amount
187
+ * @param time execution time in sec
188
+ * @param blockBaseFee block fee in wei.
189
+ * */
127
190
  calcTakingAmount(makingAmount, time, blockBaseFee = 0n) {
128
191
  const takingAmount = (0, amounts_1.calcTakingAmount)(makingAmount, this.makingAmount, this.takingAmount);
129
192
  const calculator = this.getCalculator();
130
193
  const bump = calculator.calcRateBump(time, blockBaseFee);
131
194
  return calculator.calcAuctionTakingAmount(takingAmount, bump);
132
195
  }
196
+ /**
197
+ * Check whether address allowed to execute order at the given time
198
+ *
199
+ * @param executor address of executor
200
+ * @param executionTime timestamp in sec at which order planning to execute
201
+ */
202
+ canExecuteAt(executor, executionTime) {
203
+ return this.fusionExtension.postInteractionData.canExecuteAt(executor, executionTime);
204
+ }
205
+ /**
206
+ * Check is order expired at a given time
207
+ *
208
+ * @param time timestamp in seconds
209
+ */
210
+ isExpiredAt(time) {
211
+ return time > this.deadline;
212
+ }
213
+ /**
214
+ * Returns how much fee will be credited from a resolver deposit account
215
+ * Token of fee set in Settlement extension constructor
216
+ * Actual deployments can be found at https://github.com/1inch/limit-order-settlement/tree/master/deployments
217
+ *
218
+ * @param filledMakingAmount which resolver fills
219
+ * @see https://github.com/1inch/limit-order-settlement/blob/0e3cae3653092ebb4ea5d2a338c87a54351ad883/contracts/extensions/ResolverFeeExtension.sol#L29
220
+ */
221
+ getResolverFee(filledMakingAmount) {
222
+ return ((this.fusionExtension.postInteractionData.bankFee *
223
+ FusionOrder._ORDER_FEE_BASE_POINTS *
224
+ filledMakingAmount) /
225
+ this.makingAmount);
226
+ }
227
+ /**
228
+ * Check if `wallet` can fill order before other
229
+ */
230
+ isExclusiveResolver(wallet) {
231
+ return this.fusionExtension.postInteractionData.isExclusiveResolver(wallet);
232
+ }
133
233
  }
134
234
  exports.FusionOrder = FusionOrder;
235
+ FusionOrder._ORDER_FEE_BASE_POINTS = 10n ** 15n;
135
236
  FusionOrder.defaultExtra = {
136
237
  allowPartialFills: true,
137
238
  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":"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"}
@@ -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', () => {
@@ -28,9 +29,10 @@ describe('Fusion Order', () => {
28
29
  whitelist: [
29
30
  {
30
31
  address: new limit_order_sdk_1.Address('0x00000000219ab540356cbb839cbe05303d7705fa'),
31
- delay: 0n
32
+ allowFrom: 0n
32
33
  }
33
- ]
34
+ ],
35
+ resolvingStartTime: 1673548139n
34
36
  });
35
37
  const builtOrder = order.build();
36
38
  expect(builtOrder).toStrictEqual({
@@ -40,8 +42,8 @@ describe('Fusion Order', () => {
40
42
  receiver: '0x0000000000000000000000000000000000000000',
41
43
  takerAsset: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',
42
44
  takingAmount: '1420000000',
43
- makerTraits: '29852648006495581632639394572552351243421169944806257724550573036760110989312',
44
- salt: '14832508939800728556409473652845244531014097925085'
45
+ makerTraits: '33471150795161712739625987854073848363835856965607525350783622537007396290560',
46
+ salt: '14969955465678758833706505435513058355190519874774'
45
47
  });
46
48
  const makerTraits = new limit_order_sdk_1.MakerTraits(BigInt(builtOrder.makerTraits));
47
49
  expect(makerTraits.isNativeUnwrapEnabled()).toEqual(false);
@@ -72,11 +74,73 @@ describe('Fusion Order', () => {
72
74
  whitelist: [
73
75
  {
74
76
  address: new limit_order_sdk_1.Address('0x00000000219ab540356cbb839cbe05303d7705fa'),
75
- delay: 0n
77
+ allowFrom: 0n
78
+ }
79
+ ]
80
+ });
81
+ expect(fusion_order_1.FusionOrder.fromDataAndExtension(order.build(), order.extension)).toStrictEqual(order);
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
76
108
  }
77
109
  ]
110
+ }, {
111
+ source: 'test'
78
112
  });
79
113
  expect(fusion_order_1.FusionOrder.fromDataAndExtension(order.build(), order.extension)).toStrictEqual(order);
80
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
+ });
81
145
  });
82
146
  //# 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":"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"}
@@ -1,16 +1,53 @@
1
+ import { Address, Extension } from '@1inch/limit-order-sdk';
1
2
  import { IntegratorFee, SettlementSuffixData } from './types';
2
3
  export declare class SettlementPostInteractionData {
3
4
  readonly whitelist: WhitelistItem[];
4
5
  readonly integratorFee?: IntegratorFee;
5
6
  readonly bankFee: bigint;
6
- readonly auctionStartTime: bigint;
7
+ readonly resolvingStartTime: bigint;
8
+ readonly customReceiver?: Address;
7
9
  private constructor();
8
10
  static new(data: SettlementSuffixData): SettlementPostInteractionData;
11
+ /**
12
+ * Construct `SettlementPostInteractionData` from bytes
13
+ * @param data bytes with 0x prefix in next format:
14
+ * - [uint32 feeBank] only when first bit of `bitMask` enabled
15
+ * - [uint16 integratorFeeRation, uint160 integratorFeeReceiver, [uint160 customReceiver]] only when second bit of `bitMask` enabled
16
+ * - uint32 auctionStartTime
17
+ * - (bytes10 last10bytesOfAddress, uint16 auctionDelay) * N whitelist info
18
+ * - uint8 bitMask:
19
+ * 0b0000_0001 - fee bank mask
20
+ * 0b0000_0010 - integrator fee mask
21
+ * 0b0000_0100 - is custom receiver present (only used when integrator fee enabled)
22
+ * 0b1111_1000 - resolvers count mask
23
+ *
24
+ * All data is tight packed
25
+ * @see SettlementPostInteractionData.encode
26
+ */
9
27
  static decode(data: string): SettlementPostInteractionData;
28
+ static fromExtension(extension: Extension): SettlementPostInteractionData;
29
+ /**
30
+ * Serialize post-interaction data to bytes
31
+ */
10
32
  encode(): string;
33
+ /**
34
+ * Check whether address allowed to execute order at the given time
35
+ *
36
+ * @param executor address of executor
37
+ * @param executionTime timestamp in sec at which order planning to execute
38
+ */
39
+ canExecuteAt(executor: Address, executionTime: bigint): boolean;
40
+ isExclusiveResolver(wallet: Address): boolean;
11
41
  }
12
42
  type WhitelistItem = {
43
+ /**
44
+ * last 10 bytes of address, no 0x prefix
45
+ */
13
46
  addressHalf: string;
47
+ /**
48
+ * Delay from previous resolver in seconds
49
+ * For first resolver delay from `resolvingStartTime`
50
+ */
14
51
  delay: bigint;
15
52
  };
16
53
  export {};