@switch-win/sdk 1.2.4 → 1.2.6

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/README.md CHANGED
@@ -217,7 +217,7 @@ For the most accurate swap quotes — especially with tax tokens — follow this
217
217
  │ → Detect transfer taxes on both tokens │
218
218
  │ → Determine feeOnOutput based on tax results + your fee strategy │
219
219
  ├────────────────────────────────────────────────────────────────────────────┤
220
- │ Step 3: GET /swap/quote?...&feeOnOutput=true/false&adapters=0,3,6
220
+ │ Step 3: GET /swap/quote?...&feeOnOutput=true/false&adapters=0,3,7
221
221
  │ → Pass feeOnOutput + adapter filter for an exact expectedOutputAmount │
222
222
  │ → Display quote and execute swap │
223
223
  └────────────────────────────────────────────────────────────────────────────┘
@@ -407,24 +407,35 @@ curl -H "x-api-key: YOUR_KEY" "https://quote.switch.win/swap/adapters?network=pu
407
407
 
408
408
  ```json
409
409
  {
410
- "adapters": [
411
- { "index": 0, "name": "UniswapV2", "address": "0x8730c3e2cf2c8cda8e6166837a1ed26f46aa9e59" },
412
- { "index": 1, "name": "SushiV2", "address": "0xff6b56d3f444eb5b7fa1db047f57140c84810376" },
413
- { "index": 2, "name": "PulseXV1", "address": "0xc8c50c6fac75b0d082d5b99f52581ca25ccb719f" },
414
- { "index": 3, "name": "PulseXV2", "address": "0x5d3ef85adcf1532e9111e4a6a331f6e5ddfb2d25" },
415
- { "index": 4, "name": "9inchV2", "address": "0xcaa612cde3d3fbe97be97eb5f79bc91597432d55" },
416
- { "index": 5, "name": "DextopV2", "address": "0x72d8f2b9cfb9cfd73403288a126578b7e31ee6ac" },
417
- { "index": 6, "name": "UniswapV3", "address": "0x7bbb21bdc6c94b90367a0b1835e1f233ab39d6a7" },
418
- { "index": 7, "name": "9mmV3", "address": "0x42cf246e6271feb2c3e6d14fc405ed0bf5152be2" },
419
- { "index": 8, "name": "9inchV3", "address": "0xbb017a0da988b72f202cd19655361cdb57383802" },
420
- { "index": 9, "name": "pDexV3", "address": "0xb2141992cb4500e7099bc6d7d3da405e63259dcf" },
421
- { "index": 10, "name": "DextopV3", "address": "0xe3073faaed1490eab7b3e65f2a1659c9853d5379" },
422
- { "index": 11, "name": "Phux", "address": "0xe9a3aefd86b9230abc980c012b28e39f8561682c" },
423
- { "index": 12, "name": "Tide", "address": "0x235ba14f6df83c17353e410e5a2dcc052a5a0f64" },
424
- { "index": 13, "name": "PulseXStable", "address": "0xac4da986100724983042ec28c28db243e2f828cb" }
425
- ]
426
- }
427
- ```
410
+ "adapters": [
411
+ { "index": 0, "name": "UniswapV2", "address": "0x971eeb4a5080834f7df2b9d7a11dfbeaa7bc187e" },
412
+ { "index": 1, "name": "SushiV2", "address": "0x5ef53d5eb4f011d9bed35e7112945f0dc96b3822" },
413
+ { "index": 2, "name": "PulseXV1", "address": "0x6f5ccfca1f1d3fff70202463df05573cc1668cb6" },
414
+ { "index": 3, "name": "PulseXV2", "address": "0x393e382520b93b8f662dc76295000930c06d689f" },
415
+ { "index": 4, "name": "9inchV2", "address": "0x4810beadf72a1f297f4e5ff71424d98b2bf4441e" },
416
+ { "index": 5, "name": "DextopV2", "address": "0xd096faccdd475f2c86f3c668958fcd435e32bdc2" },
417
+ { "index": 6, "name": "9mmV2", "address": "0x67a25e62309e39e7b46f3b6f868bcf336c4ce8e2" },
418
+ { "index": 7, "name": "UniswapV3", "address": "0xc39cb531f71059fd427a63bf8a2f4b822d6b9b02" },
419
+ { "index": 8, "name": "9mmV3", "address": "0x32a63187814d6b81badc6c13dc9d46a8050fad12" },
420
+ { "index": 9, "name": "9inchV3", "address": "0xe46ef88400997a84336e1a3c14d2528da90572b6" },
421
+ { "index": 10, "name": "pDexV3", "address": "0xb718836aca6ddb8745a0cecc687467dda648bdf2" },
422
+ { "index": 11, "name": "DextopV3", "address": "0x8b8024ca2a4fdb34697620b80320e76c41a67124" },
423
+ { "index": 12, "name": "Phux", "address": "0x98ae0249da42f789b9745b248d346a727f37e937" },
424
+ { "index": 13, "name": "Tide", "address": "0xf72c3a301b533eff7e3efa32549f9c934a4f4b29" },
425
+ { "index": 14, "name": "PulseXStable", "address": "0xf3b9742c859d089b6a2e3b3228dabb2c842b57d2" },
426
+ { "index": 15, "name": "AgoraX", "address": "0x79ea0ec76b510d08bf4ca9a4a53a1f9f80ea1697" },
427
+ { "index": 16, "name": "JoltOTC", "address": "0x033372eb8df4baad260e20d716742a825f1f113f" },
428
+ { "index": 17, "name": "SwitchLimitOrder", "address": "0xa799f49dcdec9056293187faa5f6f3727942a4ca" },
429
+ { "index": 18, "name": "SwitchX", "address": "0xf8744452598883792f235b92452127f4a8587db3" },
430
+ { "index": 19, "name": "LibertySwapV3", "address": "0xba24bb413ab32f02073385850907ebcf0a357e70" },
431
+ { "index": 20, "name": "FinvestaV3", "address": "0x012c44d0c465819ef3ceac208e0c1b272087a8b4" }
432
+ ]
433
+ }
434
+ ```
435
+
436
+ Finvesta is a Liberty-style V3 venue with fee tiers `100`, `500`, `2500`, and
437
+ `10000`. It can be selected for normal routes, but it is not transfer-tax safe.
438
+ Always treat the live `/swap/adapters` response as the runtime source of truth.
428
439
 
429
440
  #### Using adapter indices to filter routing
430
441
 
@@ -434,8 +445,8 @@ Pass adapter indices as a comma-separated `adapters` param to `/swap/quote`:
434
445
  # Route only through PulseXV2 (index 3):
435
446
  GET /swap/quote?...&adapters=3
436
447
 
437
- # Route through PulseXV2 + UniswapV3:
438
- GET /swap/quote?...&adapters=3,6
448
+ # Route through PulseXV2 + UniswapV3:
449
+ GET /swap/quote?...&adapters=3,7
439
450
 
440
451
  # Exclude nothing (default — omit the param):
441
452
  GET /swap/quote?...
@@ -584,7 +595,7 @@ Returns the optimal split-route for a swap and (optionally) a ready-to-send tran
584
595
  | `fee` | No | integer | `30` | Protocol fee in basis points (0.30 %). Range: `30`–`100`. Defaults to `30` if omitted. |
585
596
  | `partnerAddress` | No | address | `0x0…0` | Your partner wallet to receive 50 % of collected fees. Omit or pass `0x0` for no partner. |
586
597
  | `feeOnOutput` | No | string | `"false"` | Controls fee mode. `"true"` = fee deducted from output. `"false"` = fee deducted from input (default). Affects `expectedOutputAmount` accuracy — see [Swap Integration Flow](#swap-integration-flow). |
587
- | `adapters` | No | string | — | Comma-separated adapter indices to restrict routing (e.g. `"3"` for PulseXV2 only, `"3,6"` for PulseXV2 + UniswapV3). Get available indices from [List Adapters](#list-adapters). |
598
+ | `adapters` | No | string | — | Comma-separated adapter indices to restrict routing (e.g. `"3"` for PulseXV2 only, `"3,7"` for PulseXV2 + UniswapV3). Get available indices from [List Adapters](#list-adapters). |
588
599
 
589
600
  > \* If `sender` is omitted, the response will still contain routing data, `minAmountOut`, and tax info, but the `tx` object will be absent. This is useful for **showing estimated swap output before the user connects their wallet** — you can display prices, routes, and tax warnings without requiring a wallet connection. Once the user connects, re-fetch the quote with `sender` to get the ready-to-send `tx` object.
590
601
 
@@ -957,9 +968,12 @@ Robinhood constants are available from
957
968
  | **SwitchLimitOrder** (V1 — legacy) | `0x0e884072a891b406C0D814907A1E2310fE5F5Deb` |
958
969
  | **SwitchPLSFlow** (V2 — current) | `0xCf5606bdC750d8626Cec32CA2E1BB207968db1D5` |
959
970
  | **SwitchPLSFlow** (V1 — legacy) | `0x88c9e2C83b6B7c707602e548481e58E920694E64` |
960
- | **Native PLS sentinel** | `0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE` |
961
- | **WPLS** | `0xA1077a294dDE1B09bB078844df40758a5D0f9a27` |
962
- | **Fee denominator** | `10000` (basis points) |
971
+ | **Native PLS sentinel** | `0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE` |
972
+ | **WPLS** | `0xA1077a294dDE1B09bB078844df40758a5D0f9a27` |
973
+ | **Finvesta V3 adapter** | Index `20`; `0x012c44d0C465819eF3CeAC208e0c1B272087a8b4` (not transfer-tax safe) |
974
+ | **Finvesta V3 factory** | `0x7f5c7C5144b4B4c6e954A5b2D75C318C5467EFDc` |
975
+ | **Finvesta fee tiers** | `100`, `500`, `2500`, `10000` |
976
+ | **Fee denominator** | `10000` (basis points) |
963
977
  | **Max slippage** | `5000` bps (50 %) |
964
978
  | **Max fee** | `100` bps (1 %) |
965
979
  | **Min fee** | `30` bps (0.30 %) — enforced on-chain by `MIN_FEE` |
package/ROBINHOOD.md CHANGED
@@ -11,7 +11,7 @@ Production integration reference for Switch swaps on Robinhood Chain mainnet.
11
11
  | Explorer | `https://robinhoodchain.blockscout.com` |
12
12
  | Quote API | `https://quote.switch.win/swap/quote` |
13
13
  | Tax API | `https://quote.switch.win/swap/checkTax` |
14
- | Supported liquidity | 19 adapters: Uniswap V2/V3/V4, Switch limit orders, SwapHood, Up33, Sheriff, Aeon, Catnip, PancakeSwap, RobinSwap, SushiSwap, GIGA, Flap, and Ramses |
14
+ | Supported liquidity | 20 adapters: Uniswap V2/V3/V4, Switch limit orders, SwapHood, Up33, Sheriff, Aeon, Catnip, PancakeSwap V2/V3, RobinSwap, SushiSwap, GIGA, Flap, and Ramses |
15
15
  | Limit orders | Available: EIP-712 ERC-20 orders plus native ETH flow |
16
16
 
17
17
  ## Contents
@@ -107,7 +107,7 @@ await window.ethereum.request({
107
107
  | SwitchRouter | `0x8730C3e2cF2c8CDa8E6166837A1Ed26f46aa9E59` |
108
108
  | Uniswap V2 adapter | `0x7a14d7A8509a66209D4332843b983b29bF5604A4` |
109
109
  | Uniswap V3 adapter | `0xbcA08f296d9Ba0dc19Aa0E05D355365cE29A3205` |
110
- | Uniswap V4 adapter | `0x754dDCD05aFbAd1cc7Bc42B9268EB586F579E7F6` |
110
+ | Uniswap V4 adapter | `0xB9885d3C55e79499bf887F2fBe445e01A8cFFf1c` |
111
111
  | SwitchLimitOrder | `0x752c50DDd3B426cAE3D7A995F313Ac74ac6B0230` |
112
112
  | Native ETH flow | `0x029FfC6aF9112eA078f1D6f4a98826DDB2136cf6` |
113
113
  | Switch Limit Order adapter (index 3) | `0x412F625072c10e58C619D1e0b3C95cd3d5689871` |
@@ -119,13 +119,19 @@ await window.ethereum.request({
119
119
  | Aeon Algebra adapter (index 9) | `0x20615954FB87360139e7DdDB519359498EbD1904` |
120
120
  | Catnip V2 adapter (index 10) | `0x5b2Ca358d56490Dc86224D502522314De7707237` |
121
121
  | PancakeSwap V2 adapter (index 11) | `0x3B6e71A59553143937Fef74a7B50AFD24528786E` |
122
- | RobinSwap V3 adapter (index 12) | `0x798f77D63b46b0E019de206E111e5ea5CC16BEc8` |
123
- | SushiSwap V3 adapter (index 13) | `0xca3EA0Fd6E31f94c81B6586836790adE638313ED` |
124
- | GIGA V2 adapter (index 14) | `0xa379c7D17F7fEe735773879D4069886B117AB54a` |
125
- | GIGA V3 adapter (index 15) | `0xcAa612CDe3d3FbE97Be97eB5f79BC91597432d55` |
126
- | Flap Portal adapter (index 16) | `0x6af2A4475C44d5833575150Bf7C3D3FE6Bf4F344` |
127
- | Ramses V3 adapter (index 17) | `0xdBf182774C60932c6fe1Bf3FFaB8Ca28CCb0dC17` |
128
- | Ramses V2 adapter (index 18) | `0x5fe3b873c222e76f7630b40052f07ee06196E6d3` |
122
+ | PancakeSwap V3 adapter (index 12) | `0xD2Adac87bab4f0f99CF2a21c552c88d1C9825cCC` |
123
+ | RobinSwap V3 adapter (index 13) | `0x798f77D63b46b0E019de206E111e5ea5CC16BEc8` |
124
+ | SushiSwap V3 adapter (index 14) | `0xca3EA0Fd6E31f94c81B6586836790adE638313ED` |
125
+ | GIGA V2 adapter (index 15) | `0xa379c7D17F7fEe735773879D4069886B117AB54a` |
126
+ | GIGA V3 adapter (index 16) | `0xcAa612CDe3d3FbE97Be97eB5f79BC91597432d55` |
127
+ | Flap Portal adapter (index 17) | `0x6af2A4475C44d5833575150Bf7C3D3FE6Bf4F344` |
128
+ | Ramses V3 adapter (index 18) | `0xdBf182774C60932c6fe1Bf3FFaB8Ca28CCb0dC17` |
129
+ | Ramses V2 adapter (index 19) | `0x5fe3b873c222e76f7630b40052f07ee06196E6d3` |
130
+
131
+ The PancakeSwap V3 adapter was created in
132
+ [deployment transaction `0xa82a...cfa8`](https://robinhoodchain.blockscout.com/tx/0xa82a53e8e32e7a26be720d62e157c820e8c25ccbb3826e604435480606e0cfa8)
133
+ and inserted at index `12` in
134
+ [router transaction `0xae59...94b5`](https://robinhoodchain.blockscout.com/tx/0xae5949bad45dfbdcd930a2fd39e5fb22914b51704f8c7b137f996a154e8d94b5).
129
135
 
130
136
  The V4 adapter was created in
131
137
  [deployment transaction `0x60d5...34a7`](https://robinhoodchain.blockscout.com/tx/0x60d56466a8162a643a15ecde98322ec05ea23d44d03fbd817df4ddbaef4834a7)
@@ -224,11 +230,10 @@ V4 discovery must preserve the full key. The backend selects the key and
224
230
  embeds adapter-specific route data in the quote; clients should submit the
225
231
  returned transaction unchanged rather than reconstructing V4 calldata.
226
232
 
227
- Phase one supports **hookless static-fee pools only** (`hooks` is the zero
228
- address, hook data is empty, and the dynamic-fee flag is not set). Pools with
229
- custom hooks or dynamic fees are not considered until their behavior and
230
- required hook data have been explicitly reviewed and allowed. This restriction
231
- does not reduce V2 or V3 routing coverage.
233
+ The current adapter supplies empty hook data and supports hooked pools whose
234
+ normal V4 quoter simulation succeeds. Hooks requiring proprietary hook data or
235
+ router allowlisting still require a specific integration. This does not reduce
236
+ V2 or V3 routing coverage.
232
237
 
233
238
  V4 can represent native ETH as the zero-address currency. Switch routes use
234
239
  the canonical Robinhood WETH address, so the V4 adapter unwraps WETH when a
@@ -237,7 +242,7 @@ it. API callers should continue using `ROBINHOOD_NATIVE_ETH` for a native user
237
242
  input/output and `ROBINHOOD_TOKENS.WETH.address` for the ERC-20.
238
243
 
239
244
  The Robinhood Uniswap V4 adapter is deployed at
240
- `0x754dDCD05aFbAd1cc7Bc42B9268EB586F579E7F6`, whitelisted in the production
245
+ `0xB9885d3C55e79499bf887F2fBe445e01A8cFFf1c`, whitelisted in the production
241
246
  SwitchRouter at adapter index `2`, and exported as
242
247
  `ROBINHOOD_SWITCH_CONTRACTS.uniswapV4Adapter`. Continue treating
243
248
  `GET /swap/adapters?network=robinhood` as the source of truth for the adapters
@@ -257,8 +262,8 @@ The canonical Robinhood V4 infrastructure is available through
257
262
  | Permit2 | `0x000000000022D473030F116dDEE9F6B43aC78BA3` |
258
263
 
259
264
  If either side is detected as a transfer-tax token, the complete route is
260
- restricted to tax-safe adapters `0`, `4`, `7`, `10`, `11`, `14`, `16`, and
261
- `18`. Indices `14` and `18` use direct-pair V2 execution. Flap at index `16`
265
+ restricted to tax-safe adapters `0`, `4`, `7`, `10`, `11`, `15`, `17`, and
266
+ `19`. Indices `15` and `19` use direct-pair V2 execution. Flap at index `17`
262
267
  must execute through its Portal, whose quote already includes Flap token taxes
263
268
  in both directions; clients must not apply those taxes a second time.
264
269
 
@@ -493,13 +498,14 @@ Robinhood currently returns:
493
498
  | `9` | Aeon Algebra |
494
499
  | `10` | Catnip V2 |
495
500
  | `11` | PancakeSwap V2 |
496
- | `12` | RobinSwap V3 |
497
- | `13` | SushiSwap V3 |
498
- | `14` | GIGA V2 |
499
- | `15` | GIGA V3 |
500
- | `16` | Flap |
501
- | `17` | Ramses V3 |
502
- | `18` | Ramses V2 |
501
+ | `12` | PancakeSwap V3 |
502
+ | `13` | RobinSwap V3 |
503
+ | `14` | SushiSwap V3 |
504
+ | `15` | GIGA V2 |
505
+ | `16` | GIGA V3 |
506
+ | `17` | Flap |
507
+ | `18` | Ramses V3 |
508
+ | `19` | Ramses V2 |
503
509
 
504
510
  Treat the endpoint response, not this document, as the source of truth for
505
511
  which adapters are currently selectable.
@@ -507,7 +513,7 @@ which adapters are currently selectable.
507
513
  Do not permanently hard-code the available adapter list in an integration.
508
514
  Fetch it when presenting routing-source controls. If a quote involves a tax
509
515
  token, the backend restricts routing to tax-safe adapters `0`, `4`, `7`, `10`,
510
- `11`, `14`, `16`, and `18`; an explicit filter that excludes all of them is
516
+ `11`, `15`, `17`, and `19`; an explicit filter that excludes all of them is
511
517
  rejected.
512
518
 
513
519
  ### Check token tax
@@ -649,13 +655,13 @@ Always identify tokens by address and obtain a fresh quote and tax check.
649
655
 
650
656
  ### Routing configuration
651
657
 
652
- The production router currently exposes nineteen ordered adapters:
658
+ The production router currently exposes twenty ordered adapters:
653
659
 
654
660
  | Index | Venue | Routing family |
655
661
  |---:|---|---|
656
662
  | `0` | Uniswap V2 | Direct-pair V2 |
657
663
  | `1` | Uniswap V3 | V3 tiers `100`, `500`, `3000`, `10000` |
658
- | `2` | Uniswap V4 | Complete hookless static-fee `PoolKey` |
664
+ | `2` | Uniswap V4 | Complete `PoolKey`; empty hook data for compatible hooks |
659
665
  | `3` | Switch limit orders | Signed/on-chain order liquidity |
660
666
  | `4` | SwapHood V2 | Pair-owned variable-fee V2 |
661
667
  | `5` | SwapHood V3 | Pancake V3 tiers `100`, `500`, `2500`, `10000` |
@@ -664,14 +670,15 @@ The production router currently exposes nineteen ordered adapters:
664
670
  | `8` | Sheriff | Algebra Integral |
665
671
  | `9` | Aeon | Algebra Integral with plugin-aware fees |
666
672
  | `10` | Catnip | Direct-pair V2, fixed 30 bps |
667
- | `11` | PancakeSwap | Direct-pair V2, fixed 25 bps |
668
- | `12` | RobinSwap | V3 tiers `100`, `500`, `2500`, `3000`, `10000` |
669
- | `13` | SushiSwap | V3 tiers `500`, `3000`, `10000` |
670
- | `14` | GIGA V2 | Direct-pair V2 using the pair's live quote and pair-owned fee |
671
- | `15` | GIGA V3 | V3 tiers `100`, `500`, `1000`, `2000`, `3000`, `10000` |
672
- | `16` | Flap | Portal-executed bonding curve; Portal quote includes token tax |
673
- | `17` | Ramses V3 | Tick spacings `1`, `5`, `10`, `50`, `100`, `200`, stored in the route `fee` field |
674
- | `18` | Ramses V2 | Direct-pair, pair-owned variable-fee V2 |
673
+ | `11` | PancakeSwap V2 | Direct-pair V2, fixed 25 bps |
674
+ | `12` | PancakeSwap V3 | Factory-enabled tiers `100`, `500`, `2500`, `10000` |
675
+ | `13` | RobinSwap | V3 tiers `100`, `500`, `2500`, `3000`, `10000` |
676
+ | `14` | SushiSwap | V3 tiers `500`, `3000`, `10000` |
677
+ | `15` | GIGA V2 | Direct-pair V2 using the pair's live quote and pair-owned fee |
678
+ | `16` | GIGA V3 | V3 tiers `100`, `500`, `1000`, `2000`, `3000`, `10000` |
679
+ | `17` | Flap | Portal-executed bonding curve; Portal quote includes token tax |
680
+ | `18` | Ramses V3 | Tick spacings `1`, `5`, `10`, `50`, `100`, `200`, stored in the route `fee` field |
681
+ | `19` | Ramses V2 | Direct-pair, pair-owned variable-fee V2 |
675
682
 
676
683
  V4 pools are discovered by complete `PoolKey`, not by applying a V3 fee-tier
677
684
  list. Native-ETH V4 currencies are normalized through the WETH/native alias
@@ -684,7 +691,7 @@ JUGGERNAUT, MARIAN, and WALLET. The expanded set was selected from the
684
691
  it is taxed; INDEX remains an endpoint token but is excluded because its
685
692
  dominant liquidity depends on V4 hooks that are not yet supported. If either side is
686
693
  detected as a transfer-tax token, the backend restricts the entire route to
687
- tax-safe adapters `0`, `4`, `7`, `10`, `11`, `14`, `16`, and `18`;
694
+ tax-safe adapters `0`, `4`, `7`, `10`, `11`, `15`, `17`, and `19`;
688
695
  concentrated-liquidity and limit-order adapters are excluded. Flap is the one
689
696
  non-direct-pair member: only its Portal can execute the curve swap, and the
690
697
  Portal quote already includes the Flap token tax.
@@ -705,9 +712,10 @@ untrusted clients.
705
712
  ## Current limitations
706
713
 
707
714
  - Rialto liquidity is not integrated.
708
- - Robinhood market routing is limited to the nineteen production adapters
715
+ - Robinhood market routing is limited to the twenty production adapters
709
716
  listed above. Always use `/swap/adapters` as the runtime source of truth.
710
- - The first V4 phase intentionally excludes hooked and dynamic-fee pools.
717
+ - V4 hooks that require proprietary hook data or router allowlisting need a
718
+ venue-specific integration.
711
719
  - A V4 allocation currently selects its best single PoolKey; intra-V4
712
720
  multi-pool splitting is not yet enabled. V4 can still split against other
713
721
  eligible adapters.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@switch-win/sdk",
3
- "version": "1.2.4",
3
+ "version": "1.2.6",
4
4
  "description": "Official integration kit for the Switch DEX Aggregator on PulseChain and Robinhood Chain",
5
5
  "author": "BuildTheTech",
6
6
  "license": "MIT",
package/src/constants.ts CHANGED
@@ -48,8 +48,22 @@ export const SWITCH_ROUTER = "0x0305fcb5dA680EA6fd1B01A96C1949175B99d406";
48
48
  */
49
49
  export const NATIVE_PLS = "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE";
50
50
 
51
- /** Wrapped PLS (WPLS) ERC-20 token address */
52
- export const WPLS = "0xA1077a294dDE1B09bB078844df40758a5D0f9a27";
51
+ /** Wrapped PLS (WPLS) ERC-20 token address */
52
+ export const WPLS = "0xA1077a294dDE1B09bB078844df40758a5D0f9a27";
53
+
54
+ /** Finvesta's production Liberty-style V3 adapter index in SwitchRouter. */
55
+ export const FINVESTA_V3_ADAPTER_INDEX = 20;
56
+
57
+ /** Verified Finvesta V3 adapter. Not safe for transfer-tax-sensitive hops. */
58
+ export const FINVESTA_V3_ADAPTER =
59
+ "0x012c44d0C465819eF3CeAC208e0c1B272087a8b4";
60
+
61
+ /** Finvesta V3 factory queried by the adapter. */
62
+ export const FINVESTA_V3_FACTORY =
63
+ "0x7f5c7C5144b4B4c6e954A5b2D75C318C5467EFDc";
64
+
65
+ /** Factory-enabled Finvesta fee tiers, in hundredths of one basis point. */
66
+ export const FINVESTA_V3_FEE_TIERS = [100, 500, 2500, 10000] as const;
53
67
 
54
68
  // ── Limit Order contract ────────────────────────────────────────────────
55
69
 
package/src/index.ts CHANGED
@@ -59,10 +59,14 @@ export {
59
59
  ADAPTERS_ENDPOINT,
60
60
  CHECK_TAX_ENDPOINT,
61
61
  CHAIN_ID,
62
- SWITCH_ROUTER,
63
- NATIVE_PLS,
64
- WPLS,
65
- FEE_DENOMINATOR,
62
+ SWITCH_ROUTER,
63
+ NATIVE_PLS,
64
+ WPLS,
65
+ FINVESTA_V3_ADAPTER_INDEX,
66
+ FINVESTA_V3_ADAPTER,
67
+ FINVESTA_V3_FACTORY,
68
+ FINVESTA_V3_FEE_TIERS,
69
+ FEE_DENOMINATOR,
66
70
  MAX_FEE_BPS,
67
71
  MAX_SLIPPAGE_BPS,
68
72
  DEFAULT_SLIPPAGE_BPS,
@@ -29,7 +29,7 @@ export const ROBINHOOD_SWITCH_CONTRACTS = {
29
29
  nativeEthFlow: "0x029FfC6aF9112eA078f1D6f4a98826DDB2136cf6",
30
30
  uniswapV2Adapter: "0x7a14d7A8509a66209D4332843b983b29bF5604A4",
31
31
  uniswapV3Adapter: "0xbcA08f296d9Ba0dc19Aa0E05D355365cE29A3205",
32
- uniswapV4Adapter: "0x754dDCD05aFbAd1cc7Bc42B9268EB586F579E7F6",
32
+ uniswapV4Adapter: "0xB9885d3C55e79499bf887F2fBe445e01A8cFFf1c",
33
33
  limitOrderAdapter: "0x412F625072c10e58C619D1e0b3C95cd3d5689871",
34
34
  swapHoodV2Adapter: "0x6D8746f02e52944c13824fA691c6f4186E463354",
35
35
  swapHoodV3Adapter: "0x9645dE0AcB48F0AAefdBEb423F0558457907DE98",
@@ -39,6 +39,8 @@ export const ROBINHOOD_SWITCH_CONTRACTS = {
39
39
  aeonAlgebraAdapter: "0x20615954FB87360139e7DdDB519359498EbD1904",
40
40
  catnipV2Adapter: "0x5b2Ca358d56490Dc86224D502522314De7707237",
41
41
  pancakeSwapV2Adapter: "0x3B6e71A59553143937Fef74a7B50AFD24528786E",
42
+ pancakeSwapV3Adapter: "0xD2Adac87bab4f0f99CF2a21c552c88d1C9825cCC",
43
+ robinSwapV2Adapter: "0xF694145F104c3C24f723301e160D2Ccf0Db31FE6",
42
44
  robinSwapV3Adapter: "0x798f77D63b46b0E019de206E111e5ea5CC16BEc8",
43
45
  sushiSwapV3Adapter: "0xca3EA0Fd6E31f94c81B6586836790adE638313ED",
44
46
  gigaV2Adapter: "0xa379c7D17F7fEe735773879D4069886B117AB54a",
@@ -58,7 +60,7 @@ export interface RobinhoodAdapter {
58
60
  }
59
61
 
60
62
  /**
61
- * Snapshot of the ordered production adapter registry verified on 2026-08-02.
63
+ * Snapshot of the ordered production adapter registry verified on 2026-08-09.
62
64
  *
63
65
  * Adapter registration can change. Fetch
64
66
  * `GET /swap/adapters?network=robinhood` when runtime freshness matters.
@@ -138,42 +140,54 @@ export const ROBINHOOD_ADAPTERS = [
138
140
  },
139
141
  {
140
142
  index: 12,
143
+ name: "PancakeSwapV3",
144
+ address: ROBINHOOD_SWITCH_CONTRACTS.pancakeSwapV3Adapter,
145
+ taxSafe: false,
146
+ },
147
+ {
148
+ index: 13,
149
+ name: "RobinSwapV2",
150
+ address: ROBINHOOD_SWITCH_CONTRACTS.robinSwapV2Adapter,
151
+ taxSafe: true,
152
+ },
153
+ {
154
+ index: 14,
141
155
  name: "RobinSwapV3",
142
156
  address: ROBINHOOD_SWITCH_CONTRACTS.robinSwapV3Adapter,
143
157
  taxSafe: false,
144
158
  },
145
159
  {
146
- index: 13,
160
+ index: 15,
147
161
  name: "SushiSwapV3",
148
162
  address: ROBINHOOD_SWITCH_CONTRACTS.sushiSwapV3Adapter,
149
163
  taxSafe: false,
150
164
  },
151
165
  {
152
- index: 14,
166
+ index: 16,
153
167
  name: "GigaV2",
154
168
  address: ROBINHOOD_SWITCH_CONTRACTS.gigaV2Adapter,
155
169
  taxSafe: true,
156
170
  },
157
171
  {
158
- index: 15,
172
+ index: 17,
159
173
  name: "GigaV3",
160
174
  address: ROBINHOOD_SWITCH_CONTRACTS.gigaV3Adapter,
161
175
  taxSafe: false,
162
176
  },
163
177
  {
164
- index: 16,
178
+ index: 18,
165
179
  name: "Flap",
166
180
  address: ROBINHOOD_SWITCH_CONTRACTS.flapAdapter,
167
181
  taxSafe: true,
168
182
  },
169
183
  {
170
- index: 17,
184
+ index: 19,
171
185
  name: "RamsesV3",
172
186
  address: ROBINHOOD_SWITCH_CONTRACTS.ramsesV3Adapter,
173
187
  taxSafe: false,
174
188
  },
175
189
  {
176
- index: 18,
190
+ index: 20,
177
191
  name: "RamsesV2",
178
192
  address: ROBINHOOD_SWITCH_CONTRACTS.ramsesV2Adapter,
179
193
  taxSafe: true,
@@ -182,7 +196,7 @@ export const ROBINHOOD_ADAPTERS = [
182
196
 
183
197
  /** Adapter indices currently eligible for Robinhood transfer-tax routes. */
184
198
  export const ROBINHOOD_TAX_SAFE_ADAPTER_INDICES = [
185
- 0, 4, 7, 10, 11, 14, 16, 18,
199
+ 0, 4, 7, 10, 11, 13, 16, 18, 20,
186
200
  ] as const;
187
201
 
188
202
  /** Current Robinhood transfer-tax-safe adapter metadata. */