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

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 +84 -3
  62. package/dist/fusion-order/fusion-order.js +127 -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,102 @@ 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 isBitInvalidatorMode(): boolean;
37
+ get partialFillAllowed(): boolean;
38
+ get multipleFillsAllowed(): boolean;
39
+ static new(
40
+ /**
41
+ * Fusion extension address
42
+ * @see https://github.com/1inch/limit-order-settlement
43
+ */
44
+ settlementExtension: Address, orderInfo: OrderInfoData, details: {
20
45
  auction: AuctionDetails;
21
46
  fees?: {
22
47
  integratorFee?: IntegratorFee;
23
48
  bankFee?: bigint;
24
49
  };
25
50
  whitelist: AuctionWhitelistItem[];
51
+ /**
52
+ * Time from which order can be executed
53
+ */
54
+ resolvingStartTime?: bigint;
26
55
  }, extra?: {
27
56
  unwrapWETH?: boolean;
57
+ /**
58
+ * Required if `allowPartialFills` or `allowMultipleFills` is false
59
+ * Max size is 40bit
60
+ */
28
61
  nonce?: bigint;
29
62
  permit?: string;
63
+ /**
64
+ * Default is true
65
+ */
30
66
  allowPartialFills?: boolean;
67
+ /**
68
+ * Default is true
69
+ */
31
70
  allowMultipleFills?: boolean;
71
+ /**
72
+ * Order will expire in `orderExpirationDelay` after auction ends
73
+ * Default 12s
74
+ */
32
75
  orderExpirationDelay?: bigint;
33
76
  enablePermit2?: boolean;
77
+ source?: string;
34
78
  }): FusionOrder;
79
+ /**
80
+ * Create FusionOrder from order data and extension
81
+ *
82
+ */
35
83
  static fromDataAndExtension(order: LimitOrderV4Struct, extension: Extension): FusionOrder;
36
84
  build(): LimitOrderV4Struct;
37
- getOrderHash(domain?: import("@1inch/limit-order-sdk").EIP712DomainType): string;
38
- getTypedData(domain?: import("@1inch/limit-order-sdk").EIP712DomainType): EIP712TypedData;
85
+ getOrderHash(chainId: number): string;
86
+ getTypedData(chainId: number): EIP712TypedData;
39
87
  getCalculator(): AuctionCalculator;
88
+ /**
89
+ * Calculates required taking amount for passed `makingAmount` at block time `time`
90
+ *
91
+ * @param makingAmount maker swap amount
92
+ * @param time execution time in sec
93
+ * @param blockBaseFee block fee in wei.
94
+ * */
40
95
  calcTakingAmount(makingAmount: bigint, time: bigint, blockBaseFee?: bigint): bigint;
96
+ /**
97
+ * Check whether address allowed to execute order at the given time
98
+ *
99
+ * @param executor address of executor
100
+ * @param executionTime timestamp in sec at which order planning to execute
101
+ */
102
+ canExecuteAt(executor: Address, executionTime: bigint): boolean;
103
+ /**
104
+ * Check is order expired at a given time
105
+ *
106
+ * @param time timestamp in seconds
107
+ */
108
+ isExpiredAt(time: bigint): boolean;
109
+ /**
110
+ * Returns how much fee will be credited from a resolver deposit account
111
+ * Token of fee set in Settlement extension constructor
112
+ * Actual deployments can be found at https://github.com/1inch/limit-order-settlement/tree/master/deployments
113
+ *
114
+ * @param filledMakingAmount which resolver fills
115
+ * @see https://github.com/1inch/limit-order-settlement/blob/0e3cae3653092ebb4ea5d2a338c87a54351ad883/contracts/extensions/ResolverFeeExtension.sol#L29
116
+ */
117
+ getResolverFee(filledMakingAmount: bigint): bigint;
118
+ /**
119
+ * Check if `wallet` can fill order before other
120
+ */
121
+ isExclusiveResolver(wallet: Address): boolean;
41
122
  }
@@ -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,67 @@ 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 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
+ static new(
123
+ /**
124
+ * Fusion extension address
125
+ * @see https://github.com/1inch/limit-order-settlement
126
+ */
127
+ settlementExtension, orderInfo, details, extra) {
77
128
  return new FusionOrder(settlementExtension, orderInfo, details.auction, settlement_post_interaction_data_1.SettlementPostInteractionData.new({
78
129
  bankFee: details.fees?.bankFee || 0n,
79
130
  integratorFee: details.fees?.integratorFee,
80
131
  whitelist: details.whitelist,
81
- auctionStartTime: details.auction.startTime
132
+ resolvingStartTime: details.resolvingStartTime ?? (0, time_1.now)(),
133
+ customReceiver: orderInfo.receiver
82
134
  }), extra);
83
135
  }
136
+ /**
137
+ * Create FusionOrder from order data and extension
138
+ *
139
+ */
84
140
  static fromDataAndExtension(order, extension) {
85
141
  const settlementContract = limit_order_sdk_1.Address.fromFirstBytes(extension.makingAmountData);
86
142
  (0, assert_1.default)(limit_order_sdk_1.Address.fromFirstBytes(extension.takingAmountData).equal(settlementContract) &&
87
143
  limit_order_sdk_1.Address.fromFirstBytes(extension.postInteraction).equal(settlementContract), 'Invalid extension, all calls should be to the same address');
88
144
  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)));
145
+ (0, assert_1.default)(!makerTraits.isPrivate(), 'fusion order can not be private');
146
+ (0, assert_1.default)(makerTraits.hasPostInteraction(), 'post-interaction must be enabled');
147
+ const auctionDetails = auction_details_1.AuctionDetails.fromExtension(extension);
148
+ const postInteractionData = settlement_post_interaction_data_1.SettlementPostInteractionData.fromExtension(extension);
91
149
  const deadline = makerTraits.expiration();
92
150
  const orderExpirationDelay = deadline === null
93
151
  ? undefined
94
152
  : deadline - auctionDetails.startTime - auctionDetails.duration;
95
153
  return new FusionOrder(settlementContract, {
154
+ // shift because of how LimitOrder.buildSalt works
96
155
  salt: BigInt(order.salt) >> 160n,
97
156
  maker: new limit_order_sdk_1.Address(order.maker),
98
157
  receiver: new limit_order_sdk_1.Address(order.receiver),
@@ -107,7 +166,7 @@ class FusionOrder {
107
166
  nonce: makerTraits.nonceOrEpoch(),
108
167
  permit: extension.makerPermit === constants_1.ZX
109
168
  ? undefined
110
- : extension.makerPermit,
169
+ : limit_order_sdk_1.Interaction.decode(extension.makerPermit).data,
111
170
  unwrapWETH: makerTraits.isNativeUnwrapEnabled(),
112
171
  orderExpirationDelay
113
172
  });
@@ -115,23 +174,68 @@ class FusionOrder {
115
174
  build() {
116
175
  return this.inner.build();
117
176
  }
118
- getOrderHash(domain = (0, limit_order_sdk_1.getLimitOrderV4Domain)(1)) {
119
- return this.inner.getOrderHash(domain);
177
+ getOrderHash(chainId) {
178
+ return this.inner.getOrderHash(chainId);
120
179
  }
121
- getTypedData(domain = (0, limit_order_sdk_1.getLimitOrderV4Domain)(1)) {
122
- return this.inner.getTypedData(domain);
180
+ getTypedData(chainId) {
181
+ return this.inner.getTypedData(chainId);
123
182
  }
124
183
  getCalculator() {
125
- return auction_calculator_1.AuctionCalculator.fromAuctionData(this.fusionExtension.postInteractionData, this.fusionExtension.details);
126
- }
184
+ return auction_calculator_1.AuctionCalculator.fromAuctionData(this.fusionExtension.postInteractionData, this.fusionExtension.auctionDetails);
185
+ }
186
+ /**
187
+ * Calculates required taking amount for passed `makingAmount` at block time `time`
188
+ *
189
+ * @param makingAmount maker swap amount
190
+ * @param time execution time in sec
191
+ * @param blockBaseFee block fee in wei.
192
+ * */
127
193
  calcTakingAmount(makingAmount, time, blockBaseFee = 0n) {
128
194
  const takingAmount = (0, amounts_1.calcTakingAmount)(makingAmount, this.makingAmount, this.takingAmount);
129
195
  const calculator = this.getCalculator();
130
196
  const bump = calculator.calcRateBump(time, blockBaseFee);
131
197
  return calculator.calcAuctionTakingAmount(takingAmount, bump);
132
198
  }
199
+ /**
200
+ * Check whether address allowed to execute order at the given time
201
+ *
202
+ * @param executor address of executor
203
+ * @param executionTime timestamp in sec at which order planning to execute
204
+ */
205
+ canExecuteAt(executor, executionTime) {
206
+ return this.fusionExtension.postInteractionData.canExecuteAt(executor, executionTime);
207
+ }
208
+ /**
209
+ * Check is order expired at a given time
210
+ *
211
+ * @param time timestamp in seconds
212
+ */
213
+ isExpiredAt(time) {
214
+ return time > this.deadline;
215
+ }
216
+ /**
217
+ * Returns how much fee will be credited from a resolver deposit account
218
+ * Token of fee set in Settlement extension constructor
219
+ * Actual deployments can be found at https://github.com/1inch/limit-order-settlement/tree/master/deployments
220
+ *
221
+ * @param filledMakingAmount which resolver fills
222
+ * @see https://github.com/1inch/limit-order-settlement/blob/0e3cae3653092ebb4ea5d2a338c87a54351ad883/contracts/extensions/ResolverFeeExtension.sol#L29
223
+ */
224
+ getResolverFee(filledMakingAmount) {
225
+ return ((this.fusionExtension.postInteractionData.bankFee *
226
+ FusionOrder._ORDER_FEE_BASE_POINTS *
227
+ filledMakingAmount) /
228
+ this.makingAmount);
229
+ }
230
+ /**
231
+ * Check if `wallet` can fill order before other
232
+ */
233
+ isExclusiveResolver(wallet) {
234
+ return this.fusionExtension.postInteractionData.isExclusiveResolver(wallet);
235
+ }
133
236
  }
134
237
  exports.FusionOrder = FusionOrder;
238
+ FusionOrder._ORDER_FEE_BASE_POINTS = 10n ** 15n;
135
239
  FusionOrder.defaultExtra = {
136
240
  allowPartialFills: true,
137
241
  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 {};