@ardier16/q-js-sdk
Version:
Typescript Library to interact with Q System Contracts
68 lines (67 loc) • 2.74 kB
TypeScript
import { TransactionReceipt } from 'web3-eth';
import { QNonPayableTx } from '..';
import { ProposalStatus, ProposalWithBaseInfo, ProposalWithStatus, VotingStats } from '../types';
import { IVoting } from '../web3-contracts/IVoting';
import { BaseContractInstance } from './BaseContractInstance';
/**
* Voting interface to interact with Voting implementation contracts.
* See [onchain documentation](@system-contracts-repo/@network/IVoting/) for more details.
*/
export declare abstract class BaseVotingInstance<T extends IVoting, P extends ProposalWithBaseInfo> extends BaseContractInstance<T> {
abstract hasUserVoted(proposalId: number | string, address: string): Promise<boolean>;
/**
* Get all proposals in specific block diapason
* @param fromBlock start block from which we get proposals
* @param toBlock end block from which we get proposals
* @returns proposals
*/
getProposalIds(fromBlock?: string | number, toBlock?: string | number): Promise<string[]>;
abstract getProposal(proposalId: string | number): Promise<P>;
abstract proposalCount(): Promise<string>;
/**
* Get proposal information
* @param proposalId proposal id
* @returns information about proposal
*/
getProposalWithStatus(proposalId: string | number): Promise<P & ProposalWithStatus>;
/**
* Get proposals by ids
* @param proposalIds proposal ids
* @returns proposals
*/
getProposals(...proposalIds: string[]): Promise<(P & ProposalWithStatus)[]>;
/**
* Get proposal statistics
* @param proposalId proposal id
* @returns proposal statistics
*/
getProposalStats(proposalId: string): Promise<VotingStats>;
/**
* Get proposal status
* @param proposalId proposal id
* @returns status of proposal
*/
getStatus(proposalId: string | number): Promise<ProposalStatus>;
mapStatus(rawStatus: ProposalStatus): string;
/**
* Vote for proposal
* @param proposalId current proposal id
* @param txOptions transaction options
* @returns transaction receipt
*/
voteFor(proposalId: string | number, txOptions?: QNonPayableTx): Promise<TransactionReceipt>;
/**
* Vote against proposal
* @param proposalId current proposal id
* @param txOptions transaction options
* @returns transaction receipt
*/
voteAgainst(proposalId: string | number, txOptions?: QNonPayableTx): Promise<TransactionReceipt>;
/**
* execute proposal
* @param proposalId current proposal id
* @param txOptions transaction options
* @returns transaction receipt
*/
execute(proposalId: string | number, txOptions?: QNonPayableTx): Promise<TransactionReceipt>;
}