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