@substrate/api-sidecar
Version:
REST service that makes it easy to interact with blockchain nodes built using Substrate's FRAME framework.
74 lines (73 loc) • 4.1 kB
TypeScript
import type { ControllerOptions } from 'src/types/chains-config';
import { AccountsStakingInfoService } from '../../services';
import AbstractController from '../AbstractController';
/**
* GET staking information for an address.
*
* Paths:
* - `address`: The _Stash_ address for staking.
*
* Query:
* - (Optional)`at`: Block at which to retrieve runtime version information at. Block
* identifier, as the block height or block hash. Defaults to most recent block.
* - (Optional) `useRcBlock`: When true, treats the `at` parameter as a relay chain block
* to find corresponding Asset Hub blocks. Only supported for Asset Hub endpoints.
* - (Optional) `includeClaimedRewards`: Controls whether or not the `claimedRewards`
* field is included in the response. Defaults to `true`.
* If set to `false`:
* - the field `claimedRewards` will be omitted from the response and
* - all internal calculations for claimed rewards in `AccountsStakingInfoService`
* will be skipped, potentially speeding up the response time.
*
* Returns:
* - When using `useRcBlock=true`: An array of response objects, one for each Asset Hub block found
* in the specified relay chain block. Returns empty array `[]` if no Asset Hub blocks found.
* - When using `useRcBlock=false` or omitted: A single response object.
*
* Response object structure:
* - `at`: Block number and hash at which the call was made.
* - `rewardDestination`: The account to which rewards will be paid. Can be 'Staked' (Stash
* account, adding to the amount at stake), 'Stash' (Stash address, not adding to the amount at
* stake), 'Controller' (Controller address), or 'Account(AccountId)' (address identified by AccountId).
* - `controller`: Controller address for the given Stash.
* - `numSlashingSpans`: Number of slashing spans on Stash account; `null` if provided address is
* not a Controller.
* - `staking`: The staking ledger. Empty object if provided address is not a Controller.
* - `stash`: The stash account whose balance is actually locked and at stake.
* - `total`: The total amount of the stash's balance that we are currently accounting for.
* Simply `active + unlocking`.
* - `active`: The total amount of the stash's balance that will be at stake in any forthcoming
* eras.
* - `unlocking`: Any balance that is becoming free, which may eventually be transferred out of
* the stash (assuming it doesn't get slashed first). Represented as an array of objects, each
* with an `era` at which `value` will be unlocked.
* - `claimedRewards`: Array of eras for which the stakers behind a validator have claimed
* rewards. Only updated for _validators._
* - `rcBlockNumber`: The relay chain block number used for the query. Only present when `useRcBlock=true`.
* - `ahTimestamp`: The Asset Hub block timestamp. Only present when `useRcBlock=true`.
*
* Note: Runtime versions of Kusama less than 1062 will either have `lastReward` in place of
* `claimedRewards`, or no field at all. This is related to changes in reward distribution. See:
* - Lazy Payouts: https://github.com/paritytech/substrate/pull/4474
* - Simple Payouts: https://github.com/paritytech/substrate/pull/5406
*
* Substrate Reference:
* - Staking Pallet: https://crates.parity.io/pallet_staking/index.html
* - `RewardDestination`: https://crates.parity.io/pallet_staking/enum.RewardDestination.html
* - `Bonded`: https://crates.parity.io/pallet_staking/struct.Bonded.html
* - `StakingLedger`: https://crates.parity.io/pallet_staking/struct.StakingLedger.html
*/
export default class AccountsStakingInfoController extends AbstractController<AccountsStakingInfoService> {
protected options: ControllerOptions;
static controllerName: string;
static requiredPallets: string[][];
constructor(api: string, options: ControllerOptions);
protected initRoutes(): void;
/**
* Get the latest account staking summary of `address`.
*
* @param req Express Request
* @param res Express Response
*/
private getAccountStakingInfo;
}