@steerprotocol/sdk 4.0.0-next.12 → 4.0.0-next.14
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 +226 -3
- package/dist/index.cjs +14735 -10572
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +148 -5
- package/dist/index.d.mts +148 -5
- package/dist/index.mjs +14726 -10574
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -2194,8 +2194,9 @@ empty filtered page can still have nextCursor. Listing candidates still require
|
|
|
2194
2194
|
LP totals exclude collected reward reserves and keep gauge rewards separate from the token pair.
|
|
2195
2195
|
Snapshots preserve actual NFT tokensOwed without inventing V3 swap-fee accrual for staked NFTs.
|
|
2196
2196
|
Small pinned resolutions, resolved snapshots and bulk snapshots each take two RPCs; latest adds one.
|
|
2197
|
-
Strict original-storage/Multicall compatibility remains available.
|
|
2198
|
-
|
|
2197
|
+
Strict original-storage/Multicall compatibility remains available. Dedicated getUserRewards and
|
|
2198
|
+
prepareClaimRewards methods now expose caller-owned reward reads and unsigned claims; see the
|
|
2199
|
+
[standalone reward qualification](benchmarks/standalone-rewards-qualification-2026-11-08.md).
|
|
2199
2200
|
|
|
2200
2201
|
```ts
|
|
2201
2202
|
const withdrawal = await vault.previewWithdraw({ account, shares, receiver });
|
|
@@ -2273,6 +2274,49 @@ is an error, not a fabricated key. Pool browsing remains separate and requires a
|
|
|
2273
2274
|
Base retains its existing indexed adapter by default. BNB combines indexed browsing with RPC key
|
|
2274
2275
|
resolution; Robinhood uses RPC key resolution without indexed pool browsing.
|
|
2275
2276
|
|
|
2277
|
+
### BNB Thena Fusion
|
|
2278
|
+
|
|
2279
|
+
`MultiPositionThena` resolves through `AmmProtocol.Thena` / `ThenaVersion.Fusion`
|
|
2280
|
+
and the exact qualified symmetric legacy Algebra deployment. Single/bulk snapshots use
|
|
2281
|
+
15% aggregate fee rounding and two native pinned RPC requests, with per-member failures.
|
|
2282
|
+
Pool browsing uses the verified Graph endpoint, including pagination and token searches.
|
|
2283
|
+
Swap quotes simulate the original pool, verify actual input consumption, and require deployless
|
|
2284
|
+
calls or code overrides. They never decode the published two-word V1 quoter as V2.
|
|
2285
|
+
|
|
2286
|
+
Wallet discovery, user positions, ERC20 deposit/withdrawal, native BNB wrapping and separate WBNB
|
|
2287
|
+
unwrapping have read-only simulation coverage. Both WBNB vaults use WBNB as token1. Execute and
|
|
2288
|
+
confirm an exit before preparing an unwrap from actual received WBNB. Classic, Static Stable and
|
|
2289
|
+
Channel Multiplier run through the installed loaders with their actual registered WASM, including
|
|
2290
|
+
Channel Multiplier's real data connector. These claims apply to the qualified Fusion v1
|
|
2291
|
+
implementation, not Thena Integral or arbitrary future implementations.
|
|
2292
|
+
See [Thena qualification](src/vault/adapters/algebra-legacy/thena-qualification.md) for evidence,
|
|
2293
|
+
provider requirements, request budgets and verification limits.
|
|
2294
|
+
|
|
2295
|
+
### Base Hydrex Integral vault snapshots
|
|
2296
|
+
|
|
2297
|
+
`getVaultSnapshots(ChainId.Base, addresses)` supports the exact qualified `MultiPositionHydrex`
|
|
2298
|
+
implementation through the existing Integral reader. Hydrex and QuickSwap retain separate exact
|
|
2299
|
+
identities and factories on Base. Native snapshots use two pinned RPC requests and preserve ordered
|
|
2300
|
+
per-member failures. Independent original post-poke accounting, retained responses and fallback
|
|
2301
|
+
costs are documented in [Hydrex qualification](src/vault/adapters/algebra-integral/hydrex-qualification.md).
|
|
2302
|
+
AMM selection uses `AmmProtocol.Hydrex` and `HydrexVersion.Integral`.
|
|
2303
|
+
|
|
2304
|
+
The funded representative also has qualified wallet discovery, user positions, ERC20 deposit
|
|
2305
|
+
quotes/previews/preparation and partial/full withdrawal preparation. Live rolled-back simulations
|
|
2306
|
+
verify real share mint/burn and token movements. Pool browsing/search, both swap quote directions and tick/chart reads have representative live
|
|
2307
|
+
qualification. Native ETH deposits prepare WETH wrapping before approvals/deposit; unused input
|
|
2308
|
+
remains WETH. After a confirmed withdrawal, use `AlgebraIntegralVault.prepareUnwrapNative` with
|
|
2309
|
+
an actual WETH balance for a separate unwrap. The registered WASM strategy also runs locally
|
|
2310
|
+
with its actual configuration and empty connector list. Nonempty Hydrex connector manifests and
|
|
2311
|
+
other implementations still need qualification. See the qualification document for exact evidence
|
|
2312
|
+
and limits.
|
|
2313
|
+
|
|
2314
|
+
### BSC SushiSwap and Uniswap V3 snapshots
|
|
2315
|
+
|
|
2316
|
+
The exact qualified `MultiPositionSushi` and `MultiPositionUniswapV3` implementations now support vault resolution, single/bulk snapshots and direct pool reads. They reuse the fixed-fee V3 reader with 15% aggregate fee rounding. Normal bulk snapshot pages use two pinned RPC requests and preserve per-member failures with `allowFailure: true`.
|
|
2317
|
+
|
|
2318
|
+
AMM-filtered Steer vault listing works. Underlying AMM pool browsing remains unqualified: both inherited subgraphs returned pool rows without the expected factory identity and the SDK rejects those responses. Deposit/withdrawal flows were not newly qualified by this snapshot work. Base Sushi is separately qualified after the 30-vault migration, using its exact upgraded FeeManager/helper implementation; see [Base Sushi qualification](src/vault/adapters/uniswap-v3/base-sushi-qualification.md). See [source and live qualification](src/vault/adapters/uniswap-v3/bsc-qualification.md).
|
|
2319
|
+
|
|
2276
2320
|
### BSC PancakeSwap V3 vault snapshots
|
|
2277
2321
|
|
|
2278
2322
|
`MultiPositionPancake` vaults on BSC use the shared `UniswapV3Vault` implementation and
|
|
@@ -2321,7 +2365,7 @@ and position-level `nftTokensOwed` diagnostics excluded from LP entitlement. Wal
|
|
|
2321
2365
|
indexed vault candidates plus on-chain share balances. User positions and prepared ERC20 deposit
|
|
2322
2366
|
and withdrawal flows have passed live simulations, including partial/full withdrawal rewards.
|
|
2323
2367
|
AVAX inputs use an explicit WAVAX wrap before deposit. Native exits use a separate unwrap after
|
|
2324
|
-
withdrawal confirmation
|
|
2368
|
+
withdrawal confirmation. Dedicated getUserRewards and prepareClaimRewards methods expose standalone reward reads and claims. Vault reads use bounded
|
|
2325
2369
|
compatibility calls, without a two-RPC guarantee.
|
|
2326
2370
|
|
|
2327
2371
|
See [qualification](src/vault/adapters/blackhole/qualification.md) for exact identities and evidence.
|
|
@@ -2431,3 +2475,182 @@ to the current fee identifiers after a fee-policy replacement. These remain part
|
|
|
2431
2475
|
`reservedFees`, fully excluded from LP holdings. Current-recipient unpaid fees plus
|
|
2432
2476
|
`unattributedReservedFees` reconcile to the stored reserve; current unclaimed fee cuts still
|
|
2433
2477
|
reconcile exactly to the current policy.
|
|
2478
|
+
|
|
2479
|
+
### Base SushiManaged and Robinhood V3 snapshots
|
|
2480
|
+
|
|
2481
|
+
The exact qualified `MultiPositionSushiManaged` on Base and `MultiPositionSushi` /
|
|
2482
|
+
`MultiPositionUniswapV3` on Robinhood now support vault snapshots and native V3 pool routing.
|
|
2483
|
+
Each uses its stored FeeManager and helper. Current captured fee rates are 8000, 1500 and 3000
|
|
2484
|
+
basis points respectively; these apply to earned fees. Original same-block post-poke accounting
|
|
2485
|
+
and actual helper bytecode verify reserve exclusion and stored/fresh fee inclusion.
|
|
2486
|
+
|
|
2487
|
+
Managed and ordinary Base Sushi remain separate vault identities on the same AMM deployment.
|
|
2488
|
+
Base and Robinhood support two-request native snapshot pages. Robinhood mixes qualified V3 and V4
|
|
2489
|
+
vaults in the same batch, preserving individual failures and pinned accounting. All 33 eligible
|
|
2490
|
+
Robinhood catalog vaults passed a retained six-request scan.
|
|
2491
|
+
|
|
2492
|
+
Real-balance ERC20 deposit/withdrawal simulations, wallet positions and actual registered strategies
|
|
2493
|
+
passed for the three added deployments; both Robinhood strategies include their real price connector.
|
|
2494
|
+
Robinhood deposit estimates use sequential original contract accounting through an ephemeral helper.
|
|
2495
|
+
Robinhood Uniswap V3 pool browsing still requires a verified indexer. Its inherited Celo placeholder
|
|
2496
|
+
has been removed; specific pool reads and vault discovery continue to work.
|
|
2497
|
+
|
|
2498
|
+
**Robinhood Uniswap V3 pool discovery limitation:** No public subgraph with sufficient coverage
|
|
2499
|
+
has been verified. Sentry's live Robinhood subgraph returned no record for either the qualified
|
|
2500
|
+
vault's V3 pool (`0xe2b46c905e12ab8e2f864e4821a4325884c1b126`) or the canonical WETH/USDG
|
|
2501
|
+
0.05% V3 pool (`0x69bfaf19c9f377bb306a89aed9f6b07e2c1a8d9a`). A healthy indexer alone does
|
|
2502
|
+
not establish pool coverage. [Goldsky lists Uniswap as a Robinhood data customer](https://goldsky.com/blog/robinhood-chain-data-live-on-goldsky),
|
|
2503
|
+
but that announcement identifies neither a V3 query endpoint nor its coverage. Pool listing/search
|
|
2504
|
+
remains explicitly unavailable until a Robinhood V3 indexer is verified; known-pool reads, vault
|
|
2505
|
+
listing, snapshots and the qualified user flows remain available.
|
|
2506
|
+
|
|
2507
|
+
See [V3 holdings qualification](src/vault/adapters/uniswap-v3/holdings-qualification.md) for exact
|
|
2508
|
+
identities, retained/live evidence, request counts and remaining gaps.
|
|
2509
|
+
|
|
2510
|
+
### BNB Uniswap V4 ALM
|
|
2511
|
+
|
|
2512
|
+
The exact `MultiPositionUniswapV4` beacon/implementation is registered separately from Reserve V4.
|
|
2513
|
+
It reuses the source-qualified standalone accounting reader and optimized mixed-family batches.
|
|
2514
|
+
All five matching registry vaults currently have zero shares and no liquidity ranges. Native
|
|
2515
|
+
snapshots match their original totals; mixed Uniswap/Reserve pages preserve two-request execution
|
|
2516
|
+
and individual failures. Controlled original-runtime fee/reserve tests and a real-balance bootstrap
|
|
2517
|
+
deposit with partial/full original exits also pass.
|
|
2518
|
+
|
|
2519
|
+
Funded shared accounting is verified against six Reserve representatives, including hooked DTF
|
|
2520
|
+
vaults. The five newly registered vaults remain empty; exact-runtime controlled tests and bootstrap
|
|
2521
|
+
simulations provide separate evidence. All five known pools appear in retained token searches.
|
|
2522
|
+
Browsing now checks the configured PositionManager index before falling back to initialization
|
|
2523
|
+
logs for inconsistent indexed keys. All 29 inconsistent keys in the tested pages resolved through
|
|
2524
|
+
that index, without logs or block receipts.
|
|
2525
|
+
|
|
2526
|
+
Registered strategy/connector execution passes with valid manifests. An older Reserve manifest
|
|
2527
|
+
lacks required strategy settings and is rejected by the loader; compute-specific overrides remain
|
|
2528
|
+
outside the SDK. The oracle-enabled implementation's hooked-pool oracle read currently reverts,
|
|
2529
|
+
so original `tend` needs deployment-policy attention. No oracle bypass is introduced.
|
|
2530
|
+
See [BNB Uniswap V4 qualification](src/vault/adapters/uniswap-v4/bsc-uniswap-qualification.md).
|
|
2531
|
+
|
|
2532
|
+
### Optimism and Arbitrum Uniswap V3
|
|
2533
|
+
|
|
2534
|
+
Exact `MultiPositionUniswapV3` deployments on Optimism and Arbitrum reuse the qualified Polygon
|
|
2535
|
+
fixed-fee reader. Funded snapshots match original post-poke totals in native and fallback modes.
|
|
2536
|
+
Native resolution and snapshot pages retain two pinned RPC requests, including mixed Arbitrum
|
|
2537
|
+
Camelot/Uniswap batches and individual unsupported members. Both accrued fee reserves remain
|
|
2538
|
+
excluded from LP idle assets; shared provider failures stay fatal.
|
|
2539
|
+
|
|
2540
|
+
Vault listing, known-pool reads and pool token searches work on both chains. Optimism uses a
|
|
2541
|
+
qualified replacement Graph endpoint covering all 14 known vault pools, with token-filtered
|
|
2542
|
+
pagination verified. Deployment-specific user flows and WASM execution are separate verification work. See [qualification and request budgets](src/vault/adapters/uniswap-v3/optimism-arbitrum-qualification.md).
|
|
2543
|
+
|
|
2544
|
+
### Group 7 V3 registrations
|
|
2545
|
+
|
|
2546
|
+
Optimism Sushi, Arbitrum Sushi/Pancake and Flare SparkDex v3.2 now have exact source-qualified
|
|
2547
|
+
vault registrations and optimized two-request native snapshot pages. All four funded
|
|
2548
|
+
representatives match original post-poke accounting. Sushi/Pancake retain fixed 15% aggregate
|
|
2549
|
+
fee rounding; Spark32 uses its actual FeeManager and the existing qualified helper.
|
|
2550
|
+
|
|
2551
|
+
Vault listing and known-pool reads work on all four. Pool searches and pagination pass for
|
|
2552
|
+
Sushi and Spark32. Arbitrum Pancake's inherited indexer fails consistent pinned-page queries,
|
|
2553
|
+
so its pool browsing remains unqualified. User-flow and WASM qualification remain separate.
|
|
2554
|
+
Select Spark32 with `AmmProtocol.Spark` and `SparkVersion.V3_2`. See [exact identities and evidence](src/vault/adapters/uniswap-v3/group7-qualification.md).
|
|
2555
|
+
|
|
2556
|
+
### Ethereum Cypher and Flare SparkIntegral
|
|
2557
|
+
|
|
2558
|
+
The exact `MultiPositionCypher` and `MultiPositionSparkIntegral` deployments now reuse Algebra
|
|
2559
|
+
Integral readers with optimized vault resolution/snapshots. Funded representatives match original
|
|
2560
|
+
post-poke holdings in all three reader modes. Native single/bulk snapshots take two pinned RPCs;
|
|
2561
|
+
a mixed Flare Spark32/Integral page does too. Pool reads, indexed vault listing and token-filtered
|
|
2562
|
+
pool browsing pass retained real-response checks.
|
|
2563
|
+
|
|
2564
|
+
Select Cypher with `AmmProtocol.Cypher` / `CypherVersion.V4`, or SparkIntegral with
|
|
2565
|
+
`AmmProtocol.Spark` / `SparkVersion.V4`. Spark32 remains `SparkVersion.V3_2`; omitting Spark's
|
|
2566
|
+
version is now ambiguous. V4 here is product branding for Algebra Integral.
|
|
2567
|
+
|
|
2568
|
+
Deployment-specific user-flow/native-token/WASM verification remains separate. These registrations
|
|
2569
|
+
do not qualify every implementation or enable API instrumentation on additional chains. See
|
|
2570
|
+
[identities, fee proof, request counts and limits](src/vault/adapters/algebra-integral/multichain-qualification.md).
|
|
2571
|
+
|
|
2572
|
+
### Remaining V3 vault registrations
|
|
2573
|
+
|
|
2574
|
+
Ethereum Sushi/SushiManaged/Uniswap, Avalanche Sushi, Katana Sushi and Bittensor V3 now have exact
|
|
2575
|
+
source-qualified snapshot bindings through the existing FeeManager/helper reader. Funded native,
|
|
2576
|
+
deployless and Multicall snapshots match original post-poke holdings. Bittensor's helper matches
|
|
2577
|
+
Robinhood's qualified implementation; select its AMM with `AmmProtocol.Bittensor` / `BittensorVersion.V3`.
|
|
2578
|
+
|
|
2579
|
+
Vault discovery and direct pool reads pass for all six targets. Pool token search/pagination passes
|
|
2580
|
+
for Ethereum Uniswap, Avalanche, Katana and Bittensor; Ethereum Sushi's inherited indexer reports
|
|
2581
|
+
indexing errors. Ethereum/Katana/Bittensor native bulk reads use two pinned RPCs per ordinary page.
|
|
2582
|
+
Avalanche Sushi now uses two-call native bulk reads; mixed pages keep Sushi batched while
|
|
2583
|
+
Blackhole retains its separate farming reader. Deployment-specific user-flow/WASM and API APR acceptance remain separate. See
|
|
2584
|
+
[exact identities, manager rates, evidence and gaps](src/vault/adapters/uniswap-v3/remaining-qualification.md).
|
|
2585
|
+
|
|
2586
|
+
Local source now registers all 37 chain/beacon snapshot targets in the API rollout matrix.
|
|
2587
|
+
This does not enable additional API chains or qualify every SDK feature on every deployment.
|
|
2588
|
+
|
|
2589
|
+
Avalanche Sushi snapshot pages now use **2 RPC requests for 16 inputs**, down from 266; 17 inputs
|
|
2590
|
+
use 4. Three distinct Sushi vaults also use 2 requests and match original post-poke totals. Mixed
|
|
2591
|
+
pages preserve Blackhole rewards/NFT accounting and per-member failures. Blackhole now uses the
|
|
2592
|
+
same bulk coordinator: **two shared view requests plus one original farming simulation per active
|
|
2593
|
+
NFT**. The three funded one-NFT snapshots each use **3 RPC requests instead of 62**; mixed
|
|
2594
|
+
Sushi/Blackhole pages use **3 instead of 63**. Three distinct Blackhole vaults use 5 requests.
|
|
2595
|
+
Farming simulations retain the original caller and state. Compatibility reads and fatal provider
|
|
2596
|
+
errors are preserved. See the [Sushi benchmark](benchmarks/vault-bulk-avalanche-2026-11-07.json) and
|
|
2597
|
+
[Blackhole benchmark](benchmarks/vault-bulk-blackhole-2026-11-07.json).
|
|
2598
|
+
|
|
2599
|
+
### November 7 discovery, quote and native-flow completion
|
|
2600
|
+
|
|
2601
|
+
- Sushi V3 on BSC/Base/Polygon and Uniswap V3 on BSC now use their indexers' lowercase factory
|
|
2602
|
+
entity IDs. Onchain identities and other deployments' case-sensitive entity IDs are preserved.
|
|
2603
|
+
Live first/continuation pages and retained offline regressions pass.
|
|
2604
|
+
- Sushi V3 on BSC/Base/Polygon and Spark32 on Flare now configure verified factory-bound QuoterV2
|
|
2605
|
+
deployments. Positive quotes in both directions match independent same-block contract simulations.
|
|
2606
|
+
The public swap method is `amm.quote(request, options)`.
|
|
2607
|
+
- Pancake V3 BSC accepts native BNB, and Camelot legacy Arbitrum accepts native ETH, through the
|
|
2608
|
+
existing wrap/approval/deposit sequence. Real funded-account simulations cover deposits, partial/full
|
|
2609
|
+
exits and a separate balance-checked `prepareUnwrapNative`. Exits return wrapped currency; unwrap
|
|
2610
|
+
after confirmation using the actual received amount. Wrapper identity and native/wrapped ambiguity
|
|
2611
|
+
checks remain explicit. No transactions were broadcast.
|
|
2612
|
+
|
|
2613
|
+
See [discovery and quote evidence](src/vault/adapters/uniswap-v3/bsc-qualification.md),
|
|
2614
|
+
[Pancake native flows](src/vault/adapters/uniswap-v3/pancake-qualification.md) and
|
|
2615
|
+
[Camelot native flows](src/vault/adapters/algebra-legacy/camelot-qualification.md).
|
|
2616
|
+
Robinhood Uniswap V3/V4 complete pool catalogs and the separately documented deployment-specific
|
|
2617
|
+
user-flow/WASM qualification remain follow-up work. These changes describe local source, not publication.
|
|
2618
|
+
|
|
2619
|
+
### Updated representative user-flow qualification (November 7, 2026)
|
|
2620
|
+
|
|
2621
|
+
Fresh original-contract simulations now qualify the two Robinhood V4 representatives
|
|
2622
|
+
(ERC20 and native ETH) and 16 later deployment representatives. Actual connector and
|
|
2623
|
+
strategy WASM execution also passed for 19 representatives, including Bittensor,
|
|
2624
|
+
Optimism Uniswap and Arbitrum Sushi. These results supersede the earlier blanket
|
|
2625
|
+
user-flow/WASM follow-up statements above for the exact representatives in the
|
|
2626
|
+
[qualification report](benchmarks/vault-user-flow-qualification-2026-11-07.md).
|
|
2627
|
+
|
|
2628
|
+
Bittensor deposit quotes, previews and preparation now use the existing ephemeral
|
|
2629
|
+
accounting path when Multicall deployment metadata is absent. Funded deposit/exit
|
|
2630
|
+
execution remains pending. BSC Sushi and Arbitrum Uniswap connector execution are
|
|
2631
|
+
verified with data-connector-loader 5.0.0-next.9 and its corrected subgraph routing.
|
|
2632
|
+
The Arbitrum fix preserves the original connector configuration and uses the
|
|
2633
|
+
consumer credential instead of forwarding the embedded key.
|
|
2634
|
+
Historical Robinhood live replays still require RPC history that the public provider
|
|
2635
|
+
may prune. These checks establish representative behavior, not all deployments or
|
|
2636
|
+
API APR acceptance, and do not enable additional native conveniences or discovery.
|
|
2637
|
+
|
|
2638
|
+
### Native currency across registered vault families
|
|
2639
|
+
|
|
2640
|
+
Registered V3, Legacy Algebra, Integral and Aerodrome vaults accept the zero address for native inputs when their pair contains the qualified wrapper on Ethereum, Optimism, Flare, BSC, Polygon, Bittensor, Robinhood, Base, Arbitrum, Avalanche or Katana. Use the existing quoteDeposit, previewDeposit and prepareDeposit methods. Prepared transactions wrap the maximum native input before approvals and deposit; unused input remains wrapped. Quotes do not perform swaps. Empty vaults still require explicit two-token maxima.
|
|
2641
|
+
|
|
2642
|
+
After a withdrawal confirms, use vault.prepareUnwrapNative({ account, amount }) with the actual received wrapped balance to prepare a separate unwrap. The SDK verifies the wrapper's runtime and, where applicable, proxy implementation at the pinned block. A chain's presence or a token's symbol alone does not enable wrapping. Existing V4 direct-native and Blackhole native AVAX flows retain their own accounting.
|
|
2643
|
+
|
|
2644
|
+
Original-contract checks passed for all 11 wrappers and 28 native-funded deposit/exit representatives, including Bittensor TAO. Aerodrome's stored-manager and V3 exit verification encountered inactive gauges: original contracts revert with GK when trying to restake. Those variants are not claimed fully verified for native exits; no matching native V2 candidate was found in the queried sample. See [native-currency qualification](benchmarks/native-currency-qualification-2026-11-08.md) for exact vaults, blocks, limits and reproduction.
|
|
2645
|
+
|
|
2646
|
+
### Standalone shareholder rewards
|
|
2647
|
+
|
|
2648
|
+
BlackholeVault and AerodromeVault expose getUserRewards(account, options) and prepareClaimRewards(account, options). The read returns account, blockNumber, shares and rewards: an array of { token, decimals, claimable, rewardDebt }, with raw/formatted token amounts. Reward debt is a stored accounting checkpoint preventing double payment, not a user liability. Claims pay the caller and do not burn shares. Blackhole users can still have accrued rewards after transferring all shares.
|
|
2649
|
+
|
|
2650
|
+
```ts
|
|
2651
|
+
const rewards = await vault.getUserRewards(account, { blockNumber });
|
|
2652
|
+
const plan = await vault.prepareClaimRewards(account, { blockNumber });
|
|
2653
|
+
// Send plan.transactions with the wallet for plan.account after reviewing plan.preview.
|
|
2654
|
+
```
|
|
2655
|
+
|
|
2656
|
+
Preparation verifies the original deployment and simulates the original claim at one block. It returns one unsigned zero-value transaction, with no approvals or configurable recipient. Actual rewards can change before confirmation. Errors are surfaced rather than converted into empty rewards. Positive original-contract claims passed on Blackhole and all three registered Aerodrome implementation layouts, including inactive-gauge representatives and overlapping reward tokens. These claims do not establish that Aerodrome withdrawals/rebalances work after gauge deactivation. Exact scope and replay commands are in the [qualification report](benchmarks/standalone-rewards-qualification-2026-11-08.md).
|