@1inch/fusion-sdk 2.3.8 → 2.3.9-rc.1

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 (46) hide show
  1. package/dist/cjs/abi/NativeOrderFactory.abi.json +217 -0
  2. package/dist/cjs/abi/NativeOrderImpl.abi.json +281 -0
  3. package/dist/cjs/api/quoter/quote/quote.js +29 -4
  4. package/dist/cjs/contracts/index.js +20 -0
  5. package/dist/cjs/contracts/native-order-factory.js +115 -0
  6. package/dist/cjs/contracts/native-order-impl.js +129 -0
  7. package/dist/cjs/contracts/proxy-factory.js +87 -0
  8. package/dist/cjs/contracts/types.js +4 -0
  9. package/dist/cjs/fusion-order/cancellation-auction.js +81 -0
  10. package/dist/cjs/fusion-order/fusion-order.js +71 -25
  11. package/dist/cjs/fusion-order/fusion-order.spec.js +73 -0
  12. package/dist/cjs/fusion-order/index.js +1 -0
  13. package/dist/cjs/fusion-order/types.js +4 -0
  14. package/dist/cjs/index.js +1 -0
  15. package/dist/cjs/sdk/sdk.js +83 -28
  16. package/dist/esm/abi/NativeOrderFactory.abi.json +217 -0
  17. package/dist/esm/abi/NativeOrderImpl.abi.json +281 -0
  18. package/dist/esm/api/quoter/quote/quote.js +24 -4
  19. package/dist/esm/contracts/index.js +3 -0
  20. package/dist/esm/contracts/native-order-factory.js +100 -0
  21. package/dist/esm/contracts/native-order-impl.js +114 -0
  22. package/dist/esm/contracts/proxy-factory.js +72 -0
  23. package/dist/esm/contracts/types.js +1 -0
  24. package/dist/esm/fusion-order/cancellation-auction.js +66 -0
  25. package/dist/esm/fusion-order/fusion-order.js +69 -23
  26. package/dist/esm/fusion-order/fusion-order.spec.js +73 -0
  27. package/dist/esm/fusion-order/index.js +1 -0
  28. package/dist/esm/fusion-order/types.js +11 -0
  29. package/dist/esm/index.js +1 -0
  30. package/dist/esm/package.json +1 -1
  31. package/dist/esm/sdk/sdk.js +83 -28
  32. package/dist/types/src/api/quoter/quote/quote.d.ts +3 -0
  33. package/dist/types/src/api/quoter/types.d.ts +2 -0
  34. package/dist/types/src/contracts/index.d.ts +3 -0
  35. package/dist/types/src/contracts/native-order-factory.d.ts +9 -0
  36. package/dist/types/src/contracts/native-order-impl.d.ts +10 -0
  37. package/dist/types/src/contracts/proxy-factory.d.ts +8 -0
  38. package/dist/types/src/contracts/types.d.ts +6 -0
  39. package/dist/types/src/fusion-order/cancellation-auction.d.ts +7 -0
  40. package/dist/types/src/fusion-order/fusion-order.d.ts +9 -27
  41. package/dist/types/src/fusion-order/index.d.ts +1 -0
  42. package/dist/types/src/fusion-order/types.d.ts +20 -0
  43. package/dist/types/src/index.d.ts +1 -0
  44. package/dist/types/src/sdk/sdk.d.ts +4 -0
  45. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  46. package/package.json +1 -1
@@ -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,129 @@
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.build()), {
107
+ maker: maker.toString()
108
+ })
109
+ ])
110
+ };
111
+ }
112
+ },
113
+ {
114
+ key: "cancelExpiredOrderByResolver",
115
+ value: function cancelExpiredOrderByResolver(maker, order) {
116
+ return {
117
+ to: this.address,
118
+ value: 0n,
119
+ data: this.iface.encodeFunctionData('cancelExpiredOrderByResolver', [
120
+ _object_spread_props(_object_spread({}, order.build()), {
121
+ maker: maker.toString()
122
+ })
123
+ ])
124
+ };
125
+ }
126
+ }
127
+ ]);
128
+ return NativeOrdersImpl;
129
+ }();
@@ -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
+ }();
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "CancellationAuction", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return CancellationAuction;
9
+ }
10
+ });
11
+ var _byteutils = require("@1inch/byte-utils");
12
+ var _assert = /*#__PURE__*/ _interop_require_default(require("assert"));
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
+ var CancellationAuction = /*#__PURE__*/ function() {
51
+ "use strict";
52
+ function CancellationAuction(duration, /**
53
+ * Value in bps, i.e. 5000 for 50%
54
+ *
55
+ * Maximum reward (as percentage of gas cost) that resolver receives for cancelling an expired order.
56
+ * The reward is deducted from the order's making amount.
57
+ * To make order cancellation attractive to resolver max reward should be >= 100%
58
+ *
59
+ * @example Order: 1 ETH, Cancellation gas: 0.00001 ETH, Reward: 50%
60
+ * → Resolver gets: 0.000005 ETH (50% of gas cost)
61
+ * → User gets back: 0.999995 ETH
62
+ */ maxRewardBps) {
63
+ _class_call_check(this, CancellationAuction);
64
+ _define_property(this, "duration", void 0);
65
+ _define_property(this, "maxRewardBps", void 0);
66
+ this.duration = duration;
67
+ this.maxRewardBps = maxRewardBps;
68
+ (0, _assert.default)(duration <= _byteutils.UINT_32_MAX, 'max cancellation auction duration must be <= UINT_32_MAX');
69
+ (0, _assert.default)(maxRewardBps <= _byteutils.UINT_16_MAX, 'max cancellation auction maxRewardBps must be <= UINT_16_MAX');
70
+ }
71
+ _create_class(CancellationAuction, [
72
+ {
73
+ key: "build",
74
+ value: function build() {
75
+ return this.duration << 16n | this.maxRewardBps;
76
+ }
77
+ }
78
+ ]);
79
+ return CancellationAuction;
80
+ }();
81
+ _define_property(CancellationAuction, "ZERO", new CancellationAuction(0n, 0n));
@@ -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");
@@ -100,18 +101,7 @@ var FusionOrder = /*#__PURE__*/ function() {
100
101
  * Fusion extension address
101
102
  * @see https://github.com/1inch/limit-order-settlement
102
103
  */ settlementExtensionContract, orderInfo, auctionDetails, whitelist) {
103
- var surplusParams = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : _surplusparams.SurplusParams.NO_FEE, extra = arguments.length > 5 && arguments[5] !== void 0 ? arguments[5] : /**
104
- * Required if `allowPartialFills` or `allowMultipleFills` is false
105
- */ /**
106
- * 0x prefixed without the token address
107
- */ /**
108
- * Default is true
109
- */ /**
110
- * Default is true
111
- */ /**
112
- * Order will expire in `orderExpirationDelay` after auction ends
113
- * Default 12s
114
- */ FusionOrder.defaultExtra, extension = arguments.length > 6 && arguments[6] !== void 0 ? arguments[6] : new _fusionextension.FusionExtension(settlementExtensionContract, auctionDetails, whitelist, surplusParams, {
104
+ var surplusParams = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : _surplusparams.SurplusParams.NO_FEE, extra = arguments.length > 5 && arguments[5] !== void 0 ? arguments[5] : FusionOrder.defaultExtra, extension = arguments.length > 6 && arguments[6] !== void 0 ? arguments[6] : new _fusionextension.FusionExtension(settlementExtensionContract, auctionDetails, whitelist, surplusParams, {
115
105
  makerPermit: extra.permit ? new _limitordersdk.Interaction(orderInfo.makerAsset, extra.permit) : undefined,
116
106
  customReceiver: orderInfo.receiver,
117
107
  fees: extra === null || extra === void 0 ? void 0 : extra.fees
@@ -151,6 +141,9 @@ var FusionOrder = /*#__PURE__*/ function() {
151
141
  var builtExtension = extension.build();
152
142
  var salt = _limitordersdk.LimitOrder.buildSalt(builtExtension, orderInfo.salt);
153
143
  var saltWithInjectedTrackCode = orderInfo.salt ? salt : (0, _sourcetrack.injectTrackCode)(salt, extra.source);
144
+ if (orderInfo.makerAsset.isNative()) {
145
+ throw new Error('use FusionOrder.fromNative to create order from native asset');
146
+ }
154
147
  this.inner = new _limitordersdk.LimitOrder(_object_spread_props(_object_spread({}, orderInfo), {
155
148
  receiver: receiver,
156
149
  salt: saltWithInjectedTrackCode
@@ -452,6 +445,32 @@ var FusionOrder = /*#__PURE__*/ function() {
452
445
  value: function getAmountCalculator() {
453
446
  return _amountcalculator.AmountCalculator.fromExtension(this.fusionExtension);
454
447
  }
448
+ },
449
+ {
450
+ key: "isNative",
451
+ value: function isNative(chainId, ethOrderFactory, signature) {
452
+ return FusionOrder.isNativeOrder(chainId, ethOrderFactory, this.build(), signature);
453
+ }
454
+ },
455
+ {
456
+ key: "nativeSignature",
457
+ value: /**
458
+ * Returns signature for submitting native order on-chain
459
+ * Only valid if order is native
460
+ *
461
+ * @see FusionOrder.isNative
462
+ * @see FusionOrder.fromNative
463
+ */ function nativeSignature(maker) {
464
+ return new _limitordersdk.LimitOrder({
465
+ maker: maker,
466
+ makerAsset: this.makerAsset,
467
+ makingAmount: this.makingAmount,
468
+ takingAmount: this.takingAmount,
469
+ takerAsset: this.takerAsset,
470
+ receiver: this.receiver,
471
+ salt: this.salt
472
+ }, this.inner.makerTraits).toCalldata();
473
+ }
455
474
  }
456
475
  ], [
457
476
  {
@@ -459,20 +478,47 @@ var FusionOrder = /*#__PURE__*/ function() {
459
478
  value: function _new(/**
460
479
  * Fusion extension address
461
480
  * @see https://github.com/1inch/limit-order-settlement
462
- */ settlementExtension, orderInfo, details, extra) /**
463
- * Required if `allowPartialFills` or `allowMultipleFills` is false
464
- * Max size is 40bit
465
- */ /**
466
- * Default is true
467
- */ /**
468
- * Default is true
469
- */ /**
470
- * Order will expire in `orderExpirationDelay` after auction ends
471
- * Default 12s
472
- */ {
481
+ */ settlementExtension, orderInfo, details, extra) {
473
482
  return new FusionOrder(settlementExtension, orderInfo, details.auction, details.whitelist, details.surplus, extra);
474
483
  }
475
484
  },
485
+ {
486
+ key: "isNativeOrder",
487
+ value: function isNativeOrder(chainId, ethOrderFactory, order, signature) {
488
+ try {
489
+ var orderWithRealMaker = _limitordersdk.LimitOrder.fromCalldata(signature);
490
+ var expectedAddress = ethOrderFactory.getProxyAddress(orderWithRealMaker.getOrderHash(chainId));
491
+ return expectedAddress.equal(new _limitordersdk.Address(order.maker));
492
+ } catch (e) {
493
+ return false;
494
+ }
495
+ }
496
+ },
497
+ {
498
+ key: "fromNative",
499
+ value: /**
500
+ * Create new order from native asset
501
+ *
502
+ *
503
+ * Note, that such order should be submitted on-chain through `ETHOrders.depositForOrder` AND off-chain through submit to relayer
504
+ * // todo: update link
505
+ * @see ETHOrders.depositForOrder https://github.com/1inch/limit-order-protocol/blob/c100474444cd71cf7989cd8a63f375e72656b8b4/contracts/extensions/ETHOrders.sol#L89
506
+ */ function fromNative(chainId, ethOrdersFactory, /**
507
+ * Fusion extension address
508
+ * @see https://github.com/1inch/limit-order-settlement
509
+ */ settlementExtension, orderInfo, details, extra) {
510
+ var _orderInfo = _object_spread_props(_object_spread({}, orderInfo), {
511
+ makerAsset: _constants.CHAIN_TO_WRAPPER[chainId],
512
+ receiver: orderInfo.receiver || orderInfo.maker
513
+ });
514
+ // create temp order to calc order hash
515
+ var _order = FusionOrder.new(settlementExtension, _orderInfo, details, extra);
516
+ var finalOrderInfo = _object_spread_props(_object_spread({}, _orderInfo), {
517
+ maker: ethOrdersFactory.getProxyAddress(_order.getOrderHash(chainId))
518
+ });
519
+ return new FusionOrder(settlementExtension, finalOrderInfo, details.auction, details.whitelist, details.surplus, extra);
520
+ }
521
+ },
476
522
  {
477
523
  key: "fromDataAndExtension",
478
524
  value: /**
@@ -502,7 +548,7 @@ var FusionOrder = /*#__PURE__*/ function() {
502
548
  allowPartialFills: makerTraits.isPartialFillAllowed(),
503
549
  enablePermit2: makerTraits.isPermit2(),
504
550
  nonce: makerTraits.nonceOrEpoch(),
505
- permit: extension.makerPermit === _constants.ZX ? undefined : _limitordersdk.Interaction.decode(extension.makerPermit).data,
551
+ permit: extension.makerPermit === _constants1.ZX ? undefined : _limitordersdk.Interaction.decode(extension.makerPermit).data,
506
552
  unwrapWETH: makerTraits.isNativeUnwrapEnabled(),
507
553
  orderExpirationDelay: orderExpirationDelay,
508
554
  fees: extra === null || extra === void 0 ? void 0 : extra.fees
@@ -9,6 +9,8 @@ var _index = require("./auction-details/index.js");
9
9
  var _index1 = require("./whitelist/index.js");
10
10
  var _surplusparams = require("./surplus-params.js");
11
11
  var _index2 = require("./fees/index.js");
12
+ var _proxyfactory = require("../contracts/proxy-factory.js");
13
+ var _constants = require("../constants.js");
12
14
  var _index3 = require("../amount-calculator/index.js");
13
15
  var _time = require("../utils/time.js");
14
16
  describe('Fusion Order', function() {
@@ -296,3 +298,74 @@ describe('Fusion Order', function() {
296
298
  expect(surplus).toEqual(25000000n);
297
299
  });
298
300
  });
301
+ describe('FusionOrder Native', function() {
302
+ it('should correct detect that order is from native asset', function() {
303
+ var ethOrderFactory = new _proxyfactory.ProxyFactory(_limitordersdk.Address.fromBigInt(1n), _limitordersdk.Address.fromBigInt(2n));
304
+ var chainId = _constants.NetworkEnum.ETHEREUM;
305
+ var settlementExt = _limitordersdk.Address.fromBigInt(3n);
306
+ var maker = new _limitordersdk.Address('0x00000000219ab540356cbb839cbe05303d7705fa');
307
+ var nativeOrder = _fusionorder.FusionOrder.fromNative(chainId, ethOrderFactory, settlementExt, {
308
+ takerAsset: new _limitordersdk.Address('0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'),
309
+ makingAmount: 1000000000000000000n,
310
+ takingAmount: 1420000000n,
311
+ maker: maker,
312
+ salt: 10n
313
+ }, {
314
+ auction: new _index.AuctionDetails({
315
+ duration: 180n,
316
+ startTime: 1673548149n,
317
+ initialRateBump: 50000,
318
+ points: [
319
+ {
320
+ coefficient: 20000,
321
+ delay: 12
322
+ }
323
+ ]
324
+ }),
325
+ whitelist: _index1.Whitelist.new(1673548139n, [
326
+ {
327
+ address: new _limitordersdk.Address('0x00000000219ab540356cbb839cbe05303d7705fa'),
328
+ allowFrom: 0n
329
+ }
330
+ ]),
331
+ surplus: _surplusparams.SurplusParams.NO_FEE
332
+ });
333
+ expect(nativeOrder.isNative(chainId, ethOrderFactory, nativeOrder.nativeSignature(maker))).toEqual(true);
334
+ expect(_fusionorder.FusionOrder.fromDataAndExtension(nativeOrder.build(), nativeOrder.extension).isNative(chainId, ethOrderFactory, nativeOrder.nativeSignature(maker))).toEqual(true);
335
+ });
336
+ it('should correct detect that order is NOT from native asset', function() {
337
+ var ethOrderFactory = new _proxyfactory.ProxyFactory(_limitordersdk.Address.fromBigInt(1n), _limitordersdk.Address.fromBigInt(2n));
338
+ var chainId = _constants.NetworkEnum.ETHEREUM;
339
+ var settlementExt = _limitordersdk.Address.fromBigInt(3n);
340
+ var maker = new _limitordersdk.Address('0x00000000219ab540356cbb839cbe05303d7705fa');
341
+ var nativeOrder = _fusionorder.FusionOrder.new(settlementExt, {
342
+ makerAsset: new _limitordersdk.Address('0x1000000000000000000000000000000000000000'),
343
+ takerAsset: new _limitordersdk.Address('0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'),
344
+ makingAmount: 1000000000000000000n,
345
+ takingAmount: 1420000000n,
346
+ maker: maker,
347
+ salt: 10n
348
+ }, {
349
+ auction: new _index.AuctionDetails({
350
+ duration: 180n,
351
+ startTime: 1673548149n,
352
+ initialRateBump: 50000,
353
+ points: [
354
+ {
355
+ coefficient: 20000,
356
+ delay: 12
357
+ }
358
+ ]
359
+ }),
360
+ whitelist: _index1.Whitelist.new(1673548139n, [
361
+ {
362
+ address: new _limitordersdk.Address('0x00000000219ab540356cbb839cbe05303d7705fa'),
363
+ allowFrom: 0n
364
+ }
365
+ ]),
366
+ surplus: _surplusparams.SurplusParams.NO_FEE
367
+ });
368
+ expect(nativeOrder.isNative(chainId, ethOrderFactory, nativeOrder.nativeSignature(maker))).toEqual(false);
369
+ expect(_fusionorder.FusionOrder.fromDataAndExtension(nativeOrder.build(), nativeOrder.extension).isNative(chainId, ethOrderFactory, nativeOrder.nativeSignature(maker))).toEqual(false);
370
+ });
371
+ });
@@ -15,6 +15,7 @@ _export_star(require("./fusion-extension.js"), exports);
15
15
  _export_star(require("./fees/index.js"), exports);
16
16
  var _constants = require("./constants.js");
17
17
  _export_star(require("./surplus-params.js"), exports);
18
+ _export_star(require("./cancellation-auction.js"), exports);
18
19
  function _export_star(from, to) {
19
20
  Object.keys(from).forEach(function(k) {
20
21
  if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) {
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
package/dist/cjs/index.js CHANGED
@@ -76,6 +76,7 @@ _export_star(require("./utils/time.js"), exports);
76
76
  _export_star(require("./validations.js"), exports);
77
77
  _export_star(require("./ws-api/index.js"), exports);
78
78
  _export_star(require("./errors.js"), exports);
79
+ _export_star(require("./contracts/index.js"), exports);
79
80
  var _index = require("./api/index.js");
80
81
  function _export_star(from, to) {
81
82
  Object.keys(from).forEach(function(k) {