UNPKG

@solana/spl-name-service

Version:

SPL Name Service JavaScript API

200 lines 5.24 kB
import { PublicKey, TransactionInstruction } from '@solana/web3.js'; import { Numberu32 } from './utils'; export function createInstruction(nameProgramId, systemProgramId, nameKey, nameOwnerKey, payerKey, hashed_name, lamports, space, nameClassKey, nameParent, nameParentOwner) { const buffers = [ Buffer.from(Int8Array.from([0])), new Numberu32(hashed_name.length).toBuffer(), hashed_name, lamports.toBuffer(), space.toBuffer(), ]; const data = Buffer.concat(buffers); const keys = [ { pubkey: systemProgramId, isSigner: false, isWritable: false, }, { pubkey: payerKey, isSigner: true, isWritable: true, }, { pubkey: nameKey, isSigner: false, isWritable: true, }, { pubkey: nameOwnerKey, isSigner: false, isWritable: false, }, ]; if (nameClassKey) { keys.push({ pubkey: nameClassKey, isSigner: true, isWritable: false, }); } else { keys.push({ pubkey: new PublicKey(Buffer.alloc(32)), isSigner: false, isWritable: false, }); } if (nameParent) { keys.push({ pubkey: nameParent, isSigner: false, isWritable: false, }); } else { keys.push({ pubkey: new PublicKey(Buffer.alloc(32)), isSigner: false, isWritable: false, }); } if (nameParentOwner) { keys.push({ pubkey: nameParentOwner, isSigner: true, isWritable: false, }); } return new TransactionInstruction({ keys, programId: nameProgramId, data, }); } export function updateInstruction(nameProgramId, nameAccountKey, offset, input_data, nameUpdateSigner, parentNameKey) { const buffers = [ Buffer.from(Int8Array.from([1])), offset.toBuffer(), new Numberu32(input_data.length).toBuffer(), input_data, ]; const data = Buffer.concat(buffers); const keys = [ { pubkey: nameAccountKey, isSigner: false, isWritable: true, }, { pubkey: nameUpdateSigner, isSigner: true, isWritable: false, }, ]; if (parentNameKey) { keys.push({ pubkey: parentNameKey, isSigner: false, isWritable: false, }); } return new TransactionInstruction({ keys, programId: nameProgramId, data, }); } export function transferInstruction(nameProgramId, nameAccountKey, newOwnerKey, currentNameOwnerKey, nameClassKey, nameParent) { const buffers = [Buffer.from(Int8Array.from([2])), newOwnerKey.toBuffer()]; const data = Buffer.concat(buffers); const keys = [ { pubkey: nameAccountKey, isSigner: false, isWritable: true, }, { pubkey: currentNameOwnerKey, isSigner: true, isWritable: false, }, ]; if (nameClassKey) { keys.push({ pubkey: nameClassKey, isSigner: true, isWritable: false, }); } if (nameParent) { keys.push({ pubkey: nameParent, isSigner: false, isWritable: false, }); } return new TransactionInstruction({ keys, programId: nameProgramId, data, }); } export function deleteInstruction(nameProgramId, nameAccountKey, refundTargetKey, nameOwnerKey) { const buffers = [Buffer.from(Int8Array.from([3]))]; const data = Buffer.concat(buffers); const keys = [ { pubkey: nameAccountKey, isSigner: false, isWritable: true, }, { pubkey: nameOwnerKey, isSigner: true, isWritable: false, }, { pubkey: refundTargetKey, isSigner: false, isWritable: true, }, ]; return new TransactionInstruction({ keys, programId: nameProgramId, data, }); } export function reallocInstruction(nameProgramId, systemProgramId, payerKey, nameAccountKey, nameOwnerKey, space) { const buffers = [Buffer.from(Int8Array.from([4])), space.toBuffer()]; const data = Buffer.concat(buffers); const keys = [ { pubkey: systemProgramId, isSigner: false, isWritable: false, }, { pubkey: payerKey, isSigner: true, isWritable: true, }, { pubkey: nameAccountKey, isSigner: false, isWritable: true, }, { pubkey: nameOwnerKey, isSigner: true, isWritable: false, }, ]; return new TransactionInstruction({ keys, programId: nameProgramId, data, }); } //# sourceMappingURL=instructions.js.map