@1inch/fusion-sdk 1.0.1-rc.2 → 1.0.1-rc.21

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 (65) hide show
  1. package/dist/api/orders/order-api.spec.js +1 -0
  2. package/dist/api/orders/order-api.spec.js.map +1 -1
  3. package/dist/api/quoter/quote/quote.d.ts +5 -1
  4. package/dist/api/quoter/quote/quote.js +4 -3
  5. package/dist/api/quoter/quote/quote.js.map +1 -1
  6. package/dist/api/quoter/quote/types.d.ts +4 -0
  7. package/dist/api/quoter/quoter.api.spec.js +18 -3
  8. package/dist/api/quoter/quoter.api.spec.js.map +1 -1
  9. package/dist/api/quoter/types.d.ts +3 -3
  10. package/dist/auction-calculator/auction-calculator.d.ts +30 -5
  11. package/dist/auction-calculator/auction-calculator.js +63 -13
  12. package/dist/auction-calculator/auction-calculator.js.map +1 -1
  13. package/dist/auction-calculator/auction-calculator.spec.js +33 -5
  14. package/dist/auction-calculator/auction-calculator.spec.js.map +1 -1
  15. package/dist/auction-calculator/calc.d.ts +8 -0
  16. package/dist/auction-calculator/calc.js +8 -0
  17. package/dist/auction-calculator/calc.js.map +1 -1
  18. package/dist/auction-calculator/constants.js +1 -1
  19. package/dist/auction-calculator/constants.js.map +1 -1
  20. package/dist/connector/blockchain/private-key-provider.connector.js +2 -0
  21. package/dist/connector/blockchain/private-key-provider.connector.js.map +1 -1
  22. package/dist/connector/ws/websocket-client.connector.js +2 -0
  23. package/dist/connector/ws/websocket-client.connector.js.map +1 -1
  24. package/dist/constants.d.ts +1 -0
  25. package/dist/constants.js +2 -1
  26. package/dist/constants.js.map +1 -1
  27. package/dist/fusion-order/auction-details/auction-details.d.ts +29 -0
  28. package/dist/fusion-order/auction-details/auction-details.js +21 -0
  29. package/dist/fusion-order/auction-details/auction-details.js.map +1 -1
  30. package/dist/fusion-order/auction-details/types.d.ts +12 -0
  31. package/dist/fusion-order/fusion-extension.d.ts +2 -2
  32. package/dist/fusion-order/fusion-extension.js +3 -3
  33. package/dist/fusion-order/fusion-extension.js.map +1 -1
  34. package/dist/fusion-order/fusion-order.d.ts +73 -3
  35. package/dist/fusion-order/fusion-order.js +99 -13
  36. package/dist/fusion-order/fusion-order.js.map +1 -1
  37. package/dist/fusion-order/fusion-order.spec.js +6 -5
  38. package/dist/fusion-order/fusion-order.spec.js.map +1 -1
  39. package/dist/fusion-order/settlement-post-interaction-data/settlement-post-interaction-data.d.ts +35 -1
  40. package/dist/fusion-order/settlement-post-interaction-data/settlement-post-interaction-data.js +95 -44
  41. package/dist/fusion-order/settlement-post-interaction-data/settlement-post-interaction-data.js.map +1 -1
  42. package/dist/fusion-order/settlement-post-interaction-data/settlement-post-interaction-data.spec.js +76 -7
  43. package/dist/fusion-order/settlement-post-interaction-data/settlement-post-interaction-data.spec.js.map +1 -1
  44. package/dist/fusion-order/settlement-post-interaction-data/types.d.ts +11 -3
  45. package/dist/index.d.ts +2 -2
  46. package/dist/index.js +11 -2
  47. package/dist/index.js.map +1 -1
  48. package/dist/sdk/sdk.js +3 -6
  49. package/dist/sdk/sdk.js.map +1 -1
  50. package/dist/sdk/types.d.ts +11 -0
  51. package/dist/utils/amounts.d.ts +17 -1
  52. package/dist/utils/amounts.js +19 -3
  53. package/dist/utils/amounts.js.map +1 -1
  54. package/dist/utils/time.d.ts +1 -0
  55. package/dist/utils/time.js +8 -0
  56. package/dist/utils/time.js.map +1 -0
  57. package/dist/validations.d.ts +4 -0
  58. package/dist/validations.js +4 -0
  59. package/dist/validations.js.map +1 -1
  60. package/dist/ws-api/ws.spec.js +1 -0
  61. package/dist/ws-api/ws.spec.js.map +1 -1
  62. package/package.json +12 -5
  63. package/dist/limit-order-contract/index.d.ts +0 -1
  64. package/dist/limit-order-contract/index.js +0 -6
  65. package/dist/limit-order-contract/index.js.map +0 -1
@@ -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;
@@ -5,7 +6,13 @@ export declare class AuctionDetails {
5
6
  readonly initialRateBump: bigint;
6
7
  readonly points: AuctionPoint[];
7
8
  readonly gasCost: {
9
+ /**
10
+ * Rate bump to cover gas price. 10_000_000 means 100%
11
+ */
8
12
  gasBumpEstimate: bigint;
13
+ /**
14
+ * Gas price at estimation time. 1000 means 1 Gwei
15
+ */
9
16
  gasPriceEstimate: bigint;
10
17
  };
11
18
  constructor(auction: {
@@ -13,8 +20,30 @@ export declare class AuctionDetails {
13
20
  initialRateBump: number;
14
21
  duration: bigint;
15
22
  points: AuctionPoint[];
23
+ /**
24
+ * Allows to scale estimate gas costs to actual gas costs
25
+ */
16
26
  gasCost?: AuctionGasCostInfo;
17
27
  });
28
+ /**
29
+ * Construct `AuctionDetails` from bytes
30
+ *
31
+ * @param data bytes with 0x prefix in next format:
32
+ * - uint24 gasBumpEstimate
33
+ * - uint32 gasPriceEstimate
34
+ * - uint32 startTime
35
+ * - uint24 duration
36
+ * - uint24 initialRateBump
37
+ * - [uint24 rate, uint16 delay] * N points
38
+ *
39
+ * All data is tight packed
40
+ *
41
+ * @see AuctionDetails.encode
42
+ */
18
43
  static decode(data: string): AuctionDetails;
44
+ static fromExtension(extension: Extension): AuctionDetails;
45
+ /**
46
+ * Serialize auction data to bytes
47
+ */
19
48
  encode(): string;
20
49
  }
@@ -26,6 +26,21 @@ class AuctionDetails {
26
26
  (0, assert_1.default)(this.duration <= constants_1.UINT_24_MAX);
27
27
  (0, assert_1.default)(this.initialRateBump <= constants_1.UINT_24_MAX);
28
28
  }
29
+ /**
30
+ * Construct `AuctionDetails` from bytes
31
+ *
32
+ * @param data bytes with 0x prefix in next format:
33
+ * - uint24 gasBumpEstimate
34
+ * - uint32 gasPriceEstimate
35
+ * - uint32 startTime
36
+ * - uint24 duration
37
+ * - uint24 initialRateBump
38
+ * - [uint24 rate, uint16 delay] * N points
39
+ *
40
+ * All data is tight packed
41
+ *
42
+ * @see AuctionDetails.encode
43
+ */
29
44
  static decode(data) {
30
45
  (0, assert_1.default)((0, validations_1.isHexBytes)(data), 'Invalid auction details data');
31
46
  const iter = byte_utils_1.BytesIter.BigInt(data);
@@ -52,6 +67,12 @@ class AuctionDetails {
52
67
  }
53
68
  });
54
69
  }
70
+ static fromExtension(extension) {
71
+ return AuctionDetails.decode((0, utils_1.add0x)(extension.makingAmountData.slice(42)));
72
+ }
73
+ /**
74
+ * Serialize auction data to bytes
75
+ */
55
76
  encode() {
56
77
  let details = ethers_1.ethers.solidityPacked(['uint24', 'uint32', 'uint32', 'uint24', 'uint24'], [
57
78
  this.gasCost.gasBumpEstimate,
@@ -1 +1 @@
1
- {"version":3,"file":"auction-details.js","sourceRoot":"","sources":["../../../src/fusion-order/auction-details/auction-details.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auction-details.js","sourceRoot":"","sources":["../../../src/fusion-order/auction-details/auction-details.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,20 @@
1
1
  export type AuctionPoint = {
2
+ /**
3
+ * point in time of this point relatively to previous point
4
+ */
2
5
  delay: number;
6
+ /**
7
+ * coefficient rate bump from the end of an auction
8
+ */
3
9
  coefficient: number;
4
10
  };
5
11
  export type AuctionGasCostInfo = {
12
+ /**
13
+ * Rate bump to cover gas price. 10_000_000 means 100%
14
+ */
6
15
  gasBumpEstimate: bigint;
16
+ /**
17
+ * Gas price at estimation time. 1000 means 1 Gwei
18
+ */
7
19
  gasPriceEstimate: bigint;
8
20
  };
@@ -3,8 +3,8 @@ import { AuctionDetails } from './auction-details';
3
3
  import { SettlementPostInteractionData } from './settlement-post-interaction-data';
4
4
  export declare class FusionExtension extends ExtensionBuilder {
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
+ constructor(address: Address, auctionDetails: AuctionDetails, postInteractionData: SettlementPostInteractionData);
9
9
  build(): Extension;
10
10
  }
@@ -3,14 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.FusionExtension = void 0;
4
4
  const limit_order_sdk_1 = require("@1inch/limit-order-sdk");
5
5
  class FusionExtension extends limit_order_sdk_1.ExtensionBuilder {
6
- constructor(address, details, postInteractionData) {
6
+ constructor(address, auctionDetails, postInteractionData) {
7
7
  super();
8
8
  this.address = address;
9
- this.details = details;
9
+ this.auctionDetails = auctionDetails;
10
10
  this.postInteractionData = postInteractionData;
11
11
  }
12
12
  build() {
13
- const detailsBytes = this.details.encode();
13
+ const detailsBytes = this.auctionDetails.encode();
14
14
  this.withMakingAmountData(this.address, detailsBytes)
15
15
  .withTakingAmountData(this.address, detailsBytes)
16
16
  .withPostInteraction(new limit_order_sdk_1.Interaction(this.address, this.postInteractionData.encode()));
@@ -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;AAI/B,MAAa,eAAgB,SAAQ,kCAAgB;IACjD,YACoB,OAAgB,EAChB,cAA8B,EAC9B,mBAAkD;QAElE,KAAK,EAAE,CAAA;QAJS,YAAO,GAAP,OAAO,CAAS;QAChB,mBAAc,GAAd,cAAc,CAAgB;QAC9B,wBAAmB,GAAnB,mBAAmB,CAA+B;IAGtE,CAAC;IAEM,KAAK;QACR,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAA;QAEjD,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"}
@@ -4,30 +4,100 @@ 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;
7
12
  private static defaultExtra;
8
13
  readonly fusionExtension: FusionExtension;
9
14
  private inner;
10
15
  private constructor();
11
16
  get extension(): Extension;
12
- static new(settlementExtension: Address, orderInfo: OrderInfoData, details: {
17
+ get maker(): Address;
18
+ get takerAsset(): Address;
19
+ get makerAsset(): Address;
20
+ get takingAmount(): bigint;
21
+ get makingAmount(): bigint;
22
+ get receiver(): Address;
23
+ /**
24
+ * Timestamp in sec
25
+ */
26
+ get deadline(): bigint;
27
+ /**
28
+ * Timestamp in sec
29
+ */
30
+ get auctionStartTime(): bigint;
31
+ /**
32
+ * Timestamp in sec
33
+ */
34
+ get auctionEndTime(): bigint;
35
+ static new(
36
+ /**
37
+ * Fusion extension address
38
+ * @see https://github.com/1inch/limit-order-settlement
39
+ */
40
+ settlementExtension: Address, orderInfo: OrderInfoData, details: {
13
41
  auction: AuctionDetails;
14
42
  fees?: {
15
43
  integratorFee?: IntegratorFee;
16
44
  bankFee?: bigint;
17
45
  };
18
46
  whitelist: AuctionWhitelistItem[];
47
+ /**
48
+ * Time from which order can be executed
49
+ */
50
+ resolvingStartTime?: bigint;
19
51
  }, extra?: {
20
52
  unwrapWETH?: boolean;
53
+ /**
54
+ * Required if `allowPartialFills` is false
55
+ */
21
56
  nonce?: bigint;
22
57
  permit?: string;
58
+ /**
59
+ * Default is true
60
+ */
23
61
  allowPartialFills?: boolean;
62
+ /**
63
+ * Default is true
64
+ */
24
65
  allowMultipleFills?: boolean;
66
+ /**
67
+ * Order will expire in `orderExpirationDelay` after auction ends
68
+ * Default 12s
69
+ */
25
70
  orderExpirationDelay?: bigint;
26
71
  enablePermit2?: boolean;
27
72
  }): FusionOrder;
73
+ /**
74
+ * Create FusionOrder from order data and extension
75
+ *
76
+ */
28
77
  static fromDataAndExtension(order: LimitOrderV4Struct, extension: Extension): FusionOrder;
29
78
  build(): LimitOrderV4Struct;
30
- getOrderHash(domain?: import("@1inch/limit-order-sdk").EIP712DomainType): string;
31
- getTypedData(domain?: import("@1inch/limit-order-sdk").EIP712DomainType): EIP712TypedData;
79
+ getOrderHash(chainId: number): string;
80
+ getTypedData(chainId: number): EIP712TypedData;
32
81
  getCalculator(): AuctionCalculator;
82
+ /**
83
+ * Calculates required taking amount for passed `makingAmount` at block time `time`
84
+ *
85
+ * @param makingAmount maker swap amount
86
+ * @param time execution time in sec
87
+ * @param blockBaseFee block fee in wei.
88
+ * */
89
+ calcTakingAmount(makingAmount: bigint, time: bigint, blockBaseFee?: bigint): bigint;
90
+ /**
91
+ * Check whether address allowed to execute order at the given time
92
+ *
93
+ * @param executor address of executor
94
+ * @param executionTime timestamp in sec at which order planning to execute
95
+ */
96
+ canExecuteAt(executor: Address, executionTime: bigint): boolean;
97
+ /**
98
+ * Check is order expired at a given time
99
+ *
100
+ * @param time timestamp in seconds
101
+ */
102
+ isExpiredAt(time: bigint): boolean;
33
103
  }
@@ -10,10 +10,17 @@ 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
12
  const auction_calculator_1 = require("../auction-calculator");
13
- const utils_1 = require("../utils");
14
13
  const constants_1 = require("../constants");
14
+ const amounts_1 = require("../utils/amounts");
15
+ const time_1 = require("../utils/time");
15
16
  class FusionOrder {
16
- constructor(extensionContract, orderInfo, auctionDetails, postInteractionData, extra = FusionOrder.defaultExtra) {
17
+ constructor(
18
+ /**
19
+ * Fusion extension address
20
+ * @see https://github.com/1inch/limit-order-settlement
21
+ */
22
+ settlementExtensionContract, orderInfo, auctionDetails, postInteractionData, extra = FusionOrder.defaultExtra) {
23
+ this.settlementExtensionContract = settlementExtensionContract;
17
24
  const { allowPartialFills, allowMultipleFills, unwrapWETH, enablePermit2, orderExpirationDelay, nonce, permit } = {
18
25
  ...FusionOrder.defaultExtra,
19
26
  ...extra
@@ -24,7 +31,8 @@ class FusionOrder {
24
31
  const makerTraits = limit_order_sdk_1.MakerTraits.default()
25
32
  .withExpiration(deadline)
26
33
  .setPartialFills(allowPartialFills)
27
- .setMultipleFills(allowMultipleFills);
34
+ .setMultipleFills(allowMultipleFills)
35
+ .enablePostInteraction();
28
36
  if (makerTraits.isBitInvalidatorMode()) {
29
37
  (0, assert_1.default)(nonce !== undefined, 'Nonce required, when partial fill or multiple fill disallowed');
30
38
  }
@@ -37,7 +45,7 @@ class FusionOrder {
37
45
  if (nonce !== undefined) {
38
46
  makerTraits.withNonce(nonce);
39
47
  }
40
- const extension = new fusion_extension_1.FusionExtension(extensionContract, auctionDetails, postInteractionData);
48
+ const extension = new fusion_extension_1.FusionExtension(settlementExtensionContract, auctionDetails, postInteractionData);
41
49
  if (permit) {
42
50
  extension.withMakerPermit(orderInfo.makerAsset, permit);
43
51
  }
@@ -51,26 +59,74 @@ class FusionOrder {
51
59
  get extension() {
52
60
  return this.inner.extension;
53
61
  }
54
- static new(settlementExtension, orderInfo, details, extra = FusionOrder.defaultExtra) {
62
+ get maker() {
63
+ return this.inner.maker;
64
+ }
65
+ get takerAsset() {
66
+ return this.inner.takerAsset;
67
+ }
68
+ get makerAsset() {
69
+ return this.inner.makerAsset;
70
+ }
71
+ get takingAmount() {
72
+ return this.inner.takingAmount;
73
+ }
74
+ get makingAmount() {
75
+ return this.inner.makingAmount;
76
+ }
77
+ get receiver() {
78
+ return this.inner.receiver;
79
+ }
80
+ /**
81
+ * Timestamp in sec
82
+ */
83
+ get deadline() {
84
+ return this.inner.makerTraits.expiration() || 0n;
85
+ }
86
+ /**
87
+ * Timestamp in sec
88
+ */
89
+ get auctionStartTime() {
90
+ return this.fusionExtension.auctionDetails.startTime;
91
+ }
92
+ /**
93
+ * Timestamp in sec
94
+ */
95
+ get auctionEndTime() {
96
+ const { startTime, duration } = this.fusionExtension.auctionDetails;
97
+ return startTime + duration;
98
+ }
99
+ static new(
100
+ /**
101
+ * Fusion extension address
102
+ * @see https://github.com/1inch/limit-order-settlement
103
+ */
104
+ settlementExtension, orderInfo, details, extra) {
55
105
  return new FusionOrder(settlementExtension, orderInfo, details.auction, settlement_post_interaction_data_1.SettlementPostInteractionData.new({
56
106
  bankFee: details.fees?.bankFee || 0n,
57
107
  integratorFee: details.fees?.integratorFee,
58
108
  whitelist: details.whitelist,
59
- auctionStartTime: details.auction.startTime
109
+ resolvingStartTime: details.resolvingStartTime ?? (0, time_1.now)()
60
110
  }), extra);
61
111
  }
112
+ /**
113
+ * Create FusionOrder from order data and extension
114
+ *
115
+ */
62
116
  static fromDataAndExtension(order, extension) {
63
117
  const settlementContract = limit_order_sdk_1.Address.fromFirstBytes(extension.makingAmountData);
64
118
  (0, assert_1.default)(limit_order_sdk_1.Address.fromFirstBytes(extension.takingAmountData).equal(settlementContract) &&
65
119
  limit_order_sdk_1.Address.fromFirstBytes(extension.postInteraction).equal(settlementContract), 'Invalid extension, all calls should be to the same address');
66
120
  const makerTraits = new limit_order_sdk_1.MakerTraits(BigInt(order.makerTraits));
67
- const auctionDetails = auction_details_1.AuctionDetails.decode((0, utils_1.add0x)(extension.makingAmountData.slice(42)));
68
- const postInteractionData = settlement_post_interaction_data_1.SettlementPostInteractionData.decode((0, utils_1.add0x)(extension.postInteraction.slice(42)));
121
+ (0, assert_1.default)(!makerTraits.isPrivate(), 'fusion order can not be private');
122
+ const auctionDetails = auction_details_1.AuctionDetails.fromExtension(extension);
123
+ const postInteractionData = settlement_post_interaction_data_1.SettlementPostInteractionData.fromExtension(extension);
69
124
  const deadline = makerTraits.expiration();
70
125
  const orderExpirationDelay = deadline === null
71
126
  ? undefined
72
127
  : deadline - auctionDetails.startTime - auctionDetails.duration;
73
128
  return new FusionOrder(settlementContract, {
129
+ // shift because of how LimitOrder.buildSalt works
74
130
  salt: BigInt(order.salt) >> 160n,
75
131
  maker: new limit_order_sdk_1.Address(order.maker),
76
132
  receiver: new limit_order_sdk_1.Address(order.receiver),
@@ -93,14 +149,44 @@ class FusionOrder {
93
149
  build() {
94
150
  return this.inner.build();
95
151
  }
96
- getOrderHash(domain = (0, limit_order_sdk_1.getLimitOrderV4Domain)(1)) {
97
- return this.inner.getOrderHash(domain);
152
+ getOrderHash(chainId) {
153
+ return this.inner.getOrderHash(chainId);
98
154
  }
99
- getTypedData(domain = (0, limit_order_sdk_1.getLimitOrderV4Domain)(1)) {
100
- return this.inner.getTypedData(domain);
155
+ getTypedData(chainId) {
156
+ return this.inner.getTypedData((0, limit_order_sdk_1.getLimitOrderV4Domain)(chainId));
101
157
  }
102
158
  getCalculator() {
103
- return auction_calculator_1.AuctionCalculator.fromAuctionData(this.fusionExtension.postInteractionData, this.fusionExtension.details);
159
+ return auction_calculator_1.AuctionCalculator.fromAuctionData(this.fusionExtension.postInteractionData, this.fusionExtension.auctionDetails);
160
+ }
161
+ /**
162
+ * Calculates required taking amount for passed `makingAmount` at block time `time`
163
+ *
164
+ * @param makingAmount maker swap amount
165
+ * @param time execution time in sec
166
+ * @param blockBaseFee block fee in wei.
167
+ * */
168
+ calcTakingAmount(makingAmount, time, blockBaseFee = 0n) {
169
+ const takingAmount = (0, amounts_1.calcTakingAmount)(makingAmount, this.makingAmount, this.takingAmount);
170
+ const calculator = this.getCalculator();
171
+ const bump = calculator.calcRateBump(time, blockBaseFee);
172
+ return calculator.calcAuctionTakingAmount(takingAmount, bump);
173
+ }
174
+ /**
175
+ * Check whether address allowed to execute order at the given time
176
+ *
177
+ * @param executor address of executor
178
+ * @param executionTime timestamp in sec at which order planning to execute
179
+ */
180
+ canExecuteAt(executor, executionTime) {
181
+ return this.fusionExtension.postInteractionData.canExecuteAt(executor, executionTime);
182
+ }
183
+ /**
184
+ * Check is order expired at a given time
185
+ *
186
+ * @param time timestamp in seconds
187
+ */
188
+ isExpiredAt(time) {
189
+ return time > this.deadline;
104
190
  }
105
191
  }
106
192
  exports.FusionOrder = FusionOrder;
@@ -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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"}
@@ -28,9 +28,10 @@ describe('Fusion Order', () => {
28
28
  whitelist: [
29
29
  {
30
30
  address: new limit_order_sdk_1.Address('0x00000000219ab540356cbb839cbe05303d7705fa'),
31
- delay: 0n
31
+ allowFrom: 0n
32
32
  }
33
- ]
33
+ ],
34
+ resolvingStartTime: 1673548139n
34
35
  });
35
36
  const builtOrder = order.build();
36
37
  expect(builtOrder).toStrictEqual({
@@ -40,8 +41,8 @@ describe('Fusion Order', () => {
40
41
  receiver: '0x0000000000000000000000000000000000000000',
41
42
  takerAsset: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',
42
43
  takingAmount: '1420000000',
43
- makerTraits: '29852648006495581632639394572552351243421169944806257724550573036760110989312',
44
- salt: '14832508939800728556409473652845244531014097925085'
44
+ makerTraits: '33471150795161712739625987854073848363835856965607525350783622537007396290560',
45
+ salt: '14969955465678758833706505435513058355190519874774'
45
46
  });
46
47
  const makerTraits = new limit_order_sdk_1.MakerTraits(BigInt(builtOrder.makerTraits));
47
48
  expect(makerTraits.isNativeUnwrapEnabled()).toEqual(false);
@@ -72,7 +73,7 @@ describe('Fusion Order', () => {
72
73
  whitelist: [
73
74
  {
74
75
  address: new limit_order_sdk_1.Address('0x00000000219ab540356cbb839cbe05303d7705fa'),
75
- delay: 0n
76
+ allowFrom: 0n
76
77
  }
77
78
  ]
78
79
  });
@@ -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,50 @@
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;
7
8
  private constructor();
8
9
  static new(data: SettlementSuffixData): SettlementPostInteractionData;
10
+ /**
11
+ * Construct `SettlementPostInteractionData` from bytes
12
+ * @param data bytes with 0x prefix in next format:
13
+ * - [uint32 feeBank] only when first bit of `bitMask` enabled
14
+ * - [uint160 integratorFeeReceiver, uint32 integratorFeeRation] only when second bit of `bitMask` enabled
15
+ * - uint32 auctionStartTime
16
+ * - (bytes10 last10bytesOfAddress, uint16 auctionDelay) * N whitelist info
17
+ * - uint8 bitMask:
18
+ * 0b0000_0001 - fee bank mask
19
+ * 0b0000_0010 - integrator fee mask
20
+ * 0b1111_1000 - resolvers count mask
21
+ *
22
+ * All data is tight packed
23
+ * @see SettlementPostInteractionData.encode
24
+ */
9
25
  static decode(data: string): SettlementPostInteractionData;
26
+ static fromExtension(extension: Extension): SettlementPostInteractionData;
27
+ /**
28
+ * Serialize post-interaction data to bytes
29
+ */
10
30
  encode(): string;
31
+ /**
32
+ * Check whether address allowed to execute order at the given time
33
+ *
34
+ * @param executor address of executor
35
+ * @param executionTime timestamp in sec at which order planning to execute
36
+ */
37
+ canExecuteAt(executor: Address, executionTime: bigint): boolean;
11
38
  }
12
39
  type WhitelistItem = {
40
+ /**
41
+ * last 10 bytes of address, no 0x prefix
42
+ */
13
43
  addressHalf: string;
44
+ /**
45
+ * Delay from previous resolver in seconds
46
+ * For first resolver delay from `resolvingStartTime`
47
+ */
14
48
  delay: bigint;
15
49
  };
16
50
  export {};