UNPKG

@ardier16/q-js-sdk

Version:

Typescript Library to interact with Q System Contracts

68 lines (67 loc) 2.74 kB
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>; }