getStakes method

Future<List<StakedSuiInfo>> getStakes(
  1. String owner, {
  2. int first = 50,
  3. String? after,
})

Staked SUI objects owned by owner (0x3::staking_pool::StakedSui).

Implementation

Future<List<StakedSuiInfo>> getStakes(
  String owner, {
  int first = 50,
  String? after,
}) async {
  const q = r'''
    query ($owner: SuiAddress!, $first: Int!, $after: String) {
      address(address: $owner) {
        objects(
          first: $first
          after: $after
          filter: { type: "0x3::staking_pool::StakedSui" }
        ) {
          pageInfo { hasNextPage endCursor }
          nodes { address contents { json } }
        }
      }
    }
  ''';
  final data = await transport.query(q, variables: {
    'owner': owner,
    'first': first,
    if (after != null) 'after': after,
  });
  final address = data['address'];
  if (address == null) return const [];
  final nodes = ((address as Map)['objects'] as Map)['nodes'] as List;
  return nodes
      .map((n) => StakedSuiInfo._fromNode(n as Map<String, dynamic>))
      .toList();
}