UNPKG

@macalinao/grill

Version:

Modern Solana development kit for React applications with automatic account batching, caching, and transaction notifications

43 lines 1.42 kB
import { createTokenAmount } from "@macalinao/token-utils"; import { TOKEN_PROGRAM_ADDRESS } from "@solana-program/token"; import { useMemo } from "react"; import { useAssociatedTokenAccount } from "./use-associated-token-account.js"; import { useTokenInfo } from "./use-token-info.js"; /** * Hook that fetches an Associated Token Account balance as a TokenAmount. * This combines useAssociatedTokenAccount and useTokenInfo to provide the complete balance information. * * @example * ```typescript * const balance = useATABalance({ * mint: mintAddress, * owner: walletAddress, * }); * * if (balance) { * console.log("Balance:", formatTokenAmount(balance)); * } * ``` */ export function useATABalance(options) { const { mint, owner, tokenProgram = TOKEN_PROGRAM_ADDRESS } = options; // Fetch the ATA and its data const { data: ataAccount } = useAssociatedTokenAccount({ mint, owner, tokenProgram, }); // Fetch the token info const { data: tokenInfo } = useTokenInfo({ mint }); return useMemo(() => { if (!tokenInfo) { return null; } // If ATA doesn't exist, return zero balance if (!ataAccount) { return createTokenAmount(tokenInfo, 0n); } return createTokenAmount(tokenInfo, ataAccount.data.amount); }, [ataAccount, tokenInfo]); } //# sourceMappingURL=use-ata-balance.js.map