/** * XDC Masternode Client * * Interface for XDPoS (XinFin Delegated Proof of Stake) masternode operations. * XDC Network has 108 masternodes that validate transactions and propose blocks. */ import { ethers } from 'ethers'; import { XdcProvider } from './provider'; /** * Masternode/Candidate information */ export interface MasternodeInfo { address: string; owner: string; stake: string; stakeXdc: string; voterCount: number; isValidator: boolean; status: 'active' | 'inactive' | 'proposed' | 'resigned'; } /** * Voter information */ export interface VoterInfo { address: string; votedFor: string[]; totalVoted: string; totalVotedXdc: string; rewards: string; rewardsXdc: string; } /** * Epoch information */ export interface EpochInfo { number: number; startBlock: number; endBlock: number; validatorSet: string[]; rewards: string; rewardsXdc: string; } /** * Withdrawal info */ export interface WithdrawalInfo { blockNumber: number; amount: string; amountXdc: string; available: boolean; } /** * XDC Masternode Client */ export declare class XdcMasternodeClient { private provider; private validatorContract; private chainId; constructor(provider: XdcProvider); /** * Get all masternode candidates */ getCandidates(): Promise; /** * Get masternode candidate count */ getCandidateCount(): Promise; /** * Get masternode info */ getMasternodeInfo(candidateAddress: string): Promise; /** * Check if address is a candidate */ isCandidate(address: string): Promise; /** * Get voters for a candidate */ getVotersForCandidate(candidateAddress: string): Promise; /** * Get voter's stake for a candidate */ getVoterStake(candidateAddress: string, voterAddress: string): Promise<{ amount: string; amountXdc: string; }>; /** * Get voter info */ getVoterInfo(voterAddress: string): Promise; /** * Get minimum candidate stake requirement */ getMinCandidateStake(): Promise<{ amount: string; amountXdc: string; }>; /** * Get minimum voter stake requirement */ getMinVoterStake(): Promise<{ amount: string; amountXdc: string; }>; /** * Get maximum number of validators */ getMaxValidators(): Promise; /** * Get candidate withdraw delay (in blocks) */ getCandidateWithdrawDelay(): Promise; /** * Get voter withdraw delay (in blocks) */ getVoterWithdrawDelay(): Promise; /** * Get pending withdrawals for address */ getWithdrawals(_address: string): Promise; /** * Get epoch info */ getEpochInfo(epochNumber?: number): Promise; /** * Get current epoch number */ getCurrentEpoch(): Promise; /** * Get masternodes list with details */ getMasternodesList(limit?: number): Promise; /** * Propose new masternode candidacy */ propose(candidateAddress: string, stakeAmount: string): Promise; /** * Vote for a candidate */ vote(candidateAddress: string, amount: string): Promise; /** * Unvote (remove stake) from candidate */ unvote(candidateAddress: string, amount: string): Promise; /** * Resign from candidacy */ resign(candidateAddress: string): Promise; /** * Withdraw staked funds after delay period */ withdraw(blockNumber: number, index: number): Promise; /** * Calculate estimated rewards for stake amount */ calculateEstimatedRewards(stakeAmount: string, totalNetworkStake: string, blocksPerYear?: number): { daily: string; monthly: string; yearly: string; apy: string; }; } /** * Create masternode client from provider */ export declare function createMasternodeClient(provider: XdcProvider): XdcMasternodeClient; //# sourceMappingURL=masternodeClient.d.ts.map