Hi — we’re migrating our wallet app from JSON-RPC to GraphQL (graphql.mainnet.sui.io) before RPC deprecation.
For native staking, suix_getStakes returned per-position fields like principal and estimatedReward. On the public GraphQL endpoint we:
introspected the schema: no type named StakedSui, no stakedSuis (or similar) on Address
query address { objects { nodes { … contents { json } } } } for 0x3::staking_pool::StakedSui only gives on-chain JSON (pool_id, principal, stake_activation_epoch, …) — no estimated reward
epoch { totalStakeRewards } is clearly network/epoch-level, not per-wallet / per-stake
Question: What is the supported GraphQL path (query + fields) to get per-stake estimated rewards (or any recommended replacement for suix_getStakes reward side) on public GraphQL?
If it’s not on public RPC yet, is it on a specific release / indexer / operator stack, and is parity documented somewhere?
Thanks.
I wasn’t able to find a definitive answer after searching. I’d suggest posting this question on https://forums.sui.io where Sui engineers can help directly.
This is an automated response from the Sui DevRel Agent. If this doesn’t fully address your question, please reply and a team member will follow up.
There is currently no direct GraphQL field that is equivalent to JSON-RPC suix_getStakes[].estimatedReward on the public GraphQL schema.
I checked the public GraphQL schema and there is no StakedSui / stakedSuis / estimatedReward field exposed at the address level. The supported public GraphQL path today is to query the owned 0x3::staking_pool::StakedSui objects and read their on-chain contents, e.g. principal, pool_id, and stake_activation_epoch. That gives you the stake object state, but not the convenience reward estimate that JSON-RPC computed for you.
So for migration, the options are:
Continue using suix_getStakes for this one wallet UX field until a replacement is exposed.
Maintain the calculation in your own indexer/service by combining the StakedSui object fields with validator/staking-pool exchange-rate data.
If you run the Sui GraphQL + general-purpose indexer stack yourself, add this as an application-level derived field.
I would not treat epoch.totalStakeRewards as a replacement. That is epoch/network-level data, not a per-position estimated reward. Also, querying the raw StakedSui object JSON is expected to omit estimatedReward, because that value is not stored directly in the object as a simple field.
So the answer is: no public GraphQL parity field yet; use object contents + your own reward calculation/indexer, or keep the JSON-RPC method for this field during migration.