{"version":3,"file":"legacy-bridge.mjs","sources":["../../src/transaction/legacy-bridge.ts"],"sourcesContent":["import algosdk from 'algosdk'\nimport { AlgorandClientTransactionCreator } from '../types/algorand-client-transaction-creator'\nimport { AlgorandClientTransactionSender } from '../types/algorand-client-transaction-sender'\nimport { ABIAppCallArgs, BoxIdentifier as LegacyBoxIdentifier, BoxReference as LegacyBoxReference, RawAppCallArgs } from '../types/app'\nimport { AppManager, BoxReference } from '../types/app-manager'\nimport { AssetManager } from '../types/asset-manager'\nimport {\n  AppCallMethodCall,\n  AppCallParams,\n  AppCreateMethodCall,\n  AppCreateParams,\n  AppDeleteMethodCall,\n  AppDeleteParams,\n  AppUpdateMethodCall,\n  AppUpdateParams,\n  BuiltTransactions,\n  CommonTransactionParams,\n  TransactionComposer,\n} from '../types/composer'\nimport {\n  SendParams,\n  SendSingleTransactionResult,\n  SendTransactionFrom,\n  SendTransactionParams,\n  SendTransactionResult,\n  TransactionNote,\n} from '../types/transaction'\nimport { encodeLease, encodeTransactionNote, getSenderAddress, getSenderTransactionSigner } from './transaction'\nimport Algodv2 = algosdk.Algodv2\nimport Transaction = algosdk.Transaction\nimport ABIMethod = algosdk.ABIMethod\n\n/** @deprecated Bridges between legacy `sendTransaction` behaviour and new `AlgorandClient` behaviour. */\nexport async function legacySendTransactionBridge<T extends CommonTransactionParams, TResult extends SendSingleTransactionResult>(\n  algod: Algodv2,\n  from: SendTransactionFrom,\n  sendParams: SendTransactionParams,\n  params: T,\n  txn:\n    | ((c: AlgorandClientTransactionCreator) => (params: T) => Promise<Transaction>)\n    | ((c: AlgorandClientTransactionCreator) => (params: T) => Promise<BuiltTransactions>),\n  send: (c: AlgorandClientTransactionSender) => (params: T & SendParams) => Promise<TResult>,\n  suggestedParams?: algosdk.SuggestedParams,\n): Promise<(SendTransactionResult | TResult) & { transactions: Transaction[] }> {\n  const appManager = new AppManager(algod)\n  const newGroup = () =>\n    new TransactionComposer({\n      algod,\n      getSigner: () => getSenderTransactionSigner(from),\n      getSuggestedParams: async () => (suggestedParams ? { ...suggestedParams } : await algod.getTransactionParams().do()),\n      appManager,\n    })\n  const transactionSender = new AlgorandClientTransactionSender(newGroup, new AssetManager(algod, newGroup), appManager)\n  const transactionCreator = new AlgorandClientTransactionCreator(newGroup)\n\n  if (sendParams.fee) {\n    params.staticFee = sendParams.fee\n  }\n\n  if (sendParams.maxFee) {\n    params.maxFee = sendParams.maxFee\n  }\n\n  if (sendParams.atc || sendParams.skipSending) {\n    const transaction = await txn(transactionCreator)(params)\n    const txns = 'transactions' in transaction ? transaction.transactions : [transaction]\n    if (sendParams.atc) {\n      const baseIndex = sendParams.atc.count()\n      txns\n        .map((txn, i) => ({\n          txn,\n          signer:\n            'signers' in transaction ? (transaction.signers.get(i) ?? getSenderTransactionSigner(from)) : getSenderTransactionSigner(from),\n        }))\n        .forEach((t) => sendParams.atc!.addTransaction(t))\n      // Populate ATC with method calls\n      if ('transactions' in transaction) {\n        transaction.methodCalls.forEach((m, i) => sendParams.atc!['methodCalls'].set(i + baseIndex, m))\n      }\n    }\n    return { transaction: txns.at(-1)!, transactions: txns }\n  }\n\n  return { ...(await send(transactionSender)({ ...sendParams, ...params })) }\n}\n\n/** @deprecated Bridges between legacy `sendTransaction` behaviour for app transactions and new `AlgorandClient` behaviour. */\nexport async function legacySendAppTransactionBridge<\n  T extends\n    | AppCreateParams\n    | AppUpdateParams\n    | AppDeleteParams\n    | AppCallParams\n    | AppCreateMethodCall\n    | AppUpdateMethodCall\n    | AppDeleteMethodCall\n    | AppCallMethodCall,\n  TResult extends SendSingleTransactionResult,\n>(\n  algod: Algodv2,\n  from: SendTransactionFrom,\n  appArgs: RawAppCallArgs | ABIAppCallArgs | undefined,\n  sendParams: SendTransactionParams & { note?: TransactionNote },\n  params: Omit<T, 'accountReferences' | 'appReferences' | 'assetReferences' | 'boxReferences' | 'args' | 'lease' | 'rekeyTo' | 'note'>,\n  txn:\n    | ((c: AlgorandClientTransactionCreator) => (params: T) => Promise<Transaction>)\n    | ((c: AlgorandClientTransactionCreator) => (params: T) => Promise<BuiltTransactions>),\n  send: (c: AlgorandClientTransactionSender) => (params: T & SendParams) => Promise<TResult>,\n  suggestedParams?: algosdk.SuggestedParams,\n): Promise<(SendTransactionResult | TResult) & { transactions: Transaction[] }> {\n  const encoder = new TextEncoder()\n\n  const paramsWithAppArgs = {\n    ...params,\n    accountReferences: appArgs?.accounts?.map((a) => (typeof a === 'string' ? a : algosdk.encodeAddress(a.publicKey))),\n    appReferences: appArgs?.apps?.map((a) => BigInt(a)),\n    assetReferences: appArgs?.assets?.map((a) => BigInt(a)),\n    boxReferences: appArgs?.boxes?.map(_getBoxReference)?.map((r) => ({ appId: BigInt(r.appIndex), name: r.name }) satisfies BoxReference),\n    lease: appArgs?.lease,\n    rekeyTo: appArgs?.rekeyTo ? getSenderAddress(appArgs?.rekeyTo) : undefined,\n    args: appArgs\n      ? 'methodArgs' in appArgs\n        ? (await _getAppArgsForABICall(appArgs, from)).methodArgs\n        : appArgs?.appArgs?.map((a) => (typeof a === 'string' ? encoder.encode(a) : a))\n      : undefined,\n    note: encodeTransactionNote(sendParams?.note),\n  } as T\n\n  return await legacySendTransactionBridge(algod, from, sendParams, paramsWithAppArgs, txn, send, suggestedParams)\n}\n\n/**\n * @deprecated\n */\nexport async function _getAppArgsForABICall(args: ABIAppCallArgs, from: SendTransactionFrom) {\n  const signer = getSenderTransactionSigner(from)\n  const methodArgs = await Promise.all(\n    ('methodArgs' in args ? args.methodArgs : args)?.map(async (a, index) => {\n      if (a === undefined) {\n        throw new Error(`Argument at position ${index} does not have a value`)\n      }\n      if (typeof a !== 'object') {\n        return a\n      }\n      // Handle the various forms of transactions to wrangle them for ATC\n      return 'txn' in a\n        ? a\n        : a instanceof Promise\n          ? { txn: (await a).transaction, signer }\n          : 'transaction' in a\n            ? { txn: a.transaction, signer: 'signer' in a ? getSenderTransactionSigner(a.signer) : signer }\n            : 'txID' in a\n              ? { txn: a, signer }\n              : a\n    }),\n  )\n  return {\n    method: 'txnCount' in args.method ? args.method : new ABIMethod(args.method),\n    sender: getSenderAddress(from),\n    signer: signer,\n    boxes: args.boxes?.map(_getBoxReference),\n    lease: encodeLease(args.lease),\n    appForeignApps: args.apps,\n    appForeignAssets: args.assets,\n    appAccounts: args.accounts?.map(_getAccountAddress),\n    methodArgs: methodArgs,\n    rekeyTo: args?.rekeyTo ? (typeof args.rekeyTo === 'string' ? args.rekeyTo : getSenderAddress(args.rekeyTo)) : undefined,\n  }\n}\n\nfunction _getAccountAddress(account: string | algosdk.Address) {\n  return typeof account === 'string' ? account : algosdk.encodeAddress(account.publicKey)\n}\n\n/** @deprecated */\nexport function _getBoxReference(box: LegacyBoxIdentifier | LegacyBoxReference | algosdk.BoxReference): algosdk.BoxReference {\n  const encoder = new TextEncoder()\n\n  if (typeof box === 'object' && 'appIndex' in box) {\n    return box\n  }\n\n  const ref = typeof box === 'object' && 'appId' in box ? box : { appId: 0, name: box }\n  return {\n    appIndex: ref.appId,\n    name:\n      typeof ref.name === 'string'\n        ? encoder.encode(ref.name)\n        : 'length' in ref.name\n          ? ref.name\n          : algosdk.decodeAddress(getSenderAddress(ref.name)).publicKey,\n  } as algosdk.BoxReference\n}\n"],"names":[],"mappings":"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"}