@1inch/fusion-sdk 2.4.7-rc.3 → 2.4.8-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 (56) hide show
  1. package/README.md +25 -174
  2. package/dist/cjs/api/quoter/quote/quote.js +20 -6
  3. package/dist/cjs/api/quoter/quoter.api.spec.js +103 -6
  4. package/dist/cjs/api/quoter/quoter.request.js +1 -4
  5. package/dist/cjs/api/quoter/quoter.request.spec.js +2 -8
  6. package/dist/cjs/constants.js +1 -19
  7. package/dist/cjs/fusion-order/fusion-extension.js +10 -3
  8. package/dist/cjs/fusion-order/fusion-order.js +5 -120
  9. package/dist/cjs/fusion-order/fusion-order.spec.js +124 -93
  10. package/dist/cjs/fusion-order/index.js +0 -1
  11. package/dist/cjs/index.js +3 -0
  12. package/dist/cjs/sdk/README.md +18 -14
  13. package/dist/esm/api/quoter/quote/quote.js +20 -6
  14. package/dist/esm/api/quoter/quote/types.js +15 -3
  15. package/dist/esm/api/quoter/quoter.api.spec.js +103 -6
  16. package/dist/esm/api/quoter/quoter.request.js +1 -4
  17. package/dist/esm/api/quoter/quoter.request.spec.js +2 -8
  18. package/dist/esm/constants.js +1 -16
  19. package/dist/esm/fusion-order/fusion-extension.js +10 -3
  20. package/dist/esm/fusion-order/fusion-order.js +6 -121
  21. package/dist/esm/fusion-order/fusion-order.spec.js +125 -94
  22. package/dist/esm/fusion-order/index.js +0 -1
  23. package/dist/esm/fusion-order/types.js +5 -0
  24. package/dist/esm/index.js +1 -1
  25. package/dist/esm/package.json +1 -1
  26. package/dist/esm/sdk/README.md +18 -14
  27. package/dist/types/src/api/quoter/quote/quote.d.ts +3 -2
  28. package/dist/types/src/api/quoter/quote/types.d.ts +6 -1
  29. package/dist/types/src/api/quoter/quoter.request.d.ts +3 -3
  30. package/dist/types/src/api/quoter/types.d.ts +2 -2
  31. package/dist/types/src/constants.d.ts +0 -1
  32. package/dist/types/src/fusion-order/fusion-extension.d.ts +2 -0
  33. package/dist/types/src/fusion-order/fusion-order.d.ts +0 -6
  34. package/dist/types/src/fusion-order/index.d.ts +0 -1
  35. package/dist/types/src/fusion-order/types.d.ts +1 -0
  36. package/dist/types/src/index.d.ts +2 -2
  37. package/dist/types/src/sdk/types.d.ts +3 -3
  38. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  39. package/package.json +4 -4
  40. package/dist/cjs/fusion-order/permit/constants.js +0 -98
  41. package/dist/cjs/fusion-order/permit/index.js +0 -34
  42. package/dist/cjs/fusion-order/permit/permit-transfer-from.js +0 -115
  43. package/dist/cjs/fusion-order/permit/permit-transfer-from.spec.js +0 -232
  44. package/dist/cjs/fusion-order/permit/transfer-from-suffix.js +0 -61
  45. package/dist/cjs/fusion-order/permit/utils.js +0 -35
  46. package/dist/esm/fusion-order/permit/constants.js +0 -71
  47. package/dist/esm/fusion-order/permit/index.js +0 -3
  48. package/dist/esm/fusion-order/permit/permit-transfer-from.js +0 -105
  49. package/dist/esm/fusion-order/permit/permit-transfer-from.spec.js +0 -228
  50. package/dist/esm/fusion-order/permit/transfer-from-suffix.js +0 -38
  51. package/dist/esm/fusion-order/permit/utils.js +0 -12
  52. package/dist/types/src/fusion-order/permit/constants.d.ts +0 -7
  53. package/dist/types/src/fusion-order/permit/index.d.ts +0 -3
  54. package/dist/types/src/fusion-order/permit/permit-transfer-from.d.ts +0 -11
  55. package/dist/types/src/fusion-order/permit/transfer-from-suffix.d.ts +0 -10
  56. package/dist/types/src/fusion-order/permit/utils.d.ts +0 -3
package/README.md CHANGED
@@ -16,22 +16,16 @@ yarn add @1inch/fusion-sdk@2
16
16
 
17
17
  ## Modules docs
18
18
 
19
- - [auction-details](src/fusion-order/auction-details/README.md)
20
- - [fusion-order](src/fusion-order/README.md)
21
- - [sdk](src/sdk/README.md)
22
- - [ws-api](src/ws-api/README.md)
19
+ - [auction-details](src/fusion-order/auction-details/README.md)
20
+ - [fusion-order](src/fusion-order/README.md)
21
+ - [sdk](src/sdk/README.md)
22
+ - [ws-api](src/ws-api/README.md)
23
23
 
24
24
  ## How to swap with Fusion Mode
25
25
 
26
26
  ```typescript
27
- import {
28
- FusionSDK,
29
- NetworkEnum,
30
- OrderStatus,
31
- PrivateKeyProviderConnector,
32
- Web3Like
33
- } from '@1inch/fusion-sdk'
34
- import {computeAddress, formatUnits, JsonRpcProvider} from 'ethers'
27
+ import {FusionSDK, NetworkEnum, OrderStatus, PrivateKeyProviderConnector, Web3Like,} from "@1inch/fusion-sdk";
28
+ import {computeAddress, formatUnits, JsonRpcProvider} from "ethers";
35
29
 
36
30
  const PRIVATE_KEY = 'YOUR_PRIVATE_KEY'
37
31
  const NODE_URL = 'YOUR_WEB3_NODE_URL'
@@ -54,7 +48,7 @@ const connector = new PrivateKeyProviderConnector(
54
48
  )
55
49
 
56
50
  const sdk = new FusionSDK({
57
- url: 'https://api.1inch.com/fusion',
51
+ url: 'https://api.1inch.dev/fusion',
58
52
  network: NetworkEnum.BINANCE,
59
53
  blockchainProvider: connector,
60
54
  authKey: DEV_PORTAL_API_TOKEN
@@ -63,7 +57,7 @@ const sdk = new FusionSDK({
63
57
  async function main() {
64
58
  const params = {
65
59
  fromTokenAddress: '0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d', // USDC
66
- toTokenAddress: '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', // BNB
60
+ toTokenAddress: '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', // BNB
67
61
  amount: '10000000000000000000', // 10 USDC
68
62
  walletAddress: computeAddress(PRIVATE_KEY),
69
63
  source: 'sdk-test'
@@ -72,25 +66,12 @@ async function main() {
72
66
  const quote = await sdk.getQuote(params)
73
67
 
74
68
  const dstTokenDecimals = 18
75
- console.log(
76
- 'Auction start amount',
77
- formatUnits(
78
- quote.presets[quote.recommendedPreset].auctionStartAmount,
79
- dstTokenDecimals
80
- )
81
- )
82
- console.log(
83
- 'Auction end amount',
84
- formatUnits(quote.presets[quote.recommendedPreset].auctionEndAmount),
85
- dstTokenDecimals
86
- )
69
+ console.log('Auction start amount', formatUnits(quote.presets[quote.recommendedPreset].auctionStartAmount, dstTokenDecimals))
70
+ console.log('Auction end amount', formatUnits(quote.presets[quote.recommendedPreset].auctionEndAmount), dstTokenDecimals)
87
71
 
88
72
  const preparedOrder = await sdk.createOrder(params)
89
73
 
90
- const info = await sdk.submitOrder(
91
- preparedOrder.order,
92
- preparedOrder.quoteId
93
- )
74
+ const info = await sdk.submitOrder(preparedOrder.order, preparedOrder.quoteId)
94
75
 
95
76
  console.log('OrderHash', info.orderHash)
96
77
 
@@ -109,7 +90,7 @@ async function main() {
109
90
  console.log('Order Expired')
110
91
  break
111
92
  }
112
-
93
+
113
94
  if (data.status === OrderStatus.Cancelled) {
114
95
  console.log('Order Cancelled')
115
96
  break
@@ -117,6 +98,7 @@ async function main() {
117
98
  } catch (e) {
118
99
  console.log(e)
119
100
  }
101
+
120
102
  }
121
103
 
122
104
  console.log('Order executed for', (Date.now() - start) / 1000, 'sec')
@@ -126,18 +108,9 @@ main()
126
108
  ```
127
109
 
128
110
  ## How to swap with Fusion mode from Native asset
129
-
130
111
  ```typescript
131
- import {
132
- FusionSDK,
133
- NetworkEnum,
134
- OrderStatus,
135
- PrivateKeyProviderConnector,
136
- Web3Like,
137
- Address,
138
- NativeOrdersFactory
139
- } from '@1inch/fusion-sdk'
140
- import {computeAddress, formatUnits, JsonRpcProvider, Wallet} from 'ethers'
112
+ import {FusionSDK, NetworkEnum, OrderStatus, PrivateKeyProviderConnector, Web3Like, Address, NativeOrdersFactory} from "@1inch/fusion-sdk";
113
+ import {computeAddress, formatUnits, JsonRpcProvider, Wallet} from "ethers";
141
114
 
142
115
  const PRIVATE_KEY = 'YOUR_PRIVATE_KEY'
143
116
  const NODE_URL = 'YOUR_WEB3_NODE_URL'
@@ -160,7 +133,7 @@ const connector = new PrivateKeyProviderConnector(
160
133
  )
161
134
 
162
135
  const sdk = new FusionSDK({
163
- url: 'https://api.1inch.com/fusion',
136
+ url: 'https://api.1inch.dev/fusion',
164
137
  network: NetworkEnum.BINANCE,
165
138
  blockchainProvider: connector,
166
139
  authKey: DEV_PORTAL_API_TOKEN
@@ -171,43 +144,26 @@ const wallet = new Wallet(PRIVATE_KEY, ethersRpcProvider)
171
144
  async function main() {
172
145
  const params = {
173
146
  fromTokenAddress: '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', // ETH
174
- toTokenAddress: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', // USDC
147
+ toTokenAddress: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', // USDC
175
148
  amount: '2000000000000000', // 0.002 ETH
176
149
  walletAddress: computeAddress(PRIVATE_KEY),
177
150
  source: 'sdk-test'
178
151
  }
179
-
152
+
180
153
  const quote = await sdk.getQuote(params)
181
154
 
182
155
  const dstTokenDecimals = 6
183
- console.log(
184
- 'Auction start amount',
185
- formatUnits(
186
- quote.presets[quote.recommendedPreset].auctionStartAmount,
187
- dstTokenDecimals
188
- )
189
- )
190
- console.log(
191
- 'Auction end amount',
192
- formatUnits(quote.presets[quote.recommendedPreset].auctionEndAmount),
193
- dstTokenDecimals
194
- )
156
+ console.log('Auction start amount', formatUnits(quote.presets[quote.recommendedPreset].auctionStartAmount, dstTokenDecimals))
157
+ console.log('Auction end amount', formatUnits(quote.presets[quote.recommendedPreset].auctionEndAmount), dstTokenDecimals)
195
158
 
196
159
  const preparedOrder = await sdk.createOrder(params)
197
160
 
198
- const info = await sdk.submitNativeOrder(
199
- preparedOrder.order,
200
- new Address(params.walletAddress),
201
- preparedOrder.quoteId
202
- )
161
+ const info = await sdk.submitNativeOrder(preparedOrder.order, new Address(params.walletAddress), preparedOrder.quoteId)
203
162
 
204
163
  console.log('OrderHash', info.orderHash)
205
164
 
206
165
  const factory = NativeOrdersFactory.default(NetworkEnum.BINANCE)
207
- const call = factory.create(
208
- new Address(wallet.address),
209
- preparedOrder.order.build()
210
- )
166
+ const call = factory.create(new Address(wallet.address), preparedOrder.order.build())
211
167
 
212
168
  const txRes = await wallet.sendTransaction({
213
169
  to: call.to.toString(),
@@ -219,6 +175,7 @@ async function main() {
219
175
 
220
176
  await wallet.provider.waitForTransaction(txRes.hash)
221
177
 
178
+
222
179
  const start = Date.now()
223
180
 
224
181
  while (true) {
@@ -234,7 +191,7 @@ async function main() {
234
191
  console.log('Order Expired')
235
192
  break
236
193
  }
237
-
194
+
238
195
  if (data.status === OrderStatus.Cancelled) {
239
196
  console.log('Order Cancelled')
240
197
  break
@@ -242,121 +199,15 @@ async function main() {
242
199
  } catch (e) {
243
200
  console.log(e)
244
201
  }
245
- }
246
-
247
- console.log('Order executed for', (Date.now() - start) / 1000, 'sec')
248
- }
249
-
250
- main()
251
- ```
252
-
253
- ## How to swap with Fusion Mode using TransferPermit
254
-
255
- Instead of granting a token approval to the 1inch Limit Order Protocol, you can use a `TransferPermit` for signature-based transfers via a Permit2Proxy contract.
256
-
257
- The maker only needs to approve tokens to the Permit2 contract once. Each order then carries a single-use `PermitTransferFrom` signature instead of an on-chain allowance to the protocol.
258
-
259
- ```typescript
260
- import {
261
- FusionSDK,
262
- NetworkEnum,
263
- OrderStatus,
264
- PrivateKeyProviderConnector,
265
- Web3Like,
266
- getPermit2Address
267
- } from '@1inch/fusion-sdk'
268
- import {computeAddress, JsonRpcProvider, Wallet} from 'ethers'
269
-
270
- const PRIVATE_KEY = 'YOUR_PRIVATE_KEY'
271
- const NODE_URL = 'YOUR_WEB3_NODE_URL'
272
- const DEV_PORTAL_API_TOKEN = 'YOUR_DEV_PORTAL_API_TOKEN'
273
-
274
- const ethersRpcProvider = new JsonRpcProvider(NODE_URL)
275
-
276
- const ethersProviderConnector: Web3Like = {
277
- eth: {
278
- call(transactionConfig): Promise<string> {
279
- return ethersRpcProvider.call(transactionConfig)
280
- }
281
- },
282
- extend(): void {}
283
- }
284
-
285
- const connector = new PrivateKeyProviderConnector(
286
- PRIVATE_KEY,
287
- ethersProviderConnector
288
- )
289
-
290
- const sdk = new FusionSDK({
291
- url: 'https://api.1inch.com/fusion',
292
- network: NetworkEnum.ETHEREUM,
293
- blockchainProvider: connector,
294
- authKey: DEV_PORTAL_API_TOKEN
295
- })
296
-
297
- const wallet = new Wallet(PRIVATE_KEY, ethersRpcProvider)
298
-
299
- async function main() {
300
- // Step 1: Approve token to the Permit2 contract (one-time, can be unlimited)
301
- // This replaces the usual approval to the 1inch Limit Order Protocol
302
- const permit2Address = getPermit2Address(NetworkEnum.ETHEREUM)
303
- // await approveToken(fromTokenAddress, permit2Address, MAX_UINT256)
304
202
 
305
- // Step 2: Get quote and create order
306
- const params = {
307
- fromTokenAddress: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', // WETH
308
- toTokenAddress: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', // USDC
309
- amount: '50000000000000000', // 0.05 WETH
310
- walletAddress: computeAddress(PRIVATE_KEY)
311
203
  }
312
204
 
313
- const {order, quoteId} = await sdk.createOrder(params)
314
-
315
- // Step 3: Create a transfer permit for the order
316
- const permit = order.createTransferPermit(NetworkEnum.ETHEREUM)
317
-
318
- // Step 4: Sign the transfer permit
319
- const permitTypedData = permit.getTypedData(NetworkEnum.ETHEREUM)
320
- const permitSignature = await connector.signTypedData(
321
- params.walletAddress,
322
- permitTypedData
323
- )
324
-
325
- // Step 5: Attach the signed permit to the order
326
- const orderWithPermit = order.withTransferPermit(permit, permitSignature)
327
-
328
- // Step 6: Submit the order (the SDK signs the order and sends it to the relayer)
329
- const info = await sdk.submitOrder(orderWithPermit, quoteId)
330
-
331
- console.log('OrderHash', info.orderHash)
332
-
333
- while (true) {
334
- const data = await sdk.getOrderStatus(info.orderHash)
335
-
336
- if (data.status === OrderStatus.Filled) {
337
- console.log('fills', data.fills)
338
- break
339
- }
340
-
341
- if (
342
- data.status === OrderStatus.Expired ||
343
- data.status === OrderStatus.Cancelled
344
- ) {
345
- console.log('Order', data.status)
346
- break
347
- }
348
- }
205
+ console.log('Order executed for', (Date.now() - start) / 1000, 'sec')
349
206
  }
350
207
 
351
208
  main()
352
209
  ```
353
210
 
354
- **Key differences from a standard swap:**
355
-
356
- - Token approval goes to `Permit2` instead of the 1inch protocol
357
- - Create and sign a `PermitTransferFrom` using the Permit2Proxy address as spender
358
- - Call `withTransferPermit` before submitting — this modifies the order to route through the Permit2Proxy
359
-
360
211
  ## Resolvers
361
212
 
362
213
  `settleOrders` function usage and Resolver contract examples you can find [here](https://github.com/1inch/fusion-resolver-example)
@@ -102,11 +102,7 @@ var Quote = /*#__PURE__*/ function() {
102
102
  bps: new _limitordersdk.Bps(BigInt(response.fee.bps))
103
103
  };
104
104
  this.surplusFee = response.surplusFee;
105
- this.integratorFeeParams = response.integratorFee && response.integratorFeeReceiver ? {
106
- receiver: new _limitordersdk.Address(response.integratorFeeReceiver),
107
- value: new _limitordersdk.Bps(BigInt(response.integratorFee)),
108
- share: _limitordersdk.Bps.fromPercent(response.integratorFeeShare || 0)
109
- } : undefined;
105
+ this.integratorFeeParams = this.parseIntegratorFee(response);
110
106
  }
111
107
  _create_class(Quote, [
112
108
  {
@@ -153,7 +149,7 @@ var Quote = /*#__PURE__*/ function() {
153
149
  orderExpirationDelay: paramsData === null || paramsData === void 0 ? void 0 : paramsData.orderExpirationDelay,
154
150
  source: this.params.source,
155
151
  enablePermit2: params.isPermit2,
156
- fees: buildFees(this.resolverFeePreset, this.params.integratorFee || this.integratorFeeParams, this.surplusFee)
152
+ fees: buildFees(this.resolverFeePreset, this.integratorFeeParams, this.surplusFee)
157
153
  };
158
154
  return this._createOrder(paramsData.network, this.settlementAddress, orderInfo, details, extra);
159
155
  }
@@ -194,6 +190,24 @@ var Quote = /*#__PURE__*/ function() {
194
190
  }
195
191
  return _index.FusionOrder.new(settlementExtension, orderInfo, details, extra);
196
192
  }
193
+ },
194
+ {
195
+ key: "parseIntegratorFee",
196
+ value: function parseIntegratorFee(response) {
197
+ var _this_params_integratorFee_receiver, _this_params_integratorFee;
198
+ if (!response.integratorFee) {
199
+ return undefined;
200
+ }
201
+ 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());
202
+ if (!receiver) {
203
+ return undefined;
204
+ }
205
+ return {
206
+ receiver: new _limitordersdk.Address(receiver),
207
+ value: new _limitordersdk.Bps(BigInt(response.integratorFee)),
208
+ share: _limitordersdk.Bps.fromPercent(response.integratorFeeShare || 0)
209
+ };
210
+ }
197
211
  }
198
212
  ]);
199
213
  return Quote;
@@ -8,6 +8,7 @@ var _quoterrequest = require("./quoter.request.js");
8
8
  var _index = require("./quote/index.js");
9
9
  var _types = require("./types.js");
10
10
  var _quotercustompresetrequest = require("./quoter-custom-preset.request.js");
11
+ var _constants = require("../../constants.js");
11
12
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
12
13
  try {
13
14
  var info = gen[key](arg);
@@ -37,6 +38,58 @@ function _async_to_generator(fn) {
37
38
  });
38
39
  };
39
40
  }
41
+ function _define_property(obj, key, value) {
42
+ if (key in obj) {
43
+ Object.defineProperty(obj, key, {
44
+ value: value,
45
+ enumerable: true,
46
+ configurable: true,
47
+ writable: true
48
+ });
49
+ } else {
50
+ obj[key] = value;
51
+ }
52
+ return obj;
53
+ }
54
+ function _object_spread(target) {
55
+ for(var i = 1; i < arguments.length; i++){
56
+ var source = arguments[i] != null ? arguments[i] : {};
57
+ var ownKeys = Object.keys(source);
58
+ if (typeof Object.getOwnPropertySymbols === "function") {
59
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
60
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
61
+ }));
62
+ }
63
+ ownKeys.forEach(function(key) {
64
+ _define_property(target, key, source[key]);
65
+ });
66
+ }
67
+ return target;
68
+ }
69
+ function ownKeys(object, enumerableOnly) {
70
+ var keys = Object.keys(object);
71
+ if (Object.getOwnPropertySymbols) {
72
+ var symbols = Object.getOwnPropertySymbols(object);
73
+ if (enumerableOnly) {
74
+ symbols = symbols.filter(function(sym) {
75
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
76
+ });
77
+ }
78
+ keys.push.apply(keys, symbols);
79
+ }
80
+ return keys;
81
+ }
82
+ function _object_spread_props(target, source) {
83
+ source = source != null ? source : {};
84
+ if (Object.getOwnPropertyDescriptors) {
85
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
86
+ } else {
87
+ ownKeys(Object(source)).forEach(function(key) {
88
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
89
+ });
90
+ }
91
+ return target;
92
+ }
40
93
  function _ts_generator(thisArg, body) {
41
94
  var f, y, t, g, _ = {
42
95
  label: 0,
@@ -243,7 +296,7 @@ describe('Quoter API', function() {
243
296
  ],
244
297
  fee: {
245
298
  whitelistDiscountPercent: 1,
246
- receiver: '0x02f92800F57BCD74066F5709F1Daa1A4302Df875',
299
+ receiver: _constants.ONE_INCH_LIMIT_ORDER_V4,
247
300
  bps: 10
248
301
  },
249
302
  marketAmount: '626772029219852913'
@@ -265,7 +318,7 @@ describe('Quoter API', function() {
265
318
  case 1:
266
319
  res = _state.sent();
267
320
  expect(res).toStrictEqual(QuoterResponseMock);
268
- 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');
321
+ expect(httpProvider.get).toHaveBeenCalledWith('https://test.com/quoter/v2.0/1/quote/receive/?fromTokenAddress=0x6b175474e89094c44da98b954eedeac495271d0f&toTokenAddress=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&amount=1000000000000000000000&walletAddress=0x00000000219ab540356cbb839cbe05303d7705fa&surplus=true');
269
322
  return [
270
323
  2
271
324
  ];
@@ -287,7 +340,6 @@ describe('Quoter API', function() {
287
340
  amount: '1000000000000000000000',
288
341
  walletAddress: '0x00000000219ab540356cbb839cbe05303d7705fa',
289
342
  integratorFee: {
290
- share: _limitordersdk.Bps.fromPercent(50),
291
343
  receiver: _limitordersdk.Address.fromBigInt(10n),
292
344
  value: new _limitordersdk.Bps(1n)
293
345
  },
@@ -323,7 +375,6 @@ describe('Quoter API', function() {
323
375
  amount: '1000000000000000000000',
324
376
  walletAddress: '0x00000000219ab540356cbb839cbe05303d7705fa',
325
377
  integratorFee: {
326
- share: _limitordersdk.Bps.fromPercent(50),
327
378
  receiver: _limitordersdk.Address.fromBigInt(10n),
328
379
  value: new _limitordersdk.Bps(1n)
329
380
  },
@@ -360,7 +411,6 @@ describe('Quoter API', function() {
360
411
  amount: '1000000000000000000000',
361
412
  walletAddress: '0x00000000219ab540356cbb839cbe05303d7705fa',
362
413
  integratorFee: {
363
- share: _limitordersdk.Bps.fromPercent(50),
364
414
  receiver: _limitordersdk.Address.fromBigInt(10n),
365
415
  value: new _limitordersdk.Bps(1n)
366
416
  },
@@ -413,7 +463,6 @@ describe('Quoter API', function() {
413
463
  amount: '1000000000000000000000',
414
464
  walletAddress: '0x00000000219ab540356cbb839cbe05303d7705fa',
415
465
  integratorFee: {
416
- share: _limitordersdk.Bps.fromPercent(50),
417
466
  receiver: _limitordersdk.Address.fromBigInt(10n),
418
467
  value: new _limitordersdk.Bps(1n)
419
468
  },
@@ -452,4 +501,52 @@ describe('Quoter API', function() {
452
501
  }
453
502
  });
454
503
  }));
504
+ describe('parseIntegratorFee', function() {
505
+ it('should use response receiver when provided', function() {
506
+ var _quote_integratorFeeParams, _quote_integratorFeeParams1, _quote_integratorFeeParams2;
507
+ var responseWithFee = _object_spread_props(_object_spread({}, ResponseMock), {
508
+ integratorFee: 100,
509
+ integratorFeeReceiver: '0x1234567890123456789012345678901234567890',
510
+ integratorFeeShare: 50
511
+ });
512
+ var quote = new _index.Quote(params, responseWithFee);
513
+ expect(quote.integratorFeeParams).toBeDefined();
514
+ expect((_quote_integratorFeeParams = quote.integratorFeeParams) === null || _quote_integratorFeeParams === void 0 ? void 0 : _quote_integratorFeeParams.receiver.toString()).toBe('0x1234567890123456789012345678901234567890');
515
+ expect(Number((_quote_integratorFeeParams1 = quote.integratorFeeParams) === null || _quote_integratorFeeParams1 === void 0 ? void 0 : _quote_integratorFeeParams1.value.value)).toBe(100);
516
+ expect(Number((_quote_integratorFeeParams2 = quote.integratorFeeParams) === null || _quote_integratorFeeParams2 === void 0 ? void 0 : _quote_integratorFeeParams2.share.value)).toBe(5000);
517
+ });
518
+ it('should fallback to request receiver when response receiver is missing', function() {
519
+ var _quote_integratorFeeParams;
520
+ var responseWithFeeNoReceiver = _object_spread_props(_object_spread({}, ResponseMock), {
521
+ integratorFee: 100,
522
+ integratorFeeShare: 50
523
+ });
524
+ var paramsWithFee = _quoterrequest.QuoterRequest.new({
525
+ fromTokenAddress: '0x6b175474e89094c44da98b954eedeac495271d0f',
526
+ toTokenAddress: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
527
+ amount: '1000000000000000000000',
528
+ walletAddress: '0x00000000219ab540356cbb839cbe05303d7705fa',
529
+ integratorFee: {
530
+ receiver: new _limitordersdk.Address('0xabcdef0123456789abcdef0123456789abcdef01'),
531
+ value: new _limitordersdk.Bps(100n)
532
+ },
533
+ source: 'test-source'
534
+ });
535
+ var quote = new _index.Quote(paramsWithFee, responseWithFeeNoReceiver);
536
+ expect(quote.integratorFeeParams).toBeDefined();
537
+ expect((_quote_integratorFeeParams = quote.integratorFeeParams) === null || _quote_integratorFeeParams === void 0 ? void 0 : _quote_integratorFeeParams.receiver.toString()).toBe('0xabcdef0123456789abcdef0123456789abcdef01');
538
+ });
539
+ it('should return undefined when no receiver available', function() {
540
+ var responseWithFeeNoReceiver = _object_spread_props(_object_spread({}, ResponseMock), {
541
+ integratorFee: 100,
542
+ integratorFeeShare: 50
543
+ });
544
+ var quote = new _index.Quote(params, responseWithFeeNoReceiver);
545
+ expect(quote.integratorFeeParams).toBeUndefined();
546
+ });
547
+ it('should return undefined when no integratorFee in response', function() {
548
+ var quote = new _index.Quote(params, ResponseMock);
549
+ expect(quote.integratorFeeParams).toBeUndefined();
550
+ });
551
+ });
455
552
  });
@@ -63,7 +63,7 @@ var QuoterRequest = /*#__PURE__*/ function() {
63
63
  this.enableEstimate = params.enableEstimate || false;
64
64
  this.permit = params.permit;
65
65
  this.integratorFee = params.integratorFee;
66
- this.source = params.source || 'sdk';
66
+ this.source = params.source;
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;
@@ -76,9 +76,6 @@ var QuoterRequest = /*#__PURE__*/ function() {
76
76
  if (!(0, _validations.isValidAmount)(this.amount)) {
77
77
  throw new Error("".concat(this.amount, " is invalid amount"));
78
78
  }
79
- if (this.integratorFee && this.source === 'sdk') {
80
- throw new Error('cannot use fee without source');
81
- }
82
79
  }
83
80
  _create_class(QuoterRequest, [
84
81
  {
@@ -13,7 +13,6 @@ describe(__filename, function() {
13
13
  amount: '1000000000000000000000',
14
14
  walletAddress: '0x00000000219ab540356cbb839cbe05303d7705fa',
15
15
  integratorFee: {
16
- share: _limitordersdk.Bps.fromPercent(50),
17
16
  receiver: _limitordersdk.Address.fromBigInt(10n),
18
17
  value: new _limitordersdk.Bps(1n)
19
18
  }
@@ -26,7 +25,6 @@ describe(__filename, function() {
26
25
  amount: '1000000000000000000000',
27
26
  walletAddress: '0x00000000219ab540356cbb839cbe05303d7705fa',
28
27
  integratorFee: {
29
- share: _limitordersdk.Bps.fromPercent(50),
30
28
  receiver: _limitordersdk.Address.fromBigInt(10n),
31
29
  value: new _limitordersdk.Bps(1n)
32
30
  }
@@ -41,7 +39,6 @@ describe(__filename, function() {
41
39
  amount: '1000000000000000000000',
42
40
  walletAddress: '0x00000000219ab540356cbb839cbe05303d7705fa',
43
41
  integratorFee: {
44
- share: _limitordersdk.Bps.fromPercent(50),
45
42
  receiver: _limitordersdk.Address.fromBigInt(10n),
46
43
  value: new _limitordersdk.Bps(1n)
47
44
  }
@@ -56,7 +53,6 @@ describe(__filename, function() {
56
53
  amount: '1000000000000000000000',
57
54
  walletAddress: '0x0000000019ab540356cbb839be05303d7705fa1',
58
55
  integratorFee: {
59
- share: _limitordersdk.Bps.fromPercent(50),
60
56
  receiver: _limitordersdk.Address.fromBigInt(10n),
61
57
  value: new _limitordersdk.Bps(1n)
62
58
  }
@@ -71,14 +67,13 @@ describe(__filename, function() {
71
67
  amount: 'dasdad',
72
68
  walletAddress: '0x00000000219ab540356cbb839cbe05303d7705fa',
73
69
  integratorFee: {
74
- share: _limitordersdk.Bps.fromPercent(50),
75
70
  receiver: _limitordersdk.Address.fromBigInt(10n),
76
71
  value: new _limitordersdk.Bps(1n)
77
72
  }
78
73
  });
79
74
  }).toThrow(/is invalid amount/);
80
75
  });
81
- it('returns error if fee is provided and source not', function() {
76
+ it('allows fee without source', function() {
82
77
  expect(function() {
83
78
  return _quoterrequest.QuoterRequest.new({
84
79
  fromTokenAddress: '0x6b175474e89094c44da98b954eedeac495271d0f',
@@ -86,11 +81,10 @@ describe(__filename, function() {
86
81
  amount: '1000000',
87
82
  walletAddress: '0x00000000219ab540356cbb839cbe05303d7705fa',
88
83
  integratorFee: {
89
- share: _limitordersdk.Bps.fromPercent(50),
90
84
  receiver: _limitordersdk.Address.fromBigInt(10n),
91
85
  value: new _limitordersdk.Bps(1n)
92
86
  }
93
87
  });
94
- }).toThrow(/cannot use fee without source/);
88
+ }).not.toThrow();
95
89
  });
96
90
  });
@@ -15,9 +15,6 @@ _export(exports, {
15
15
  ONE_INCH_LIMIT_ORDER_V4: function() {
16
16
  return ONE_INCH_LIMIT_ORDER_V4;
17
17
  },
18
- ONE_INCH_LIMIT_ORDER_V4_ADDRESSES: function() {
19
- return ONE_INCH_LIMIT_ORDER_V4_ADDRESSES;
20
- },
21
18
  UINT_160_MAX: function() {
22
19
  return UINT_160_MAX;
23
20
  },
@@ -43,19 +40,6 @@ _export(exports, {
43
40
  return ZX;
44
41
  }
45
42
  });
46
- function _define_property(obj, key, value) {
47
- if (key in obj) {
48
- Object.defineProperty(obj, key, {
49
- value: value,
50
- enumerable: true,
51
- configurable: true,
52
- writable: true
53
- });
54
- } else {
55
- obj[key] = value;
56
- }
57
- return obj;
58
- }
59
43
  var ZX = '0x';
60
44
  var NetworkEnum = /*#__PURE__*/ function(NetworkEnum) {
61
45
  NetworkEnum[NetworkEnum["ETHEREUM"] = 1] = "ETHEREUM";
@@ -73,9 +57,7 @@ var NetworkEnum = /*#__PURE__*/ function(NetworkEnum) {
73
57
  NetworkEnum[NetworkEnum["UNICHAIN"] = 130] = "UNICHAIN";
74
58
  return NetworkEnum;
75
59
  }({});
76
- /** @deprecated Use ONE_INCH_LIMIT_ORDER_V4_ADDRESSES instead */ var ONE_INCH_LIMIT_ORDER_V4 = '0x111111125421ca6dc452d289314280a0f8842a65';
77
- var _obj;
78
- 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);
60
+ var ONE_INCH_LIMIT_ORDER_V4 = '0x111111125421ca6dc452d289314280a0f8842a65';
79
61
  var UINT_160_MAX = (1n << 160n) - 1n;
80
62
  var UINT_16_MAX = (1n << 16n) - 1n;
81
63
  var UINT_80_MAX = (1n << 80n) - 1n;