UNPKG

@ghostspeak/sdk

Version:

TypeScript SDK for GhostSpeak AI Agent Commerce Protocol - Production Ready Beta

284 lines (282 loc) 7.42 kB
import { getProgramDerivedAddress, getBytesEncoder, getAddressEncoder, getUtf8Encoder } from '@solana/kit'; // src/utils/pda.ts async function deriveAgentPdaOriginal(programId, owner, agentId) { const [address] = await getProgramDerivedAddress({ programAddress: programId, seeds: [ getBytesEncoder().encode(new Uint8Array([97, 103, 101, 110, 116])), // 'agent' getAddressEncoder().encode(owner), // Use raw UTF-8 bytes to match smart contract: agent_id.as_bytes() getUtf8Encoder().encode(agentId) ] }); return address; } async function deriveAgentPda(params) { const [address, bump] = await getProgramDerivedAddress({ programAddress: params.programAddress, seeds: [ getBytesEncoder().encode(new Uint8Array([97, 103, 101, 110, 116])), // 'agent' getAddressEncoder().encode(params.owner), getUtf8Encoder().encode(params.agentId) ] }); return [address, bump]; } async function deriveA2ASessionPdaOriginal(programId, creator) { const [address] = await getProgramDerivedAddress({ programAddress: programId, seeds: [ getBytesEncoder().encode(new Uint8Array([ 97, 50, 97, 95, 115, 101, 115, 115, 105, 111, 110 ])), // 'a2a_session' getAddressEncoder().encode(creator) ] }); return address; } async function deriveA2ASessionPda(params) { const result = await getProgramDerivedAddress({ programAddress: params.programAddress, seeds: [ getBytesEncoder().encode(new Uint8Array([ 97, 50, 97, 95, 115, 101, 115, 115, 105, 111, 110 ])), // 'a2a_session' getAddressEncoder().encode(params.initiator) ] }); return [result[0], result[1]]; } async function deriveA2AMessagePda(programId, session, sessionCreatedAt) { const createdAtBytes = new Uint8Array(8); const dataView = new DataView(createdAtBytes.buffer); dataView.setBigInt64(0, sessionCreatedAt, true); const [address] = await getProgramDerivedAddress({ programAddress: programId, seeds: [ getBytesEncoder().encode(new Uint8Array([ 97, 50, 97, 95, 109, 101, 115, 115, 97, 103, 101 ])), // 'a2a_message' getAddressEncoder().encode(session), createdAtBytes // Fixed: use raw little-endian bytes instead of U64 encoder ] }); return address; } async function deriveUserRegistryPda(programId, signer) { const [address] = await getProgramDerivedAddress({ programAddress: programId, seeds: [ getBytesEncoder().encode(new Uint8Array([ 117, 115, 101, 114, 95, 114, 101, 103, 105, 115, 116, 114, 121 ])), // 'user_registry' getAddressEncoder().encode(signer) ] }); return address; } async function deriveAgentVerificationPda(programId, agent, verifier) { const [address] = await getProgramDerivedAddress({ programAddress: programId, seeds: [ getBytesEncoder().encode(new Uint8Array([ 97, 103, 101, 110, 116, 95, 118, 101, 114, 105, 102, 105, 99, 97, 116, 105, 111, 110 ])), // 'agent_verification' getAddressEncoder().encode(agent), getAddressEncoder().encode(verifier) ] }); return address; } async function deriveAgentTreeConfigPda(programId, signer) { const [address] = await getProgramDerivedAddress({ programAddress: programId, seeds: [ getBytesEncoder().encode(new Uint8Array([ 97, 103, 101, 110, 116, 95, 116, 114, 101, 101, 95, 99, 111, 110, 102, 105, 103 ])), // 'agent_tree_config' getAddressEncoder().encode(signer) ] }); return address; } async function findProgramDerivedAddress(seeds, programId) { const encodedSeeds = seeds.map((seed) => { if (typeof seed === "string") { return getUtf8Encoder().encode(seed); } else if (typeof seed === "object" && seed.constructor === Uint8Array) { return seed; } else { return getAddressEncoder().encode(seed); } }); const result = await getProgramDerivedAddress({ programAddress: programId, seeds: encodedSeeds }); return [result[0], result[1]]; } async function deriveEscrowPDAOriginal(workOrder, programId) { const seeds = [ getBytesEncoder().encode(new Uint8Array([101, 115, 99, 114, 111, 119])), // 'escrow' getAddressEncoder().encode(workOrder) ]; const result = await getProgramDerivedAddress({ programAddress: programId, seeds }); return [result[0], result[1]]; } async function deriveEscrowPDA(params) { const seeds = [ getBytesEncoder().encode(new Uint8Array([101, 115, 99, 114, 111, 119])), // 'escrow' getUtf8Encoder().encode(params.escrowId) ]; const result = await getProgramDerivedAddress({ programAddress: params.programAddress, seeds }); return [result[0], result[1]]; } async function deriveEscrowPda(programId, buyer, seller, nonce) { const nonceBytes = new Uint8Array(8); const dataView = new DataView(nonceBytes.buffer); dataView.setUint32(0, nonce, true); const [address] = await getProgramDerivedAddress({ programAddress: programId, seeds: [ getBytesEncoder().encode(new Uint8Array([101, 115, 99, 114, 111, 119])), // 'escrow' getAddressEncoder().encode(buyer), getAddressEncoder().encode(seller), nonceBytes.slice(0, 4) // Only use 4 bytes for the nonce ] }); return address; } async function deriveTokenAccountPda(wallet, mint) { const ASSOCIATED_TOKEN_PROGRAM_ID = "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"; const TOKEN_PROGRAM_ID = "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"; const [address] = await getProgramDerivedAddress({ programAddress: ASSOCIATED_TOKEN_PROGRAM_ID, seeds: [ getAddressEncoder().encode(wallet), getAddressEncoder().encode(TOKEN_PROGRAM_ID), getAddressEncoder().encode(mint) ] }); return address; } async function deriveMessagePda(programId, channel, nonce) { const nonceBytes = new Uint8Array(4); const dataView = new DataView(nonceBytes.buffer); dataView.setUint32(0, nonce, true); const [address] = await getProgramDerivedAddress({ programAddress: programId, seeds: [ getBytesEncoder().encode(new Uint8Array([ 109, 101, 115, 115, 97, 103, 101 // 'message' ])), getAddressEncoder().encode(channel), nonceBytes ] }); return address; } export { deriveA2AMessagePda, deriveA2ASessionPda, deriveA2ASessionPdaOriginal, deriveAgentPda, deriveAgentPdaOriginal, deriveAgentTreeConfigPda, deriveAgentVerificationPda, deriveEscrowPDA, deriveEscrowPDAOriginal, deriveEscrowPda, deriveMessagePda, deriveTokenAccountPda, deriveUserRegistryPda, findProgramDerivedAddress }; //# sourceMappingURL=chunk-BF3IQ35I.js.map //# sourceMappingURL=chunk-BF3IQ35I.js.map