UNPKG

@terminusbet/stake-vote-sdk

Version:

A simple SDK for interacting with terminusbet governance

376 lines (311 loc) 10.7 kB
# StakeVoteSDK README ## Installation ` npm i @terminusbet/stake-vote-sdk ` ## Notice (for front-end developers) If you encounter an error regarding the `crypto` module when building a front-end project with frameworks such as React, Vue, or Next.js, consider installing a polyfill (for example, the node-polyfills plugin) or adding a crypto-browserify alias to your build configuration. For example: ``` import { nodePolyfills } from 'vite-plugin-node-polyfills' plugins: [ nodePolyfills({ include: ['crypto'], }), ], OR resolve: { alias: { crypto: 'crypto-browserify', } }, ``` ### StakeVoteSDK transaction Get StakeVoteSDK transaction-related methods. #### getStakeTransactions ```typescript async getStakeTransactions( user: PublicKey, stakePoolState: PublicKey, amount: BN ): Promise<Transaction> ``` - Stake to get voting rights - **Parameters**: - `user`: The public key of the user. - `stakePoolState`: Staking pool public key corresponding to different staking periods. - `amount`: Amount of mint to stake. - **Returns**: A promise that resolves to a `Transaction`. #### getStakeAddTransactions ```typescript async getStakeAddTransactions( user: PublicKey, stakePoolState: PublicKey, amount: BN, addType: number ): Promise<Transaction> ``` - Increase the stake to get more voting rights - **Parameters**: - `user`: The public key of the user. - `stakePoolState`: Staking pool public key corresponding to different staking periods. - `amount`: Amount of mint to stake. - `addType`: Mint amount OR time. - **Returns**: A promise that resolves to a `Transaction`. #### getStakeWithdrawTransactions ```typescript async getStakeWithdrawTransactions( user: PublicKey, stakePoolState: PublicKey, amount: BN ): Promise<Transaction> ``` - Withdraw staked tokens - **Parameters**: - `user`: The public key of the user. - `stakePoolState`: Staking pool public key corresponding to different staking periods. - `amount`: Amount of mint to withdraw. - **Returns**: A promise that resolves to a `Transaction`. #### getAutoVoteTransactions ```typescript async getAutoVoteTransactions( user: PublicKey, ballotBoxState: PublicKey, amount: bigint, slippage = 500n ): Promise<Transaction> ``` - Voting by custom amount - **Parameters**: - `user`: The public key of the user. - `ballotBoxState`: The public key of the ballot box. - `amount`: Amount of mint to vote. - `slippage`: Minimum number of voting rights to be accepted. - **Returns**: A promise that resolves to a `Transaction`. #### getAutoWholeVoteTransactions ```typescript async getAutoWholeVoteTransactions( user: PublicKey, ballotBoxState: PublicKey ): Promise<Transaction> ``` - The program automatically casts all votes - **Parameters**: - `user`: The public key of the user. - `ballotBoxState`: The public key of the ballot box. - **Returns**: A promise that resolves to a `Transaction`. #### getRewardReceiveTransactions ```typescript async getRewardReceiveTransactions( user: PublicKey, rewardUseBallotBox: PublicKey ): Promise<Transaction> ``` - Get Rewards - **Parameters**: - `user`: The public key of the user. - `rewardUseBallotBox`: The public key of the ballot box. - **Returns**: A promise that resolves to a `Transaction`. #### getBatchRewardReceiveTransactions ```typescript async getBatchRewardReceiveTransactions( user: PublicKey, rewardUseBallotBoxs: PublicKey ): Promise<Transaction> ``` - Get rewards from multiple voting boxes in batches - **Parameters**: - `user`: The public key of the user. - `rewardUseBallotBoxs`: The public key of the ballot boxes. - **Returns**: A promise that resolves to a `Transaction`. ### Some preview methods for account ```typescript // Get the staking pool list async getStakePoolStates(): : Promise<ProgramAccount<{ stakePeriod: BN; rewardGrowBy: BN; growReduceBy: BN; decimal: number; rewardGrowMinBy: BN; }>[]> // Get all the user's voting rights async getUserVouchers(user: PublicKey): Promise<{ userVouchers: bigint; decimal: number; }> // Get users can receive rewards async getUserRewards(ballotBoxState: PublicKey, user: PublicKey): Promise<{ userRewards: bigint; rewardMint: PublicKey; }> // Get the staking pool config async getStakePoolStateAccount( stakePoolState: PublicKey ): Promise<StakePoolState | null> // Get user voting information async getUserVoteStateAccount( ballotBoxState: PublicKey, user: PublicKey, commitment: Commitment = DEFAULT_COMMITMENT ): Promise<UserVoteState | null> // Get the voting details of a user in a staking pool async getUserStakeVoteStateAccount( stakePoolState: PublicKey, user: PublicKey, commitment: Commitment = DEFAULT_COMMITMENT ): Promise<UserStakeVoteState | null> // Get the user's received reward data async getUserRewardStateAccount( stakePoolState: PublicKey, user: PublicKey, commitment: Commitment = DEFAULT_COMMITMENT ): Promise<UserRewardState | null> // Get ballot box information async getBallotBotStateAccount( ballotBot: PublicKey, commitment: Commitment = DEFAULT_COMMITMENT ): Promise<BallotBotState | null> // Get ballot box reward information async getVoteRewardStateAccount( ballotBoxState: PublicKey, commitment: Commitment = DEFAULT_COMMITMENT ): Promise<VoteRewardState | null> // Get user's active ballot boxes async getUserActiveBallotBoxStateAccount( stakePoolState: PublicKey, user: PublicKey, commitment: Commitment = DEFAULT_COMMITMENT ): Promise<UserActiveBallotBoxState | null> // Get global active ballot boxes async getActiveBallotBoxStateAccount( commitment: Commitment = DEFAULT_COMMITMENT ): Promise<ActiveBallotBoxState | null> // Get user's active ballot boxes async getUserActiveBallotBoxStateAccount( stakePoolState: PublicKey, user: PublicKey, commitment: Commitment = DEFAULT_COMMITMENT ): Promise<UserActiveBallotBoxState | null> // Get the lock amount for the staked pool async lockedAmount( stakePoolState: PublicKey, user: PublicKey ): Promise<BN> ``` ### StakeVoteSDK Class The `StakeVoteSDK` class provides methods for interacting with the Bet protocol. Below are the method signatures and descriptions. #### stake ```typescript async stake( user: Keypair, stakePoolState: PublicKey, amount: BN, priorityFees?: PriorityFee, commitment: Commitment = DEFAULT_COMMITMENT, finality: Finality = DEFAULT_FINALITY ): Promise<TransactionResult> ``` - **Parameters**: - `user`: The Keypair of the user. - `stakePoolState`: Staking pool public key corresponding to different staking periods. - `amount`: Amount of mint to stake. - `priorityFees`: Priority fees (optional). - `commitment`: Commitment level (default: DEFAULT_COMMITMENT). - `finality`: Finality level (default: DEFAULT_FINALITY). - **Returns**: A promise that resolves to a `TransactionResult`. #### stakeAdd ```typescript async stakeAdd( user: Keypair, stakePoolState: PublicKey, amount: BN, addType: number, priorityFees?: PriorityFee, commitment: Commitment = DEFAULT_COMMITMENT, finality: Finality = DEFAULT_FINALITY ): Promise<TransactionResult> ``` - **Parameters**: - `user`: The Keypair of the user. - `stakePoolState`: Staking pool public key corresponding to different staking periods. - `amount`: Amount of mint to stake. - `addType`: Mint amount OR time. - `priorityFees`: Priority fees (optional). - `commitment`: Commitment level (default: DEFAULT_COMMITMENT). - `finality`: Finality level (default: DEFAULT_FINALITY). - **Returns**: A promise that resolves to a `TransactionResult`. #### stakeWithdraw ```typescript async stakeWithdraw( user: Keypair, stakePoolState: PublicKey, amount: BN, priorityFees?: PriorityFee, commitment: Commitment = DEFAULT_COMMITMENT, finality: Finality = DEFAULT_FINALITY ): Promise<TransactionResult> ``` - **Parameters**: - `user`: The Keypair of the user. - `stakePoolState`: Staking pool public key corresponding to different staking periods. - `amount`: Amount of mint to withdraw. - `priorityFees`: Priority fees (optional). - `commitment`: Commitment level (default: DEFAULT_COMMITMENT). - `finality`: Finality level (default: DEFAULT_FINALITY). - **Returns**: A promise that resolves to a `TransactionResult`. #### vote ```typescript async vote( user: Keypair, ballotBoxState: PublicKey, amount: bigint, slippage: bigint, priorityFees?: PriorityFee, commitment: Commitment = DEFAULT_COMMITMENT, finality: Finality = DEFAULT_FINALITY ): Promise<TransactionResult> ``` - **Parameters**: - `user`: The Keypair of the user. - `ballotBoxState`: The public key of the ballot box. - `amount`: Amount of mint to vote. - `slippage`: The slippage of voting rights to be accepted. - `priorityFees`: Priority fees (optional). - `commitment`: Commitment level (default: DEFAULT_COMMITMENT). - `finality`: Finality level (default: DEFAULT_FINALITY). - **Returns**: A promise that resolves to a `TransactionResult`. #### voteWhole ```typescript async voteWhole( user: Keypair, ballotBoxState: PublicKey, priorityFees?: PriorityFee, commitment: Commitment = DEFAULT_COMMITMENT, finality: Finality = DEFAULT_FINALITY ): Promise<TransactionResult> ``` - **Parameters**: - `user`: The Keypair of the user. - `ballotBoxState`: The public key of the ballot box. - `isWhole`: Whether to invest all holdings. - `priorityFees`: Priority fees (optional). - `commitment`: Commitment level (default: DEFAULT_COMMITMENT). - `finality`: Finality level (default: DEFAULT_FINALITY). - **Returns**: A promise that resolves to a `TransactionResult`. #### rewardReceive ```typescript async rewardReceive( user: Keypair, rewardUseBallotBox: PublicKey, priorityFees?: PriorityFee, commitment: Commitment = DEFAULT_COMMITMENT, finality: Finality = DEFAULT_FINALITY ): Promise<TransactionResult> ``` - **Parameters**: - `user`: The Keypair of the user. - `rewardUseBallotBox`: The public key of the reward ballot box. - `priorityFees`: Priority fees (optional). - `commitment`: Commitment level (default: DEFAULT_COMMITMENT). - `finality`: Finality level (default: DEFAULT_FINALITY). - **Returns**: A promise that resolves to a `TransactionResult`.