@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.
- package/dist/cjs/abi/NativeOrderFactory.abi.json +217 -0
- package/dist/cjs/abi/{ETHOrders.abi.json → NativeOrderImpl.abi.json} +110 -255
- package/dist/cjs/api/quoter/quote/quote.js +6 -4
- package/dist/cjs/api/quoter/quoter.request.js +0 -3
- package/dist/cjs/api/quoter/quoter.request.spec.js +0 -15
- package/dist/cjs/api/quoter/types.js +0 -2
- package/dist/cjs/contracts/index.js +21 -0
- package/dist/cjs/contracts/native-order-factory.js +115 -0
- package/dist/cjs/contracts/native-order-impl.js +130 -0
- package/dist/cjs/contracts/proxy-factory.js +87 -0
- package/dist/cjs/fusion-order/fusion-order.js +81 -5
- package/dist/cjs/fusion-order/fusion-order.spec.js +106 -0
- package/dist/cjs/fusion-order/index.js +0 -1
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/sdk/sdk.js +79 -40
- package/dist/esm/abi/NativeOrderFactory.abi.json +217 -0
- package/dist/esm/abi/{ETHOrders.abi.json → NativeOrderImpl.abi.json} +110 -255
- package/dist/esm/api/quoter/quote/quote.js +7 -5
- package/dist/esm/api/quoter/quoter.request.js +0 -3
- package/dist/esm/api/quoter/quoter.request.spec.js +0 -15
- package/dist/esm/api/quoter/types.js +0 -2
- package/dist/esm/contracts/index.js +4 -0
- package/dist/esm/contracts/native-order-factory.js +100 -0
- package/dist/esm/contracts/native-order-impl.js +115 -0
- package/dist/esm/contracts/proxy-factory.js +72 -0
- package/dist/esm/fusion-order/fusion-order.js +79 -3
- package/dist/esm/fusion-order/fusion-order.spec.js +106 -0
- package/dist/esm/fusion-order/index.js +0 -1
- package/dist/esm/fusion-order/types.js +4 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/package.json +1 -1
- package/dist/esm/sdk/sdk.js +79 -40
- package/dist/types/src/api/quoter/quote/quote.d.ts +4 -3
- package/dist/types/src/api/quoter/types.d.ts +2 -1
- package/dist/types/src/contracts/index.d.ts +4 -0
- package/dist/types/src/contracts/native-order-factory.d.ts +9 -0
- package/dist/types/src/contracts/native-order-impl.d.ts +9 -0
- package/dist/types/src/contracts/proxy-factory.d.ts +8 -0
- package/dist/types/src/fusion-order/fusion-order.d.ts +6 -0
- package/dist/types/src/fusion-order/index.d.ts +0 -1
- package/dist/types/src/fusion-order/types.d.ts +1 -0
- package/dist/types/src/index.d.ts +1 -0
- package/dist/types/src/sdk/sdk.d.ts +4 -0
- package/dist/types/src/sdk/types.d.ts +2 -1
- package/dist/types/tsconfig.types.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/dist/cjs/contracts/eth-orders.extension.js +0 -105
- package/dist/cjs/fusion-order/fusion-order-from-native.js +0 -183
- package/dist/esm/contracts/eth-orders.extension.js +0 -90
- package/dist/esm/fusion-order/fusion-order-from-native.js +0 -173
- package/dist/types/src/contracts/eth-orders.extension.d.ts +0 -11
- 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, "
|
|
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.
|
|
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.
|
|
192
|
-
return _index.
|
|
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
|
|
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 ===
|
|
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
|
});
|