Skip to main content

Constants & PDAs

Exported constants and PDA derivation functions.

Constants

import {
PACKET_PROGRAM_ADDRESS,
PACKET_PROGRAM_ID,
PACKET_LOOK_UP_TABLE,
PACKET_LOOK_UP_TABLE_DEVNET,
WSOL_ID,
SYSTEM_PROGRAM_ID,
TOKEN_PROGRAM_ID,
TOKEN_2022_PROGRAM_ID,
ASSOCIATED_TOKEN_PROGRAM_ID,
NO_INBOX,
SEEDS,
TokenProgramTypeToProgramId,
PACKET_IRYS_GATEWAY,
PACKET_IPFS_GATEWAY,
PACKET_ARWEAVE_GATEWAY,
} from "xpkt-sdk";
ConstantTypeDescription
PACKET_PROGRAM_ADDRESSstringPacket program address as a base58 string
PACKET_PROGRAM_IDPublicKeyOn-chain program address
PACKET_LOOK_UP_TABLEPublicKeyMainnet address lookup table used in transactions
PACKET_LOOK_UP_TABLE_DEVNETPublicKeyDevnet address lookup table used in transactions
WSOL_IDPublicKeyWrapped SOL mint address
SYSTEM_PROGRAM_IDPublicKeySolana system program
TOKEN_PROGRAM_IDPublicKeySPL Token program
TOKEN_2022_PROGRAM_IDPublicKeyToken-2022 program
ASSOCIATED_TOKEN_PROGRAM_IDPublicKeyAssociated Token Account program
NO_INBOXBNSentinel value indicating a thread has no associated inbox
TokenProgramTypeToProgramIdRecord<TokenProgramType, PublicKey>Maps TokenProgramType enum to program address
PACKET_IRYS_GATEWAYstringDefault Irys gateway prefix
PACKET_IPFS_GATEWAYstringDefault IPFS gateway prefix
PACKET_ARWEAVE_GATEWAYstringDefault Arweave gateway prefix

SEEDS

PDA seed strings used by the program.

const SEEDS = {
user: "user",
inbox: "inbox",
inboxBody: "inbox_body",
inboxMetadata: "inbox-metadata",
inboxArchive: "inbox_archive",
thread: "thread",
message: "msg",
vault: "packet_vault",
key: "key",
};

PDAs

All PDA derivation functions are available on the PacketPDAs export:

import { PacketPDAs } from "xpkt-sdk";
MethodParametersDescription
PacketPDAs.user(owner, programId?)PublicKeyUser account PDA
PacketPDAs.inbox(id, owner, programId?)BN, PublicKeyInbox PDA
PacketPDAs.inboxBody(inbox, programId?)PublicKeyInbox body (live page) PDA
PacketPDAs.inboxArchive(inbox, index, programId?)PublicKey, BNCompressed inbox archive address
PacketPDAs.inboxMetadata(inbox, programId?)PublicKeyInbox metadata PDA
PacketPDAs.thread(threadId, programId?)numberThread PDA
PacketPDAs.message(threadId, msgSeq, programId?)number, numberMessage PDA
PacketPDAs.vault(programId?)Protocol vault PDA
PacketPDAs.key(owner, programId?)PublicKeyUser key account PDA
PacketPDAs.ata(mint, owner, tokenProgram?)PublicKey, PublicKeyAssociated token account address

Example

import { PacketPDAs, BN } from "xpkt-sdk";

const inboxAddress = PacketPDAs.inbox(new BN(1), ownerPublicKey);
const archiveAddress = PacketPDAs.inboxArchive(inboxAddress, new BN(0));
const threadAddress = PacketPDAs.thread(42);
const messageAddress = PacketPDAs.message(42, 1);
const ata = PacketPDAs.ata(usdcMint, ownerPublicKey);

programId defaults to PACKET_PROGRAM_ID in all functions and can be omitted unless you're targeting a custom deployment.