Files

2.5 KiB

title, description
title description
Codama Program Clients Naming conventions and patterns for Codama-generated @solana-program/* Kit-compatible clients.

Codama-Generated Program Clients

@solana-program/* packages are Codama-generated, Kit-compatible clients for Solana programs.

Naming Conventions

Category Pattern Example
Program address {PROGRAM}_PROGRAM_ADDRESS SYSTEM_PROGRAM_ADDRESS
Instructions get{Name}Instruction() getTransferSolInstruction()
Instruction parse parse{Name}Instruction() parseTransferSolInstruction()
Account fetch fetch{Account}() fetchMint()
Account fetch maybe fetchMaybe{Account}() fetchMaybeMint()
Account fetch all fetchAll{Account}() fetchAllMint()
Account decode decode{Account}() decodeMint()
Account size get{Account}Size() getMintSize()
Codec get{Type}[Encoder|Decoder|Codec]() getMintDecoder()
PDA derivation find{Name}Pda() findAssociatedTokenPda()
Errors {PROGRAM}_ERROR__{NAME} SYSTEM_ERROR__INSUFFICIENT_FUNDS
Error check is{Program}Error() isSystemError()

Quick Examples

Fetch Typed Account

import { fetchMint } from '@solana-program/token';

const mint = await fetchMint(rpc, mintAddress);
// mint.data.decimals, mint.data.supply — fully typed

Create Instruction

import { getTransferSolInstruction } from '@solana-program/system';
import { lamports } from '@solana/kit';

const ix = getTransferSolInstruction({
  source: payer,
  destination: recipient.address,
  amount: lamports(1_000_000n),
});

Derive PDA

import { findAssociatedTokenPda, TOKEN_PROGRAM_ADDRESS } from '@solana-program/token';

const [ata] = await findAssociatedTokenPda({
  owner,
  mint,
  tokenProgram: TOKEN_PROGRAM_ADDRESS,
});

Error Handling

import { isSystemError, SYSTEM_ERROR__INSUFFICIENT_FUNDS } from '@solana-program/system';

try {
  await sendTransaction(tx);
} catch (e) {
  if (isSystemError(e, SYSTEM_ERROR__INSUFFICIENT_FUNDS)) {
    console.error('Not enough SOL');
  }
}

Program-Specific References

For detailed APIs: