@1inch/fusion-sdk 2.4.7-rc.1 → 2.4.7-rc.3

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 (51) hide show
  1. package/README.md +174 -25
  2. package/dist/cjs/api/quoter/quote/quote.js +6 -20
  3. package/dist/cjs/api/quoter/quoter.api.spec.js +6 -103
  4. package/dist/cjs/api/quoter/quoter.request.js +4 -1
  5. package/dist/cjs/api/quoter/quoter.request.spec.js +8 -2
  6. package/dist/cjs/constants.js +19 -1
  7. package/dist/cjs/fusion-order/fusion-order.js +120 -0
  8. package/dist/cjs/fusion-order/fusion-order.spec.js +100 -0
  9. package/dist/cjs/fusion-order/index.js +1 -0
  10. package/dist/cjs/fusion-order/permit/constants.js +98 -0
  11. package/dist/cjs/fusion-order/permit/index.js +34 -0
  12. package/dist/cjs/fusion-order/permit/permit-transfer-from.js +115 -0
  13. package/dist/cjs/fusion-order/permit/permit-transfer-from.spec.js +232 -0
  14. package/dist/cjs/fusion-order/permit/transfer-from-suffix.js +61 -0
  15. package/dist/cjs/fusion-order/permit/utils.js +35 -0
  16. package/dist/cjs/index.js +0 -3
  17. package/dist/cjs/sdk/README.md +14 -18
  18. package/dist/esm/api/quoter/quote/quote.js +6 -20
  19. package/dist/esm/api/quoter/quote/types.js +3 -15
  20. package/dist/esm/api/quoter/quoter.api.spec.js +6 -103
  21. package/dist/esm/api/quoter/quoter.request.js +4 -1
  22. package/dist/esm/api/quoter/quoter.request.spec.js +8 -2
  23. package/dist/esm/constants.js +16 -1
  24. package/dist/esm/fusion-order/fusion-order.js +121 -1
  25. package/dist/esm/fusion-order/fusion-order.spec.js +100 -0
  26. package/dist/esm/fusion-order/index.js +1 -0
  27. package/dist/esm/fusion-order/permit/constants.js +71 -0
  28. package/dist/esm/fusion-order/permit/index.js +3 -0
  29. package/dist/esm/fusion-order/permit/permit-transfer-from.js +105 -0
  30. package/dist/esm/fusion-order/permit/permit-transfer-from.spec.js +228 -0
  31. package/dist/esm/fusion-order/permit/transfer-from-suffix.js +38 -0
  32. package/dist/esm/fusion-order/permit/utils.js +12 -0
  33. package/dist/esm/index.js +1 -1
  34. package/dist/esm/package.json +1 -1
  35. package/dist/esm/sdk/README.md +14 -18
  36. package/dist/types/src/api/quoter/quote/quote.d.ts +2 -3
  37. package/dist/types/src/api/quoter/quote/types.d.ts +1 -6
  38. package/dist/types/src/api/quoter/quoter.request.d.ts +3 -3
  39. package/dist/types/src/api/quoter/types.d.ts +2 -2
  40. package/dist/types/src/constants.d.ts +1 -0
  41. package/dist/types/src/fusion-order/fusion-order.d.ts +6 -0
  42. package/dist/types/src/fusion-order/index.d.ts +1 -0
  43. package/dist/types/src/fusion-order/permit/constants.d.ts +7 -0
  44. package/dist/types/src/fusion-order/permit/index.d.ts +3 -0
  45. package/dist/types/src/fusion-order/permit/permit-transfer-from.d.ts +11 -0
  46. package/dist/types/src/fusion-order/permit/transfer-from-suffix.d.ts +10 -0
  47. package/dist/types/src/fusion-order/permit/utils.d.ts +3 -0
  48. package/dist/types/src/index.d.ts +2 -2
  49. package/dist/types/src/sdk/types.d.ts +3 -3
  50. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  51. package/package.json +3 -3
@@ -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,61 @@
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 _assert = /*#__PURE__*/ _interop_require_default(require("assert"));
22
+ function _interop_require_default(obj) {
23
+ return obj && obj.__esModule ? obj : {
24
+ default: obj
25
+ };
26
+ }
27
+ /**
28
+ * Permit2Proxy exposes `func_nZHTch(address,address,uint256,((address,uint256),uint256,uint256),bytes)`
29
+ * whose selector collides with `transferFrom(address,address,uint256)` (0x23b872dd).
30
+ * The LOP calls `_callTransferFromWithSuffix`, appending these extra params as raw suffix bytes.
31
+ */ var PERMIT2_TRANSFER_FROM_EXTRA_PARAMS_ABI = [
32
+ 'tuple(tuple(address token, uint256 amount) permitted, uint256 nonce, uint256 deadline)',
33
+ 'bytes'
34
+ ];
35
+ var abiCoder = _ethers.AbiCoder.defaultAbiCoder();
36
+ function encodeTransferFromSuffix(token, amount, nonce, deadline, signature) {
37
+ return abiCoder.encode(PERMIT2_TRANSFER_FROM_EXTRA_PARAMS_ABI, [
38
+ {
39
+ permitted: {
40
+ token: token.toString(),
41
+ amount: amount
42
+ },
43
+ nonce: nonce,
44
+ deadline: deadline
45
+ },
46
+ signature
47
+ ]);
48
+ }
49
+ function decodeTransferFromSuffix(suffix) {
50
+ var decoded = abiCoder.decode(PERMIT2_TRANSFER_FROM_EXTRA_PARAMS_ABI, suffix);
51
+ var permit = decoded[0];
52
+ var sig = decoded[1];
53
+ (0, _assert.default)(sig.length > 0, 'empty permit signature');
54
+ return {
55
+ token: new _limitordersdk.Address(permit.permitted.token),
56
+ amount: BigInt(permit.permitted.amount),
57
+ nonce: BigInt(permit.nonce),
58
+ deadline: BigInt(permit.deadline),
59
+ signature: sig
60
+ };
61
+ }
@@ -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
+ }
package/dist/cjs/index.js CHANGED
@@ -15,9 +15,6 @@ _export(exports, {
15
15
  AmountMode: function() {
16
16
  return _limitordersdk.AmountMode;
17
17
  },
18
- Bps: function() {
19
- return _limitordersdk.Bps;
20
- },
21
18
  Extension: function() {
22
19
  return _limitordersdk.Extension;
23
20
  },
@@ -204,11 +204,12 @@ sdk.placeOrder({
204
204
  toTokenAddress: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', // USDC
205
205
  amount: '50000000000000000', // 0.05 ETH
206
206
  walletAddress: makerAddress,
207
- // integratorFee is an optional field
208
- integratorFee: {
209
- receiver: new Address('0x0000000000000000000000000000000000000000'), // fee receiver address
210
- value: new Bps(100n) // 1% as we use bps format, 1% is equal to 100bps
211
- }
207
+ // fee is an optional field
208
+ fee: {
209
+ takingFeeBps: 100, // 1% as we use bps format, 1% is equal to 100bps
210
+ takingFeeReceiver: '0x0000000000000000000000000000000000000000' // fee receiver address
211
+ },
212
+ source: 'platform-name'
212
213
  }).then(console.log)
213
214
  ```
214
215
 
@@ -223,15 +224,6 @@ type PaginationParams = {
223
224
  }
224
225
  ```
225
226
 
226
- ### IntegratorFeeRequest
227
-
228
- ```typescript
229
- type IntegratorFeeRequest = {
230
- receiver: Address // fee receiver address
231
- value: Bps // 100 == 1%
232
- }
233
- ```
234
-
235
227
  ### QuoteParams
236
228
 
237
229
  ```typescript
@@ -239,9 +231,8 @@ type QuoteParams = {
239
231
  fromTokenAddress: string
240
232
  toTokenAddress: string
241
233
  amount: string
242
- walletAddress?: string
243
234
  permit?: string // a permit (EIP-2612) call data, user approval sign
244
- integratorFee?: IntegratorFeeRequest
235
+ takingFeeBps?: number // 100 == 1%
245
236
  }
246
237
  ```
247
238
 
@@ -262,7 +253,12 @@ type OrderParams = {
262
253
  permit?: string // a permit (EIP-2612) call data, user approval sign
263
254
  receiver?: string // address
264
255
  preset?: PresetEnum
265
- nonce?: bigint // allows to batch cancel orders
266
- integratorFee?: IntegratorFeeRequest
256
+ nonce?: OrderNonce | string | number // allows to batch cancel orders. by default: not used
257
+ fee?: TakingFeeInfo
258
+ }
259
+
260
+ export type TakingFeeInfo = {
261
+ takingFeeBps: number // 100 == 1%
262
+ takingFeeReceiver: string
267
263
  }
268
264
  ```
@@ -87,7 +87,11 @@ export var Quote = /*#__PURE__*/ function() {
87
87
  bps: new Bps(BigInt(response.fee.bps))
88
88
  };
89
89
  this.surplusFee = response.surplusFee;
90
- this.integratorFeeParams = this.parseIntegratorFee(response);
90
+ this.integratorFeeParams = response.integratorFee && response.integratorFeeReceiver ? {
91
+ receiver: new Address(response.integratorFeeReceiver),
92
+ value: new Bps(BigInt(response.integratorFee)),
93
+ share: Bps.fromPercent(response.integratorFeeShare || 0)
94
+ } : undefined;
91
95
  }
92
96
  _create_class(Quote, [
93
97
  {
@@ -134,7 +138,7 @@ export var Quote = /*#__PURE__*/ function() {
134
138
  orderExpirationDelay: paramsData === null || paramsData === void 0 ? void 0 : paramsData.orderExpirationDelay,
135
139
  source: this.params.source,
136
140
  enablePermit2: params.isPermit2,
137
- fees: buildFees(this.resolverFeePreset, this.integratorFeeParams, this.surplusFee)
141
+ fees: buildFees(this.resolverFeePreset, this.params.integratorFee || this.integratorFeeParams, this.surplusFee)
138
142
  };
139
143
  return this._createOrder(paramsData.network, this.settlementAddress, orderInfo, details, extra);
140
144
  }
@@ -175,24 +179,6 @@ export var Quote = /*#__PURE__*/ function() {
175
179
  }
176
180
  return FusionOrder.new(settlementExtension, orderInfo, details, extra);
177
181
  }
178
- },
179
- {
180
- key: "parseIntegratorFee",
181
- value: function parseIntegratorFee(response) {
182
- var _this_params_integratorFee_receiver, _this_params_integratorFee;
183
- if (!response.integratorFee) {
184
- return undefined;
185
- }
186
- var receiver = response.integratorFeeReceiver || ((_this_params_integratorFee = this.params.integratorFee) === null || _this_params_integratorFee === void 0 ? void 0 : (_this_params_integratorFee_receiver = _this_params_integratorFee.receiver) === null || _this_params_integratorFee_receiver === void 0 ? void 0 : _this_params_integratorFee_receiver.toString());
187
- if (!receiver) {
188
- return undefined;
189
- }
190
- return {
191
- receiver: new Address(receiver),
192
- value: new Bps(BigInt(response.integratorFee)),
193
- share: Bps.fromPercent(response.integratorFeeShare || 0)
194
- };
195
- }
196
182
  }
197
183
  ]);
198
184
  return Quote;
@@ -2,23 +2,11 @@
2
2
  * Order will expire in `orderExpirationDelay` after auction ends
3
3
  * Default 12s
4
4
  */ /**
5
- * Integrator fee parameters for SDK requests.
6
- * Used when calling getQuote() or createOrder().
7
- */ /**
8
- * Address which will receive integrator's portion of the fee.
9
- */ /**
10
- * How much to charge in basis points (1% = 100 bps)
11
- */ /**
12
- * Integrator fee parameters from API response.
13
- * Contains authoritative values calculated by backend.
14
- */ /**
15
5
  * Address which will receive `share` of `value` fee, other part will be sent to protocol
16
6
  */ /**
17
- * How much to charge in basis points
18
- */ /**
19
- * Integrator will receive only `share` part from charged fee (rest goes to protocol)
7
+ * How much to charge
20
8
  */ /**
21
- * @deprecated Use IntegratorFeeRequest for requests or IntegratorFeeResponse for responses
22
- */ export { }; /**
9
+ * Integrator will receive only `share` part from charged fee
10
+ */ export { }; /**
23
11
  * protocol address
24
12
  */
@@ -27,58 +27,6 @@ function _async_to_generator(fn) {
27
27
  });
28
28
  };
29
29
  }
30
- function _define_property(obj, key, value) {
31
- if (key in obj) {
32
- Object.defineProperty(obj, key, {
33
- value: value,
34
- enumerable: true,
35
- configurable: true,
36
- writable: true
37
- });
38
- } else {
39
- obj[key] = value;
40
- }
41
- return obj;
42
- }
43
- function _object_spread(target) {
44
- for(var i = 1; i < arguments.length; i++){
45
- var source = arguments[i] != null ? arguments[i] : {};
46
- var ownKeys = Object.keys(source);
47
- if (typeof Object.getOwnPropertySymbols === "function") {
48
- ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
49
- return Object.getOwnPropertyDescriptor(source, sym).enumerable;
50
- }));
51
- }
52
- ownKeys.forEach(function(key) {
53
- _define_property(target, key, source[key]);
54
- });
55
- }
56
- return target;
57
- }
58
- function ownKeys(object, enumerableOnly) {
59
- var keys = Object.keys(object);
60
- if (Object.getOwnPropertySymbols) {
61
- var symbols = Object.getOwnPropertySymbols(object);
62
- if (enumerableOnly) {
63
- symbols = symbols.filter(function(sym) {
64
- return Object.getOwnPropertyDescriptor(object, sym).enumerable;
65
- });
66
- }
67
- keys.push.apply(keys, symbols);
68
- }
69
- return keys;
70
- }
71
- function _object_spread_props(target, source) {
72
- source = source != null ? source : {};
73
- if (Object.getOwnPropertyDescriptors) {
74
- Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
75
- } else {
76
- ownKeys(Object(source)).forEach(function(key) {
77
- Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
78
- });
79
- }
80
- return target;
81
- }
82
30
  function _ts_generator(thisArg, body) {
83
31
  var f, y, t, g, _ = {
84
32
  label: 0,
@@ -180,7 +128,6 @@ import { QuoterRequest } from './quoter.request.js';
180
128
  import { Quote } from './quote/index.js';
181
129
  import { PresetEnum } from './types.js';
182
130
  import { QuoterCustomPresetRequest } from './quoter-custom-preset.request.js';
183
- import { ONE_INCH_LIMIT_ORDER_V4 } from '../../constants.js';
184
131
  describe('Quoter API', function() {
185
132
  var httpProvider;
186
133
  beforeEach(function() {
@@ -292,7 +239,7 @@ describe('Quoter API', function() {
292
239
  ],
293
240
  fee: {
294
241
  whitelistDiscountPercent: 1,
295
- receiver: ONE_INCH_LIMIT_ORDER_V4,
242
+ receiver: '0x02f92800F57BCD74066F5709F1Daa1A4302Df875',
296
243
  bps: 10
297
244
  },
298
245
  marketAmount: '626772029219852913'
@@ -314,7 +261,7 @@ describe('Quoter API', function() {
314
261
  case 1:
315
262
  res = _state.sent();
316
263
  expect(res).toStrictEqual(QuoterResponseMock);
317
- expect(httpProvider.get).toHaveBeenCalledWith('https://test.com/quoter/v2.0/1/quote/receive/?fromTokenAddress=0x6b175474e89094c44da98b954eedeac495271d0f&toTokenAddress=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&amount=1000000000000000000000&walletAddress=0x00000000219ab540356cbb839cbe05303d7705fa&surplus=true');
264
+ expect(httpProvider.get).toHaveBeenCalledWith('https://test.com/quoter/v2.0/1/quote/receive/?fromTokenAddress=0x6b175474e89094c44da98b954eedeac495271d0f&toTokenAddress=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&amount=1000000000000000000000&walletAddress=0x00000000219ab540356cbb839cbe05303d7705fa&source=sdk&surplus=true');
318
265
  return [
319
266
  2
320
267
  ];
@@ -336,6 +283,7 @@ describe('Quoter API', function() {
336
283
  amount: '1000000000000000000000',
337
284
  walletAddress: '0x00000000219ab540356cbb839cbe05303d7705fa',
338
285
  integratorFee: {
286
+ share: Bps.fromPercent(50),
339
287
  receiver: Address.fromBigInt(10n),
340
288
  value: new Bps(1n)
341
289
  },
@@ -371,6 +319,7 @@ describe('Quoter API', function() {
371
319
  amount: '1000000000000000000000',
372
320
  walletAddress: '0x00000000219ab540356cbb839cbe05303d7705fa',
373
321
  integratorFee: {
322
+ share: Bps.fromPercent(50),
374
323
  receiver: Address.fromBigInt(10n),
375
324
  value: new Bps(1n)
376
325
  },
@@ -407,6 +356,7 @@ describe('Quoter API', function() {
407
356
  amount: '1000000000000000000000',
408
357
  walletAddress: '0x00000000219ab540356cbb839cbe05303d7705fa',
409
358
  integratorFee: {
359
+ share: Bps.fromPercent(50),
410
360
  receiver: Address.fromBigInt(10n),
411
361
  value: new Bps(1n)
412
362
  },
@@ -459,6 +409,7 @@ describe('Quoter API', function() {
459
409
  amount: '1000000000000000000000',
460
410
  walletAddress: '0x00000000219ab540356cbb839cbe05303d7705fa',
461
411
  integratorFee: {
412
+ share: Bps.fromPercent(50),
462
413
  receiver: Address.fromBigInt(10n),
463
414
  value: new Bps(1n)
464
415
  },
@@ -497,52 +448,4 @@ describe('Quoter API', function() {
497
448
  }
498
449
  });
499
450
  }));
500
- describe('parseIntegratorFee', function() {
501
- it('should use response receiver when provided', function() {
502
- var _quote_integratorFeeParams, _quote_integratorFeeParams1, _quote_integratorFeeParams2;
503
- var responseWithFee = _object_spread_props(_object_spread({}, ResponseMock), {
504
- integratorFee: 100,
505
- integratorFeeReceiver: '0x1234567890123456789012345678901234567890',
506
- integratorFeeShare: 50
507
- });
508
- var quote = new Quote(params, responseWithFee);
509
- expect(quote.integratorFeeParams).toBeDefined();
510
- expect((_quote_integratorFeeParams = quote.integratorFeeParams) === null || _quote_integratorFeeParams === void 0 ? void 0 : _quote_integratorFeeParams.receiver.toString()).toBe('0x1234567890123456789012345678901234567890');
511
- expect(Number((_quote_integratorFeeParams1 = quote.integratorFeeParams) === null || _quote_integratorFeeParams1 === void 0 ? void 0 : _quote_integratorFeeParams1.value.value)).toBe(100);
512
- expect(Number((_quote_integratorFeeParams2 = quote.integratorFeeParams) === null || _quote_integratorFeeParams2 === void 0 ? void 0 : _quote_integratorFeeParams2.share.value)).toBe(5000);
513
- });
514
- it('should fallback to request receiver when response receiver is missing', function() {
515
- var _quote_integratorFeeParams;
516
- var responseWithFeeNoReceiver = _object_spread_props(_object_spread({}, ResponseMock), {
517
- integratorFee: 100,
518
- integratorFeeShare: 50
519
- });
520
- var paramsWithFee = QuoterRequest.new({
521
- fromTokenAddress: '0x6b175474e89094c44da98b954eedeac495271d0f',
522
- toTokenAddress: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
523
- amount: '1000000000000000000000',
524
- walletAddress: '0x00000000219ab540356cbb839cbe05303d7705fa',
525
- integratorFee: {
526
- receiver: new Address('0xabcdef0123456789abcdef0123456789abcdef01'),
527
- value: new Bps(100n)
528
- },
529
- source: 'test-source'
530
- });
531
- var quote = new Quote(paramsWithFee, responseWithFeeNoReceiver);
532
- expect(quote.integratorFeeParams).toBeDefined();
533
- expect((_quote_integratorFeeParams = quote.integratorFeeParams) === null || _quote_integratorFeeParams === void 0 ? void 0 : _quote_integratorFeeParams.receiver.toString()).toBe('0xabcdef0123456789abcdef0123456789abcdef01');
534
- });
535
- it('should return undefined when no receiver available', function() {
536
- var responseWithFeeNoReceiver = _object_spread_props(_object_spread({}, ResponseMock), {
537
- integratorFee: 100,
538
- integratorFeeShare: 50
539
- });
540
- var quote = new Quote(params, responseWithFeeNoReceiver);
541
- expect(quote.integratorFeeParams).toBeUndefined();
542
- });
543
- it('should return undefined when no integratorFee in response', function() {
544
- var quote = new Quote(params, ResponseMock);
545
- expect(quote.integratorFeeParams).toBeUndefined();
546
- });
547
- });
548
451
  });
@@ -53,7 +53,7 @@ export var QuoterRequest = /*#__PURE__*/ function() {
53
53
  this.enableEstimate = params.enableEstimate || false;
54
54
  this.permit = params.permit;
55
55
  this.integratorFee = params.integratorFee;
56
- this.source = params.source;
56
+ this.source = params.source || 'sdk';
57
57
  var _params_isPermit2;
58
58
  this.isPermit2 = (_params_isPermit2 = params.isPermit2) !== null && _params_isPermit2 !== void 0 ? _params_isPermit2 : false;
59
59
  this.slippage = params.slippage;
@@ -66,6 +66,9 @@ export var QuoterRequest = /*#__PURE__*/ function() {
66
66
  if (!isValidAmount(this.amount)) {
67
67
  throw new Error("".concat(this.amount, " is invalid amount"));
68
68
  }
69
+ if (this.integratorFee && this.source === 'sdk') {
70
+ throw new Error('cannot use fee without source');
71
+ }
69
72
  }
70
73
  _create_class(QuoterRequest, [
71
74
  {