@ardier16/q-js-sdk
Version:
Typescript Library to interact with Q System Contracts
116 lines (115 loc) • 3.9 kB
TypeScript
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;
}