UNPKG

@solsdk/tokenflow_sdk

Version:

A simple SDK for interacting with tokenflow

1 lines 6.12 kB
{"version":3,"file":"util.cjs","sources":["../../../src/util.ts"],"sourcesContent":["import * as anchor from \"@coral-xyz/anchor\";\nimport { Commitment, ComputeBudgetProgram, Connection, Finality, Keypair, PublicKey, SendTransactionError, TransactionInstruction, TransactionMessage, VersionedTransaction, VersionedTransactionResponse } from \"@solana/web3.js\";\nimport { PriorityFee } from \"./types.js\";\n\n\nexport const DEFAULT_COMMITMENT: Commitment = \"finalized\";\nexport const DEFAULT_FINALITY: Finality = \"finalized\";\n\n\n\nexport const calculateWithSlippageBuy = (\n amount: bigint,\n basisPoints: bigint\n) => {\n return amount + (amount * basisPoints) / 10000n;\n};\n\nexport const calculateWithSlippageSell = (\n amount: bigint,\n basisPoints: bigint\n) => {\n return amount - (amount * basisPoints) / 10000n;\n};\n\nexport async function sendTx(\n connection: Connection,\n instructions: TransactionInstruction[],\n payer: PublicKey,\n signers: Keypair[],\n priorityFees?: PriorityFee,\n commitment: Commitment = DEFAULT_COMMITMENT,\n finality: Finality = DEFAULT_FINALITY\n) {\n const ixs = [...instructions];\n if (priorityFees) {\n const modifyComputeUnits = ComputeBudgetProgram.setComputeUnitLimit({\n units: priorityFees.unitLimit,\n });\n\n const addPriorityFee = ComputeBudgetProgram.setComputeUnitPrice({\n microLamports: priorityFees.unitPrice,\n });\n \n ixs.push(modifyComputeUnits);\n ixs.push(addPriorityFee);\n }\n\n const versionedTx = await buildVersionedTx(connection, payer, ixs, commitment);\n versionedTx.sign(signers);\n \n try {\n const sig = await connection.sendTransaction(versionedTx, {\n skipPreflight: false,\n });\n console.log(\"sig:\", `https://solscan.io/tx/${sig}`);\n\n let txResult = await getTxDetails(connection, sig, commitment, finality);\n if (!txResult) {\n return {\n success: false,\n error: \"Transaction failed\",\n };\n }\n\n return {\n success: true,\n signature: sig,\n results: txResult,\n };\n } catch (e) {\n if (e instanceof SendTransactionError) {\n let ste = e as SendTransactionError;\n console.log('SendTransactionError raw', e.message);\n console.log(\"SendTransactionError\" + await ste.getLogs(connection));\n } else {\n console.error(e);\n }\n return {\n error: e,\n success: false,\n };\n }\n}\n\nexport const buildVersionedTx = async (\n connection: Connection,\n payer: PublicKey,\n instructions: TransactionInstruction[],\n commitment: Commitment = DEFAULT_COMMITMENT\n): Promise<VersionedTransaction> => {\n const blockHash = (await connection.getLatestBlockhash(commitment))\n .blockhash;\n\n let messageV0 = new TransactionMessage({\n payerKey: payer,\n recentBlockhash: blockHash,\n instructions,\n }).compileToV0Message();\n\n return new VersionedTransaction(messageV0);\n};\n\nexport const getTxDetails = async (\n connection: Connection,\n sig: string,\n commitment: Commitment = DEFAULT_COMMITMENT,\n finality: Finality = DEFAULT_FINALITY\n): Promise<VersionedTransactionResponse | null> => {\n const latestBlockHash = await connection.getLatestBlockhash();\n await connection.confirmTransaction(\n {\n blockhash: latestBlockHash.blockhash,\n lastValidBlockHeight: latestBlockHash.lastValidBlockHeight,\n signature: sig,\n },\n commitment\n );\n\n return connection.getTransaction(sig, {\n maxSupportedTransactionVersion: 0,\n commitment: finality,\n });\n};"],"names":["ComputeBudgetProgram","SendTransactionError","TransactionMessage","VersionedTransaction"],"mappings":"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"}