UNPKG

@ardier16/q-js-sdk

Version:

Typescript Library to interact with Q System Contracts

116 lines (115 loc) 3.9 kB
import { ValidatorInfo, ValidatorPoolInfo } from '..'; import { ContractRegistryInstance } from '../contracts/ContractRegistryInstance'; import { ValidationRewardPoolsInstance } from '../contracts/tokeneconomics/ValidationRewardPoolsInstance'; import { ValidatorsInstance } from '../contracts/governance/validators/ValidatorsInstance'; import { EPQFIParametersInstance } from '../contracts/governance/experts/EPQFIParametersInstance'; /** * Helps calculate delegation efficiency and saturation */ export declare class ValidatorMetrics { private validatorsInfo; private poolsInfo; private stakeDelegationFactor; private c; constructor(); /** * @internal * Takes snapshot using given data. * Used by unit tests. * @param validatorsInfo ValidatorInfo struct array * @param poolsInfo ValidatorPoolInfo struct array * @param stakeDelegationFactor current stake delegation factor */ setSnapShot(validatorsInfo: ValidatorInfo[], poolsInfo: ValidatorPoolInfo[], stakeDelegationFactor: string): Promise<void>; /** * Takes snapshot using registry * @param registry Contract registry instance */ takeSnapshotFromNetwork(registry: ContractRegistryInstance): Promise<void>; /** * @internal * Takes snapshot using Validators, ValidationRewardPools and EPQFIParameters instances. * Used by takeSnapshotFromNetwork method * @param validatorsInstance ValidatorsInstance * @param poolsInstance ValidationRewardPoolsInstance * @param parameters EPQFIParametersInstance */ takeSnapshot(validatorsInstance: ValidatorsInstance, poolsInstance: ValidationRewardPoolsInstance, parameters: EPQFIParametersInstance): Promise<void>; /** * Returns stored snapshot * @returns ValidatorSnapshot struct array */ getSnapshot(): Promise<ValidatorSnapshot[]>; /** * Calculates delegation efficiency using snapshot * @returns Delegation efficiency */ getDelegationEfficiency(): Promise<DelegationEfficiency[]>; /** * Calculates delegation saturation using snapshot * @returns DelegationSaturation */ getDelegationSaturation(): Promise<string[]>; } /** * Delegation efficiency info */ export interface DelegationEfficiency { /** * @field Validator address */ address: string; /** * @field Validator {@link ValidatorInfo.accountableStake | accountable stake} / (sum of all accountable stakes) */ globalStakeShare: string; /** * @field Validator delegation share from {@link ValidatorPoolInfo.delegatorsShare} */ delegatorShare: string; /** * @field {@link DelegationEfficiency.globalStakeShare | globalStakeShare} * delegatorsShare */ payoutToDelegators: string; /** * @field {@link DelegationEfficiency.payoutToDelegators | payoutToDelegator} / delegatedStake */ payoutPerDelegatedQ: string; /** * @field Validator delegation efficiency */ delegationEfficiency: string; } /** * Validator snapshot info */ export interface ValidatorSnapshot { /** * @field Validator address */ address: string; /** * @field Validator accountable stake from {@link ValidatorInfo.accountableStake} */ accountableStake: string; /** * @field Validator delegation stake from {@link ValidatorInfo.delegatedStake} */ delegatedStake: string; /** * @field Validator delegation share from {@link ValidatorPoolInfo.delegatorsShare} */ delegatorsShare: string; /** * @field Validator self stake from {@link ValidatorInfo.selfStake} */ selfStake: string; /** * @field Validator self stake from {@link ValidatorInfo.totalStake} */ totalStake: string; /** * @field System stake delegation factor */ stakeDelegationFactor: string; }