@nosana/kit
Version:
Nosana KIT
61 lines • 1.86 kB
TypeScript
import { Address } from '@solana/kit';
import type { ProgramDeps } from '../../../types.js';
import * as programClient from '@nosana/stake-program';
import { ConvertTypesForDb } from '../../../utils/index.js';
import type { ProgramConfig } from '../../../config/types.js';
import * as Instructions from './instructions/index.js';
export type Stake = ConvertTypesForDb<programClient.StakeAccountArgs> & {
address: Address;
};
/**
* Stake program interface
* @group @nosana/kit
*/
export interface StakeProgram {
/**
* Create a stake instruction for creating/initializing a stake account
*/
stake: Instructions.CreateStake;
/**
* Derive the stake account PDA address for a given owner (defaults to wallet address)
*/
getAddress(owner?: Address): Promise<Address>;
/**
* Fetch a stake account by address
*/
get(addr: Address): Promise<Stake>;
/**
* Fetch a stake account by owner address (defaults to wallet address)
*/
getByOwner(owner?: Address): Promise<Stake>;
/**
* Fetch multiple stake accounts by address
*/
multiple(addresses: Address[]): Promise<Stake[]>;
/**
* Fetch all stake accounts
*/
all(): Promise<Stake[]>;
}
/**
* Creates a new StakeProgram instance.
*
* @param deps - Program dependencies (config, logger, solana service, wallet getter)
* @returns A StakeProgram instance with methods to interact with the stake program
*
* @example
* ```ts
* import { createStakeProgram } from '@nosana/kit';
*
* const stakeProgram = createStakeProgram({
* config,
* logger,
* solana,
* getWallet,
* });
*
* const stake = await stakeProgram.get('stake-address');
* ```
*/
export declare function createStakeProgram(deps: ProgramDeps, config: ProgramConfig): StakeProgram;
//# sourceMappingURL=StakeProgram.d.ts.map