cyb/src/features/staking/delegation/getDelegatorDelegations.ts

import { createPagination } from '@cosmjs/stargate';
import { cyber } from '@cybercongress/cyber-ts';
import { DelegationResponse } from 'cosmjs-types/cosmos/staking/v1beta1/staking';

// eslint-disable-next-line import/prefer-default-export
export const getDelegatorDelegations = async (
  client: Awaited<ReturnType<typeof cyber.ClientFactory.createRPCQueryClient>>,
  addressBech32: string
): Promise<DelegationResponse[]> => {
  let nextKey: Uint8Array | undefined;
  const delegationData: DelegationResponse[] = [];

  let done = false;
  while (!done) {
    const responsedelegatorDelegations =
      // eslint-disable-next-line no-await-in-loop
      await client.cosmos.staking.v1beta1.delegatorDelegations({
        delegatorAddr: addressBech32,
        pagination: createPagination(nextKey),
      });

    delegationData.push(...responsedelegatorDelegations.delegationResponses);

    const key = responsedelegatorDelegations?.pagination?.nextKey;

    if (key?.byteLength) {
      nextKey = key;
    } else {
      done = true;
    }
  }

  return delegationData;
};

Neighbours