@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 +39 -25
- package/ROBINHOOD.md +46 -38
- package/package.json +1 -1
- package/src/constants.ts +16 -2
- package/src/index.ts +8 -4
- package/src/networks/robinhood.ts +23 -9
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,
|
|
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",
|
|
412
|
-
{ "index": 1, "name": "SushiV2",
|
|
413
|
-
{ "index": 2, "name": "PulseXV1",
|
|
414
|
-
{ "index": 3, "name": "PulseXV2",
|
|
415
|
-
{ "index": 4, "name": "9inchV2",
|
|
416
|
-
{ "index": 5, "name": "DextopV2",
|
|
417
|
-
{ "index": 6, "name": "
|
|
418
|
-
{ "index": 7, "name": "
|
|
419
|
-
{ "index": 8, "name": "
|
|
420
|
-
{ "index": 9, "name": "
|
|
421
|
-
{ "index": 10, "name": "
|
|
422
|
-
{ "index": 11, "name": "
|
|
423
|
-
{ "index": 12, "name": "
|
|
424
|
-
{ "index": 13, "name": "
|
|
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,
|
|
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,
|
|
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
|
-
| **
|
|
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 |
|
|
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 | `
|
|
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
|
-
|
|
|
123
|
-
|
|
|
124
|
-
|
|
|
125
|
-
| GIGA
|
|
126
|
-
|
|
|
127
|
-
|
|
|
128
|
-
| Ramses
|
|
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
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
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
|
-
`
|
|
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`, `
|
|
261
|
-
`
|
|
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` |
|
|
497
|
-
| `13` |
|
|
498
|
-
| `14` |
|
|
499
|
-
| `15` | GIGA
|
|
500
|
-
| `16` |
|
|
501
|
-
| `17` |
|
|
502
|
-
| `18` | Ramses
|
|
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`, `
|
|
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
|
|
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
|
|
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` |
|
|
669
|
-
| `13` |
|
|
670
|
-
| `14` |
|
|
671
|
-
| `15` | GIGA
|
|
672
|
-
| `16` |
|
|
673
|
-
| `17` |
|
|
674
|
-
| `18` | Ramses
|
|
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`, `
|
|
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
|
|
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
|
-
-
|
|
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
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
|
-
|
|
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: "
|
|
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-
|
|
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:
|
|
160
|
+
index: 15,
|
|
147
161
|
name: "SushiSwapV3",
|
|
148
162
|
address: ROBINHOOD_SWITCH_CONTRACTS.sushiSwapV3Adapter,
|
|
149
163
|
taxSafe: false,
|
|
150
164
|
},
|
|
151
165
|
{
|
|
152
|
-
index:
|
|
166
|
+
index: 16,
|
|
153
167
|
name: "GigaV2",
|
|
154
168
|
address: ROBINHOOD_SWITCH_CONTRACTS.gigaV2Adapter,
|
|
155
169
|
taxSafe: true,
|
|
156
170
|
},
|
|
157
171
|
{
|
|
158
|
-
index:
|
|
172
|
+
index: 17,
|
|
159
173
|
name: "GigaV3",
|
|
160
174
|
address: ROBINHOOD_SWITCH_CONTRACTS.gigaV3Adapter,
|
|
161
175
|
taxSafe: false,
|
|
162
176
|
},
|
|
163
177
|
{
|
|
164
|
-
index:
|
|
178
|
+
index: 18,
|
|
165
179
|
name: "Flap",
|
|
166
180
|
address: ROBINHOOD_SWITCH_CONTRACTS.flapAdapter,
|
|
167
181
|
taxSafe: true,
|
|
168
182
|
},
|
|
169
183
|
{
|
|
170
|
-
index:
|
|
184
|
+
index: 19,
|
|
171
185
|
name: "RamsesV3",
|
|
172
186
|
address: ROBINHOOD_SWITCH_CONTRACTS.ramsesV3Adapter,
|
|
173
187
|
taxSafe: false,
|
|
174
188
|
},
|
|
175
189
|
{
|
|
176
|
-
index:
|
|
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,
|
|
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. */
|