@xswap-link/sdk
Version:
JavaScript SDK for XSwap platform
59 lines (53 loc) • 1.56 kB
text/typescript
import { PublicKey } from "@solana/web3.js";
/**
* CCIP Receiver PDA utilities
*/
// Seeds for the CCIP receiver program
export const RECEIVER_SEEDS = {
EXTERNAL_EXECUTION_CONFIG: Buffer.from("external_execution_config"),
STATE: Buffer.from("state"),
CONFIG: Buffer.from("config"),
DEST_CHAIN_STATE: Buffer.from("dest_chain_state"),
FEE_BILLING_SIGNER: Buffer.from("fee_billing_signer"),
NONCE: Buffer.from("nonce"),
FEE_BILLING_TOKEN_CONFIG: Buffer.from("fee_billing_token_config"),
CURSES: Buffer.from("curses"),
};
/**
* Derives the state PDA for a CCIP receiver program
* @param programId Receiver program ID
* @returns State PDA
*/
export function deriveStatePda(programId: PublicKey): PublicKey {
const [statePda] = PublicKey.findProgramAddressSync(
[RECEIVER_SEEDS.STATE],
programId,
);
return statePda;
}
/**
* Derives the config PDA for a CCIP receiver program
* @param programId Receiver program ID
* @returns Config PDA
*/
export function deriveConfigPda(programId: PublicKey): PublicKey {
const [configPda] = PublicKey.findProgramAddressSync(
[RECEIVER_SEEDS.CONFIG],
programId,
);
return configPda;
}
/**
* Derives the external execution config PDA for a CCIP receiver program
* @param programId Receiver program ID
* @returns External execution config PDA
*/
export function deriveExternalExecutionConfigPda(
programId: PublicKey,
): PublicKey {
const [pda] = PublicKey.findProgramAddressSync(
[RECEIVER_SEEDS.EXTERNAL_EXECUTION_CONFIG],
programId,
);
return pda;
}