@1inch/fusion-sdk 2.3.9-rc.0 → 2.3.9-rc.10

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 (52) hide show
  1. package/dist/cjs/abi/NativeOrderFactory.abi.json +217 -0
  2. package/dist/cjs/abi/{ETHOrders.abi.json → NativeOrderImpl.abi.json} +110 -255
  3. package/dist/cjs/api/quoter/quote/quote.js +6 -4
  4. package/dist/cjs/api/quoter/quoter.request.js +0 -3
  5. package/dist/cjs/api/quoter/quoter.request.spec.js +0 -15
  6. package/dist/cjs/api/quoter/types.js +0 -2
  7. package/dist/cjs/contracts/index.js +21 -0
  8. package/dist/cjs/contracts/native-order-factory.js +115 -0
  9. package/dist/cjs/contracts/native-order-impl.js +130 -0
  10. package/dist/cjs/contracts/proxy-factory.js +87 -0
  11. package/dist/cjs/fusion-order/fusion-order.js +81 -5
  12. package/dist/cjs/fusion-order/fusion-order.spec.js +106 -0
  13. package/dist/cjs/fusion-order/index.js +0 -1
  14. package/dist/cjs/index.js +1 -0
  15. package/dist/cjs/sdk/sdk.js +79 -40
  16. package/dist/esm/abi/NativeOrderFactory.abi.json +217 -0
  17. package/dist/esm/abi/{ETHOrders.abi.json → NativeOrderImpl.abi.json} +110 -255
  18. package/dist/esm/api/quoter/quote/quote.js +7 -5
  19. package/dist/esm/api/quoter/quoter.request.js +0 -3
  20. package/dist/esm/api/quoter/quoter.request.spec.js +0 -15
  21. package/dist/esm/api/quoter/types.js +0 -2
  22. package/dist/esm/contracts/index.js +4 -0
  23. package/dist/esm/contracts/native-order-factory.js +100 -0
  24. package/dist/esm/contracts/native-order-impl.js +115 -0
  25. package/dist/esm/contracts/proxy-factory.js +72 -0
  26. package/dist/esm/fusion-order/fusion-order.js +79 -3
  27. package/dist/esm/fusion-order/fusion-order.spec.js +106 -0
  28. package/dist/esm/fusion-order/index.js +0 -1
  29. package/dist/esm/fusion-order/types.js +4 -0
  30. package/dist/esm/index.js +1 -0
  31. package/dist/esm/package.json +1 -1
  32. package/dist/esm/sdk/sdk.js +79 -40
  33. package/dist/types/src/api/quoter/quote/quote.d.ts +4 -3
  34. package/dist/types/src/api/quoter/types.d.ts +2 -1
  35. package/dist/types/src/contracts/index.d.ts +4 -0
  36. package/dist/types/src/contracts/native-order-factory.d.ts +9 -0
  37. package/dist/types/src/contracts/native-order-impl.d.ts +9 -0
  38. package/dist/types/src/contracts/proxy-factory.d.ts +8 -0
  39. package/dist/types/src/fusion-order/fusion-order.d.ts +6 -0
  40. package/dist/types/src/fusion-order/index.d.ts +0 -1
  41. package/dist/types/src/fusion-order/types.d.ts +1 -0
  42. package/dist/types/src/index.d.ts +1 -0
  43. package/dist/types/src/sdk/sdk.d.ts +4 -0
  44. package/dist/types/src/sdk/types.d.ts +2 -1
  45. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  46. package/package.json +2 -2
  47. package/dist/cjs/contracts/eth-orders.extension.js +0 -105
  48. package/dist/cjs/fusion-order/fusion-order-from-native.js +0 -183
  49. package/dist/esm/contracts/eth-orders.extension.js +0 -90
  50. package/dist/esm/fusion-order/fusion-order-from-native.js +0 -173
  51. package/dist/types/src/contracts/eth-orders.extension.d.ts +0 -11
  52. package/dist/types/src/fusion-order/fusion-order-from-native.d.ts +0 -13
@@ -17,6 +17,7 @@ var _preset = require("../preset.js");
17
17
  var _index = require("../../../fusion-order/index.js");
18
18
  var _constants = require("../../../fusion-order/constants.js");
19
19
  var _index1 = require("../../../fusion-order/fees/index.js");
20
+ var _index2 = require("../../../index.js");
20
21
  function _class_call_check(instance, Constructor) {
21
22
  if (!(instance instanceof Constructor)) {
22
23
  throw new TypeError("Cannot call a class as a function");
@@ -66,7 +67,7 @@ var Quote = /*#__PURE__*/ function() {
66
67
  /**
67
68
  * Native asset extension address
68
69
  * @see https://github.com/1inch/limit-order-settlement todo: update link
69
- */ _define_property(this, "ethOrdersAddress", void 0);
70
+ */ _define_property(this, "nativeOrderFactory", void 0);
70
71
  _define_property(this, "fromTokenAmount", void 0);
71
72
  _define_property(this, "presets", void 0);
72
73
  _define_property(this, "recommendedPreset", void 0);
@@ -95,7 +96,7 @@ var Quote = /*#__PURE__*/ function() {
95
96
  this.recommendedPreset = response.recommended_preset;
96
97
  this.slippage = response.autoK;
97
98
  this.settlementAddress = new _limitordersdk.Address(response.settlementAddress);
98
- this.ethOrdersAddress = response.ethOrdersAddress ? new _limitordersdk.Address(response.ethOrdersAddress) : undefined;
99
+ this.nativeOrderFactory = response.nativeOrderFactoryAddress && response.nativeOrderImplAddress ? new _index2.ProxyFactory(new _limitordersdk.Address(response.nativeOrderFactoryAddress), new _limitordersdk.Address(response.nativeOrderImplAddress)) : undefined;
99
100
  this.resolverFeePreset = {
100
101
  receiver: new _limitordersdk.Address(response.fee.receiver),
101
102
  whitelistDiscountPercent: _limitordersdk.Bps.fromPercent(response.fee.whitelistDiscountPercent),
@@ -118,6 +119,7 @@ var Quote = /*#__PURE__*/ function() {
118
119
  permit: this.params.permit,
119
120
  isPermit2: this.params.isPermit2,
120
121
  nonce: paramsData === null || paramsData === void 0 ? void 0 : paramsData.nonce,
122
+ delayAuctionStartTimeBy: paramsData === null || paramsData === void 0 ? void 0 : paramsData.delayAuctionStartTimeBy,
121
123
  network: paramsData.network
122
124
  });
123
125
  var preset = this.getPreset(params.preset);
@@ -188,8 +190,8 @@ var Quote = /*#__PURE__*/ function() {
188
190
  key: "_createOrder",
189
191
  value: function _createOrder(chainId, settlementExtension, orderInfo, details, extra) {
190
192
  if (this.params.fromTokenAddress.isNative()) {
191
- (0, _assert.default)(this.ethOrdersAddress, 'expected ethOrdersAddress to be set for order from native asset');
192
- return _index.FusionOrderFromNative.fromNative(chainId, this.ethOrdersAddress, settlementExtension, orderInfo, details, extra);
193
+ (0, _assert.default)(this.nativeOrderFactory, 'expected nativeOrderFactory to be set for order from native asset');
194
+ return _index.FusionOrder.fromNative(chainId, this.nativeOrderFactory, settlementExtension, orderInfo, details, extra);
193
195
  }
194
196
  return _index.FusionOrder.new(settlementExtension, orderInfo, details, extra);
195
197
  }
@@ -67,9 +67,6 @@ var QuoterRequest = /*#__PURE__*/ function() {
67
67
  var _params_isPermit2;
68
68
  this.isPermit2 = (_params_isPermit2 = params.isPermit2) !== null && _params_isPermit2 !== void 0 ? _params_isPermit2 : false;
69
69
  this.slippage = params.slippage;
70
- if (this.fromTokenAddress.isNative()) {
71
- throw new Error("cannot swap ".concat(_limitordersdk.Address.NATIVE_CURRENCY, ": wrap native currency to it's wrapper fist"));
72
- }
73
70
  if (this.fromTokenAddress.isZero() || this.toTokenAddress.isZero()) {
74
71
  throw new Error("replace ".concat(_limitordersdk.Address.ZERO_ADDRESS, " with ").concat(_limitordersdk.Address.NATIVE_CURRENCY));
75
72
  }
@@ -5,21 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  var _limitordersdk = require("@1inch/limit-order-sdk");
6
6
  var _quoterrequest = require("./quoter.request.js");
7
7
  describe(__filename, function() {
8
- it('should return error if native currency', function() {
9
- expect(function() {
10
- return _quoterrequest.QuoterRequest.new({
11
- fromTokenAddress: _limitordersdk.Address.NATIVE_CURRENCY.toString(),
12
- toTokenAddress: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
13
- amount: '1000000000000000000000',
14
- walletAddress: '0x00000000219ab540356cbb839cbe05303d7705fa',
15
- integratorFee: {
16
- share: _limitordersdk.Bps.fromPercent(50),
17
- receiver: _limitordersdk.Address.fromBigInt(10n),
18
- value: new _limitordersdk.Bps(1n)
19
- }
20
- });
21
- }).toThrow(/wrap native currency/);
22
- });
23
8
  it('returns error fromTokenAddress or toTokenAddress equals ZERO_ADDRESS', function() {
24
9
  expect(function() {
25
10
  return _quoterrequest.QuoterRequest.new({
@@ -14,8 +14,6 @@ Object.defineProperty(exports, "PresetEnum", {
14
14
  * Optional slippage value in percent (e.g., 1 for 1%, max 50)
15
15
  * Must be between 1 and 50 inclusive
16
16
  */ /**
17
- * Present if src token is native
18
- */ /**
19
17
  * In bps
20
18
  */ /**
21
19
  * Percentage of the integrator fee that will be shared with the integrator.
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ _export_star(require("./native-order-factory.js"), exports);
6
+ _export_star(require("./native-order-impl.js"), exports);
7
+ _export_star(require("./proxy-factory.js"), exports);
8
+ _export_star(require("./types.js"), exports);
9
+ function _export_star(from, to) {
10
+ Object.keys(from).forEach(function(k) {
11
+ if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) {
12
+ Object.defineProperty(to, k, {
13
+ enumerable: true,
14
+ get: function() {
15
+ return from[k];
16
+ }
17
+ });
18
+ }
19
+ });
20
+ return from;
21
+ }
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "NativeOrdersFactory", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return NativeOrdersFactory;
9
+ }
10
+ });
11
+ var _ethers = require("ethers");
12
+ var _NativeOrderFactoryabijson = /*#__PURE__*/ _interop_require_default(require("../abi/NativeOrderFactory.abi.json"));
13
+ function _class_call_check(instance, Constructor) {
14
+ if (!(instance instanceof Constructor)) {
15
+ throw new TypeError("Cannot call a class as a function");
16
+ }
17
+ }
18
+ function _defineProperties(target, props) {
19
+ for(var i = 0; i < props.length; i++){
20
+ var descriptor = props[i];
21
+ descriptor.enumerable = descriptor.enumerable || false;
22
+ descriptor.configurable = true;
23
+ if ("value" in descriptor) descriptor.writable = true;
24
+ Object.defineProperty(target, descriptor.key, descriptor);
25
+ }
26
+ }
27
+ function _create_class(Constructor, protoProps, staticProps) {
28
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
29
+ if (staticProps) _defineProperties(Constructor, staticProps);
30
+ return Constructor;
31
+ }
32
+ function _define_property(obj, key, value) {
33
+ if (key in obj) {
34
+ Object.defineProperty(obj, key, {
35
+ value: value,
36
+ enumerable: true,
37
+ configurable: true,
38
+ writable: true
39
+ });
40
+ } else {
41
+ obj[key] = value;
42
+ }
43
+ return obj;
44
+ }
45
+ function _interop_require_default(obj) {
46
+ return obj && obj.__esModule ? obj : {
47
+ default: obj
48
+ };
49
+ }
50
+ function _object_spread(target) {
51
+ for(var i = 1; i < arguments.length; i++){
52
+ var source = arguments[i] != null ? arguments[i] : {};
53
+ var ownKeys = Object.keys(source);
54
+ if (typeof Object.getOwnPropertySymbols === "function") {
55
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
56
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
57
+ }));
58
+ }
59
+ ownKeys.forEach(function(key) {
60
+ _define_property(target, key, source[key]);
61
+ });
62
+ }
63
+ return target;
64
+ }
65
+ function ownKeys(object, enumerableOnly) {
66
+ var keys = Object.keys(object);
67
+ if (Object.getOwnPropertySymbols) {
68
+ var symbols = Object.getOwnPropertySymbols(object);
69
+ if (enumerableOnly) {
70
+ symbols = symbols.filter(function(sym) {
71
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
72
+ });
73
+ }
74
+ keys.push.apply(keys, symbols);
75
+ }
76
+ return keys;
77
+ }
78
+ function _object_spread_props(target, source) {
79
+ source = source != null ? source : {};
80
+ if (Object.getOwnPropertyDescriptors) {
81
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
82
+ } else {
83
+ ownKeys(Object(source)).forEach(function(key) {
84
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
85
+ });
86
+ }
87
+ return target;
88
+ }
89
+ var NativeOrdersFactory = /*#__PURE__*/ function() {
90
+ "use strict";
91
+ function NativeOrdersFactory(address) {
92
+ _class_call_check(this, NativeOrdersFactory);
93
+ _define_property(this, "address", void 0);
94
+ _define_property(this, "iface", void 0);
95
+ this.address = address;
96
+ this.iface = new _ethers.Interface(_NativeOrderFactoryabijson.default);
97
+ }
98
+ _create_class(NativeOrdersFactory, [
99
+ {
100
+ key: "create",
101
+ value: function create(maker, order) {
102
+ return {
103
+ to: this.address,
104
+ value: order.makingAmount,
105
+ data: this.iface.encodeFunctionData('create', [
106
+ _object_spread_props(_object_spread({}, order.build()), {
107
+ maker: maker.toString()
108
+ })
109
+ ])
110
+ };
111
+ }
112
+ }
113
+ ]);
114
+ return NativeOrdersFactory;
115
+ }();
@@ -0,0 +1,130 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "NativeOrdersImpl", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return NativeOrdersImpl;
9
+ }
10
+ });
11
+ var _ethers = require("ethers");
12
+ var _NativeOrderImplabijson = /*#__PURE__*/ _interop_require_default(require("../abi/NativeOrderImpl.abi.json"));
13
+ function _class_call_check(instance, Constructor) {
14
+ if (!(instance instanceof Constructor)) {
15
+ throw new TypeError("Cannot call a class as a function");
16
+ }
17
+ }
18
+ function _defineProperties(target, props) {
19
+ for(var i = 0; i < props.length; i++){
20
+ var descriptor = props[i];
21
+ descriptor.enumerable = descriptor.enumerable || false;
22
+ descriptor.configurable = true;
23
+ if ("value" in descriptor) descriptor.writable = true;
24
+ Object.defineProperty(target, descriptor.key, descriptor);
25
+ }
26
+ }
27
+ function _create_class(Constructor, protoProps, staticProps) {
28
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
29
+ if (staticProps) _defineProperties(Constructor, staticProps);
30
+ return Constructor;
31
+ }
32
+ function _define_property(obj, key, value) {
33
+ if (key in obj) {
34
+ Object.defineProperty(obj, key, {
35
+ value: value,
36
+ enumerable: true,
37
+ configurable: true,
38
+ writable: true
39
+ });
40
+ } else {
41
+ obj[key] = value;
42
+ }
43
+ return obj;
44
+ }
45
+ function _interop_require_default(obj) {
46
+ return obj && obj.__esModule ? obj : {
47
+ default: obj
48
+ };
49
+ }
50
+ function _object_spread(target) {
51
+ for(var i = 1; i < arguments.length; i++){
52
+ var source = arguments[i] != null ? arguments[i] : {};
53
+ var ownKeys = Object.keys(source);
54
+ if (typeof Object.getOwnPropertySymbols === "function") {
55
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
56
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
57
+ }));
58
+ }
59
+ ownKeys.forEach(function(key) {
60
+ _define_property(target, key, source[key]);
61
+ });
62
+ }
63
+ return target;
64
+ }
65
+ function ownKeys(object, enumerableOnly) {
66
+ var keys = Object.keys(object);
67
+ if (Object.getOwnPropertySymbols) {
68
+ var symbols = Object.getOwnPropertySymbols(object);
69
+ if (enumerableOnly) {
70
+ symbols = symbols.filter(function(sym) {
71
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
72
+ });
73
+ }
74
+ keys.push.apply(keys, symbols);
75
+ }
76
+ return keys;
77
+ }
78
+ function _object_spread_props(target, source) {
79
+ source = source != null ? source : {};
80
+ if (Object.getOwnPropertyDescriptors) {
81
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
82
+ } else {
83
+ ownKeys(Object(source)).forEach(function(key) {
84
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
85
+ });
86
+ }
87
+ return target;
88
+ }
89
+ var NativeOrdersImpl = /*#__PURE__*/ function() {
90
+ "use strict";
91
+ function NativeOrdersImpl(address) {
92
+ _class_call_check(this, NativeOrdersImpl);
93
+ _define_property(this, "address", void 0);
94
+ _define_property(this, "iface", void 0);
95
+ this.address = address;
96
+ this.iface = new _ethers.Interface(_NativeOrderImplabijson.default);
97
+ }
98
+ _create_class(NativeOrdersImpl, [
99
+ {
100
+ key: "cancel",
101
+ value: function cancel(maker, order) {
102
+ return {
103
+ to: this.address,
104
+ value: 0n,
105
+ data: this.iface.encodeFunctionData('cancelOrder', [
106
+ _object_spread_props(_object_spread({}, order), {
107
+ maker: maker.toString()
108
+ })
109
+ ])
110
+ };
111
+ }
112
+ },
113
+ {
114
+ key: "cancelExpiredOrderByResolver",
115
+ value: function cancelExpiredOrderByResolver(maker, order, rewardLimit) {
116
+ return {
117
+ to: this.address,
118
+ value: 0n,
119
+ data: this.iface.encodeFunctionData('cancelExpiredOrderByResolver', [
120
+ _object_spread_props(_object_spread({}, order), {
121
+ maker: maker.toString()
122
+ }),
123
+ rewardLimit
124
+ ])
125
+ };
126
+ }
127
+ }
128
+ ]);
129
+ return NativeOrdersImpl;
130
+ }();
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "ProxyFactory", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return ProxyFactory;
9
+ }
10
+ });
11
+ var _byteutils = require("@1inch/byte-utils");
12
+ var _limitordersdk = require("@1inch/limit-order-sdk");
13
+ var _ethers = require("ethers");
14
+ var _assert = /*#__PURE__*/ _interop_require_default(require("assert"));
15
+ function _class_call_check(instance, Constructor) {
16
+ if (!(instance instanceof Constructor)) {
17
+ throw new TypeError("Cannot call a class as a function");
18
+ }
19
+ }
20
+ function _defineProperties(target, props) {
21
+ for(var i = 0; i < props.length; i++){
22
+ var descriptor = props[i];
23
+ descriptor.enumerable = descriptor.enumerable || false;
24
+ descriptor.configurable = true;
25
+ if ("value" in descriptor) descriptor.writable = true;
26
+ Object.defineProperty(target, descriptor.key, descriptor);
27
+ }
28
+ }
29
+ function _create_class(Constructor, protoProps, staticProps) {
30
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
31
+ if (staticProps) _defineProperties(Constructor, staticProps);
32
+ return Constructor;
33
+ }
34
+ function _define_property(obj, key, value) {
35
+ if (key in obj) {
36
+ Object.defineProperty(obj, key, {
37
+ value: value,
38
+ enumerable: true,
39
+ configurable: true,
40
+ writable: true
41
+ });
42
+ } else {
43
+ obj[key] = value;
44
+ }
45
+ return obj;
46
+ }
47
+ function _interop_require_default(obj) {
48
+ return obj && obj.__esModule ? obj : {
49
+ default: obj
50
+ };
51
+ }
52
+ var ProxyFactory = /*#__PURE__*/ function() {
53
+ "use strict";
54
+ function ProxyFactory(factory, implementation) {
55
+ _class_call_check(this, ProxyFactory);
56
+ _define_property(this, "factory", void 0);
57
+ _define_property(this, "implementation", void 0);
58
+ this.factory = factory;
59
+ this.implementation = implementation;
60
+ }
61
+ _create_class(ProxyFactory, [
62
+ {
63
+ key: "getProxyAddress",
64
+ value: /**
65
+ * Calculates deterministic address of proxy contract
66
+ *
67
+ * @see https://github.com/OpenZeppelin/openzeppelin-contracts/blob/69c8def5f222ff96f2b5beff05dfba996368aa79/contracts/proxy/Clones.sol#L60
68
+ *
69
+ * @param salt must be valid hex string
70
+ * @returns address of proxy contract
71
+ */ function getProxyAddress(salt) {
72
+ (0, _assert.default)((0, _byteutils.isHexBytes)(salt), 'invalid salt');
73
+ return new _limitordersdk.Address((0, _ethers.getCreate2Address)(this.factory.toString(), salt, ProxyFactory.calcProxyBytecodeHash(this.implementation)));
74
+ }
75
+ }
76
+ ], [
77
+ {
78
+ key: "calcProxyBytecodeHash",
79
+ value: /**
80
+ * See https://github.com/1inch/cross-chain-swap/blob/03d99b9604d8f7a5a396720fbe1059f7d94db762/contracts/libraries/ProxyHashLib.sol#L14
81
+ */ function calcProxyBytecodeHash(impl) {
82
+ return (0, _ethers.keccak256)("0x3d602d80600a3d3981f3363d3d373d3d3d363d73".concat((0, _byteutils.trim0x)(impl.toString()), "5af43d82803e903d91602b57fd5bf3"));
83
+ }
84
+ }
85
+ ]);
86
+ return ProxyFactory;
87
+ }();
@@ -13,8 +13,9 @@ var _assert = /*#__PURE__*/ _interop_require_default(require("assert"));
13
13
  var _fusionextension = require("./fusion-extension.js");
14
14
  var _sourcetrack = require("./source-track.js");
15
15
  var _surplusparams = require("./surplus-params.js");
16
+ var _constants = require("./constants.js");
16
17
  var _index = require("../amount-calculator/auction-calculator/index.js");
17
- var _constants = require("../constants.js");
18
+ var _constants1 = require("../constants.js");
18
19
  var _amounts = require("../utils/amounts.js");
19
20
  var _time = require("../utils/time.js");
20
21
  var _amountcalculator = require("../amount-calculator/amount-calculator.js");
@@ -143,10 +144,13 @@ var FusionOrder = /*#__PURE__*/ function() {
143
144
  if (orderInfo.makerAsset.isNative()) {
144
145
  throw new Error('use FusionOrder.fromNative to create order from native asset');
145
146
  }
147
+ var optimizeReceiverAddress = extra.optimizeReceiverAddress !== undefined ? extra.optimizeReceiverAddress : FusionOrder.defaultExtra.optimizeReceiverAddress;
146
148
  this.inner = new _limitordersdk.LimitOrder(_object_spread_props(_object_spread({}, orderInfo), {
147
149
  receiver: receiver,
148
150
  salt: saltWithInjectedTrackCode
149
- }), makerTraits, builtExtension);
151
+ }), makerTraits, builtExtension, {
152
+ optimizeReceiverAddress: optimizeReceiverAddress
153
+ });
150
154
  this.fusionExtension = extension;
151
155
  }
152
156
  _create_class(FusionOrder, [
@@ -444,6 +448,34 @@ var FusionOrder = /*#__PURE__*/ function() {
444
448
  value: function getAmountCalculator() {
445
449
  return _amountcalculator.AmountCalculator.fromExtension(this.fusionExtension);
446
450
  }
451
+ },
452
+ {
453
+ key: "isNative",
454
+ value: function isNative(chainId, ethOrderFactory, signature) {
455
+ return FusionOrder.isNativeOrder(chainId, ethOrderFactory, this.build(), signature);
456
+ }
457
+ },
458
+ {
459
+ key: "nativeSignature",
460
+ value: /**
461
+ * Returns signature for submitting native order on-chain
462
+ * Only valid if order is native
463
+ *
464
+ * @see FusionOrder.isNative
465
+ * @see FusionOrder.fromNative
466
+ */ function nativeSignature(maker) {
467
+ return new _limitordersdk.LimitOrder({
468
+ maker: maker,
469
+ makerAsset: this.makerAsset,
470
+ makingAmount: this.makingAmount,
471
+ takingAmount: this.takingAmount,
472
+ takerAsset: this.takerAsset,
473
+ receiver: this.receiver,
474
+ salt: this.salt
475
+ }, this.inner.makerTraits, undefined, {
476
+ optimizeReceiverAddress: false
477
+ }).toCalldata();
478
+ }
447
479
  }
448
480
  ], [
449
481
  {
@@ -455,6 +487,48 @@ var FusionOrder = /*#__PURE__*/ function() {
455
487
  return new FusionOrder(settlementExtension, orderInfo, details.auction, details.whitelist, details.surplus, extra);
456
488
  }
457
489
  },
490
+ {
491
+ key: "isNativeOrder",
492
+ value: function isNativeOrder(chainId, ethOrderFactory, order, signature) {
493
+ try {
494
+ var orderWithRealMaker = _limitordersdk.LimitOrder.fromCalldata(signature);
495
+ var expectedAddress = ethOrderFactory.getProxyAddress(orderWithRealMaker.getOrderHash(chainId));
496
+ return expectedAddress.equal(new _limitordersdk.Address(order.maker));
497
+ } catch (e) {
498
+ return false;
499
+ }
500
+ }
501
+ },
502
+ {
503
+ key: "fromNative",
504
+ value: /**
505
+ * Create new order from native asset
506
+ *
507
+ *
508
+ * Note, that such order should be submitted on-chain through `ETHOrders.depositForOrder` AND off-chain through submit to relayer
509
+ * // todo: update link
510
+ * @see ETHOrders.depositForOrder https://github.com/1inch/limit-order-protocol/blob/c100474444cd71cf7989cd8a63f375e72656b8b4/contracts/extensions/ETHOrders.sol#L89
511
+ */ function fromNative(chainId, ethOrdersFactory, /**
512
+ * Fusion extension address
513
+ * @see https://github.com/1inch/limit-order-settlement
514
+ */ settlementExtension, orderInfo, details, extra) {
515
+ var _orderInfo = _object_spread_props(_object_spread({}, orderInfo), {
516
+ makerAsset: _constants.CHAIN_TO_WRAPPER[chainId],
517
+ receiver: orderInfo.receiver && !orderInfo.receiver.isZero() ? orderInfo.receiver : orderInfo.maker
518
+ });
519
+ // create temp order to calc order hash
520
+ var _order = FusionOrder.new(settlementExtension, _orderInfo, details, _object_spread_props(_object_spread({}, extra), {
521
+ optimizeReceiverAddress: false
522
+ }));
523
+ var finalOrderInfo = _object_spread_props(_object_spread({}, _orderInfo), {
524
+ maker: ethOrdersFactory.getProxyAddress(_order.getOrderHash(chainId))
525
+ });
526
+ return new FusionOrder(settlementExtension, // use same salt to have same order hash. Remove extension hash from it
527
+ _object_spread_props(_object_spread({}, finalOrderInfo), {
528
+ salt: _order.salt >> 160n
529
+ }), details.auction, details.whitelist, details.surplus, extra);
530
+ }
531
+ },
458
532
  {
459
533
  key: "fromDataAndExtension",
460
534
  value: /**
@@ -484,10 +558,11 @@ var FusionOrder = /*#__PURE__*/ function() {
484
558
  allowPartialFills: makerTraits.isPartialFillAllowed(),
485
559
  enablePermit2: makerTraits.isPermit2(),
486
560
  nonce: makerTraits.nonceOrEpoch(),
487
- permit: extension.makerPermit === _constants.ZX ? undefined : _limitordersdk.Interaction.decode(extension.makerPermit).data,
561
+ permit: extension.makerPermit === _constants1.ZX ? undefined : _limitordersdk.Interaction.decode(extension.makerPermit).data,
488
562
  unwrapWETH: makerTraits.isNativeUnwrapEnabled(),
489
563
  orderExpirationDelay: orderExpirationDelay,
490
- fees: extra === null || extra === void 0 ? void 0 : extra.fees
564
+ fees: extra === null || extra === void 0 ? void 0 : extra.fees,
565
+ optimizeReceiverAddress: true
491
566
  });
492
567
  (0, _assert.default)(providedSalt === fusionOrder.salt, 'invalid salt for passed extension');
493
568
  return fusionOrder;
@@ -501,5 +576,6 @@ _define_property(FusionOrder, "defaultExtra", {
501
576
  allowMultipleFills: true,
502
577
  unwrapWETH: false,
503
578
  enablePermit2: false,
504
- orderExpirationDelay: 12n
579
+ orderExpirationDelay: 12n,
580
+ optimizeReceiverAddress: true
505
581
  });