import { BN, Program, Provider } from "@coral-xyz/anchor";
import { Commitment, Finality, Keypair, PublicKey, Transaction } from "@solana/web3.js";
import { PriorityFee, TransactionResult } from "./types";
import { UserStakeVoteState, UserVoteState, StakeState, StakePoolState, UserRewardState, VoteRewardState, BallotBotState, UserActiveBallotBoxState, ActiveBallotBoxState } from "./state";
import { StakeVote } from "./idl";
export declare class StakeVoteSDK {
    program: Program<StakeVote>;
    constructor(provider: Provider);
    stake(user: Keypair, stakePoolState: PublicKey, amount: BN, priorityFees?: PriorityFee, commitment?: Commitment, finality?: Finality): Promise<TransactionResult>;
    stakeAdd(user: Keypair, stakePoolState: PublicKey, amount: BN, addType: number, priorityFees?: PriorityFee, commitment?: Commitment, finality?: Finality): Promise<TransactionResult>;
    stakeWithdraw(user: Keypair, stakePoolState: PublicKey, amount: BN, priorityFees?: PriorityFee, commitment?: Commitment, finality?: Finality): Promise<TransactionResult>;
    vote(user: Keypair, ballotBoxState: PublicKey, amount: bigint, slippage: bigint, priorityFees?: PriorityFee, commitment?: Commitment, finality?: Finality): Promise<TransactionResult>;
    voteWhole(user: Keypair, ballotBoxState: PublicKey, priorityFees?: PriorityFee, commitment?: Commitment, finality?: Finality): Promise<TransactionResult>;
    rewardReceive(user: Keypair, rewardUseBallotBox: PublicKey, priorityFees?: PriorityFee, commitment?: Commitment, finality?: Finality): Promise<TransactionResult>;
    lockedAmount(user: PublicKey, stakePoolState: PublicKey): Promise<BN>;
    getStakeTransactions(user: PublicKey, stakePoolState: PublicKey, amount: BN): Promise<Transaction>;
    getStakeAddTransactions(user: PublicKey, stakePoolState: PublicKey, amount: BN, addType: number): Promise<Transaction>;
    getStakeWithdrawTransactions(user: PublicKey, stakePoolState: PublicKey, amount: BN): Promise<Transaction>;
    getVoteTransactions(user: PublicKey, ballotBoxState: PublicKey, stakePoolState: PublicKey, amount: BN, minAmount: BN, isWhole: boolean): Promise<Transaction>;
    getAutoVoteTransactions(user: PublicKey, ballotBoxState: PublicKey, amount: bigint, slippage?: bigint): Promise<Transaction>;
    getAutoWholeVoteTransactions(user: PublicKey, ballotBoxState: PublicKey): Promise<Transaction>;
    getRewardReceiveTransactions(user: PublicKey, rewardUseBallotBox: PublicKey): Promise<Transaction>;
    getBatchRewardReceiveTransactions(user: PublicKey, rewardUseBallotBoxs: PublicKey[]): Promise<Transaction>;
    getStakePoolStates(): Promise<import("@coral-xyz/anchor").ProgramAccount<{
        stakePeriod: BN;
        rewardGrowBy: BN;
        growReduceBy: BN;
        decimal: number;
        rewardGrowMinBy: BN;
    }>[]>;
    getUserVouchersByPool(stakePoolState: PublicKey, user: PublicKey): Promise<{
        voteLeft: bigint;
        userStakeVoteState: null;
    } | {
        voteLeft: bigint;
        userStakeVoteState: UserStakeVoteState;
    }>;
    getUserVouchers(user: PublicKey): Promise<{
        userVouchers: bigint;
        decimal: number;
    }>;
    getUserRewards(ballotBoxState: PublicKey, user: PublicKey): Promise<{
        userRewards: bigint;
        rewardMint: PublicKey;
    }>;
    simulateAddStakeAmount(payer: PublicKey, user: PublicKey, stakePoolState: PublicKey, amount: BN): Promise<import("@solana/web3.js").RpcResponseAndContext<import("@solana/web3.js").SimulatedTransactionResponse>>;
    simulateGetCurrentVoteByAmount(payer: PublicKey, user: PublicKey, stakePoolState: PublicKey, amount: BN, minAmount: BN): Promise<import("@solana/web3.js").RpcResponseAndContext<import("@solana/web3.js").SimulatedTransactionResponse>>;
    simulateAddStakeTime(payer: PublicKey, user: PublicKey, stakePoolState: PublicKey, peroid: BN): Promise<import("@solana/web3.js").RpcResponseAndContext<import("@solana/web3.js").SimulatedTransactionResponse>>;
    simulateStakeRelease(payer: PublicKey, user: PublicKey, stakePoolState: PublicKey): Promise<import("@solana/web3.js").RpcResponseAndContext<import("@solana/web3.js").SimulatedTransactionResponse>>;
    getStakePoolStateAccount(stakePoolState: PublicKey): Promise<StakePoolState | null>;
    getUserVoteStateAccount(ballotBoxState: PublicKey, user: PublicKey, commitment?: Commitment): Promise<UserVoteState | null>;
    getUserStakeVoteStateAccount(stakePoolState: PublicKey, user: PublicKey, commitment?: Commitment): Promise<UserStakeVoteState | null>;
    getStakeStateAccount(commitment?: Commitment): Promise<StakeState | null>;
    getUserRewardStateAccount(ballotBoxState: PublicKey, user: PublicKey, commitment?: Commitment): Promise<UserRewardState | null>;
    getVoteRewardStateAccount(ballotBoxState: PublicKey, commitment?: Commitment): Promise<VoteRewardState | null>;
    getBallotBotStateAccount(ballotBot: PublicKey, commitment?: Commitment): Promise<BallotBotState | null>;
    getUserActiveBallotBoxStateAccount(stakePoolState: PublicKey, user: PublicKey, commitment?: Commitment): Promise<UserActiveBallotBoxState | null>;
    getActiveBallotBoxStateAccount(commitment?: Commitment): Promise<ActiveBallotBoxState | null>;
    getConfigStatePDA(): PublicKey;
    getStakeStatePDA(): PublicKey;
    getUserStakeVoteStatePDA(stakePoolState: PublicKey, user: PublicKey): PublicKey;
    getUserVoteStatePDA(ballotBoxState: PublicKey, user: PublicKey): PublicKey;
    getVoteRewardStatePDA(ballotBoxState: PublicKey): PublicKey;
    getUserRewardStatePDA(ballotBoxState: PublicKey, user: PublicKey): PublicKey;
    getUserActiveBallotBoxStatePDA(stakePoolState: PublicKey, user: PublicKey): PublicKey;
    getActiveBallotBoxStatePDA(): PublicKey;
}
//# sourceMappingURL=stakeVote.d.ts.map