import { ICoinProtocol } from './ICoinProtocol'; export interface DelegateeDetails { name?: string; status?: any; address: string; } export interface DelegatorAction { type: any; args?: string[]; } export interface DelegatorDetails { address: string; balance: string; delegatees: string[]; availableActions?: DelegatorAction[]; rewards?: DelegatorReward[]; } export interface DelegatorReward { index: number; amount: string; collected?: boolean; timestamp: number; } export interface DelegationDetails { delegator: DelegatorDetails; delegatees: DelegateeDetails[]; } export interface ICoinDelegateProtocol extends ICoinProtocol { getDefaultDelegatee(): Promise; getCurrentDelegateesForPublicKey(publicKey: string, data?: any): Promise; getCurrentDelegateesForAddress(address: string, data?: any): Promise; getDelegateeDetails(address: string, data?: any): Promise; isPublicKeyDelegating(publicKey: string, data?: any): Promise; isAddressDelegating(address: string, data?: any): Promise; getDelegatorDetailsFromPublicKey(publicKey: string, data?: any): Promise; getDelegatorDetailsFromAddress(address: string, data?: any): Promise; getDelegationDetailsFromPublicKey(publicKey: string, delegatees: string[], data?: any): Promise; getDelegationDetailsFromAddress(address: string, delegatees: string[], data?: any): Promise; prepareDelegatorActionFromPublicKey(publicKey: string, type: any, data?: any): Promise; }