@1inch/fusion-sdk 2.4.6 → 2.4.7-rc.0

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 (34) hide show
  1. package/README.md +174 -25
  2. package/dist/cjs/api/quoter/quoter.api.spec.js +1 -2
  3. package/dist/cjs/constants.js +17 -3
  4. package/dist/cjs/fusion-order/fusion-order.js +94 -0
  5. package/dist/cjs/fusion-order/fusion-order.spec.js +87 -0
  6. package/dist/cjs/fusion-order/index.js +1 -0
  7. package/dist/cjs/fusion-order/permit/constants.js +98 -0
  8. package/dist/cjs/fusion-order/permit/index.js +34 -0
  9. package/dist/cjs/fusion-order/permit/permit-transfer-from.js +115 -0
  10. package/dist/cjs/fusion-order/permit/permit-transfer-from.spec.js +232 -0
  11. package/dist/cjs/fusion-order/permit/transfer-from-suffix.js +76 -0
  12. package/dist/cjs/fusion-order/permit/utils.js +35 -0
  13. package/dist/esm/api/quoter/quoter.api.spec.js +1 -2
  14. package/dist/esm/constants.js +15 -1
  15. package/dist/esm/fusion-order/fusion-order.js +95 -1
  16. package/dist/esm/fusion-order/fusion-order.spec.js +87 -0
  17. package/dist/esm/fusion-order/index.js +1 -0
  18. package/dist/esm/fusion-order/permit/constants.js +71 -0
  19. package/dist/esm/fusion-order/permit/index.js +3 -0
  20. package/dist/esm/fusion-order/permit/permit-transfer-from.js +105 -0
  21. package/dist/esm/fusion-order/permit/permit-transfer-from.spec.js +228 -0
  22. package/dist/esm/fusion-order/permit/transfer-from-suffix.js +53 -0
  23. package/dist/esm/fusion-order/permit/utils.js +12 -0
  24. package/dist/esm/package.json +1 -1
  25. package/dist/types/src/constants.d.ts +1 -1
  26. package/dist/types/src/fusion-order/fusion-order.d.ts +5 -0
  27. package/dist/types/src/fusion-order/index.d.ts +1 -0
  28. package/dist/types/src/fusion-order/permit/constants.d.ts +7 -0
  29. package/dist/types/src/fusion-order/permit/index.d.ts +3 -0
  30. package/dist/types/src/fusion-order/permit/permit-transfer-from.d.ts +11 -0
  31. package/dist/types/src/fusion-order/permit/transfer-from-suffix.d.ts +10 -0
  32. package/dist/types/src/fusion-order/permit/utils.d.ts +3 -0
  33. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  34. package/package.json +1 -1
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: all[name]
9
+ });
10
+ }
11
+ _export(exports, {
12
+ PERMIT2_ADDRESSES: function() {
13
+ return PERMIT2_ADDRESSES;
14
+ },
15
+ PERMIT2_DOMAIN_NAME: function() {
16
+ return PERMIT2_DOMAIN_NAME;
17
+ },
18
+ PERMIT2_PROXY_ADDRESSES: function() {
19
+ return PERMIT2_PROXY_ADDRESSES;
20
+ },
21
+ PERMIT_TRANSFER_FROM_TYPES: function() {
22
+ return PERMIT_TRANSFER_FROM_TYPES;
23
+ },
24
+ TOKEN_PERMISSIONS: function() {
25
+ return TOKEN_PERMISSIONS;
26
+ }
27
+ });
28
+ var _constants = require("../../constants.js");
29
+ function _define_property(obj, key, value) {
30
+ if (key in obj) {
31
+ Object.defineProperty(obj, key, {
32
+ value: value,
33
+ enumerable: true,
34
+ configurable: true,
35
+ writable: true
36
+ });
37
+ } else {
38
+ obj[key] = value;
39
+ }
40
+ return obj;
41
+ }
42
+ function _object_spread(target) {
43
+ for(var i = 1; i < arguments.length; i++){
44
+ var source = arguments[i] != null ? arguments[i] : {};
45
+ var ownKeys = Object.keys(source);
46
+ if (typeof Object.getOwnPropertySymbols === "function") {
47
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
48
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
49
+ }));
50
+ }
51
+ ownKeys.forEach(function(key) {
52
+ _define_property(target, key, source[key]);
53
+ });
54
+ }
55
+ return target;
56
+ }
57
+ var PERMIT2_ADDRESS = '0x000000000022D473030F116dDEE9F6B43aC78BA3';
58
+ var PERMIT2_ADDRESS_ZK = '0x0000000000225e31d15943971f47ad3022f714fa';
59
+ var _obj;
60
+ var PERMIT2_ADDRESSES = (_obj = {}, _define_property(_obj, _constants.NetworkEnum.ZKSYNC, PERMIT2_ADDRESS_ZK), _define_property(_obj, _constants.NetworkEnum.ARBITRUM, PERMIT2_ADDRESS), _define_property(_obj, _constants.NetworkEnum.ETHEREUM, PERMIT2_ADDRESS), _define_property(_obj, _constants.NetworkEnum.POLYGON, PERMIT2_ADDRESS), _define_property(_obj, _constants.NetworkEnum.BINANCE, PERMIT2_ADDRESS), _define_property(_obj, _constants.NetworkEnum.AVALANCHE, PERMIT2_ADDRESS), _define_property(_obj, _constants.NetworkEnum.OPTIMISM, PERMIT2_ADDRESS), _define_property(_obj, _constants.NetworkEnum.FANTOM, PERMIT2_ADDRESS), _define_property(_obj, _constants.NetworkEnum.GNOSIS, PERMIT2_ADDRESS), _define_property(_obj, _constants.NetworkEnum.COINBASE, PERMIT2_ADDRESS), _define_property(_obj, _constants.NetworkEnum.LINEA, PERMIT2_ADDRESS), _define_property(_obj, _constants.NetworkEnum.SONIC, PERMIT2_ADDRESS), _define_property(_obj, _constants.NetworkEnum.UNICHAIN, PERMIT2_ADDRESS), _obj);
61
+ // todo: update
62
+ var PERMIT2_PROXY_ADDRESS = '0xcf56da25062c954b252515244dfefb739c254c23';
63
+ var PERMIT2_PROXY_ADDRESS_ZK = '0x0000000000000000000000000000000000000000';
64
+ var _obj1;
65
+ var PERMIT2_PROXY_ADDRESSES = (_obj1 = {}, _define_property(_obj1, _constants.NetworkEnum.ZKSYNC, PERMIT2_PROXY_ADDRESS_ZK), _define_property(_obj1, _constants.NetworkEnum.ARBITRUM, PERMIT2_PROXY_ADDRESS), _define_property(_obj1, _constants.NetworkEnum.ETHEREUM, PERMIT2_PROXY_ADDRESS), _define_property(_obj1, _constants.NetworkEnum.POLYGON, PERMIT2_PROXY_ADDRESS), _define_property(_obj1, _constants.NetworkEnum.BINANCE, PERMIT2_PROXY_ADDRESS), _define_property(_obj1, _constants.NetworkEnum.AVALANCHE, PERMIT2_PROXY_ADDRESS), _define_property(_obj1, _constants.NetworkEnum.OPTIMISM, PERMIT2_PROXY_ADDRESS), _define_property(_obj1, _constants.NetworkEnum.FANTOM, PERMIT2_PROXY_ADDRESS), _define_property(_obj1, _constants.NetworkEnum.GNOSIS, PERMIT2_PROXY_ADDRESS), _define_property(_obj1, _constants.NetworkEnum.COINBASE, PERMIT2_PROXY_ADDRESS), _define_property(_obj1, _constants.NetworkEnum.LINEA, PERMIT2_PROXY_ADDRESS), _define_property(_obj1, _constants.NetworkEnum.SONIC, PERMIT2_PROXY_ADDRESS), _define_property(_obj1, _constants.NetworkEnum.UNICHAIN, PERMIT2_PROXY_ADDRESS), _obj1);
66
+ var PERMIT2_DOMAIN_NAME = 'Permit2';
67
+ var TOKEN_PERMISSIONS = {
68
+ TokenPermissions: [
69
+ {
70
+ name: 'token',
71
+ type: 'address'
72
+ },
73
+ {
74
+ name: 'amount',
75
+ type: 'uint256'
76
+ }
77
+ ]
78
+ };
79
+ var PERMIT_TRANSFER_FROM_TYPES = _object_spread({
80
+ PermitTransferFrom: [
81
+ {
82
+ name: 'permitted',
83
+ type: 'TokenPermissions'
84
+ },
85
+ {
86
+ name: 'spender',
87
+ type: 'address'
88
+ },
89
+ {
90
+ name: 'nonce',
91
+ type: 'uint256'
92
+ },
93
+ {
94
+ name: 'deadline',
95
+ type: 'uint256'
96
+ }
97
+ ]
98
+ }, TOKEN_PERMISSIONS);
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: all[name]
9
+ });
10
+ }
11
+ _export(exports, {
12
+ getPermit2Address: function() {
13
+ return _utils.getPermit2Address;
14
+ },
15
+ getPermit2ProxyAddress: function() {
16
+ return _utils.getPermit2ProxyAddress;
17
+ }
18
+ });
19
+ _export_star(require("./permit-transfer-from.js"), exports);
20
+ _export_star(require("./transfer-from-suffix.js"), exports);
21
+ var _utils = require("./utils.js");
22
+ function _export_star(from, to) {
23
+ Object.keys(from).forEach(function(k) {
24
+ if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) {
25
+ Object.defineProperty(to, k, {
26
+ enumerable: true,
27
+ get: function() {
28
+ return from[k];
29
+ }
30
+ });
31
+ }
32
+ });
33
+ return from;
34
+ }
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "PermitTransferFrom", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return PermitTransferFrom;
9
+ }
10
+ });
11
+ var _constants = require("./constants.js");
12
+ var _utils = require("./utils.js");
13
+ var _transferfromsuffix = require("./transfer-from-suffix.js");
14
+ function _class_call_check(instance, Constructor) {
15
+ if (!(instance instanceof Constructor)) {
16
+ throw new TypeError("Cannot call a class as a function");
17
+ }
18
+ }
19
+ function _defineProperties(target, props) {
20
+ for(var i = 0; i < props.length; i++){
21
+ var descriptor = props[i];
22
+ descriptor.enumerable = descriptor.enumerable || false;
23
+ descriptor.configurable = true;
24
+ if ("value" in descriptor) descriptor.writable = true;
25
+ Object.defineProperty(target, descriptor.key, descriptor);
26
+ }
27
+ }
28
+ function _create_class(Constructor, protoProps, staticProps) {
29
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
30
+ if (staticProps) _defineProperties(Constructor, staticProps);
31
+ return Constructor;
32
+ }
33
+ function _define_property(obj, key, value) {
34
+ if (key in obj) {
35
+ Object.defineProperty(obj, key, {
36
+ value: value,
37
+ enumerable: true,
38
+ configurable: true,
39
+ writable: true
40
+ });
41
+ } else {
42
+ obj[key] = value;
43
+ }
44
+ return obj;
45
+ }
46
+ function _object_spread(target) {
47
+ for(var i = 1; i < arguments.length; i++){
48
+ var source = arguments[i] != null ? arguments[i] : {};
49
+ var ownKeys = Object.keys(source);
50
+ if (typeof Object.getOwnPropertySymbols === "function") {
51
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
52
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
53
+ }));
54
+ }
55
+ ownKeys.forEach(function(key) {
56
+ _define_property(target, key, source[key]);
57
+ });
58
+ }
59
+ return target;
60
+ }
61
+ var PermitTransferFrom = /*#__PURE__*/ function() {
62
+ "use strict";
63
+ function PermitTransferFrom(token, maxSpendAmount, spender, nonce, deadline) {
64
+ _class_call_check(this, PermitTransferFrom);
65
+ _define_property(this, "token", void 0);
66
+ _define_property(this, "maxSpendAmount", void 0);
67
+ _define_property(this, "spender", void 0);
68
+ _define_property(this, "nonce", void 0);
69
+ _define_property(this, "deadline", void 0);
70
+ this.token = token;
71
+ this.maxSpendAmount = maxSpendAmount;
72
+ this.spender = spender;
73
+ this.nonce = nonce;
74
+ this.deadline = deadline;
75
+ }
76
+ _create_class(PermitTransferFrom, [
77
+ {
78
+ key: "getTypedData",
79
+ value: function getTypedData(chainId) {
80
+ var permit2Address = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : (0, _utils.getPermit2Address)(chainId);
81
+ return {
82
+ primaryType: 'PermitTransferFrom',
83
+ types: _object_spread({}, _constants.PERMIT_TRANSFER_FROM_TYPES),
84
+ domain: {
85
+ name: _constants.PERMIT2_DOMAIN_NAME,
86
+ chainId: chainId,
87
+ verifyingContract: permit2Address
88
+ },
89
+ message: {
90
+ permitted: {
91
+ token: this.token.toString(),
92
+ amount: this.maxSpendAmount
93
+ },
94
+ spender: this.spender.toString(),
95
+ nonce: this.nonce,
96
+ deadline: this.deadline
97
+ }
98
+ };
99
+ }
100
+ },
101
+ {
102
+ key: "getTransferFromSuffix",
103
+ value: /**
104
+ * ABI-encodes the Permit2 suffix appended to `transferFrom(from,to,amount)` calldata.
105
+ *
106
+ * The limit order protocol calls `_callTransferFromWithSuffix` on the Permit2Proxy,
107
+ * which has `func_nZHTch(address,address,uint256,((address,uint256),uint256,uint256),bytes)`
108
+ * with selector 0x23b872dd (same as transferFrom). The suffix is everything after (from,to,amount).
109
+ */ function getTransferFromSuffix(signature) {
110
+ return (0, _transferfromsuffix.encodeTransferFromSuffix)(this.token, this.maxSpendAmount, this.nonce, this.deadline, signature);
111
+ }
112
+ }
113
+ ]);
114
+ return PermitTransferFrom;
115
+ }();
@@ -0,0 +1,232 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ var _limitordersdk = require("@1inch/limit-order-sdk");
6
+ var _ethers = require("ethers");
7
+ var _permittransferfrom = require("./permit-transfer-from.js");
8
+ var _constants = require("./constants.js");
9
+ var _utils = require("./utils.js");
10
+ var _constants1 = require("../../constants.js");
11
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
12
+ try {
13
+ var info = gen[key](arg);
14
+ var value = info.value;
15
+ } catch (error) {
16
+ reject(error);
17
+ return;
18
+ }
19
+ if (info.done) {
20
+ resolve(value);
21
+ } else {
22
+ Promise.resolve(value).then(_next, _throw);
23
+ }
24
+ }
25
+ function _async_to_generator(fn) {
26
+ return function() {
27
+ var self = this, args = arguments;
28
+ return new Promise(function(resolve, reject) {
29
+ var gen = fn.apply(self, args);
30
+ function _next(value) {
31
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
32
+ }
33
+ function _throw(err) {
34
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
35
+ }
36
+ _next(undefined);
37
+ });
38
+ };
39
+ }
40
+ function _define_property(obj, key, value) {
41
+ if (key in obj) {
42
+ Object.defineProperty(obj, key, {
43
+ value: value,
44
+ enumerable: true,
45
+ configurable: true,
46
+ writable: true
47
+ });
48
+ } else {
49
+ obj[key] = value;
50
+ }
51
+ return obj;
52
+ }
53
+ function _object_spread(target) {
54
+ for(var i = 1; i < arguments.length; i++){
55
+ var source = arguments[i] != null ? arguments[i] : {};
56
+ var ownKeys = Object.keys(source);
57
+ if (typeof Object.getOwnPropertySymbols === "function") {
58
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
59
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
60
+ }));
61
+ }
62
+ ownKeys.forEach(function(key) {
63
+ _define_property(target, key, source[key]);
64
+ });
65
+ }
66
+ return target;
67
+ }
68
+ function _ts_generator(thisArg, body) {
69
+ var f, y, t, g, _ = {
70
+ label: 0,
71
+ sent: function() {
72
+ if (t[0] & 1) throw t[1];
73
+ return t[1];
74
+ },
75
+ trys: [],
76
+ ops: []
77
+ };
78
+ return g = {
79
+ next: verb(0),
80
+ "throw": verb(1),
81
+ "return": verb(2)
82
+ }, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
83
+ return this;
84
+ }), g;
85
+ function verb(n) {
86
+ return function(v) {
87
+ return step([
88
+ n,
89
+ v
90
+ ]);
91
+ };
92
+ }
93
+ function step(op) {
94
+ if (f) throw new TypeError("Generator is already executing.");
95
+ while(_)try {
96
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
97
+ if (y = 0, t) op = [
98
+ op[0] & 2,
99
+ t.value
100
+ ];
101
+ switch(op[0]){
102
+ case 0:
103
+ case 1:
104
+ t = op;
105
+ break;
106
+ case 4:
107
+ _.label++;
108
+ return {
109
+ value: op[1],
110
+ done: false
111
+ };
112
+ case 5:
113
+ _.label++;
114
+ y = op[1];
115
+ op = [
116
+ 0
117
+ ];
118
+ continue;
119
+ case 7:
120
+ op = _.ops.pop();
121
+ _.trys.pop();
122
+ continue;
123
+ default:
124
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
125
+ _ = 0;
126
+ continue;
127
+ }
128
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
129
+ _.label = op[1];
130
+ break;
131
+ }
132
+ if (op[0] === 6 && _.label < t[1]) {
133
+ _.label = t[1];
134
+ t = op;
135
+ break;
136
+ }
137
+ if (t && _.label < t[2]) {
138
+ _.label = t[2];
139
+ _.ops.push(op);
140
+ break;
141
+ }
142
+ if (t[2]) _.ops.pop();
143
+ _.trys.pop();
144
+ continue;
145
+ }
146
+ op = body.call(thisArg, _);
147
+ } catch (e) {
148
+ op = [
149
+ 6,
150
+ e
151
+ ];
152
+ y = 0;
153
+ } finally{
154
+ f = t = 0;
155
+ }
156
+ if (op[0] & 5) throw op[1];
157
+ return {
158
+ value: op[0] ? op[1] : void 0,
159
+ done: true
160
+ };
161
+ }
162
+ }
163
+ describe('PermitTransferFrom', function() {
164
+ var token = new _limitordersdk.Address('0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2');
165
+ var spender = new _limitordersdk.Address('0x1111111254eeb25477b68fb85ed929f73a960582');
166
+ var maxSpendAmount = 1000000000000000000n;
167
+ var nonce = 42n;
168
+ var deadline = 1700000000n;
169
+ it('should return correct typed data for ethereum', function() {
170
+ var permit = new _permittransferfrom.PermitTransferFrom(token, maxSpendAmount, spender, nonce, deadline);
171
+ var typedData = permit.getTypedData(_constants1.NetworkEnum.ETHEREUM);
172
+ expect(typedData).toStrictEqual({
173
+ primaryType: 'PermitTransferFrom',
174
+ types: _constants.PERMIT_TRANSFER_FROM_TYPES,
175
+ domain: {
176
+ name: _constants.PERMIT2_DOMAIN_NAME,
177
+ chainId: _constants1.NetworkEnum.ETHEREUM,
178
+ verifyingContract: (0, _utils.getPermit2Address)(_constants1.NetworkEnum.ETHEREUM)
179
+ },
180
+ message: {
181
+ permitted: {
182
+ token: token.toString(),
183
+ amount: maxSpendAmount
184
+ },
185
+ spender: spender.toString(),
186
+ nonce: nonce,
187
+ deadline: deadline
188
+ }
189
+ });
190
+ });
191
+ it('should use zksync permit2 address for zksync chain', function() {
192
+ var permit = new _permittransferfrom.PermitTransferFrom(token, maxSpendAmount, spender, nonce, deadline);
193
+ var typedData = permit.getTypedData(_constants1.NetworkEnum.ZKSYNC);
194
+ expect(typedData.domain.verifyingContract).toBe((0, _utils.getPermit2Address)(_constants1.NetworkEnum.ZKSYNC));
195
+ });
196
+ it('should use custom permit2 address when provided', function() {
197
+ var customPermit2 = '0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa';
198
+ var permit = new _permittransferfrom.PermitTransferFrom(token, maxSpendAmount, spender, nonce, deadline);
199
+ var typedData = permit.getTypedData(_constants1.NetworkEnum.ETHEREUM, customPermit2);
200
+ expect(typedData.domain.verifyingContract).toBe(customPermit2);
201
+ });
202
+ it('should throw for unsupported chain id without custom address', function() {
203
+ var permit = new _permittransferfrom.PermitTransferFrom(token, maxSpendAmount, spender, nonce, deadline);
204
+ expect(function() {
205
+ return permit.getTypedData(999);
206
+ }).toThrow('unsupported chainId');
207
+ });
208
+ it('should produce signable typed data that recovers to the signer', /*#__PURE__*/ _async_to_generator(function() {
209
+ var wallet, permit, typedData, types, signature, recovered;
210
+ return _ts_generator(this, function(_state) {
211
+ switch(_state.label){
212
+ case 0:
213
+ wallet = _ethers.Wallet.createRandom();
214
+ permit = new _permittransferfrom.PermitTransferFrom(token, maxSpendAmount, spender, nonce, deadline);
215
+ typedData = permit.getTypedData(_constants1.NetworkEnum.ETHEREUM);
216
+ types = _object_spread({}, typedData.types);
217
+ delete types['EIP712Domain'];
218
+ return [
219
+ 4,
220
+ wallet.signTypedData(typedData.domain, types, typedData.message)
221
+ ];
222
+ case 1:
223
+ signature = _state.sent();
224
+ recovered = (0, _ethers.verifyTypedData)(typedData.domain, types, typedData.message, signature);
225
+ expect(recovered).toBe(wallet.address);
226
+ return [
227
+ 2
228
+ ];
229
+ }
230
+ });
231
+ }));
232
+ });
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: all[name]
9
+ });
10
+ }
11
+ _export(exports, {
12
+ decodeTransferFromSuffix: function() {
13
+ return decodeTransferFromSuffix;
14
+ },
15
+ encodeTransferFromSuffix: function() {
16
+ return encodeTransferFromSuffix;
17
+ }
18
+ });
19
+ var _limitordersdk = require("@1inch/limit-order-sdk");
20
+ var _ethers = require("ethers");
21
+ var _byteutils = require("@1inch/byte-utils");
22
+ var _assert = /*#__PURE__*/ _interop_require_default(require("assert"));
23
+ function _interop_require_default(obj) {
24
+ return obj && obj.__esModule ? obj : {
25
+ default: obj
26
+ };
27
+ }
28
+ var FUNC_N_ZH_TCH_ABI = [
29
+ 'address',
30
+ 'address',
31
+ 'uint256',
32
+ 'tuple(tuple(address token, uint256 amount) permitted, uint256 nonce, uint256 deadline)',
33
+ 'bytes'
34
+ ];
35
+ var ZERO_SLOT = '0'.repeat(64);
36
+ var STRIPPED_SLOTS = 3;
37
+ /**
38
+ * ABI-encodes the Permit2 suffix appended to `transferFrom(from,to,amount)` calldata.
39
+ *
40
+ * The limit order protocol calls `_callTransferFromWithSuffix` on the Permit2Proxy,
41
+ * which has `func_nZHTch(address,address,uint256,((address,uint256),uint256,uint256),bytes)`
42
+ * with selector 0x23b872dd (same as transferFrom). The suffix is everything after (from,to,amount).
43
+ */ function encodeTransferFromSuffix(token, amount, nonce, deadline, signature) {
44
+ var abiCoder = _ethers.AbiCoder.defaultAbiCoder();
45
+ var encoded = abiCoder.encode(FUNC_N_ZH_TCH_ABI, [
46
+ _limitordersdk.Address.ZERO_ADDRESS.toString(),
47
+ _limitordersdk.Address.ZERO_ADDRESS.toString(),
48
+ 0n,
49
+ {
50
+ permitted: {
51
+ token: token.toString(),
52
+ amount: amount
53
+ },
54
+ nonce: nonce,
55
+ deadline: deadline
56
+ },
57
+ signature
58
+ ]);
59
+ var strippedHexChars = STRIPPED_SLOTS * 32 * 2;
60
+ return '0x' + (0, _byteutils.trim0x)(encoded).slice(strippedHexChars);
61
+ }
62
+ function decodeTransferFromSuffix(suffix) {
63
+ var restored = '0x' + ZERO_SLOT.repeat(STRIPPED_SLOTS) + suffix.slice(2);
64
+ var abiCoder = _ethers.AbiCoder.defaultAbiCoder();
65
+ var decoded = abiCoder.decode(FUNC_N_ZH_TCH_ABI, restored);
66
+ var permit = decoded[3];
67
+ var sig = decoded[4];
68
+ (0, _assert.default)(sig.length > 0, 'empty permit signature');
69
+ return {
70
+ token: new _limitordersdk.Address(permit.permitted.token),
71
+ amount: BigInt(permit.permitted.amount),
72
+ nonce: BigInt(permit.nonce),
73
+ deadline: BigInt(permit.deadline),
74
+ signature: sig
75
+ };
76
+ }
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: all[name]
9
+ });
10
+ }
11
+ _export(exports, {
12
+ getPermit2Address: function() {
13
+ return getPermit2Address;
14
+ },
15
+ getPermit2ProxyAddress: function() {
16
+ return getPermit2ProxyAddress;
17
+ }
18
+ });
19
+ var _limitordersdk = require("@1inch/limit-order-sdk");
20
+ var _assert = /*#__PURE__*/ _interop_require_default(require("assert"));
21
+ var _constants = require("./constants.js");
22
+ var _constants1 = require("../../constants.js");
23
+ function _interop_require_default(obj) {
24
+ return obj && obj.__esModule ? obj : {
25
+ default: obj
26
+ };
27
+ }
28
+ function getPermit2Address(chainId) {
29
+ (0, _assert.default)(_constants1.NetworkEnum[chainId], 'unsupported chainId');
30
+ return _constants.PERMIT2_ADDRESSES[chainId];
31
+ }
32
+ function getPermit2ProxyAddress(chainId) {
33
+ (0, _assert.default)(_constants1.NetworkEnum[chainId], 'unsupported chainId');
34
+ return new _limitordersdk.Address(_constants.PERMIT2_PROXY_ADDRESSES[chainId]);
35
+ }
@@ -128,7 +128,6 @@ import { QuoterRequest } from './quoter.request.js';
128
128
  import { Quote } from './quote/index.js';
129
129
  import { PresetEnum } from './types.js';
130
130
  import { QuoterCustomPresetRequest } from './quoter-custom-preset.request.js';
131
- import { ONE_INCH_LIMIT_ORDER_V4 } from '../../constants.js';
132
131
  describe('Quoter API', function() {
133
132
  var httpProvider;
134
133
  beforeEach(function() {
@@ -240,7 +239,7 @@ describe('Quoter API', function() {
240
239
  ],
241
240
  fee: {
242
241
  whitelistDiscountPercent: 1,
243
- receiver: ONE_INCH_LIMIT_ORDER_V4,
242
+ receiver: '0x02f92800F57BCD74066F5709F1Daa1A4302Df875',
244
243
  bps: 10
245
244
  },
246
245
  marketAmount: '626772029219852913'
@@ -1,3 +1,16 @@
1
+ function _define_property(obj, key, value) {
2
+ if (key in obj) {
3
+ Object.defineProperty(obj, key, {
4
+ value: value,
5
+ enumerable: true,
6
+ configurable: true,
7
+ writable: true
8
+ });
9
+ } else {
10
+ obj[key] = value;
11
+ }
12
+ return obj;
13
+ }
1
14
  export var ZX = '0x';
2
15
  export var NetworkEnum = /*#__PURE__*/ function(NetworkEnum) {
3
16
  NetworkEnum[NetworkEnum["ETHEREUM"] = 1] = "ETHEREUM";
@@ -15,7 +28,8 @@ export var NetworkEnum = /*#__PURE__*/ function(NetworkEnum) {
15
28
  NetworkEnum[NetworkEnum["UNICHAIN"] = 130] = "UNICHAIN";
16
29
  return NetworkEnum;
17
30
  }({});
18
- export var ONE_INCH_LIMIT_ORDER_V4 = '0x111111125421ca6dc452d289314280a0f8842a65';
31
+ var _obj;
32
+ export var ONE_INCH_LIMIT_ORDER_V4_ADDRESSES = (_obj = {}, _define_property(_obj, 324, '0x6fd4383cb451173d5f9304f041c7bcbf27d561ff'), _define_property(_obj, 1, '0x111111125421ca6dc452d289314280a0f8842a65'), _define_property(_obj, 137, '0x111111125421ca6dc452d289314280a0f8842a65'), _define_property(_obj, 56, '0x111111125421ca6dc452d289314280a0f8842a65'), _define_property(_obj, 42161, '0x111111125421ca6dc452d289314280a0f8842a65'), _define_property(_obj, 43114, '0x111111125421ca6dc452d289314280a0f8842a65'), _define_property(_obj, 10, '0x111111125421ca6dc452d289314280a0f8842a65'), _define_property(_obj, 250, '0x111111125421ca6dc452d289314280a0f8842a65'), _define_property(_obj, 100, '0x111111125421ca6dc452d289314280a0f8842a65'), _define_property(_obj, 8453, '0x111111125421ca6dc452d289314280a0f8842a65'), _define_property(_obj, 59144, '0x111111125421ca6dc452d289314280a0f8842a65'), _define_property(_obj, 146, '0x111111125421ca6dc452d289314280a0f8842a65'), _define_property(_obj, 130, '0x111111125421ca6dc452d289314280a0f8842a65'), _obj);
19
33
  export var UINT_160_MAX = (1n << 160n) - 1n;
20
34
  export var UINT_16_MAX = (1n << 16n) - 1n;
21
35
  export var UINT_80_MAX = (1n << 80n) - 1n;