UNPKG

@zebec-network/zebec-stake-sdk

Version:

An SDK for zebec network stake solana program

97 lines (96 loc) 4.78 kB
import { type Address, AnchorProvider, BN, Program, type Provider } from "@coral-xyz/anchor"; import { Connection, type PublicKey, type TransactionInstruction } from "@solana/web3.js"; import { TransactionPayload } from "@zebec-network/solana-common"; import { type ZebecStakeIdlV1 } from "./artifacts"; import { type ReadonlyProvider } from "./providers"; import type { InitLockupInstructionData, LockupInfo, Numeric, RewardScheme, StakeInfo, StakeInfoWithHash, StakeInstructionData, UpdateLockupInstructionData, UserNonceInfo } from "./types"; type ProgramCreateFunction = (provider: ReadonlyProvider | AnchorProvider) => Program<ZebecStakeIdlV1>; /** * StakeServiceBuilder is a builder class for creating a StakeService instance. * It allows you to set the network, provider, and program to use. */ export declare class StakeServiceBuilder { private _program; private _provider; private _network; /** * * @param network The network to use. If not set, a default network: 'mainnet-beta' will be used. * @returns */ setNetwork(network?: "mainnet-beta" | "devnet"): StakeServiceBuilder; /** * Set the provider to use. If not set, a default provider will be created. * @param provider The provider to use. If not set, a default provider: 'ReadonlyProvider' will be created. * @returns The StakeServiceBuilder instance. */ setProvider(provider?: ReadonlyProvider | AnchorProvider): StakeServiceBuilder; /** * * @param provider The provider to compare with. */ private validateProviderNetwork; /** * Set the program to use. If not set, a default program will be created. * @param program The program to use. If not set, a default program will be created. * @returns The StakeServiceBuilder instance. */ setProgram(createProgram?: ProgramCreateFunction): StakeServiceBuilder; build(): StakeService; } export declare class StakeService { readonly provider: Provider; readonly program: Program<ZebecStakeIdlV1>; readonly network: "mainnet-beta" | "devnet"; constructor(provider: Provider, program: Program<ZebecStakeIdlV1>, network: "mainnet-beta" | "devnet"); private _createPayload; getInitLockupInstruction(creator: PublicKey, lockup: PublicKey, stakeToken: PublicKey, rewardToken: PublicKey, rewardVault: PublicKey, stakeVault: PublicKey, data: InitLockupInstructionData): Promise<TransactionInstruction>; getUpdateLockupInstruction(updater: PublicKey, lockup: PublicKey, data: UpdateLockupInstructionData): Promise<TransactionInstruction>; getStakeInstruction(feePayer: PublicKey, lockup: PublicKey, stakeToken: PublicKey, stakeVault: PublicKey, staker: PublicKey, userNonce: PublicKey, stakePda: PublicKey, stakeVaultTokenAccount: PublicKey, data: StakeInstructionData): Promise<TransactionInstruction>; getUnstakeInstruction(feePayer: PublicKey, feeVault: PublicKey, lockup: PublicKey, stakePda: PublicKey, rewardToken: PublicKey, rewardVault: PublicKey, stakeToken: PublicKey, stakeVault: PublicKey, staker: PublicKey, stakerTokenAccount: PublicKey, nonce: BN): Promise<TransactionInstruction>; initLockup(params: { stakeToken: Address; rewardToken: Address; creator?: Address; name: string; fee: Numeric; feeVault: Address; rewardSchemes: RewardScheme[]; minimumStake: Numeric; }): Promise<TransactionPayload>; updateLockup(params: { lockupName: string; updater?: Address; fee: Numeric; feeVault: Address; rewardSchemes: RewardScheme[]; minimumStake: Numeric; }): Promise<TransactionPayload>; stake(params: { lockupName: string; feePayer?: Address; staker?: Address; amount: Numeric; lockPeriod: number; nonce: bigint; }): Promise<TransactionPayload>; unstake(params: { lockupName: string; nonce: bigint; feePayer?: Address; staker?: Address; }): Promise<TransactionPayload>; getLockupInfo(lockupAddress: Address): Promise<LockupInfo | null>; getStakeInfo(stakeAddress: Address, lockupAddress: Address): Promise<StakeInfo | null>; getUserNonceInfo(userNonceAddress: Address): Promise<UserNonceInfo | null>; getAllStakesInfoOfUser(userAdress: Address, lockupAddress: Address, options?: { minDelayMs?: number; maxConcurrent?: number; }): Promise<StakeInfoWithHash[]>; getAllStakesCount(lockupAddress: Address): Promise<number>; getStakeSignatureForStake(stakeInfo: StakeInfo): Promise<string | null>; getAllStakesInfo(lockupAddress: Address): Promise<StakeInfo[]>; get programId(): PublicKey; get connection(): Connection; } export {};