@switch-win/sdk 1.2.3 → 1.2.4

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/LIMIT-ORDERS.md CHANGED
@@ -390,7 +390,7 @@ When `feeOnOutput=true`, the Router pulls tokens directly from the maker. If an
390
390
  | **Neither token is taxed** | `false` (default) | Maximum operator flexibility → best chance of fill |
391
391
  | **Input token is taxed** | `true` | Router sends tokens directly from maker → pool in one transfer (one tax). Default mode would do maker → LO → pool (two transfers, two taxes). |
392
392
  | **Output token is taxed** | `false` (default) | Output goes directly to recipient in one transfer. |
393
- | **Both tokens taxed** | `false` | Supported through tax-safe V2 routes; fee on input avoids another output-token transfer. |
393
+ | **Both tokens taxed** | `false` | Supported through tax-safe routes; fee on input avoids another output-token transfer. |
394
394
 
395
395
  > **Recommendation:** Use `feeOnOutput: false` (the default) unless the input token has a transfer tax. This gives operators the most flexibility and the best chance of filling your order.
396
396
 
package/README.md CHANGED
@@ -123,9 +123,10 @@ For a production integration with tax token handling, adapter filtering, and fee
123
123
  Robinhood uses the same quote endpoint; set `network=robinhood`. The dedicated
124
124
  module includes canonical chain metadata, deployed Switch contracts, vetted
125
125
  routing hubs, and a URL builder that always includes the correct network.
126
- The production router exposes fourteen adapters across Uniswap, SwapHood,
127
- Up33, Sheriff, Aeon, Catnip, PancakeSwap, RobinSwap, SushiSwap, and Switch limit
128
- orders.
126
+ The production router exposes nineteen adapters across Uniswap, SwapHood,
127
+ Up33, Sheriff, Aeon, Catnip, PancakeSwap, RobinSwap, SushiSwap, GIGA, Flap,
128
+ Ramses, and Switch limit orders. `ROBINHOOD_ADAPTERS` contains a typed snapshot;
129
+ fetch `/swap/adapters?network=robinhood` when runtime freshness matters.
129
130
 
130
131
  For network configuration, deployed addresses, tax handling, execution, and
131
132
  the complete frontend token list, see [`ROBINHOOD.md`](ROBINHOOD.md).
@@ -687,11 +688,11 @@ GET /swap/quote?network=pulsechain&from=0xA1077a294dDE1B09bB078844df40758a5D0f9a
687
688
  | `toToken` | `string` | Output token address |
688
689
  | `receiver` | `string?` | Recipient address for output tokens. Same as `sender` unless a custom `receiver` was specified. |
689
690
  | `totalAmountIn` | `string` | Total input amount in wei |
690
- | `totalAmountOut` | `string` | Raw DEX output in wei reflects price impact only (before taxes, fees, and slippage) |
691
+ | `totalAmountOut` | `string` | Quoted route output in wei before the Switch protocol fee and slippage. Protocol-native quoters such as Flap Portal may already include their token-tax effect. |
691
692
  | `expectedOutputAmount` | `string` | Expected output the user will actually receive, in wei. Accounts for sell tax, protocol fee, and buy tax — but NOT slippage. This is the most accurate value to display as the estimated received amount. When `feeOnOutput` is passed correctly, this is **exact** (matches on-chain execution). |
692
- | `minAmountOut` | `string` | Minimum acceptable output after token taxes, fee, and slippage. When tax tokens are involved: `totalAmountOut × (10000 sellTaxBps) / 10000 × (10000 feeBps) / 10000 × (10000 − buyTaxBps) / 10000 × (10000 − slippageBps) / 10000`. This is the value encoded in the `tx` calldata as `_minTotalAmountOut`. |
693
+ | `minAmountOut` | `string` | Minimum acceptable output after adapter-specific tax accounting, fee, and slippage. Use the API value directly; do not recompute it by multiplying the reported tax rates. This is encoded in `tx.data` as `_minTotalAmountOut`. |
693
694
  | `paths` | `SwapPath[]` | Human-readable path descriptions |
694
- | `routeAllocation` | `RouteAllocationPlan` | Structured route breakdown (matches on-chain structs) |
695
+ | `routeAllocation` | `RouteAllocationPlan` | Human-readable structured route breakdown for display and analytics. It is not a drop-in on-chain ABI value. |
695
696
  | `tx` | `SwapTransaction?` | Ready-to-send transaction (fee on input). Only present when `sender` is provided. |
696
697
  | `txFeeOnOutput` | `SwapTransaction?` | Ready-to-send transaction (fee on output). Only present when `sender` is provided. Choose between `tx` and `txFeeOnOutput` at send time. |
697
698
  | `fromTokenTax` | `TokenTaxResponse?` | Transfer tax info for the input token. See [Tax Tokens Deep Dive](#tax-tokens-deep-dive). |
@@ -772,9 +773,16 @@ Present on every quote response as `fromTokenTax` and `toTokenTax`. Reports whet
772
773
 
773
774
  | Field | Type | Description |
774
775
  |---|---|---|
775
- | `adapter` | `string` | Human-readable DEX adapter name (e.g. `"PulseXV2"`) |
776
- | `amountIn` | `string` | Input amount routed through this adapter |
777
- | `amountOut` | `string` | Expected output from this adapter |
776
+ | `adapter` | `string` | Human-readable DEX adapter name (e.g. `"PulseXV2"`) |
777
+ | `amountIn` | `string` | Input amount routed through this adapter |
778
+ | `amountOut` | `string` | Expected output from this adapter |
779
+ | `fee` | `number?` | V3 fee tier or concentrated-liquidity tick-spacing hint; zero when unused |
780
+
781
+ Use the API-provided `tx.data` for execution. If you intentionally construct
782
+ router or limit-order calldata yourself, each on-chain adapter leg is
783
+ `{ adapter, amountIn, fee, data }`; `data` is required and should be `0x` for
784
+ adapters that need no payload. The display-oriented `routeAllocation` does not
785
+ contain enough information to encode every route family.
778
786
 
779
787
  ---
780
788
 
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 adapters: Uniswap V2/V3/V4, Switch limit orders, SwapHood, Up33, Sheriff, Aeon, Catnip, PancakeSwap, RobinSwap, and SushiSwap |
14
+ | Supported liquidity | 19 adapters: Uniswap V2/V3/V4, Switch limit orders, SwapHood, Up33, Sheriff, Aeon, Catnip, PancakeSwap, 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
@@ -115,12 +115,17 @@ await window.ethereum.request({
115
115
  | SwapHood V3 adapter (index 5) | `0x9645dE0AcB48F0AAefdBEb423F0558457907DE98` |
116
116
  | Up33 CL adapter (index 6) | `0x388179D2FB0ABcE9b03068916aF8a3c4dfD023c8` |
117
117
  | Sheriff V2 adapter (index 7) | `0xBDB3EB0355981500f58C9bc77c3E61762844A146` |
118
- | Sheriff Algebra adapter (index 8) | `0xeFE1affb0e2Bb8A9F7d9D30751bAF679996ADA26` |
118
+ | Sheriff Algebra adapter (index 8) | `0xaC4da986100724983042Ec28c28db243E2f828CB` |
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
122
  | RobinSwap V3 adapter (index 12) | `0x798f77D63b46b0E019de206E111e5ea5CC16BEc8` |
123
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` |
124
129
 
125
130
  The V4 adapter was created in
126
131
  [deployment transaction `0x60d5...34a7`](https://robinhoodchain.blockscout.com/tx/0x60d56466a8162a643a15ecde98322ec05ea23d44d03fbd817df4ddbaef4834a7)
@@ -251,10 +256,11 @@ The canonical Robinhood V4 infrastructure is available through
251
256
  | Universal Router | `0x8876789976decbfcbbbe364623c63652db8c0904` |
252
257
  | Permit2 | `0x000000000022D473030F116dDEE9F6B43aC78BA3` |
253
258
 
254
- Tax-token safety is unchanged: if either side is detected as a transfer-tax
255
- token, the complete route is restricted to direct-pair V2 adapters `0`, `4`,
256
- `7`, `10`, and `11`. Concentrated-liquidity adapters are excluded from that
257
- quote.
259
+ 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`
262
+ must execute through its Portal, whose quote already includes Flap token taxes
263
+ in both directions; clients must not apply those taxes a second time.
258
264
 
259
265
  ## Swap integration flow
260
266
 
@@ -270,9 +276,11 @@ Use the same sequence as a PulseChain integration:
270
276
  6. Show `expectedOutputAmount`, `minAmountOut`, route allocation, and detected
271
277
  taxes to the user.
272
278
 
273
- Any swap involving a tax token is routed entirely through the tax-safe
274
- direct-pair V2 adapter set (`0`, `4`, `7`, `10`, and `11`). This also applies
275
- when both input and output are tax tokens.
279
+ Any swap involving a tax token is routed entirely through the tax-safe adapter
280
+ set (`0`, `4`, `7`, `10`, `11`, `14`, `16`, and `18`). This also applies when
281
+ both input and output are tax tokens. Direct-pair adapters receive the
282
+ post-transfer amount; Flap is quoted separately with its full adapter input
283
+ because Portal quoting already models the taxable transfer.
276
284
 
277
285
  ## Quickstart
278
286
 
@@ -487,6 +495,11 @@ Robinhood currently returns:
487
495
  | `11` | PancakeSwap V2 |
488
496
  | `12` | RobinSwap V3 |
489
497
  | `13` | SushiSwap V3 |
498
+ | `14` | GIGA V2 |
499
+ | `15` | GIGA V3 |
500
+ | `16` | Flap |
501
+ | `17` | Ramses V3 |
502
+ | `18` | Ramses V2 |
490
503
 
491
504
  Treat the endpoint response, not this document, as the source of truth for
492
505
  which adapters are currently selectable.
@@ -494,7 +507,8 @@ which adapters are currently selectable.
494
507
  Do not permanently hard-code the available adapter list in an integration.
495
508
  Fetch it when presenting routing-source controls. If a quote involves a tax
496
509
  token, the backend restricts routing to tax-safe adapters `0`, `4`, `7`, `10`,
497
- and `11`; an explicit filter that excludes all of them is rejected.
510
+ `11`, `14`, `16`, and `18`; an explicit filter that excludes all of them is
511
+ rejected.
498
512
 
499
513
  ### Check token tax
500
514
 
@@ -548,11 +562,11 @@ Important response fields:
548
562
  |---|---|
549
563
  | `fromToken`, `toToken` | Normalized pair addresses. |
550
564
  | `totalAmountIn` | Gross input amount. |
551
- | `totalAmountOut` | Raw pool output before taxes and Switch fees. |
565
+ | `totalAmountOut` | Quoted route output before the Switch fee and slippage. Adapter-native quotes such as Flap Portal may already include token tax. |
552
566
  | `expectedOutputAmount` | Expected user receipt after tax and fee, before slippage. |
553
- | `minAmountOut` | Minimum output encoded into calldata. |
567
+ | `minAmountOut` | Minimum output after adapter-specific tax accounting, fee, and slippage; use it directly. |
554
568
  | `paths` | Human-readable route descriptions. |
555
- | `routeAllocation` | Structured split, hop, adapter, and pool-specific route allocation. V4 PoolKey data is encoded in the executable transaction and must not be reconstructed client-side. |
569
+ | `routeAllocation` | Human-readable split, hop, and adapter allocation. Adapter payloads such as V4 PoolKey data are encoded in the executable transaction and must not be reconstructed from this display object. |
556
570
  | `fromTokenTax`, `toTokenTax` | Detected tax metadata. |
557
571
  | `effectiveSlippageBps` | Slippage plus applicable tax buffers. |
558
572
  | `tx` | Fee-on-input transaction; present when `sender` is supplied. |
@@ -635,7 +649,7 @@ Always identify tokens by address and obtain a fresh quote and tax check.
635
649
 
636
650
  ### Routing configuration
637
651
 
638
- The production router currently exposes fourteen ordered adapters:
652
+ The production router currently exposes nineteen ordered adapters:
639
653
 
640
654
  | Index | Venue | Routing family |
641
655
  |---:|---|---|
@@ -653,6 +667,11 @@ The production router currently exposes fourteen ordered adapters:
653
667
  | `11` | PancakeSwap | Direct-pair V2, fixed 25 bps |
654
668
  | `12` | RobinSwap | V3 tiers `100`, `500`, `2500`, `3000`, `10000` |
655
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 |
656
675
 
657
676
  V4 pools are discovered by complete `PoolKey`, not by applying a V3 fee-tier
658
677
  list. Native-ETH V4 currencies are normalized through the WETH/native alias
@@ -665,8 +684,10 @@ JUGGERNAUT, MARIAN, and WALLET. The expanded set was selected from the
665
684
  it is taxed; INDEX remains an endpoint token but is excluded because its
666
685
  dominant liquidity depends on V4 hooks that are not yet supported. If either side is
667
686
  detected as a transfer-tax token, the backend restricts the entire route to
668
- direct-pair V2 adapters `0`, `4`, `7`, `10`, and `11`; concentrated-liquidity
669
- and limit-order adapters are excluded.
687
+ tax-safe adapters `0`, `4`, `7`, `10`, `11`, `14`, `16`, and `18`;
688
+ concentrated-liquidity and limit-order adapters are excluded. Flap is the one
689
+ non-direct-pair member: only its Portal can execute the curve swap, and the
690
+ Portal quote already includes the Flap token tax.
670
691
 
671
692
  The API may split a quote across routes and adapters. Integrators should render
672
693
  the returned `paths` or `routeAllocation` instead of assuming a single path.
@@ -684,7 +705,7 @@ untrusted clients.
684
705
  ## Current limitations
685
706
 
686
707
  - Rialto liquidity is not integrated.
687
- - Robinhood market routing is limited to the fourteen production adapters
708
+ - Robinhood market routing is limited to the nineteen production adapters
688
709
  listed above. Always use `/swap/adapters` as the runtime source of truth.
689
710
  - The first V4 phase intentionally excludes hooked and dynamic-fee pools.
690
711
  - A V4 allocation currently selects its best single PoolKey; intra-V4
@@ -1 +1 @@
1
- [{"type":"constructor","inputs":[{"name":"_switchRouter","type":"address","internalType":"address"},{"name":"_wnative","type":"address","internalType":"address"},{"name":"_fee","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"FEE_DENOMINATOR","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"LIMIT_ORDER_TYPEHASH","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"MAINTAINER_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"MAX_FEE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"OPERATOR_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"PARTNER_FEE_SHARE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"SWITCH_ROUTER","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"WNATIVE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"addMaintainer","inputs":[{"name":"addedMaintainer","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"addOperator","inputs":[{"name":"_operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"adminInvalidateNonce","inputs":[{"name":"_maker","type":"address","internalType":"address"},{"name":"_nonce","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"adminInvalidateNonces","inputs":[{"name":"_maker","type":"address","internalType":"address"},{"name":"_nonces","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"canFillOrder","inputs":[{"name":"order","type":"tuple","internalType":"struct SwitchLimitOrder.LimitOrder","components":[{"name":"maker","type":"address","internalType":"address"},{"name":"tokenIn","type":"address","internalType":"address"},{"name":"tokenOut","type":"address","internalType":"address"},{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"minAmountOut","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"feeOnOutput","type":"bool","internalType":"bool"},{"name":"recipient","type":"address","internalType":"address"},{"name":"unwrapOutput","type":"bool","internalType":"bool"},{"name":"partnerAddress","type":"address","internalType":"address"}]},{"name":"signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"directFillOrder","inputs":[{"name":"order","type":"tuple","internalType":"struct SwitchLimitOrder.LimitOrder","components":[{"name":"maker","type":"address","internalType":"address"},{"name":"tokenIn","type":"address","internalType":"address"},{"name":"tokenOut","type":"address","internalType":"address"},{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"minAmountOut","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"feeOnOutput","type":"bool","internalType":"bool"},{"name":"recipient","type":"address","internalType":"address"},{"name":"unwrapOutput","type":"bool","internalType":"bool"},{"name":"partnerAddress","type":"address","internalType":"address"}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"outputAmount","type":"uint256","internalType":"uint256"},{"name":"directToMaker","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"domainSeparator","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"eip712Domain","inputs":[],"outputs":[{"name":"fields","type":"bytes1","internalType":"bytes1"},{"name":"name","type":"string","internalType":"string"},{"name":"version","type":"string","internalType":"string"},{"name":"chainId","type":"uint256","internalType":"uint256"},{"name":"verifyingContract","type":"address","internalType":"address"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"extensions","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"fillOrder","inputs":[{"name":"order","type":"tuple","internalType":"struct SwitchLimitOrder.LimitOrder","components":[{"name":"maker","type":"address","internalType":"address"},{"name":"tokenIn","type":"address","internalType":"address"},{"name":"tokenOut","type":"address","internalType":"address"},{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"minAmountOut","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"feeOnOutput","type":"bool","internalType":"bool"},{"name":"recipient","type":"address","internalType":"address"},{"name":"unwrapOutput","type":"bool","internalType":"bool"},{"name":"partnerAddress","type":"address","internalType":"address"}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"routes","type":"tuple[]","internalType":"struct RouteAllocation[]","components":[{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"hops","type":"tuple[]","internalType":"struct HopAllocation[]","components":[{"name":"tokenIn","type":"address","internalType":"address"},{"name":"tokenOut","type":"address","internalType":"address"},{"name":"legs","type":"tuple[]","internalType":"struct HopAdapterAllocation[]","components":[{"name":"adapter","type":"address","internalType":"address"},{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"fee","type":"uint24","internalType":"uint24"}]}]}]},{"name":"excessOnInput","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getFee","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"invalidateNonce","inputs":[{"name":"_nonce","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"invalidateNonces","inputs":[{"name":"_nonces","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isNonceUsed","inputs":[{"name":"maker","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"noncesUsed","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"operatorGateEnabled","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"placeOrder","inputs":[{"name":"order","type":"tuple","internalType":"struct SwitchLimitOrder.LimitOrder","components":[{"name":"maker","type":"address","internalType":"address"},{"name":"tokenIn","type":"address","internalType":"address"},{"name":"tokenOut","type":"address","internalType":"address"},{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"minAmountOut","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"feeOnOutput","type":"bool","internalType":"bool"},{"name":"recipient","type":"address","internalType":"address"},{"name":"unwrapOutput","type":"bool","internalType":"bool"},{"name":"partnerAddress","type":"address","internalType":"address"}]},{"name":"signature","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"plsFlowContract","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"recoverNative","inputs":[{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"recoverTokens","inputs":[{"name":"_token","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeMaintainer","inputs":[{"name":"removedMaintainer","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeOperator","inputs":[{"name":"_operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setFee","inputs":[{"name":"_fee","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setOperatorGate","inputs":[{"name":"_enabled","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPLSFlowContract","inputs":[{"name":"_plsFlow","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"EIP712DomainChanged","inputs":[],"anonymous":false},{"type":"event","name":"FeeUpdated","inputs":[{"name":"newFee","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"NonceCancelled","inputs":[{"name":"maker","type":"address","indexed":true,"internalType":"address"},{"name":"nonce","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorGateToggled","inputs":[{"name":"enabled","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"OrderFilled","inputs":[{"name":"maker","type":"address","indexed":true,"internalType":"address"},{"name":"filler","type":"address","indexed":true,"internalType":"address"},{"name":"nonce","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"tokenIn","type":"address","indexed":false,"internalType":"address"},{"name":"tokenOut","type":"address","indexed":false,"internalType":"address"},{"name":"amountIn","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"makerAmountOut","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"fillerProfit","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"excessOnInput","type":"bool","indexed":false,"internalType":"bool"},{"name":"partnerAddress","type":"address","indexed":false,"internalType":"address"},{"name":"directFill","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"OrderPlaced","inputs":[{"name":"maker","type":"address","indexed":true,"internalType":"address"},{"name":"nonce","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"tokenIn","type":"address","indexed":false,"internalType":"address"},{"name":"tokenOut","type":"address","indexed":false,"internalType":"address"},{"name":"amountIn","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"minAmountOut","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"deadline","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"feeOnOutput","type":"bool","indexed":false,"internalType":"bool"},{"name":"recipient","type":"address","indexed":false,"internalType":"address"},{"name":"unwrapOutput","type":"bool","indexed":false,"internalType":"bool"},{"name":"partnerAddress","type":"address","indexed":false,"internalType":"address"},{"name":"signature","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"PLSFlowContractUpdated","inputs":[{"name":"newPLSFlowContract","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"ExcessiveFee","inputs":[]},{"type":"error","name":"InsufficientOutput","inputs":[]},{"type":"error","name":"InvalidAmount","inputs":[]},{"type":"error","name":"InvalidShortString","inputs":[]},{"type":"error","name":"InvalidSignature","inputs":[]},{"type":"error","name":"InvalidTokens","inputs":[]},{"type":"error","name":"NonceAlreadyUsed","inputs":[]},{"type":"error","name":"OperatorOnly","inputs":[]},{"type":"error","name":"OrderExpired","inputs":[]},{"type":"error","name":"RouteInputExceedsMax","inputs":[]},{"type":"error","name":"StringTooLong","inputs":[{"name":"str","type":"string","internalType":"string"}]},{"type":"error","name":"TransferFailed","inputs":[]}]
1
+ [{"type":"constructor","inputs":[{"name":"_switchRouter","type":"address","internalType":"address"},{"name":"_wnative","type":"address","internalType":"address"},{"name":"_fee","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"FEE_DENOMINATOR","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"LIMIT_ORDER_TYPEHASH","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"MAINTAINER_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"MAX_FEE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"OPERATOR_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"PARTNER_FEE_SHARE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"SWITCH_ROUTER","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"WNATIVE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"addMaintainer","inputs":[{"name":"addedMaintainer","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"addOperator","inputs":[{"name":"_operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"adminInvalidateNonce","inputs":[{"name":"_maker","type":"address","internalType":"address"},{"name":"_nonce","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"adminInvalidateNonces","inputs":[{"name":"_maker","type":"address","internalType":"address"},{"name":"_nonces","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"canFillOrder","inputs":[{"name":"order","type":"tuple","internalType":"struct SwitchLimitOrder.LimitOrder","components":[{"name":"maker","type":"address","internalType":"address"},{"name":"tokenIn","type":"address","internalType":"address"},{"name":"tokenOut","type":"address","internalType":"address"},{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"minAmountOut","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"feeOnOutput","type":"bool","internalType":"bool"},{"name":"recipient","type":"address","internalType":"address"},{"name":"unwrapOutput","type":"bool","internalType":"bool"},{"name":"partnerAddress","type":"address","internalType":"address"}]},{"name":"signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"directFillOrder","inputs":[{"name":"order","type":"tuple","internalType":"struct SwitchLimitOrder.LimitOrder","components":[{"name":"maker","type":"address","internalType":"address"},{"name":"tokenIn","type":"address","internalType":"address"},{"name":"tokenOut","type":"address","internalType":"address"},{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"minAmountOut","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"feeOnOutput","type":"bool","internalType":"bool"},{"name":"recipient","type":"address","internalType":"address"},{"name":"unwrapOutput","type":"bool","internalType":"bool"},{"name":"partnerAddress","type":"address","internalType":"address"}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"outputAmount","type":"uint256","internalType":"uint256"},{"name":"directToMaker","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"domainSeparator","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"eip712Domain","inputs":[],"outputs":[{"name":"fields","type":"bytes1","internalType":"bytes1"},{"name":"name","type":"string","internalType":"string"},{"name":"version","type":"string","internalType":"string"},{"name":"chainId","type":"uint256","internalType":"uint256"},{"name":"verifyingContract","type":"address","internalType":"address"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"extensions","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"fillOrder","inputs":[{"name":"order","type":"tuple","internalType":"struct SwitchLimitOrder.LimitOrder","components":[{"name":"maker","type":"address","internalType":"address"},{"name":"tokenIn","type":"address","internalType":"address"},{"name":"tokenOut","type":"address","internalType":"address"},{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"minAmountOut","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"feeOnOutput","type":"bool","internalType":"bool"},{"name":"recipient","type":"address","internalType":"address"},{"name":"unwrapOutput","type":"bool","internalType":"bool"},{"name":"partnerAddress","type":"address","internalType":"address"}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"routes","type":"tuple[]","internalType":"struct RouteAllocation[]","components":[{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"hops","type":"tuple[]","internalType":"struct HopAllocation[]","components":[{"name":"tokenIn","type":"address","internalType":"address"},{"name":"tokenOut","type":"address","internalType":"address"},{"name":"legs","type":"tuple[]","internalType":"struct HopAdapterAllocation[]","components":[{"name":"adapter","type":"address","internalType":"address"},{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"data","type":"bytes","internalType":"bytes"}]}]}]},{"name":"excessOnInput","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getFee","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"invalidateNonce","inputs":[{"name":"_nonce","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"invalidateNonces","inputs":[{"name":"_nonces","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isNonceUsed","inputs":[{"name":"maker","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"noncesUsed","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"operatorGateEnabled","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"placeOrder","inputs":[{"name":"order","type":"tuple","internalType":"struct SwitchLimitOrder.LimitOrder","components":[{"name":"maker","type":"address","internalType":"address"},{"name":"tokenIn","type":"address","internalType":"address"},{"name":"tokenOut","type":"address","internalType":"address"},{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"minAmountOut","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"feeOnOutput","type":"bool","internalType":"bool"},{"name":"recipient","type":"address","internalType":"address"},{"name":"unwrapOutput","type":"bool","internalType":"bool"},{"name":"partnerAddress","type":"address","internalType":"address"}]},{"name":"signature","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"plsFlowContract","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"recoverNative","inputs":[{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"recoverTokens","inputs":[{"name":"_token","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeMaintainer","inputs":[{"name":"removedMaintainer","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeOperator","inputs":[{"name":"_operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setFee","inputs":[{"name":"_fee","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setOperatorGate","inputs":[{"name":"_enabled","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPLSFlowContract","inputs":[{"name":"_plsFlow","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"EIP712DomainChanged","inputs":[],"anonymous":false},{"type":"event","name":"FeeUpdated","inputs":[{"name":"newFee","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"NonceCancelled","inputs":[{"name":"maker","type":"address","indexed":true,"internalType":"address"},{"name":"nonce","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorGateToggled","inputs":[{"name":"enabled","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"OrderFilled","inputs":[{"name":"maker","type":"address","indexed":true,"internalType":"address"},{"name":"filler","type":"address","indexed":true,"internalType":"address"},{"name":"nonce","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"tokenIn","type":"address","indexed":false,"internalType":"address"},{"name":"tokenOut","type":"address","indexed":false,"internalType":"address"},{"name":"amountIn","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"makerAmountOut","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"fillerProfit","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"excessOnInput","type":"bool","indexed":false,"internalType":"bool"},{"name":"partnerAddress","type":"address","indexed":false,"internalType":"address"},{"name":"directFill","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"OrderPlaced","inputs":[{"name":"maker","type":"address","indexed":true,"internalType":"address"},{"name":"nonce","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"tokenIn","type":"address","indexed":false,"internalType":"address"},{"name":"tokenOut","type":"address","indexed":false,"internalType":"address"},{"name":"amountIn","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"minAmountOut","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"deadline","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"feeOnOutput","type":"bool","indexed":false,"internalType":"bool"},{"name":"recipient","type":"address","indexed":false,"internalType":"address"},{"name":"unwrapOutput","type":"bool","indexed":false,"internalType":"bool"},{"name":"partnerAddress","type":"address","indexed":false,"internalType":"address"},{"name":"signature","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"PLSFlowContractUpdated","inputs":[{"name":"newPLSFlowContract","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"ExcessiveFee","inputs":[]},{"type":"error","name":"InsufficientOutput","inputs":[]},{"type":"error","name":"InvalidAmount","inputs":[]},{"type":"error","name":"InvalidShortString","inputs":[]},{"type":"error","name":"InvalidSignature","inputs":[]},{"type":"error","name":"InvalidTokens","inputs":[]},{"type":"error","name":"NonceAlreadyUsed","inputs":[]},{"type":"error","name":"OperatorOnly","inputs":[]},{"type":"error","name":"OrderExpired","inputs":[]},{"type":"error","name":"RouteInputExceedsMax","inputs":[]},{"type":"error","name":"StringTooLong","inputs":[{"name":"str","type":"string","internalType":"string"}]},{"type":"error","name":"TransferFailed","inputs":[]}]
@@ -1 +1 @@
1
- [{"type":"constructor","inputs":[{"name":"_adapters","type":"address[]","internalType":"address[]"},{"name":"_feeClaimer","type":"address","internalType":"address"},{"name":"_wrapped_native","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"ADAPTERS","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"APPROVED_ADAPTERS","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"FEE_CLAIMER","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"FEE_DENOMINATOR","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"FEE_EXEMPT","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"LIMIT_ORDER_CONTRACT","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"MAINTAINER_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"MAX_FEE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"MIN_FEE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"MIN_FEE_EXEMPT","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"NATIVE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"PARTNER_FEE_SHARE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"WNATIVE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"adaptersCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"addMaintainer","inputs":[{"name":"addedMaintainer","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"goSwitch","inputs":[{"name":"_routes","type":"tuple[]","internalType":"struct RouteAllocation[]","components":[{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"hops","type":"tuple[]","internalType":"struct HopAllocation[]","components":[{"name":"tokenIn","type":"address","internalType":"address"},{"name":"tokenOut","type":"address","internalType":"address"},{"name":"legs","type":"tuple[]","internalType":"struct HopAdapterAllocation[]","components":[{"name":"adapter","type":"address","internalType":"address"},{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"fee","type":"uint24","internalType":"uint24"}]}]}]},{"name":"_to","type":"address","internalType":"address"},{"name":"_minTotalAmountOut","type":"uint256","internalType":"uint256"},{"name":"_fee","type":"uint256","internalType":"uint256"},{"name":"_feeOnOutput","type":"bool","internalType":"bool"},{"name":"_unwrapOutput","type":"bool","internalType":"bool"},{"name":"_partnerAddress","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"goSwitchFrom","inputs":[{"name":"_payer","type":"address","internalType":"address"},{"name":"_routes","type":"tuple[]","internalType":"struct RouteAllocation[]","components":[{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"hops","type":"tuple[]","internalType":"struct HopAllocation[]","components":[{"name":"tokenIn","type":"address","internalType":"address"},{"name":"tokenOut","type":"address","internalType":"address"},{"name":"legs","type":"tuple[]","internalType":"struct HopAdapterAllocation[]","components":[{"name":"adapter","type":"address","internalType":"address"},{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"fee","type":"uint24","internalType":"uint24"}]}]}]},{"name":"_to","type":"address","internalType":"address"},{"name":"_minTotalAmountOut","type":"uint256","internalType":"uint256"},{"name":"_unwrapOutput","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"pullTokens","inputs":[{"name":"_token","type":"address","internalType":"address"},{"name":"_from","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"recoverERC20","inputs":[{"name":"_tokenAddress","type":"address","internalType":"address"},{"name":"_tokenAmount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"recoverNative","inputs":[{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeMaintainer","inputs":[{"name":"removedMaintainer","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setAdapters","inputs":[{"name":"_adapters","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setFeeClaimer","inputs":[{"name":"_claimer","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setFeeExempt","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"exempt","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setLimitOrderContract","inputs":[{"name":"_limitOrder","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMinFee","inputs":[{"name":"_fee","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMinFeeExempt","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"exempt","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Switched","inputs":[{"name":"_tokenIn","type":"address","indexed":true,"internalType":"address"},{"name":"_tokenOut","type":"address","indexed":true,"internalType":"address"},{"name":"_amountIn","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_amountOut","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_partnerAddress","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AdapterNotApproved","inputs":[{"name":"adapter","type":"address","internalType":"address"}]},{"type":"error","name":"EmptyHop","inputs":[]},{"type":"error","name":"EmptySplit","inputs":[]},{"type":"error","name":"ExcessiveFee","inputs":[]},{"type":"error","name":"FeeNotSupported","inputs":[]},{"type":"error","name":"FinalAmountOutTooLow","inputs":[]},{"type":"error","name":"InsufficientFee","inputs":[]},{"type":"error","name":"MsgValueMismatch","inputs":[]},{"type":"error","name":"PathNeedsBeginWithWPLS","inputs":[]},{"type":"error","name":"PathNeedsEndWithWPLS","inputs":[]},{"type":"error","name":"SplitMixedTokenIn","inputs":[]},{"type":"error","name":"SplitMixedTokenOut","inputs":[]},{"type":"error","name":"ZeroInput","inputs":[]}]
1
+ [{"type":"constructor","inputs":[{"name":"_adapters","type":"address[]","internalType":"address[]"},{"name":"_feeClaimer","type":"address","internalType":"address"},{"name":"_wrapped_native","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"ADAPTERS","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"APPROVED_ADAPTERS","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"FEE_CLAIMER","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"FEE_DENOMINATOR","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"FEE_EXEMPT","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"LIMIT_ORDER_CONTRACT","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"MAINTAINER_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"MAX_FEE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"MIN_FEE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"MIN_FEE_EXEMPT","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"NATIVE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"PARTNER_FEE_SHARE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"WNATIVE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"adaptersCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"addMaintainer","inputs":[{"name":"addedMaintainer","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"goSwitch","inputs":[{"name":"_routes","type":"tuple[]","internalType":"struct RouteAllocation[]","components":[{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"hops","type":"tuple[]","internalType":"struct HopAllocation[]","components":[{"name":"tokenIn","type":"address","internalType":"address"},{"name":"tokenOut","type":"address","internalType":"address"},{"name":"legs","type":"tuple[]","internalType":"struct HopAdapterAllocation[]","components":[{"name":"adapter","type":"address","internalType":"address"},{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"data","type":"bytes","internalType":"bytes"}]}]}]},{"name":"_to","type":"address","internalType":"address"},{"name":"_minTotalAmountOut","type":"uint256","internalType":"uint256"},{"name":"_fee","type":"uint256","internalType":"uint256"},{"name":"_feeOnOutput","type":"bool","internalType":"bool"},{"name":"_unwrapOutput","type":"bool","internalType":"bool"},{"name":"_partnerAddress","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"goSwitchFrom","inputs":[{"name":"_payer","type":"address","internalType":"address"},{"name":"_routes","type":"tuple[]","internalType":"struct RouteAllocation[]","components":[{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"hops","type":"tuple[]","internalType":"struct HopAllocation[]","components":[{"name":"tokenIn","type":"address","internalType":"address"},{"name":"tokenOut","type":"address","internalType":"address"},{"name":"legs","type":"tuple[]","internalType":"struct HopAdapterAllocation[]","components":[{"name":"adapter","type":"address","internalType":"address"},{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"fee","type":"uint24","internalType":"uint24"}]}]}]},{"name":"_to","type":"address","internalType":"address"},{"name":"_minTotalAmountOut","type":"uint256","internalType":"uint256"},{"name":"_unwrapOutput","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"pullTokens","inputs":[{"name":"_token","type":"address","internalType":"address"},{"name":"_from","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"recoverERC20","inputs":[{"name":"_tokenAddress","type":"address","internalType":"address"},{"name":"_tokenAmount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"recoverNative","inputs":[{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeMaintainer","inputs":[{"name":"removedMaintainer","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setAdapters","inputs":[{"name":"_adapters","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setFeeClaimer","inputs":[{"name":"_claimer","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setFeeExempt","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"exempt","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setLimitOrderContract","inputs":[{"name":"_limitOrder","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMinFee","inputs":[{"name":"_fee","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMinFeeExempt","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"exempt","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Switched","inputs":[{"name":"_tokenIn","type":"address","indexed":true,"internalType":"address"},{"name":"_tokenOut","type":"address","indexed":true,"internalType":"address"},{"name":"_amountIn","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_amountOut","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_partnerAddress","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AdapterNotApproved","inputs":[{"name":"adapter","type":"address","internalType":"address"}]},{"type":"error","name":"EmptyHop","inputs":[]},{"type":"error","name":"EmptySplit","inputs":[]},{"type":"error","name":"ExcessiveFee","inputs":[]},{"type":"error","name":"FeeNotSupported","inputs":[]},{"type":"error","name":"FinalAmountOutTooLow","inputs":[]},{"type":"error","name":"InsufficientFee","inputs":[]},{"type":"error","name":"MsgValueMismatch","inputs":[]},{"type":"error","name":"PathNeedsBeginWithWPLS","inputs":[]},{"type":"error","name":"PathNeedsEndWithWPLS","inputs":[]},{"type":"error","name":"SplitMixedTokenIn","inputs":[]},{"type":"error","name":"SplitMixedTokenOut","inputs":[]},{"type":"error","name":"ZeroInput","inputs":[]}]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@switch-win/sdk",
3
- "version": "1.2.3",
3
+ "version": "1.2.4",
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
@@ -167,9 +167,9 @@ export const ERC20_ABI = [
167
167
  * Normally you don't need this — the API returns pre-encoded calldata in `tx.data`.
168
168
  * Useful only if you want to decode or manually construct calldata.
169
169
  */
170
- export const GO_SWITCH_ABI = [
171
- "function goSwitch(tuple(uint256 amountIn, tuple(address tokenIn, address tokenOut, tuple(address adapter, uint256 amountIn, uint24 fee)[] legs)[] hops)[] _routes, address _to, uint256 _minTotalAmountOut, uint256 _fee, bool _feeOnOutput, bool _unwrapOutput, address _partnerAddress) payable",
172
- ] as const;
170
+ export const GO_SWITCH_ABI = [
171
+ "function goSwitch(tuple(uint256 amountIn, tuple(address tokenIn, address tokenOut, tuple(address adapter, uint256 amountIn, uint24 fee, bytes data)[] legs)[] hops)[] _routes, address _to, uint256 _minTotalAmountOut, uint256 _fee, bool _feeOnOutput, bool _unwrapOutput, address _partnerAddress) payable",
172
+ ] as const;
173
173
 
174
174
  /**
175
175
  * SwitchRouter custom error signatures for decoding reverts.
package/src/index.ts CHANGED
@@ -132,7 +132,10 @@ export {
132
132
  ROBINHOOD_NATIVE_ETH,
133
133
  ROBINHOOD_LIMIT_ORDER_EIP712_DOMAIN,
134
134
  ROBINHOOD_SWITCH_CONTRACTS,
135
- ROBINHOOD_UNISWAP_CONTRACTS,
135
+ ROBINHOOD_ADAPTERS,
136
+ ROBINHOOD_TAX_SAFE_ADAPTER_INDICES,
137
+ ROBINHOOD_TAX_SAFE_ADAPTERS,
138
+ ROBINHOOD_UNISWAP_CONTRACTS,
136
139
  ROBINHOOD_TOKENS,
137
140
  ROBINHOOD_FRONTEND_TOKEN_LIST,
138
141
  ROBINHOOD_FRONTEND_DEFAULT_TOKENS,
@@ -142,8 +145,9 @@ export {
142
145
  buildRobinhoodQuoteUrl,
143
146
  } from "./networks/robinhood.js";
144
147
 
145
- export type {
146
- RobinhoodToken,
148
+ export type {
149
+ RobinhoodAdapter,
150
+ RobinhoodToken,
147
151
  RobinhoodQuoteParams,
148
152
  RobinhoodTaxInfo,
149
153
  } from "./networks/robinhood.js";
@@ -4,7 +4,10 @@ export {
4
4
  ROBINHOOD_NATIVE_ETH,
5
5
  ROBINHOOD_LIMIT_ORDER_EIP712_DOMAIN,
6
6
  ROBINHOOD_SWITCH_CONTRACTS,
7
- ROBINHOOD_UNISWAP_CONTRACTS,
7
+ ROBINHOOD_ADAPTERS,
8
+ ROBINHOOD_TAX_SAFE_ADAPTER_INDICES,
9
+ ROBINHOOD_TAX_SAFE_ADAPTERS,
10
+ ROBINHOOD_UNISWAP_CONTRACTS,
8
11
  ROBINHOOD_TOKENS,
9
12
  ROBINHOOD_FRONTEND_TOKEN_LIST,
10
13
  ROBINHOOD_FRONTEND_DEFAULT_TOKENS,
@@ -14,8 +17,9 @@ export {
14
17
  buildRobinhoodQuoteUrl,
15
18
  } from "./robinhood.js";
16
19
 
17
- export type {
18
- RobinhoodToken,
20
+ export type {
21
+ RobinhoodAdapter,
22
+ RobinhoodToken,
19
23
  RobinhoodQuoteParams,
20
24
  RobinhoodTaxInfo,
21
25
  } from "./robinhood.js";
@@ -22,18 +22,173 @@ export const ROBINHOOD_NATIVE_ETH =
22
22
 
23
23
  /** Switch contracts deployed on Robinhood Chain. */
24
24
  export const ROBINHOOD_SWITCH_CONTRACTS = {
25
- /** ERC-20 approval target. Use quote.tx.to when submitting a swap. */
26
- router: "0x8730C3e2cF2c8CDa8E6166837A1Ed26f46aa9E59",
27
- routerView: "0xFF6b56d3F444eB5b7FA1db047F57140C84810376",
28
- uniswapV2Adapter: "0x7a14d7A8509a66209D4332843b983b29bF5604A4",
29
- uniswapV3Adapter: "0xbcA08f296d9Ba0dc19Aa0E05D355365cE29A3205",
30
- uniswapV4Adapter: "0x754dDCD05aFbAd1cc7Bc42B9268EB586F579E7F6",
25
+ /** ERC-20 approval target. Use quote.tx.to when submitting a swap. */
26
+ router: "0x8730C3e2cF2c8CDa8E6166837A1Ed26f46aa9E59",
27
+ routerView: "0xFF6b56d3F444eB5b7FA1db047F57140C84810376",
31
28
  limitOrder: "0x752c50DDd3B426cAE3D7A995F313Ac74ac6B0230",
32
29
  nativeEthFlow: "0x029FfC6aF9112eA078f1D6f4a98826DDB2136cf6",
30
+ uniswapV2Adapter: "0x7a14d7A8509a66209D4332843b983b29bF5604A4",
31
+ uniswapV3Adapter: "0xbcA08f296d9Ba0dc19Aa0E05D355365cE29A3205",
32
+ uniswapV4Adapter: "0x754dDCD05aFbAd1cc7Bc42B9268EB586F579E7F6",
33
33
  limitOrderAdapter: "0x412F625072c10e58C619D1e0b3C95cd3d5689871",
34
+ swapHoodV2Adapter: "0x6D8746f02e52944c13824fA691c6f4186E463354",
35
+ swapHoodV3Adapter: "0x9645dE0AcB48F0AAefdBEb423F0558457907DE98",
36
+ up33Adapter: "0x388179D2FB0ABcE9b03068916aF8a3c4dfD023c8",
37
+ sheriffV2Adapter: "0xBDB3EB0355981500f58C9bc77c3E61762844A146",
38
+ sheriffAlgebraAdapter: "0xaC4da986100724983042Ec28c28db243E2f828CB",
39
+ aeonAlgebraAdapter: "0x20615954FB87360139e7DdDB519359498EbD1904",
40
+ catnipV2Adapter: "0x5b2Ca358d56490Dc86224D502522314De7707237",
41
+ pancakeSwapV2Adapter: "0x3B6e71A59553143937Fef74a7B50AFD24528786E",
42
+ robinSwapV3Adapter: "0x798f77D63b46b0E019de206E111e5ea5CC16BEc8",
43
+ sushiSwapV3Adapter: "0xca3EA0Fd6E31f94c81B6586836790adE638313ED",
44
+ gigaV2Adapter: "0xa379c7D17F7fEe735773879D4069886B117AB54a",
45
+ gigaV3Adapter: "0xcAa612CDe3d3FbE97Be97eB5f79BC91597432d55",
46
+ flapAdapter: "0x6af2A4475C44d5833575150Bf7C3D3FE6Bf4F344",
47
+ ramsesV3Adapter: "0xdBf182774C60932c6fe1Bf3FFaB8Ca28CCb0dC17",
48
+ ramsesV2Adapter: "0x5fe3b873c222e76f7630b40052f07ee06196E6d3",
34
49
  limitOrderAdapterIndex: 3,
35
50
  } as const;
36
51
 
52
+ export interface RobinhoodAdapter {
53
+ readonly index: number;
54
+ readonly name: string;
55
+ readonly address: string;
56
+ /** Whether the backend may use this adapter for transfer-tax routes. */
57
+ readonly taxSafe: boolean;
58
+ }
59
+
60
+ /**
61
+ * Snapshot of the ordered production adapter registry verified on 2026-08-02.
62
+ *
63
+ * Adapter registration can change. Fetch
64
+ * `GET /swap/adapters?network=robinhood` when runtime freshness matters.
65
+ */
66
+ export const ROBINHOOD_ADAPTERS = [
67
+ {
68
+ index: 0,
69
+ name: "UniswapV2",
70
+ address: ROBINHOOD_SWITCH_CONTRACTS.uniswapV2Adapter,
71
+ taxSafe: true,
72
+ },
73
+ {
74
+ index: 1,
75
+ name: "UniswapV3",
76
+ address: ROBINHOOD_SWITCH_CONTRACTS.uniswapV3Adapter,
77
+ taxSafe: false,
78
+ },
79
+ {
80
+ index: 2,
81
+ name: "UniswapV4",
82
+ address: ROBINHOOD_SWITCH_CONTRACTS.uniswapV4Adapter,
83
+ taxSafe: false,
84
+ },
85
+ {
86
+ index: 3,
87
+ name: "SwitchLimitOrders",
88
+ address: ROBINHOOD_SWITCH_CONTRACTS.limitOrderAdapter,
89
+ taxSafe: false,
90
+ },
91
+ {
92
+ index: 4,
93
+ name: "SwapHoodV2",
94
+ address: ROBINHOOD_SWITCH_CONTRACTS.swapHoodV2Adapter,
95
+ taxSafe: true,
96
+ },
97
+ {
98
+ index: 5,
99
+ name: "SwapHoodV3",
100
+ address: ROBINHOOD_SWITCH_CONTRACTS.swapHoodV3Adapter,
101
+ taxSafe: false,
102
+ },
103
+ {
104
+ index: 6,
105
+ name: "Up33",
106
+ address: ROBINHOOD_SWITCH_CONTRACTS.up33Adapter,
107
+ taxSafe: false,
108
+ },
109
+ {
110
+ index: 7,
111
+ name: "SheriffV2",
112
+ address: ROBINHOOD_SWITCH_CONTRACTS.sheriffV2Adapter,
113
+ taxSafe: true,
114
+ },
115
+ {
116
+ index: 8,
117
+ name: "SheriffAlgebra",
118
+ address: ROBINHOOD_SWITCH_CONTRACTS.sheriffAlgebraAdapter,
119
+ taxSafe: false,
120
+ },
121
+ {
122
+ index: 9,
123
+ name: "AeonAlgebra",
124
+ address: ROBINHOOD_SWITCH_CONTRACTS.aeonAlgebraAdapter,
125
+ taxSafe: false,
126
+ },
127
+ {
128
+ index: 10,
129
+ name: "CatnipV2",
130
+ address: ROBINHOOD_SWITCH_CONTRACTS.catnipV2Adapter,
131
+ taxSafe: true,
132
+ },
133
+ {
134
+ index: 11,
135
+ name: "PancakeSwapV2",
136
+ address: ROBINHOOD_SWITCH_CONTRACTS.pancakeSwapV2Adapter,
137
+ taxSafe: true,
138
+ },
139
+ {
140
+ index: 12,
141
+ name: "RobinSwapV3",
142
+ address: ROBINHOOD_SWITCH_CONTRACTS.robinSwapV3Adapter,
143
+ taxSafe: false,
144
+ },
145
+ {
146
+ index: 13,
147
+ name: "SushiSwapV3",
148
+ address: ROBINHOOD_SWITCH_CONTRACTS.sushiSwapV3Adapter,
149
+ taxSafe: false,
150
+ },
151
+ {
152
+ index: 14,
153
+ name: "GigaV2",
154
+ address: ROBINHOOD_SWITCH_CONTRACTS.gigaV2Adapter,
155
+ taxSafe: true,
156
+ },
157
+ {
158
+ index: 15,
159
+ name: "GigaV3",
160
+ address: ROBINHOOD_SWITCH_CONTRACTS.gigaV3Adapter,
161
+ taxSafe: false,
162
+ },
163
+ {
164
+ index: 16,
165
+ name: "Flap",
166
+ address: ROBINHOOD_SWITCH_CONTRACTS.flapAdapter,
167
+ taxSafe: true,
168
+ },
169
+ {
170
+ index: 17,
171
+ name: "RamsesV3",
172
+ address: ROBINHOOD_SWITCH_CONTRACTS.ramsesV3Adapter,
173
+ taxSafe: false,
174
+ },
175
+ {
176
+ index: 18,
177
+ name: "RamsesV2",
178
+ address: ROBINHOOD_SWITCH_CONTRACTS.ramsesV2Adapter,
179
+ taxSafe: true,
180
+ },
181
+ ] as const satisfies readonly RobinhoodAdapter[];
182
+
183
+ /** Adapter indices currently eligible for Robinhood transfer-tax routes. */
184
+ export const ROBINHOOD_TAX_SAFE_ADAPTER_INDICES = [
185
+ 0, 4, 7, 10, 11, 14, 16, 18,
186
+ ] as const;
187
+
188
+ /** Current Robinhood transfer-tax-safe adapter metadata. */
189
+ export const ROBINHOOD_TAX_SAFE_ADAPTERS: readonly RobinhoodAdapter[] =
190
+ ROBINHOOD_ADAPTERS.filter((adapter) => adapter.taxSafe);
191
+
37
192
  /** EIP-712 domain used for Robinhood ERC-20 limit-order signatures. */
38
193
  export const ROBINHOOD_LIMIT_ORDER_EIP712_DOMAIN = {
39
194
  name: "SwitchLimitOrder",
package/src/types.ts CHANGED
@@ -25,9 +25,10 @@ export interface BestPathResponse {
25
25
  receiver?: string;
26
26
  /** Total input amount in wei */
27
27
  totalAmountIn: string;
28
- /**
29
- * Raw DEX output in wei -- reflects price impact only.
30
- * This is the amount the pools would return before any taxes, fees, or slippage are applied.
28
+ /**
29
+ * Quoted route output in wei before the Switch protocol fee and slippage.
30
+ * Adapter-native quotes may already include token-tax effects (for example,
31
+ * the Flap Portal quote).
31
32
  */
32
33
  totalAmountOut: string;
33
34
  /**
@@ -39,18 +40,17 @@ export interface BestPathResponse {
39
40
  * multipliers to `totalAmountOut`.
40
41
  */
41
42
  expectedOutputAmount: string;
42
- /**
43
- * Minimum acceptable output after taxes, fee, and slippage.
44
- *
45
- * Calculated as:
46
- * `totalAmountOut -- (1 -- sellTax) -- (1 -- fee) -- (1 -- buyTax) -- (1 -- slippage)`
47
- *
48
- * This is the value encoded in the `tx` calldata as `_minTotalAmountOut`.
43
+ /**
44
+ * Minimum acceptable output after taxes, fee, and slippage.
45
+ *
46
+ * Tax accounting is adapter-specific. Use this API value directly rather
47
+ * than recomputing it from the reported tax rates. This is encoded in the
48
+ * `tx` calldata as `_minTotalAmountOut`.
49
49
  */
50
50
  minAmountOut: string;
51
51
  /** Human-readable path descriptions */
52
52
  paths: SwapPath[];
53
- /** Structured route breakdown (matches on-chain structs) */
53
+ /** Human-readable structured route breakdown for display and analytics. */
54
54
  routeAllocation?: RouteAllocationPlan;
55
55
  /** Ready-to-send transaction with fee on **input** (default). Only present when `sender` query param is provided. */
56
56
  tx?: SwapTransaction;
@@ -159,7 +159,7 @@ export interface SwapPathLeg {
159
159
  percentage?: number;
160
160
  }
161
161
 
162
- // -- Route allocation (matches on-chain structs) --
162
+ // -- Human-readable route allocation --
163
163
 
164
164
  /** Top-level route allocation plan */
165
165
  export interface RouteAllocationPlan {
@@ -192,14 +192,16 @@ export interface HopAllocationPlan {
192
192
  }
193
193
 
194
194
  /** A single adapter leg within a hop */
195
- export interface HopAdapterAllocationPlan {
196
- /** DEX adapter contract address */
197
- adapter: string;
195
+ export interface HopAdapterAllocationPlan {
196
+ /** Human-readable DEX adapter name */
197
+ adapter: string;
198
198
  /** Input amount routed through this adapter (wei) */
199
199
  amountIn: string;
200
- /** Expected output from this adapter (wei) */
201
- amountOut: string;
202
- }
200
+ /** Expected output from this adapter (wei) */
201
+ amountOut: string;
202
+ /** V3 fee tier or concentrated-liquidity tick-spacing hint. Zero for adapters that do not use it. */
203
+ fee?: number;
204
+ }
203
205
 
204
206
  // -- Error response --
205
207