UNPKG

@nosana/kit

Version:

Nosana KIT

74 lines 2.77 kB
import { Address, Instruction, TransactionSigner } from '@solana/kit'; import { Logger } from '../../logger/Logger.js'; import { Wallet } from '../../types.js'; export interface TokenAccount { pubkey: Address; owner: Address; mint: Address; amount: bigint; decimals: number; } export interface TokenAccountWithBalance extends TokenAccount { uiAmount: number; } import type { SolanaService } from '../solana/index.js'; /** * Dependencies for TokenService * @group @nosana/kit */ export interface TokenServiceDeps { logger: Logger; solana: SolanaService; getWallet: () => Wallet | undefined; } /** * Config for TokenService * @group @nosana/kit */ export interface TokenServiceConfig { tokenAddress: Address; } /** * TokenService interface * @group @nosana/kit */ export interface TokenService { getAllTokenHolders(options?: { includeZeroBalance?: boolean; excludePdaAccounts?: boolean; }): Promise<TokenAccountWithBalance[]>; getTokenAccountForAddress(owner: string | Address): Promise<TokenAccountWithBalance | null>; getBalance(owner?: string | Address): Promise<number>; /** * Get the associated token account address for a given owner. * * @param owner The owner address * @returns The associated token account address */ getATA(owner: Address | string): Promise<Address>; /** * Get instruction(s) to transfer SPL tokens from one address to another. * May return 1 or 2 instructions depending on whether the recipient's associated token account needs to be created. * * @param params Transfer parameters * @param params.to Recipient address * @param params.amount Amount in token base units (number or bigint) * @param params.from Optional sender TransactionSigner. If not provided, uses wallet from client. * @param params.payerForATA Optional payer for creating the recipient's ATA. Can be a TransactionSigner * (for full signing) or an Address (for deferred signing scenarios where the * payer signs later, e.g., as the transaction fee payer). * If not provided, uses the sender as the ATA payer. * @returns Array of instructions (create ATA instruction if needed, then transfer instruction) */ transfer(params: { to: Address | string; amount: number | bigint; from?: TransactionSigner; payerForATA?: TransactionSigner | Address | string; }): Promise<Instruction[]>; } /** * Creates a TokenService instance. */ export declare function createTokenService(deps: TokenServiceDeps, config: TokenServiceConfig): TokenService; //# sourceMappingURL=TokenService.d.ts.map