import { getInitializeInstruction, getDelegateStakeInstruction } from "@solana-program/stake"; import { getCreateAccountInstruction } from "@solana-program/system"; import { type Address, KeyPairSigner, TransactionSigner } from "@solana/kit"; /** Native Stake program address. */ export declare const STAKE_PROGRAM_ID: Address; /** Sysvar Clock address. */ export declare const SYSVAR_CLOCK: Address; /** Sysvar Stake History address. */ export declare const SYSVAR_STAKE_HISTORY: Address; /** Unused stake config account (required by legacy instructions). */ export declare const UNUSED_STAKE_CONFIG_ACC: Address; /** Helius validator vote account address. */ export declare const HELIUS_VALIDATOR_ID: Address; /** Max u64 value — active stake accounts have their deactivation epoch set to this. */ export declare const U64_MAX: bigint; /** Size of a stake account in bytes. */ export declare const STAKE_STATE_LEN = 200; /** Lamports per SOL as a BigInt-compatible value. */ export declare const LAMPORTS_PER_SOL_BIGINT: bigint; /** Create a signed stake transaction delegating to the Helius validator. Returns the serialized tx and new stake account pubkey. */ export type CreateStakeTransactionFn = (owner: KeyPairSigner, amountSol: number) => Promise<{ serializedTx: string; stakeAccountPubkey: Address; }>; /** Create a signed deactivation (unstake) transaction. Returns the serialized tx. */ export type createUnstakeTransactionFn = (ownerSigner: KeyPairSigner, stakeAccount: Address) => Promise<{ serializedTx: string; }>; /** Create a signed withdrawal transaction. Returns the serialized tx. */ export type CreateWithdrawTransactionFn = (withdrawAuthority: KeyPairSigner, stakeAccount: Address, destination: Address, lamports: number | bigint) => Promise<{ serializedTx: string; }>; /** Fetch all stake accounts delegated to the Helius validator for a given wallet. */ export type GetHeliusStakeAccountsFn = (wallet: string | Address) => Promise; /** Get the withdrawable lamport amount for a stake account. */ export type GetWithdrawableAmountFn = (stakeAccount: Address | string, includeRentExempt?: boolean) => Promise; /** Result from `getStakeInstructions` — the instructions and generated stake account signer. */ export interface StakeInstructionsResult { /** Instructions to create, initialize, and delegate the stake account. */ instructions: ReadonlyArray>; /** The generated stake account signer (keypair). */ stakeAccount: TransactionSigner; } /** Build the instructions needed to create and delegate a stake account. */ export type GetStakeInstructionsFn = (owner: TransactionSigner, amountSol: number) => Promise; /** Build a deactivation (unstake) instruction. */ export type GetUnstakeInstructionFn = (owner: Address, stakeAccount: Address) => any; /** Build a withdrawal instruction. */ export type GetWithdrawIxFn = (owner: Address, stakeAccount: Address, destination: Address, lamports: number | bigint) => any; //# sourceMappingURL=types.d.ts.map