{"version":3,"file":"buildTokenTransfer.cjs","sources":["../../../../src/auth/buildTokenTransfer.ts"],"sourcesContent":["import {\n  createSolanaRpc,\n  createSolanaRpcSubscriptions,\n  sendAndConfirmTransactionFactory,\n  createKeyPairSignerFromBytes,\n  address as toAddress,\n  pipe,\n  createTransactionMessage,\n  setTransactionMessageFeePayerSigner,\n  setTransactionMessageLifetimeUsingBlockhash,\n  appendTransactionMessageInstructions,\n  signTransactionMessageWithSigners,\n  getSignatureFromTransaction,\n  type Instruction,\n  type Address,\n} from \"@solana/kit\";\nimport {\n  getTransferInstruction,\n  findAssociatedTokenPda,\n  TOKEN_PROGRAM_ADDRESS,\n} from \"@solana-program/token\";\nimport { RPC_URL, WS_URL } from \"./constants\";\n\nexport interface TokenTransferParams {\n  secretKey: Uint8Array;\n  recipientAddress: string;\n  mintAddress: Address;\n  amount: bigint;\n  additionalInstructions?: Instruction[];\n}\n\nexport async function buildAndSendTokenTransfer(\n  params: TokenTransferParams\n): Promise<string> {\n  const {\n    secretKey,\n    recipientAddress,\n    mintAddress,\n    amount,\n    additionalInstructions = [],\n  } = params;\n\n  const rpc = createSolanaRpc(RPC_URL);\n  const rpcSubscriptions = createSolanaRpcSubscriptions(WS_URL);\n  const sendAndConfirm = sendAndConfirmTransactionFactory({\n    rpc,\n    rpcSubscriptions,\n  });\n\n  const signer = await createKeyPairSignerFromBytes(secretKey);\n\n  const [senderAta] = await findAssociatedTokenPda({\n    owner: signer.address,\n    mint: mintAddress,\n    tokenProgram: TOKEN_PROGRAM_ADDRESS,\n  });\n\n  const [receiverAta] = await findAssociatedTokenPda({\n    owner: toAddress(recipientAddress),\n    mint: mintAddress,\n    tokenProgram: TOKEN_PROGRAM_ADDRESS,\n  });\n\n  const { value: latestBlockhash } = await rpc.getLatestBlockhash().send();\n\n  const transferIx = getTransferInstruction({\n    source: senderAta,\n    destination: receiverAta,\n    authority: signer,\n    amount,\n  });\n\n  const transactionMessage = pipe(\n    createTransactionMessage({ version: 0 }),\n    (tx) => setTransactionMessageFeePayerSigner(signer, tx),\n    (tx) => setTransactionMessageLifetimeUsingBlockhash(latestBlockhash, tx),\n    (tx) =>\n      appendTransactionMessageInstructions(\n        [transferIx, ...additionalInstructions],\n        tx\n      )\n  );\n\n  const signedTransaction =\n    await signTransactionMessageWithSigners(transactionMessage);\n\n  const transactionWithBlockHeight = {\n    ...signedTransaction,\n    lifetimeConstraint: {\n      lastValidBlockHeight: latestBlockhash.lastValidBlockHeight,\n    },\n  };\n\n  await sendAndConfirm(\n    transactionWithBlockHeight as Parameters<typeof sendAndConfirm>[0],\n    { commitment: \"confirmed\" }\n  );\n\n  return getSignatureFromTransaction(signedTransaction);\n}\n"],"names":["createSolanaRpc","RPC_URL","createSolanaRpcSubscriptions","WS_URL","sendAndConfirmTransactionFactory","createKeyPairSignerFromBytes","findAssociatedTokenPda","TOKEN_PROGRAM_ADDRESS","toAddress","getTransferInstruction","pipe","createTransactionMessage","setTransactionMessageFeePayerSigner","setTransactionMessageLifetimeUsingBlockhash","appendTransactionMessageInstructions","signTransactionMessageWithSigners","getSignatureFromTransaction"],"mappings":";;;;;;AA+BO,eAAe,yBAAyB,CAC7C,MAA2B,EAAA;AAE3B,IAAA,MAAM,EACJ,SAAS,EACT,gBAAgB,EAChB,WAAW,EACX,MAAM,EACN,sBAAsB,GAAG,EAAE,GAC5B,GAAG,MAAM;AAEV,IAAA,MAAM,GAAG,GAAGA,mBAAe,CAACC,iBAAO,CAAC;AACpC,IAAA,MAAM,gBAAgB,GAAGC,gCAA4B,CAACC,gBAAM,CAAC;IAC7D,MAAM,cAAc,GAAGC,oCAAgC,CAAC;QACtD,GAAG;QACH,gBAAgB;AACjB,KAAA,CAAC;AAEF,IAAA,MAAM,MAAM,GAAG,MAAMC,gCAA4B,CAAC,SAAS,CAAC;AAE5D,IAAA,MAAM,CAAC,SAAS,CAAC,GAAG,MAAMC,4BAAsB,CAAC;QAC/C,KAAK,EAAE,MAAM,CAAC,OAAO;AACrB,QAAA,IAAI,EAAE,WAAW;AACjB,QAAA,YAAY,EAAEC,2BAAqB;AACpC,KAAA,CAAC;AAEF,IAAA,MAAM,CAAC,WAAW,CAAC,GAAG,MAAMD,4BAAsB,CAAC;AACjD,QAAA,KAAK,EAAEE,WAAS,CAAC,gBAAgB,CAAC;AAClC,QAAA,IAAI,EAAE,WAAW;AACjB,QAAA,YAAY,EAAED,2BAAqB;AACpC,KAAA,CAAC;AAEF,IAAA,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,GAAG,MAAM,GAAG,CAAC,kBAAkB,EAAE,CAAC,IAAI,EAAE;IAExE,MAAM,UAAU,GAAGE,4BAAsB,CAAC;AACxC,QAAA,MAAM,EAAE,SAAS;AACjB,QAAA,WAAW,EAAE,WAAW;AACxB,QAAA,SAAS,EAAE,MAAM;QACjB,MAAM;AACP,KAAA,CAAC;IAEF,MAAM,kBAAkB,GAAGC,QAAI,CAC7BC,4BAAwB,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EACxC,CAAC,EAAE,KAAKC,uCAAmC,CAAC,MAAM,EAAE,EAAE,CAAC,EACvD,CAAC,EAAE,KAAKC,+CAA2C,CAAC,eAAe,EAAE,EAAE,CAAC,EACxE,CAAC,EAAE,KACDC,wCAAoC,CAClC,CAAC,UAAU,EAAE,GAAG,sBAAsB,CAAC,EACvC,EAAE,CACH,CACJ;AAED,IAAA,MAAM,iBAAiB,GACrB,MAAMC,qCAAiC,CAAC,kBAAkB,CAAC;AAE7D,IAAA,MAAM,0BAA0B,GAAG;AACjC,QAAA,GAAG,iBAAiB;AACpB,QAAA,kBAAkB,EAAE;YAClB,oBAAoB,EAAE,eAAe,CAAC,oBAAoB;AAC3D,SAAA;KACF;IAED,MAAM,cAAc,CAClB,0BAAkE,EAClE,EAAE,UAAU,EAAE,WAAW,EAAE,CAC5B;AAED,IAAA,OAAOC,+BAA2B,CAAC,iBAAiB,CAAC;AACvD;;;;"}