import { BN, BorshAccountsCoder, Idl } from "@coral-xyz/anchor"; import { Staking } from "../artifacts/staking"; import { StakingSpl } from "../artifacts/staking_spl"; import { PublicKey } from "@solana/web3.js"; export type SolCatStakingType = Staking; export type V2StakingType = StakingSpl; export declare const SolCatStakingIDL: Idl; export declare const V2StakingIDL: Idl; export declare const solCatAccountsCoder: BorshAccountsCoder; export declare const v2AccountsCoder: BorshAccountsCoder; export declare enum AccountName { Config = "Config", FlexibleVault = "FlexibleVault", LockupVault = "LockupVault", LockupStakingAccount = "LockupStakingAccount" } export type ConfigData = { bump: number; admin: PublicKey; mint: PublicKey; }; export type ConfigDataV2 = { bump: number; admin: PublicKey; feePercentage: number; }; export type FlexibleVaultData = { bump: number; totalSupply: BN; rewardPerTokenStored: BN; rewardRate: BN; lastUpdateTime: BN; withdrawalDelayTime: BN; totalRewardClaimed: BN; }; export type FlexibleVaultDataV2 = { bump: number; mint: PublicKey; totalSupply: BN; rewardPerTokenStored: BN; rewardRate: BN; lastUpdateTime: BN; withdrawalDelayTime: BN; totalRewardClaimed: BN; }; export type LockupVaultData = { bump: number; index: BN; apy: BN; lockupDuration: BN; minStakeAmount: BN; totalLockedAmount: BN; totalRewardClaimed: BN; }; export type LockupVaultDataV2 = { bump: number; mint: PublicKey; index: BN; apy: BN; lockupDuration: BN; minStakeAmount: BN; totalLockedAmount: BN; totalRewardClaimed: BN; }; export type LockupStakingAccountData = { bump: number; index: BN; owner: PublicKey; lockupVault: PublicKey; committedApy: BN; lockedAmount: BN; lockedAt: BN; unlocked: boolean; }; export type LockupStakingAccountDataV2 = { bump: number; mint: PublicKey; index: BN; owner: PublicKey; committedApy: BN; lockedAmount: BN; lockedAt: BN; unlocked: boolean; }; export type WithdrawPositionData = { bump: number; index: number; user: PublicKey; amount: BN; startDelayTime: BN; claimed: boolean; }; export type WithdrawPositionDataV2 = { bump: number; mint: PublicKey; positionIndex: number; user: PublicKey; amount: BN; startDelayTime: BN; claimed: boolean; }; export type WithdrawPositionInfo = { index: number; amount: string; startDelayTime: string; unlockTime: string; claimed: boolean; }; export type WithdrawPositionInfoV2 = { mint: string; positionIndex: number; amount: string; startDelayTime: string; unlockTime: string; claimed: boolean; }; export type FlexibleStakingAccountData = { bump: number; owner: PublicKey; balance: BN; reward: BN; userRewardPerTokenPaid: BN; }; export type FlexibleStakingAccountDataV2 = { bump: number; mint: PublicKey; owner: PublicKey; balance: BN; reward: BN; userRewardPerTokenPaid: BN; }; export type ProtocolV2StakingInfo = { admin: string; stakingInfo: TokenStakingInfo; }; export type TokenStakingInfo = { [key: string]: TokenStakingInfoDetails; }; export type TokenStakingInfoDetails = { flexibleRewardRate: string; flexibleApr: number; flexibleWithdrawalDelayTime: string; lockupApy: number[]; lockupDuration: string[]; minLockupAmount: string[]; }; export type UserFlexibleStakingInfo = { [key: string]: UserFlexibleStakingByMintDetails; }; export type UserFlexibleStakingByMintDetails = { totalStakedAmount: string; currentApr: number; withdrawDelayTime: string; pendingReward: string; unstakePending: string; redeemPending: string; withdrawPositions: (WithdrawPositionInfo | WithdrawPositionInfoV2)[]; }; export type UserLockupStakingInfo = { [key: string]: UserLockupStakingByMintDetails; }; export type LockupStakingAccountByVault = { bump: number; index: number; lockupVault: string; lockupVaultIndex: number; lockupDuration: string; committedApy: number; lockedAmount: string; lockedAt: string; unlocked: boolean; }; export type UserLockupStakingByMintDetails = { totalLockedAmount: string; maturedAmount: string; lockupStakingAccounts: LockupStakingAccountByVault[]; }; export type SolCatStakingProtocolInfo = { admin: string; mint: string; flexibleRewardRate: string; flexibleApr: number; flexibleWithdrawalDelayTime: string; totalFlexibleStaked: string; totalFlexibleReward: string; lockupApy: number[]; lockupDuration: string[]; minLockupAmount: string[]; totalLockupStaked: string[]; totalLockupReward: string[]; }; export type FlexibleVaultParams = { rewardRate: BN; withdrawalDelayTime: BN; }; export type LockupVaultParams = { index: number; apy: number; lockupDuration: BN; minStakeAmount: BN; };