import { Program } from '@coral-xyz/anchor'; import { PublicKey } from '@solana/web3.js'; import { OrraProtocol } from './types/orra_protocol'; import { RpcOptions } from './types'; export default class Stake { private program; private rpcOptions; constructor(program: Program, rpcOptions: RpcOptions); /** * Initialize Stake Vault * @param endTs - End timestamp */ initStakeVault(endTs: number, collection: string, week: number): Promise; /** * Get all Stake Vaults */ getStakeVaults(): Promise; /** * Get Stake Vault */ getStakeVault(): Promise; /** * Get all Stakes */ getStakes(): Promise; /** * Get Stake By Wallet * @param wallet - User wallet */ getStakeByWallet(wallet: PublicKey): Promise<{ available: number; authority: string; initTs: number; checkedTs: number; claimed: number; amount: number; revShareCheckedTs: number; revShareClaimed: number; revShareAvailable: number; }>; /** * Get Unstake By Wallet * @param wallet - User wallet */ getUnstakeByWallet(wallet: PublicKey): Promise; /** * Stake Token * @param amount - Amount to stake */ stakeToken(amount: number): Promise; /** * Update Stake Vault - deposit rewards * @param amount - Reward amount to deposit */ addStakeVaultRewards(amount: number): Promise; /** * Update Stake Vault Is Locked * @param isLocked - Whether the stake vault is locked */ updateStakeVaultIsLocked(isLocked: boolean): Promise; /** * Request Unstake * @param amount - Amount to unstake */ requestUnstake(amount: number): Promise; /** * Unstake Token * @param unstakePDA - Unstake Public Key */ unstakeToken(unstakePDA: PublicKey): Promise; /** * Claim Stake Rewards */ claimStakeRewards(): Promise; }