{"version":3,"file":"helpers.cjs","sources":["../../../src/utils/helpers.ts"],"sourcesContent":["import {\n  Connection,\n  Transaction,\n  TransactionMessage,\n  VersionedTransaction,\n} from '@solana/web3.js';\nimport { TransactionBuilder } from './TransactionBuilder';\nimport { Convergence } from '@/Convergence';\nimport {\n  DEFAULT_COMPUTE_UNITS,\n  DEFAULT_COMPUTE_UNITS_OFFSET,\n  DEFAULT_COMPUTE_UNIT_PRICE,\n} from '@/constants';\n\ntype EstimatedPriorityFee = {\n  microLamports: number;\n} | null;\n\nexport const getEstimatedPriorityFee = async (\n  tx: Transaction | TransactionBuilder,\n  connection: Connection\n): Promise<EstimatedPriorityFee> => {\n  try {\n    let txToProcess: Transaction;\n    const latestBlockhash = await connection.getLatestBlockhash();\n    if (tx instanceof TransactionBuilder) {\n      txToProcess = tx.toTransaction(latestBlockhash);\n    } else {\n      txToProcess = tx;\n    }\n    if (!txToProcess.feePayer) {\n      throw new Error('Transaction must have a fee payer');\n    }\n    const recentPriorityFeeData =\n      await connection.getRecentPrioritizationFees();\n\n    if (recentPriorityFeeData.length === 0) {\n      throw new Error('Failed to get recent prioritization fees');\n    }\n    let avgPriorityFee = recentPriorityFeeData.reduce(\n      (acc, { prioritizationFee }) => acc + prioritizationFee,\n      0\n    );\n    avgPriorityFee /= recentPriorityFeeData.length;\n    avgPriorityFee = Math.ceil(avgPriorityFee);\n\n    return {\n      microLamports: avgPriorityFee,\n    };\n  } catch (error) {\n    return null;\n  }\n};\n\ntype GetComputeUnitsToBeConsumed = {\n  unitsConsumed: number;\n} | null;\n\nexport const getComputeUnitsToBeConsumed = async (\n  tx: Transaction | TransactionBuilder,\n  connection: Connection\n): Promise<GetComputeUnitsToBeConsumed> => {\n  try {\n    let txToProcess: Transaction;\n    const latestBlockhash = await connection.getLatestBlockhash();\n    if (tx instanceof TransactionBuilder) {\n      txToProcess = tx.toTransaction(latestBlockhash);\n    } else {\n      txToProcess = tx;\n    }\n    const ixs = txToProcess.instructions.map((ix) => ix);\n\n    if (!txToProcess.feePayer) {\n      throw new Error('Transaction must have a fee payer');\n    }\n\n    const txMessage = new TransactionMessage({\n      payerKey: txToProcess.feePayer,\n      recentBlockhash: latestBlockhash.blockhash,\n      instructions: ixs,\n    }).compileToV0Message();\n\n    const versionedTx = new VersionedTransaction(txMessage);\n    const simulateTxResult = await connection.simulateTransaction(versionedTx, {\n      sigVerify: false,\n    });\n    const unitsConsumed = simulateTxResult.value?.unitsConsumed;\n    if (!unitsConsumed) {\n      throw new Error('Failed to get units consumed');\n    }\n    return {\n      unitsConsumed: unitsConsumed + DEFAULT_COMPUTE_UNITS_OFFSET,\n    };\n  } catch (error) {\n    return null;\n  }\n};\n\nexport const addComputeBudgetIxsIfNeeded = async <T extends object>(\n  txBuilder: TransactionBuilder<T>,\n  convergence: Convergence,\n  disableSettingComputeUnits?: boolean\n) => {\n  let computeUnitsConsumed = await getComputeUnitsToBeConsumed(\n    txBuilder,\n    convergence.connection\n  );\n  if (!computeUnitsConsumed) {\n    computeUnitsConsumed = { unitsConsumed: DEFAULT_COMPUTE_UNITS };\n  }\n  if (convergence.transactionPriority === 'dynamic') {\n    const estimatedFee = await getEstimatedPriorityFee(\n      txBuilder,\n      convergence.connection\n    );\n\n    if (!estimatedFee) {\n      txBuilder.addDynamicComputeBudgetIxs(\n        DEFAULT_COMPUTE_UNIT_PRICE,\n        computeUnitsConsumed.unitsConsumed,\n        disableSettingComputeUnits\n      );\n      return;\n    }\n    txBuilder.addDynamicComputeBudgetIxs(\n      estimatedFee.microLamports,\n      computeUnitsConsumed.unitsConsumed,\n      disableSettingComputeUnits\n    );\n  } else {\n    txBuilder.addStaticComputeBudgetIxs(\n      convergence,\n      computeUnitsConsumed.unitsConsumed,\n      disableSettingComputeUnits\n    );\n  }\n};\n\nexport const isLocalEnv = (cvg: Convergence) => {\n  return cvg.connection.rpcEndpoint === 'http://127.0.0.1:8899';\n};\n"],"names":["getEstimatedPriorityFee","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","tx","connection","txToProcess","latestBlockhash","recentPriorityFeeData","avgPriorityFee","wrap","_callee$","_context","prev","next","getLatestBlockhash","sent","TransactionBuilder","toTransaction","feePayer","Error","getRecentPrioritizationFees","length","reduce","acc","_ref2","prioritizationFee","Math","ceil","abrupt","microLamports","t0","stop","_x","_x2","apply","arguments","getComputeUnitsToBeConsumed","_ref3","_callee2","_simulateTxResult$val","ixs","txMessage","versionedTx","simulateTxResult","unitsConsumed","_callee2$","_context2","instructions","map","ix","TransactionMessage","payerKey","recentBlockhash","blockhash","compileToV0Message","VersionedTransaction","simulateTransaction","sigVerify","value","DEFAULT_COMPUTE_UNITS_OFFSET","_x3","_x4","addComputeBudgetIxsIfNeeded","_ref4","_callee3","txBuilder","convergence","disableSettingComputeUnits","computeUnitsConsumed","estimatedFee","_callee3$","_context3","DEFAULT_COMPUTE_UNITS","transactionPriority","addDynamicComputeBudgetIxs","DEFAULT_COMPUTE_UNIT_PRICE","addStaticComputeBudgetIxs","_x5","_x6","_x7","isLocalEnv","cvg","rpcEndpoint"],"mappings":"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"}