@algorandfoundation/algorand-typescript-testing 1.0.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/abi-metadata.d.ts +16 -0
  2. package/constants.d.ts +21 -0
  3. package/context-helpers/internal-context.d.ts +26 -0
  4. package/decode-logs.d.ts +8 -0
  5. package/errors.d.ts +5 -0
  6. package/impl/account.d.ts +31 -0
  7. package/impl/acct-params.d.ts +5 -0
  8. package/impl/app-params.d.ts +3 -0
  9. package/impl/application.d.ts +24 -0
  10. package/impl/asset-holding.d.ts +2 -0
  11. package/impl/asset-params.d.ts +3 -0
  12. package/impl/asset.d.ts +23 -0
  13. package/impl/crypto.d.ts +12 -0
  14. package/impl/global.d.ts +18 -0
  15. package/impl/gtxn.d.ts +2 -0
  16. package/impl/index.d.ts +11 -0
  17. package/impl/inner-transactions.d.ts +51 -0
  18. package/impl/itxn.d.ts +8 -0
  19. package/impl/pure.d.ts +32 -0
  20. package/impl/scratch.d.ts +2 -0
  21. package/impl/transactions.d.ts +139 -0
  22. package/impl/txn.d.ts +3 -0
  23. package/index.d.ts +1 -0
  24. package/index.mjs +3687 -0
  25. package/index.mjs.map +1 -0
  26. package/package.json +41 -0
  27. package/runtime-helpers-B6YRp95T.js +460 -0
  28. package/runtime-helpers-B6YRp95T.js.map +1 -0
  29. package/runtime-helpers.d.ts +9 -0
  30. package/runtime-helpers.mjs +4 -0
  31. package/runtime-helpers.mjs.map +1 -0
  32. package/subcontexts/contract-context.d.ts +10 -0
  33. package/subcontexts/ledger-context.d.ts +27 -0
  34. package/subcontexts/transaction-context.d.ts +57 -0
  35. package/test-execution-context.d.ts +45 -0
  36. package/test-transformer/errors.d.ts +3 -0
  37. package/test-transformer/helpers.d.ts +2 -0
  38. package/test-transformer/index.d.ts +6 -0
  39. package/test-transformer/node-factory.d.ts +10 -0
  40. package/test-transformer/supported-binary-op-string.d.ts +3 -0
  41. package/test-transformer/visitors.d.ts +11 -0
  42. package/test-transformer.mjs +297 -0
  43. package/test-transformer.mjs.map +1 -0
  44. package/typescript-helpers.d.ts +9 -0
  45. package/util.d.ts +26 -0
  46. package/value-generators/avm.d.ts +23 -0
  47. package/value-generators/index.d.ts +6 -0
  48. package/value-generators/txn.d.ts +10 -0
package/index.mjs.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":["../src/context-helpers/internal-context.ts","../src/impl/acct-params.ts","../src/impl/app-params.ts","../src/impl/asset-params.ts","../src/impl/asset-holding.ts","../src/errors.ts","../src/impl/crypto.ts","../src/impl/global.ts","../src/impl/gtxn.ts","../src/impl/pure.ts","../src/impl/txn.ts","../src/impl/itxn.ts","../src/impl/scratch.ts","../src/impl/application.ts","../src/impl/asset.ts","../src/impl/account.ts","../src/impl/transactions.ts","../src/subcontexts/contract-context.ts","../src/subcontexts/ledger-context.ts","../src/decode-logs.ts","../src/impl/inner-transactions.ts","../src/subcontexts/transaction-context.ts","../src/value-generators/avm.ts","../src/value-generators/txn.ts","../src/value-generators/index.ts","../src/test-execution-context.ts"],"sourcesContent":["import { internal } from '@algorandfoundation/algorand-typescript'\nimport { AccountData } from '../impl/account'\nimport { ApplicationData } from '../impl/application'\nimport { AssetData } from '../impl/asset'\nimport { TransactionGroup } from '../subcontexts/transaction-context'\nimport { TestExecutionContext } from '../test-execution-context'\n\n/**\n * For accessing implementation specific functions, with a convenient single entry\n * point for other modules to import Also allows for a single place to check and\n * provide.\n */\nclass InternalContext {\n get value() {\n return internal.ctxMgr.instance as TestExecutionContext\n }\n\n get defaultSender() {\n return this.value.defaultSender\n }\n\n get ledger() {\n return this.value.ledger\n }\n\n get txn() {\n return this.value.txn\n }\n\n get contract() {\n return this.value.contract\n }\n\n get any() {\n return this.value.any\n }\n\n get activeApplication() {\n return this.ledger.getApplication(this.activeGroup.activeApplicationId)\n }\n\n get activeGroup(): TransactionGroup {\n return this.value.txn.activeGroup\n }\n\n getAccountData(accountPublicKey: internal.primitives.StubBytesCompat): AccountData {\n const key = internal.primitives.BytesCls.fromCompat(accountPublicKey)\n const data = this.ledger.accountDataMap.get(key.toString())\n if (!data) {\n throw internal.errors.internalError('Unknown account, check correct testing context is active')\n }\n return data\n }\n\n getAssetData(id: internal.primitives.StubUint64Compat): AssetData {\n const key = internal.primitives.Uint64Cls.fromCompat(id)\n const data = this.ledger.assetDataMap.get(key.asBigInt())\n if (!data) {\n throw internal.errors.internalError('Unknown asset, check correct testing context is active')\n }\n return data\n }\n\n getApplicationData(id: internal.primitives.StubUint64Compat): ApplicationData {\n const key = internal.primitives.Uint64Cls.fromCompat(id)\n const data = this.ledger.applicationDataMap.get(key.asBigInt())\n if (!data) {\n throw internal.errors.internalError('Unknown application, check correct testing context is active')\n }\n return data\n }\n}\n\nexport const lazyContext = new InternalContext()\n","import { Account, gtxn, internal, uint64 } from '@algorandfoundation/algorand-typescript'\nimport { lazyContext } from '../context-helpers/internal-context'\nimport { asMaybeUint64Cls } from '../util'\n\nexport const getAccount = (acct: Account | internal.primitives.StubUint64Compat): Account => {\n const acctId = asMaybeUint64Cls(acct)\n if (acctId !== undefined) {\n const activeTxn = lazyContext.activeGroup.activeTransaction\n return (activeTxn as gtxn.ApplicationTxn).accounts(acctId.asAlgoTs())\n }\n return acct as Account\n}\n\nexport const balance = (a: Account | internal.primitives.StubUint64Compat): uint64 => {\n const acct = getAccount(a)\n return acct.balance\n}\n\nexport const minBalance = (a: Account | internal.primitives.StubUint64Compat): uint64 => {\n const acct = getAccount(a)\n return acct.minBalance\n}\n\nexport const AcctParams: internal.opTypes.AcctParamsType = {\n acctBalance: function (a: Account | internal.primitives.StubUint64Compat): readonly [uint64, boolean] {\n const acct = getAccount(a)\n return [acct.balance, acct.balance !== 0]\n },\n acctMinBalance: function (a: Account | internal.primitives.StubUint64Compat): readonly [uint64, boolean] {\n const acct = getAccount(a)\n return [acct.minBalance, acct.balance !== 0]\n },\n acctAuthAddr: function (a: Account | internal.primitives.StubUint64Compat): readonly [Account, boolean] {\n const acct = getAccount(a)\n return [acct.authAddress, acct.balance !== 0]\n },\n acctTotalNumUint: function (a: Account | internal.primitives.StubUint64Compat): readonly [uint64, boolean] {\n const acct = getAccount(a)\n return [acct.totalNumUint, acct.balance !== 0]\n },\n acctTotalNumByteSlice: function (a: Account | internal.primitives.StubUint64Compat): readonly [uint64, boolean] {\n const acct = getAccount(a)\n return [acct.totalNumByteSlice, acct.balance !== 0]\n },\n acctTotalExtraAppPages: function (a: Account | internal.primitives.StubUint64Compat): readonly [uint64, boolean] {\n const acct = getAccount(a)\n return [acct.totalExtraAppPages, acct.balance !== 0]\n },\n acctTotalAppsCreated: function (a: Account | internal.primitives.StubUint64Compat): readonly [uint64, boolean] {\n const acct = getAccount(a)\n return [acct.totalAppsCreated, acct.balance !== 0]\n },\n acctTotalAppsOptedIn: function (a: Account | internal.primitives.StubUint64Compat): readonly [uint64, boolean] {\n const acct = getAccount(a)\n return [acct.totalAppsOptedIn, acct.balance !== 0]\n },\n acctTotalAssetsCreated: function (a: Account | internal.primitives.StubUint64Compat): readonly [uint64, boolean] {\n const acct = getAccount(a)\n return [acct.totalAssetsCreated, acct.balance !== 0]\n },\n acctTotalAssets: function (a: Account | internal.primitives.StubUint64Compat): readonly [uint64, boolean] {\n const acct = getAccount(a)\n return [acct.totalAssets, acct.balance !== 0]\n },\n acctTotalBoxes: function (a: Account | internal.primitives.StubUint64Compat): readonly [uint64, boolean] {\n const acct = getAccount(a)\n return [acct.totalBoxes, acct.balance !== 0]\n },\n acctTotalBoxBytes: function (a: Account | internal.primitives.StubUint64Compat): readonly [uint64, boolean] {\n const acct = getAccount(a)\n return [acct.totalBoxBytes, acct.balance !== 0]\n },\n}\n","import { Account, Application, Bytes, bytes, gtxn, internal, Uint64, uint64 } from '@algorandfoundation/algorand-typescript'\nimport { lazyContext } from '../context-helpers/internal-context'\nimport { asMaybeUint64Cls, asUint64 } from '../util'\n\nconst resolveAppIndex = (appIdOrIndex: internal.primitives.StubUint64Compat): uint64 => {\n const input = asUint64(appIdOrIndex)\n if (input >= 1001) {\n return input\n }\n const txn = lazyContext.activeGroup.activeTransaction as gtxn.ApplicationTxn\n return txn.apps(input).id\n}\n\nexport const getApp = (app: Application | internal.primitives.StubUint64Compat): Application | undefined => {\n try {\n const appId = asMaybeUint64Cls(app)\n if (appId !== undefined) {\n return lazyContext.ledger.getApplication(resolveAppIndex(appId))\n }\n return app as Application\n } catch {\n return undefined\n }\n}\n\nexport const AppParams: internal.opTypes.AppParamsType = {\n appApprovalProgram: function (a: Application | internal.primitives.StubUint64Compat): readonly [bytes, boolean] {\n const app = getApp(a)\n return app === undefined ? [Bytes(), false] : [app.approvalProgram, true]\n },\n appClearStateProgram: function (a: Application | internal.primitives.StubUint64Compat): readonly [bytes, boolean] {\n const app = getApp(a)\n return app === undefined ? [Bytes(), false] : [app.clearStateProgram, true]\n },\n appGlobalNumUint: function (a: Application | internal.primitives.StubUint64Compat): readonly [uint64, boolean] {\n const app = getApp(a)\n return app === undefined ? [Uint64(0), false] : [app.globalNumUint, true]\n },\n appGlobalNumByteSlice: function (a: Application | internal.primitives.StubUint64Compat): readonly [uint64, boolean] {\n const app = getApp(a)\n return app === undefined ? [Uint64(0), false] : [app.globalNumBytes, true]\n },\n appLocalNumUint: function (a: Application | internal.primitives.StubUint64Compat): readonly [uint64, boolean] {\n const app = getApp(a)\n return app === undefined ? [Uint64(0), false] : [app.localNumUint, true]\n },\n appLocalNumByteSlice: function (a: Application | internal.primitives.StubUint64Compat): readonly [uint64, boolean] {\n const app = getApp(a)\n return app === undefined ? [Uint64(0), false] : [app.localNumBytes, true]\n },\n appExtraProgramPages: function (a: Application | internal.primitives.StubUint64Compat): readonly [uint64, boolean] {\n const app = getApp(a)\n return app === undefined ? [Uint64(0), false] : [app.extraProgramPages, true]\n },\n appCreator: function (a: Application | internal.primitives.StubUint64Compat): readonly [Account, boolean] {\n const app = getApp(a)\n return app === undefined ? [Account(), false] : [app.creator, true]\n },\n appAddress: function (a: Application | internal.primitives.StubUint64Compat): readonly [Account, boolean] {\n const app = getApp(a)\n return app === undefined ? [Account(), false] : [app.address, true]\n },\n}\n","import { Account, Asset, Bytes, bytes, gtxn, internal, Uint64, uint64 } from '@algorandfoundation/algorand-typescript'\nimport { lazyContext } from '../context-helpers/internal-context'\nimport { asMaybeUint64Cls, asUint64 } from '../util'\n\nconst resolveAssetIndex = (assetIdOrIndex: internal.primitives.StubUint64Compat): uint64 => {\n const input = asUint64(assetIdOrIndex)\n if (input >= 1001) {\n return input\n }\n const txn = lazyContext.activeGroup.activeTransaction as gtxn.ApplicationTxn\n return txn.assets(input).id\n}\n\nexport const getAsset = (asset: Asset | internal.primitives.StubUint64Compat): Asset | undefined => {\n try {\n const assetId = asMaybeUint64Cls(asset)\n if (assetId !== undefined) {\n return lazyContext.ledger.getAsset(resolveAssetIndex(assetId))\n }\n return asset as Asset\n } catch {\n return undefined\n }\n}\n\nexport const AssetParams: internal.opTypes.AssetParamsType = {\n assetTotal: function (a: Asset | internal.primitives.StubUint64Compat): readonly [uint64, boolean] {\n const asset = getAsset(a)\n return asset === undefined ? [Uint64(0), false] : [asset.total, true]\n },\n assetDecimals: function (a: Asset | internal.primitives.StubUint64Compat): readonly [uint64, boolean] {\n const asset = getAsset(a)\n return asset === undefined ? [Uint64(0), false] : [asset.decimals, true]\n },\n assetDefaultFrozen: function (a: Asset | internal.primitives.StubUint64Compat): readonly [boolean, boolean] {\n const asset = getAsset(a)\n return asset === undefined ? [false, false] : [asset.defaultFrozen, true]\n },\n assetUnitName: function (a: Asset | internal.primitives.StubUint64Compat): readonly [bytes, boolean] {\n const asset = getAsset(a)\n return asset === undefined ? [Bytes(), false] : [asset.unitName, true]\n },\n assetName: function (a: Asset | internal.primitives.StubUint64Compat): readonly [bytes, boolean] {\n const asset = getAsset(a)\n return asset === undefined ? [Bytes(), false] : [asset.name, true]\n },\n assetUrl: function (a: Asset | internal.primitives.StubUint64Compat): readonly [bytes, boolean] {\n const asset = getAsset(a)\n return asset === undefined ? [Bytes(), false] : [asset.url, true]\n },\n assetMetadataHash: function (a: Asset | internal.primitives.StubUint64Compat): readonly [bytes, boolean] {\n const asset = getAsset(a)\n return asset === undefined ? [Bytes(), false] : [asset.metadataHash, true]\n },\n assetManager: function (a: Asset | internal.primitives.StubUint64Compat): readonly [Account, boolean] {\n const asset = getAsset(a)\n return asset === undefined ? [Account(), false] : [asset.manager, true]\n },\n assetReserve: function (a: Asset | internal.primitives.StubUint64Compat): readonly [Account, boolean] {\n const asset = getAsset(a)\n return asset === undefined ? [Account(), false] : [asset.reserve, true]\n },\n assetFreeze: function (a: Asset | internal.primitives.StubUint64Compat): readonly [Account, boolean] {\n const asset = getAsset(a)\n return asset === undefined ? [Account(), false] : [asset.freeze, true]\n },\n assetClawback: function (a: Asset | internal.primitives.StubUint64Compat): readonly [Account, boolean] {\n const asset = getAsset(a)\n return asset === undefined ? [Account(), false] : [asset.clawback, true]\n },\n assetCreator: function (a: Asset | internal.primitives.StubUint64Compat): readonly [Account, boolean] {\n const asset = getAsset(a)\n return asset === undefined ? [Account(), false] : [asset.creator, true]\n },\n}\n","import { Account, Asset, internal, Uint64, uint64 } from '@algorandfoundation/algorand-typescript'\nimport { lazyContext } from '../context-helpers/internal-context'\nimport { asBigInt } from '../util'\nimport { AssetHolding as AssetHoldingData } from './account'\nimport { getAccount } from './acct-params'\nimport { getAsset } from './asset-params'\n\nconst getAssetHolding = (\n acctOrIndex: Account | internal.primitives.StubUint64Compat,\n assetOrIndex: Asset | internal.primitives.StubUint64Compat,\n): AssetHoldingData | undefined => {\n const account = getAccount(acctOrIndex)\n const asset = getAsset(assetOrIndex)\n if (asset === undefined) {\n return undefined\n }\n\n const accountData = lazyContext.getAccountData(account.bytes)\n const holding = accountData.optedAssets.get(asBigInt(asset.id))\n if (holding === undefined) {\n return undefined\n }\n return holding\n}\n\nexport const AssetHolding: internal.opTypes.AssetHoldingType = {\n assetBalance: function (\n a: Account | internal.primitives.StubUint64Compat,\n b: Asset | internal.primitives.StubUint64Compat,\n ): readonly [uint64, boolean] {\n const holding = getAssetHolding(a, b)\n return holding === undefined ? [Uint64(0), false] : [holding.balance, true]\n },\n assetFrozen: function (\n a: Account | internal.primitives.StubUint64Compat,\n b: Asset | internal.primitives.StubUint64Compat,\n ): readonly [boolean, boolean] {\n const holding = getAssetHolding(a, b)\n return holding === undefined ? [false, false] : [holding.frozen, true]\n },\n}\n","import { internal } from '@algorandfoundation/algorand-typescript'\n\nexport class NotImplementedError extends Error {\n constructor(feature: string) {\n super(`${feature} is not available in test context. Mock using your preferred testing framework.`)\n }\n}\n\nexport function notImplementedError(feature: string): never {\n throw new NotImplementedError(feature)\n}\n\nexport function testInvariant(condition: unknown, message: string): asserts condition {\n if (!condition) {\n throw new internal.errors.InternalError(message)\n }\n}\n","import { Bytes, bytes, internal, gtxn, arc4 } from '@algorandfoundation/algorand-typescript'\nimport { ec } from 'elliptic'\nimport { sha256 as js_sha256 } from 'js-sha256'\nimport { keccak256 as js_keccak256, sha3_256 as js_sha3_256 } from 'js-sha3'\nimport { sha512_256 as js_sha512_256 } from 'js-sha512'\nimport nacl from 'tweetnacl'\nimport { notImplementedError } from '../errors'\nimport { lazyContext } from '../context-helpers/internal-context'\nimport algosdk from 'algosdk'\nimport { asBytes, asBytesCls } from '../util'\nimport { LOGIC_DATA_PREFIX } from '../constants'\n\nexport const sha256 = (a: internal.primitives.StubBytesCompat): bytes => {\n const bytesA = internal.primitives.BytesCls.fromCompat(a)\n const hashArray = js_sha256.create().update(bytesA.asUint8Array()).digest()\n const hashBytes = internal.primitives.BytesCls.fromCompat(new Uint8Array(hashArray))\n return hashBytes.asAlgoTs()\n}\n\nexport const sha3_256 = (a: internal.primitives.StubBytesCompat): bytes => {\n const bytesA = internal.primitives.BytesCls.fromCompat(a)\n const hashArray = js_sha3_256.create().update(bytesA.asUint8Array()).digest()\n const hashBytes = internal.primitives.BytesCls.fromCompat(new Uint8Array(hashArray))\n return hashBytes.asAlgoTs()\n}\n\nexport const keccak256 = (a: internal.primitives.StubBytesCompat): bytes => {\n const bytesA = internal.primitives.BytesCls.fromCompat(a)\n const hashArray = js_keccak256.create().update(bytesA.asUint8Array()).digest()\n const hashBytes = internal.primitives.BytesCls.fromCompat(new Uint8Array(hashArray))\n return hashBytes.asAlgoTs()\n}\n\nexport const sha512_256 = (a: internal.primitives.StubBytesCompat): bytes => {\n const bytesA = internal.primitives.BytesCls.fromCompat(a)\n const hashArray = js_sha512_256.create().update(bytesA.asUint8Array()).digest()\n const hashBytes = internal.primitives.BytesCls.fromCompat(new Uint8Array(hashArray))\n return hashBytes.asAlgoTs()\n}\n\nexport const ed25519verifyBare = (\n a: internal.primitives.StubBytesCompat,\n b: internal.primitives.StubBytesCompat,\n c: internal.primitives.StubBytesCompat,\n): boolean => {\n const bytesA = internal.primitives.BytesCls.fromCompat(a)\n const bytesB = internal.primitives.BytesCls.fromCompat(b)\n const bytesC = internal.primitives.BytesCls.fromCompat(c)\n return nacl.sign.detached.verify(bytesA.asUint8Array(), bytesB.asUint8Array(), bytesC.asUint8Array())\n}\n\nexport const ed25519verify = (\n a: internal.primitives.StubBytesCompat,\n b: internal.primitives.StubBytesCompat,\n c: internal.primitives.StubBytesCompat,\n): boolean => {\n const txn = lazyContext.activeGroup.activeTransaction as gtxn.ApplicationTxn\n const programBytes = asBytesCls(\n txn.onCompletion == arc4.OnCompleteAction[arc4.OnCompleteAction.ClearState] ? txn.clearStateProgram : txn.approvalProgram,\n )\n\n const logicSig = new algosdk.LogicSig(programBytes.asUint8Array())\n const decodedAddress = algosdk.decodeAddress(logicSig.address())\n\n const addressBytes = asBytes(decodedAddress.publicKey)\n const data = LOGIC_DATA_PREFIX.concat(addressBytes).concat(asBytes(a))\n return ed25519verifyBare(data, b, c)\n}\n\nexport const ecdsaVerify = (\n v: internal.opTypes.Ecdsa,\n a: internal.primitives.StubBytesCompat,\n b: internal.primitives.StubBytesCompat,\n c: internal.primitives.StubBytesCompat,\n d: internal.primitives.StubBytesCompat,\n e: internal.primitives.StubBytesCompat,\n): boolean => {\n const dataBytes = internal.primitives.BytesCls.fromCompat(a)\n const sigRBytes = internal.primitives.BytesCls.fromCompat(b)\n const sigSBytes = internal.primitives.BytesCls.fromCompat(c)\n const pubkeyXBytes = internal.primitives.BytesCls.fromCompat(d)\n const pubkeyYBytes = internal.primitives.BytesCls.fromCompat(e)\n\n const publicKey = internal.primitives.BytesCls.fromCompat(new Uint8Array([0x04]))\n .concat(pubkeyXBytes)\n .concat(pubkeyYBytes)\n\n const ecdsa = new ec(curveMap[v])\n const keyPair = ecdsa.keyFromPublic(publicKey.asUint8Array())\n return keyPair.verify(dataBytes.asUint8Array(), { r: sigRBytes.asUint8Array(), s: sigSBytes.asUint8Array() })\n}\n\nexport const ecdsaPkRecover = (\n v: internal.opTypes.Ecdsa,\n a: internal.primitives.StubBytesCompat,\n b: internal.primitives.StubUint64Compat,\n c: internal.primitives.StubBytesCompat,\n d: internal.primitives.StubBytesCompat,\n): readonly [bytes, bytes] => {\n if (v !== internal.opTypes.Ecdsa.Secp256k1) {\n internal.errors.internalError(`Unsupported ECDSA curve: ${v}`)\n }\n const dataBytes = internal.primitives.BytesCls.fromCompat(a)\n const rBytes = internal.primitives.BytesCls.fromCompat(c)\n const sBytes = internal.primitives.BytesCls.fromCompat(d)\n const recoveryId = internal.primitives.Uint64Cls.fromCompat(b)\n\n const ecdsa = new ec(curveMap[v])\n const pubKey = ecdsa.recoverPubKey(\n dataBytes.asUint8Array(),\n { r: rBytes.asUint8Array(), s: sBytes.asUint8Array() },\n recoveryId.asNumber(),\n )\n\n const x = pubKey.getX().toArray('be')\n const y = pubKey.getY().toArray('be')\n return [Bytes(new Uint8Array(x)), Bytes(new Uint8Array(y))]\n}\n\nexport const ecdsaPkDecompress = (v: internal.opTypes.Ecdsa, a: internal.primitives.StubBytesCompat): readonly [bytes, bytes] => {\n const bytesA = internal.primitives.BytesCls.fromCompat(a)\n\n const ecdsa = new ec(curveMap[v])\n const keyPair = ecdsa.keyFromPublic(bytesA.asUint8Array())\n const pubKey = keyPair.getPublic()\n\n const x = pubKey.getX().toArray('be')\n const y = pubKey.getY().toArray('be')\n return [Bytes(new Uint8Array(x)), Bytes(new Uint8Array(y))]\n}\n\nexport const vrfVerify = (\n _s: internal.opTypes.VrfVerify,\n _a: internal.primitives.StubBytesCompat,\n _b: internal.primitives.StubBytesCompat,\n _c: internal.primitives.StubBytesCompat,\n): readonly [bytes, boolean] => {\n notImplementedError('vrfVerify')\n}\n\nexport const EllipticCurve = new Proxy({} as internal.opTypes.EllipticCurveType, {\n get: (_target, prop) => {\n notImplementedError(`EllipticCurve.${prop.toString()}`)\n },\n})\n\nconst curveMap = {\n [internal.opTypes.Ecdsa.Secp256k1]: 'secp256k1',\n [internal.opTypes.Ecdsa.Secp256r1]: 'p256',\n}\n","import { Account, Application, Bytes, bytes, internal, op, Uint64, uint64 } from '@algorandfoundation/algorand-typescript'\nimport { lazyContext } from '../context-helpers/internal-context'\nimport {\n DEFAULT_ACCOUNT_MIN_BALANCE,\n DEFAULT_ASSET_CREATE_MIN_BALANCE,\n DEFAULT_ASSET_OPT_IN_MIN_BALANCE,\n DEFAULT_GLOBAL_GENESIS_HASH,\n DEFAULT_MAX_TXN_LIFE,\n MIN_TXN_FEE,\n ZERO_ADDRESS,\n} from '../constants'\nimport { asBigInt, getObjectReference } from '../util'\nimport algosdk from 'algosdk'\n\nexport class GlobalData {\n minTxnFee: uint64\n minBalance: uint64\n maxTxnLife: uint64\n zeroAddress: Account\n logicSigVersion?: uint64\n round?: uint64\n latestTimestamp?: uint64\n groupId?: bytes\n callerApplicationId: uint64\n assetCreateMinBalance: uint64\n assetOptInMinBalance: uint64\n genesisHash: bytes\n opcodeBudget?: uint64\n\n constructor() {\n this.minTxnFee = Uint64(MIN_TXN_FEE)\n this.minBalance = Uint64(DEFAULT_ACCOUNT_MIN_BALANCE)\n this.maxTxnLife = Uint64(DEFAULT_MAX_TXN_LIFE)\n this.zeroAddress = Account(ZERO_ADDRESS)\n this.callerApplicationId = Uint64(0)\n this.assetCreateMinBalance = Uint64(DEFAULT_ASSET_CREATE_MIN_BALANCE)\n this.assetOptInMinBalance = Uint64(DEFAULT_ASSET_OPT_IN_MIN_BALANCE)\n this.genesisHash = DEFAULT_GLOBAL_GENESIS_HASH\n }\n}\nconst getGlobalData = (): GlobalData => {\n return lazyContext.ledger.globalData\n}\n\nconst getMissingValueErrorMessage = (name: keyof GlobalData) =>\n `'algopy.Global' object has no value set for attribute named '${name}'. Use \\`context.ledger.patchGlobalData({${name}: your_value})\\` to set the value in your test setup.\"`\n\nexport const Global: internal.opTypes.GlobalType = {\n /**\n * microalgos\n */\n get minTxnFee(): uint64 {\n return getGlobalData().minTxnFee\n },\n\n /**\n * microalgos\n */\n get minBalance(): uint64 {\n return getGlobalData().minBalance\n },\n\n /**\n * rounds\n */\n get maxTxnLife(): uint64 {\n return getGlobalData().maxTxnLife\n },\n\n /**\n * 32 byte address of all zero bytes\n */\n get zeroAddress(): Account {\n return getGlobalData().zeroAddress\n },\n\n /**\n * Number of transactions in this atomic transaction group. At least 1\n */\n get groupSize(): uint64 {\n const currentTransactionGroup = lazyContext.activeGroup.transactions\n return Uint64(currentTransactionGroup.length)\n },\n\n /**\n * Maximum supported version\n */\n get logicSigVersion(): uint64 {\n const data = getGlobalData()\n if (data.logicSigVersion !== undefined) return data.logicSigVersion\n throw new internal.errors.InternalError(getMissingValueErrorMessage('logicSigVersion'))\n },\n\n /**\n * Current round number. Application mode only.\n */\n get round(): uint64 {\n const data = getGlobalData()\n if (data.round !== undefined) return data.round\n return Uint64(lazyContext.txn.groups.length + 1)\n },\n\n /**\n * Last confirmed block UNIX timestamp. Fails if negative. Application mode only.\n */\n get latestTimestamp(): uint64 {\n const data = getGlobalData()\n if (data.latestTimestamp !== undefined) return data.latestTimestamp\n return Uint64(lazyContext.activeGroup.latestTimestamp)\n },\n\n /**\n * ID of current application executing. Application mode only.\n */\n get currentApplicationId(): Application {\n return lazyContext.activeApplication\n },\n\n /**\n * Address of the creator of the current application. Application mode only.\n */\n get creatorAddress(): Account {\n const app = lazyContext.activeApplication\n return app.creator\n },\n\n /**\n * Address that the current application controls. Application mode only.\n */\n get currentApplicationAddress(): Account {\n const appAddress = algosdk.getApplicationAddress(asBigInt(this.currentApplicationId.id))\n return Account(Bytes(appAddress))\n },\n\n /**\n * ID of the transaction group. 32 zero bytes if the transaction is not part of a group.\n */\n get groupId(): bytes {\n const data = getGlobalData()\n if (data.groupId !== undefined) return data.groupId\n const reference = getObjectReference(lazyContext.activeGroup)\n const referenceBytes = Bytes(internal.encodingUtil.bigIntToUint8Array(reference))\n return op.sha256(referenceBytes)\n },\n\n /**\n * The remaining cost that can be spent by opcodes in this program.\n */\n get opcodeBudget(): uint64 {\n const data = getGlobalData()\n if (data.opcodeBudget !== undefined) return data.opcodeBudget\n throw new internal.errors.InternalError(getMissingValueErrorMessage('opcodeBudget'))\n },\n\n /**\n * The application ID of the application that called this application. 0 if this application is at the top-level. Application mode only.\n */\n get callerApplicationId(): uint64 {\n return getGlobalData().callerApplicationId\n },\n\n /**\n * The application address of the application that called this application. ZeroAddress if this application is at the top-level. Application mode only.\n */\n get callerApplicationAddress(): Account {\n const appAddress = algosdk.getApplicationAddress(asBigInt(this.callerApplicationId))\n return Account(Bytes(appAddress))\n },\n\n /**\n * The additional minimum balance required to create (and opt-in to) an asset.\n */\n get assetCreateMinBalance(): uint64 {\n return getGlobalData().assetCreateMinBalance\n },\n\n /**\n * The additional minimum balance required to opt-in to an asset.\n */\n get assetOptInMinBalance(): uint64 {\n return getGlobalData().assetOptInMinBalance\n },\n\n /**\n * The Genesis Hash for the network.\n */\n get genesisHash(): bytes {\n return getGlobalData().genesisHash\n },\n}\n","import { Account, Application, arc4, Asset, bytes, internal, uint64 } from '@algorandfoundation/algorand-typescript'\nimport { lazyContext } from '../context-helpers/internal-context'\nimport { asUint64, asUint64Cls } from '../util'\n\nexport const GTxn: internal.opTypes.GTxnType = {\n sender(t: internal.primitives.StubUint64Compat): Account {\n return lazyContext.activeGroup.getTransaction(t).sender\n },\n fee(t: internal.primitives.StubUint64Compat): uint64 {\n return lazyContext.activeGroup.getTransaction(t).fee\n },\n firstValid(t: internal.primitives.StubUint64Compat): uint64 {\n return lazyContext.activeGroup.getTransaction(t).firstValid\n },\n firstValidTime(t: internal.primitives.StubUint64Compat): uint64 {\n return lazyContext.activeGroup.getTransaction(t).firstValidTime\n },\n lastValid(t: internal.primitives.StubUint64Compat): uint64 {\n return lazyContext.activeGroup.getTransaction(t).lastValid\n },\n note(t: internal.primitives.StubUint64Compat): bytes {\n return lazyContext.activeGroup.getTransaction(t).note\n },\n lease(t: internal.primitives.StubUint64Compat): bytes {\n return lazyContext.activeGroup.getTransaction(t).lease\n },\n receiver(t: internal.primitives.StubUint64Compat): Account {\n return lazyContext.activeGroup.getPaymentTransaction(t).receiver\n },\n amount(t: uint64): uint64 {\n return lazyContext.activeGroup.getPaymentTransaction(t).amount\n },\n closeRemainderTo(t: internal.primitives.StubUint64Compat): Account {\n return lazyContext.activeGroup.getPaymentTransaction(t).closeRemainderTo\n },\n votePk(t: internal.primitives.StubUint64Compat): bytes {\n return lazyContext.activeGroup.getKeyRegistrationTransaction(t).voteKey\n },\n selectionPk(t: internal.primitives.StubUint64Compat): bytes {\n return lazyContext.activeGroup.getKeyRegistrationTransaction(t).selectionKey\n },\n voteFirst(t: internal.primitives.StubUint64Compat): uint64 {\n return lazyContext.activeGroup.getKeyRegistrationTransaction(t).voteFirst\n },\n voteLast(t: internal.primitives.StubUint64Compat): uint64 {\n return lazyContext.activeGroup.getKeyRegistrationTransaction(t).voteLast\n },\n voteKeyDilution(t: internal.primitives.StubUint64Compat): uint64 {\n return lazyContext.activeGroup.getKeyRegistrationTransaction(t).voteKeyDilution\n },\n type(t: internal.primitives.StubUint64Compat): bytes {\n return asUint64Cls(lazyContext.activeGroup.getTransaction(t).type).toBytes().asAlgoTs()\n },\n typeEnum(t: uint64): uint64 {\n return asUint64(lazyContext.activeGroup.getTransaction(t).type)\n },\n xferAsset(t: internal.primitives.StubUint64Compat): Asset {\n return lazyContext.activeGroup.getAssetTransferTransaction(t).xferAsset\n },\n assetAmount(t: internal.primitives.StubUint64Compat): uint64 {\n return lazyContext.activeGroup.getAssetTransferTransaction(t).assetAmount\n },\n assetSender(t: internal.primitives.StubUint64Compat): Account {\n return lazyContext.activeGroup.getAssetTransferTransaction(t).assetSender\n },\n assetReceiver(t: internal.primitives.StubUint64Compat): Account {\n return lazyContext.activeGroup.getAssetTransferTransaction(t).assetReceiver\n },\n assetCloseTo(t: internal.primitives.StubUint64Compat): Account {\n return lazyContext.activeGroup.getAssetTransferTransaction(t).assetCloseTo\n },\n groupIndex(t: internal.primitives.StubUint64Compat): uint64 {\n return lazyContext.activeGroup.getTransaction(t).groupIndex\n },\n txId(t: internal.primitives.StubUint64Compat): bytes {\n return lazyContext.activeGroup.getTransaction(t).txnId\n },\n applicationId(t: internal.primitives.StubUint64Compat): Application {\n return lazyContext.activeGroup.getApplicationTransaction(t).appId\n },\n onCompletion(t: internal.primitives.StubUint64Compat): uint64 {\n const onCompletionStr = lazyContext.activeGroup.getApplicationTransaction(t).onCompletion\n return asUint64(arc4.OnCompleteAction[onCompletionStr])\n },\n applicationArgs(a: internal.primitives.StubUint64Compat, b: internal.primitives.StubUint64Compat): bytes {\n return lazyContext.activeGroup.getApplicationTransaction(a).appArgs(asUint64(b))\n },\n numAppArgs(t: internal.primitives.StubUint64Compat): uint64 {\n return lazyContext.activeGroup.getApplicationTransaction(t).numAppArgs\n },\n accounts(a: internal.primitives.StubUint64Compat, b: internal.primitives.StubUint64Compat): Account {\n return lazyContext.activeGroup.getApplicationTransaction(a).accounts(asUint64(b))\n },\n numAccounts(t: internal.primitives.StubUint64Compat): uint64 {\n return lazyContext.activeGroup.getApplicationTransaction(t).numAccounts\n },\n approvalProgram(t: internal.primitives.StubUint64Compat): bytes {\n return lazyContext.activeGroup.getApplicationTransaction(t).approvalProgram\n },\n clearStateProgram(t: internal.primitives.StubUint64Compat): bytes {\n return lazyContext.activeGroup.getApplicationTransaction(t).clearStateProgram\n },\n rekeyTo(t: internal.primitives.StubUint64Compat): Account {\n return lazyContext.activeGroup.getTransaction(t).rekeyTo\n },\n configAsset(t: internal.primitives.StubUint64Compat): Asset {\n return lazyContext.activeGroup.getAssetConfigTransaction(t).configAsset\n },\n configAssetTotal(t: internal.primitives.StubUint64Compat): uint64 {\n return lazyContext.activeGroup.getAssetConfigTransaction(t).total\n },\n configAssetDecimals(t: internal.primitives.StubUint64Compat): uint64 {\n return lazyContext.activeGroup.getAssetConfigTransaction(t).decimals\n },\n configAssetDefaultFrozen(t: internal.primitives.StubUint64Compat): boolean {\n return lazyContext.activeGroup.getAssetConfigTransaction(t).defaultFrozen\n },\n configAssetUnitName(t: internal.primitives.StubUint64Compat): bytes {\n return lazyContext.activeGroup.getAssetConfigTransaction(t).unitName\n },\n configAssetName(t: internal.primitives.StubUint64Compat): bytes {\n return lazyContext.activeGroup.getAssetConfigTransaction(t).assetName\n },\n configAssetUrl(t: internal.primitives.StubUint64Compat): bytes {\n return lazyContext.activeGroup.getAssetConfigTransaction(t).url\n },\n configAssetMetadataHash(t: internal.primitives.StubUint64Compat): bytes {\n return lazyContext.activeGroup.getAssetConfigTransaction(t).metadataHash\n },\n configAssetManager(t: internal.primitives.StubUint64Compat): Account {\n return lazyContext.activeGroup.getAssetConfigTransaction(t).manager\n },\n configAssetReserve(t: internal.primitives.StubUint64Compat): Account {\n return lazyContext.activeGroup.getAssetConfigTransaction(t).reserve\n },\n configAssetFreeze(t: internal.primitives.StubUint64Compat): Account {\n return lazyContext.activeGroup.getAssetConfigTransaction(t).freeze\n },\n configAssetClawback(t: internal.primitives.StubUint64Compat): Account {\n return lazyContext.activeGroup.getAssetConfigTransaction(t).clawback\n },\n freezeAsset(t: internal.primitives.StubUint64Compat): Asset {\n return lazyContext.activeGroup.getAssetFreezeTransaction(t).freezeAsset\n },\n freezeAssetAccount(t: internal.primitives.StubUint64Compat): Account {\n return lazyContext.activeGroup.getAssetFreezeTransaction(t).freezeAccount\n },\n freezeAssetFrozen(t: internal.primitives.StubUint64Compat): boolean {\n return lazyContext.activeGroup.getAssetFreezeTransaction(t).frozen\n },\n assets(a: internal.primitives.StubUint64Compat, b: internal.primitives.StubUint64Compat): Asset {\n return lazyContext.activeGroup.getApplicationTransaction(a).assets(asUint64(b))\n },\n numAssets(t: internal.primitives.StubUint64Compat): uint64 {\n return lazyContext.activeGroup.getApplicationTransaction(t).numAssets\n },\n applications(a: internal.primitives.StubUint64Compat, b: internal.primitives.StubUint64Compat): Application {\n return lazyContext.activeGroup.getApplicationTransaction(a).apps(asUint64(b))\n },\n numApplications(t: internal.primitives.StubUint64Compat): uint64 {\n return lazyContext.activeGroup.getApplicationTransaction(t).numApps\n },\n globalNumUint(t: internal.primitives.StubUint64Compat): uint64 {\n return lazyContext.activeGroup.getApplicationTransaction(t).globalNumUint\n },\n globalNumByteSlice(t: internal.primitives.StubUint64Compat): uint64 {\n return lazyContext.activeGroup.getApplicationTransaction(t).globalNumBytes\n },\n localNumUint(t: internal.primitives.StubUint64Compat): uint64 {\n return lazyContext.activeGroup.getApplicationTransaction(t).localNumUint\n },\n localNumByteSlice(t: internal.primitives.StubUint64Compat): uint64 {\n return lazyContext.activeGroup.getApplicationTransaction(t).localNumBytes\n },\n extraProgramPages(t: internal.primitives.StubUint64Compat): uint64 {\n return lazyContext.activeGroup.getApplicationTransaction(t).extraProgramPages\n },\n nonparticipation(t: internal.primitives.StubUint64Compat): boolean {\n return lazyContext.activeGroup.getKeyRegistrationTransaction(t).nonparticipation\n },\n logs(a: internal.primitives.StubUint64Compat, b: internal.primitives.StubUint64Compat): bytes {\n return lazyContext.activeGroup.getApplicationTransaction(a).logs(asUint64(b))\n },\n numLogs(t: internal.primitives.StubUint64Compat): uint64 {\n return lazyContext.activeGroup.getApplicationTransaction(t).numLogs\n },\n createdAssetId(t: internal.primitives.StubUint64Compat): Asset {\n return lazyContext.activeGroup.getAssetConfigTransaction(t).createdAsset\n },\n createdApplicationId(t: internal.primitives.StubUint64Compat): Application {\n return lazyContext.activeGroup.getApplicationTransaction(t).createdApp\n },\n lastLog(t: internal.primitives.StubUint64Compat): bytes {\n return lazyContext.activeGroup.getApplicationTransaction(t).lastLog\n },\n stateProofPk(t: internal.primitives.StubUint64Compat): bytes {\n return lazyContext.activeGroup.getKeyRegistrationTransaction(t).stateProofKey\n },\n approvalProgramPages(a: internal.primitives.StubUint64Compat, b: internal.primitives.StubUint64Compat): bytes {\n return lazyContext.activeGroup.getApplicationTransaction(a).approvalProgramPages(asUint64(b))\n },\n numApprovalProgramPages(t: internal.primitives.StubUint64Compat): uint64 {\n return lazyContext.activeGroup.getApplicationTransaction(t).numApprovalProgramPages\n },\n clearStateProgramPages(a: internal.primitives.StubUint64Compat, b: internal.primitives.StubUint64Compat): bytes {\n return lazyContext.activeGroup.getApplicationTransaction(a).clearStateProgramPages(asUint64(b))\n },\n numClearStateProgramPages(t: internal.primitives.StubUint64Compat): uint64 {\n return lazyContext.activeGroup.getApplicationTransaction(t).numClearStateProgramPages\n },\n}\n","import { biguint, Bytes, bytes, internal, Uint64, uint64 } from '@algorandfoundation/algorand-typescript'\nimport { BITS_IN_BYTE, MAX_BYTES_SIZE, MAX_UINT64, MAX_UINT8, UINT64_SIZE } from '../constants'\nimport { notImplementedError } from '../errors'\nimport { asBigUint, asBytes, asMaybeBytesCls, asMaybeUint64Cls, asUint64Cls, binaryStringToBytes } from '../util'\n\nexport const addw = (a: internal.primitives.StubUint64Compat, b: internal.primitives.StubUint64Compat): readonly [uint64, uint64] => {\n const uint64A = internal.primitives.Uint64Cls.fromCompat(a)\n const uint64B = internal.primitives.Uint64Cls.fromCompat(b)\n const sum = uint64A.asBigInt() + uint64B.asBigInt()\n return toUint128(sum)\n}\n\nexport const base64Decode = (e: internal.opTypes.Base64, a: internal.primitives.StubBytesCompat): bytes => {\n const encoding = e === internal.opTypes.Base64.StdEncoding ? 'base64' : 'base64url'\n const bytesValue = internal.primitives.BytesCls.fromCompat(a)\n const stringValue = bytesValue.toString()\n\n const bufferResult = Buffer.from(stringValue, encoding)\n if (bufferResult.toString(encoding) !== stringValue) {\n internal.errors.avmError('illegal base64 data')\n }\n\n const uint8ArrayResult = new Uint8Array(bufferResult)\n return asBytes(uint8ArrayResult)\n}\n\nexport const bitLength = (a: internal.primitives.StubUint64Compat | internal.primitives.StubBytesCompat): uint64 => {\n const uint64Cls = asMaybeUint64Cls(a)\n const bigUintCls = asMaybeBytesCls(a)?.toBigUint()\n const bigIntValue = (uint64Cls?.asBigInt() ?? bigUintCls?.asBigInt())!\n const binaryValue = bigIntValue === 0n ? '' : bigIntValue.toString(2)\n return Uint64(binaryValue.length)\n}\n\nexport const bsqrt = (a: internal.primitives.StubBigUintCompat): biguint => {\n const bigUintClsValue = internal.primitives.BigUintCls.fromCompat(a)\n const bigintValue = internal.primitives.checkBigUint(bigUintClsValue.asBigInt())\n const sqrtValue = squareroot(bigintValue)\n return asBigUint(sqrtValue)\n}\n\nexport const btoi = (a: internal.primitives.StubBytesCompat): uint64 => {\n const bytesValue = internal.primitives.BytesCls.fromCompat(a)\n if (bytesValue.length.asAlgoTs() > BITS_IN_BYTE) {\n internal.errors.avmError(`btoi arg too long, got [${bytesValue.length.valueOf()}]bytes`)\n }\n return bytesValue.toUint64().asAlgoTs()\n}\n\nexport const bzero = (a: internal.primitives.StubUint64Compat): bytes => {\n const size = internal.primitives.Uint64Cls.fromCompat(a).asBigInt()\n if (size > MAX_BYTES_SIZE) {\n internal.errors.avmError('bzero attempted to create a too large string')\n }\n return Bytes(new Uint8Array(Array(Number(size)).fill(0x00)))\n}\n\nexport const concat = (a: internal.primitives.StubBytesCompat, b: internal.primitives.StubBytesCompat): bytes => {\n const bytesA = internal.primitives.BytesCls.fromCompat(a)\n const bytesB = internal.primitives.BytesCls.fromCompat(b)\n return bytesA.concat(bytesB).asAlgoTs()\n}\n\nexport const divmodw = (\n a: internal.primitives.StubUint64Compat,\n b: internal.primitives.StubUint64Compat,\n c: internal.primitives.StubUint64Compat,\n d: internal.primitives.StubUint64Compat,\n): readonly [uint64, uint64, uint64, uint64] => {\n const i = uint128ToBigInt(a, b)\n const j = uint128ToBigInt(c, d)\n\n const div = i / j\n const mod = i % j\n return [...toUint128(div), ...toUint128(mod)]\n}\n\nexport const divw = (\n a: internal.primitives.StubUint64Compat,\n b: internal.primitives.StubUint64Compat,\n c: internal.primitives.StubUint64Compat,\n): uint64 => {\n const i = uint128ToBigInt(a, b)\n const j = internal.primitives.Uint64Cls.fromCompat(c).asBigInt()\n return Uint64(i / j)\n}\n\nexport const exp = (a: internal.primitives.StubUint64Compat, b: internal.primitives.StubUint64Compat): uint64 => {\n const base = internal.primitives.Uint64Cls.fromCompat(a).asBigInt()\n const exponent = internal.primitives.Uint64Cls.fromCompat(b).asBigInt()\n if (base === 0n && exponent === 0n) {\n throw internal.errors.codeError('0 ** 0 is undefined')\n }\n return Uint64(base ** exponent)\n}\n\nexport const expw = (a: internal.primitives.StubUint64Compat, b: internal.primitives.StubUint64Compat): readonly [uint64, uint64] => {\n const base = internal.primitives.Uint64Cls.fromCompat(a).asBigInt()\n const exponent = internal.primitives.Uint64Cls.fromCompat(b).asBigInt()\n if (base === 0n && exponent === 0n) {\n throw internal.errors.codeError('0 ** 0 is undefined')\n }\n return toUint128(base ** exponent)\n}\n\nexport const extract = (\n a: internal.primitives.StubBytesCompat,\n b: internal.primitives.StubUint64Compat,\n c: internal.primitives.StubUint64Compat,\n): bytes => {\n const bytesValue = internal.primitives.BytesCls.fromCompat(a)\n const bytesLength = bytesValue.length.asBigInt()\n\n const start = internal.primitives.Uint64Cls.fromCompat(b).asBigInt()\n const length = internal.primitives.Uint64Cls.fromCompat(c).asBigInt()\n let end = start + length\n if ((typeof b === 'number' || typeof b === 'bigint') && (typeof c === 'number' || typeof c === 'bigint') && length === 0n) {\n end = bytesLength\n }\n\n if (start > bytesLength) {\n internal.errors.codeError(`extraction start ${start} is beyond length`)\n }\n if (end > bytesLength) {\n internal.errors.codeError(`extraction end ${end} is beyond length`)\n }\n\n return bytesValue.slice(start, end).asAlgoTs()\n}\n\nexport const extractUint16 = (a: internal.primitives.StubBytesCompat, b: internal.primitives.StubUint64Compat): uint64 => {\n const result = extract(a, b, 2)\n const bytesResult = internal.primitives.BytesCls.fromCompat(result)\n return bytesResult.toUint64().asAlgoTs()\n}\n\nexport const extractUint32 = (a: internal.primitives.StubBytesCompat, b: internal.primitives.StubUint64Compat): uint64 => {\n const result = extract(a, b, 4)\n const bytesResult = internal.primitives.BytesCls.fromCompat(result)\n return bytesResult.toUint64().asAlgoTs()\n}\n\nexport const extractUint64 = (a: internal.primitives.StubBytesCompat, b: internal.primitives.StubUint64Compat): uint64 => {\n const result = extract(a, b, 8)\n const bytesResult = internal.primitives.BytesCls.fromCompat(result)\n return bytesResult.toUint64().asAlgoTs()\n}\n\nexport const getBit = (\n a: internal.primitives.StubUint64Compat | internal.primitives.StubBytesCompat,\n b: internal.primitives.StubUint64Compat,\n): uint64 => {\n const binaryString = toBinaryString(a)\n const index = internal.primitives.Uint64Cls.fromCompat(b).asNumber()\n const adjustedIndex = asMaybeUint64Cls(a) ? binaryString.length - index - 1 : index\n if (adjustedIndex < 0 || adjustedIndex >= binaryString.length) {\n internal.errors.codeError(`getBit index ${index} is beyond length`)\n }\n return binaryString[adjustedIndex] === '1' ? Uint64(1) : Uint64(0)\n}\n\nexport const getByte = (a: internal.primitives.StubBytesCompat, b: internal.primitives.StubUint64Compat): uint64 => {\n const bytesValue = internal.primitives.BytesCls.fromCompat(a)\n const index = internal.primitives.Uint64Cls.fromCompat(b).asNumber()\n if (index >= bytesValue.length.asNumber()) {\n internal.errors.codeError(`getBytes index ${index} is beyond length`)\n }\n return bytesValue.at(index).toUint64().asAlgoTs()\n}\n\nexport const itob = (a: internal.primitives.StubUint64Compat): bytes => {\n return asUint64Cls(a).toBytes().asAlgoTs()\n}\n\nexport const mulw = (a: internal.primitives.StubUint64Compat, b: internal.primitives.StubUint64Compat): readonly [uint64, uint64] => {\n const uint64A = internal.primitives.Uint64Cls.fromCompat(a)\n const uint64B = internal.primitives.Uint64Cls.fromCompat(b)\n const product = uint64A.asBigInt() * uint64B.asBigInt()\n return toUint128(product)\n}\n\nexport const replace = (\n a: internal.primitives.StubBytesCompat,\n b: internal.primitives.StubUint64Compat,\n c: internal.primitives.StubBytesCompat,\n): bytes => {\n const bytesValue = internal.primitives.BytesCls.fromCompat(a)\n const index = internal.primitives.Uint64Cls.fromCompat(b).asNumber()\n const replacement = internal.primitives.BytesCls.fromCompat(c)\n\n const valueLength = bytesValue.length.asNumber()\n const replacementLength = replacement.length.asNumber()\n\n if (index + replacementLength > valueLength) {\n internal.errors.codeError(`expected value <= ${valueLength}, got: ${index + replacementLength}`)\n }\n return bytesValue\n .slice(0, index)\n .concat(replacement)\n .concat(bytesValue.slice(index + replacementLength, valueLength))\n .asAlgoTs()\n}\n\ntype selectType = ((\n a: internal.primitives.StubBytesCompat,\n b: internal.primitives.StubBytesCompat,\n c: internal.primitives.StubUint64Compat,\n) => bytes) &\n ((a: internal.primitives.StubUint64Compat, b: internal.primitives.StubUint64Compat, c: internal.primitives.StubUint64Compat) => uint64)\nexport const select = ((\n a: internal.primitives.StubUint64Compat | internal.primitives.StubBytesCompat,\n b: internal.primitives.StubUint64Compat | internal.primitives.StubBytesCompat,\n c: internal.primitives.StubUint64Compat,\n): uint64 | bytes => {\n const uint64A = asMaybeUint64Cls(a)\n const uint64B = asMaybeUint64Cls(b)\n const bytesA = asMaybeBytesCls(a)\n const bytesB = asMaybeBytesCls(b)\n const bigIntC = internal.primitives.Uint64Cls.fromCompat(c).asBigInt()\n\n return (bigIntC !== 0n ? (uint64B ?? bytesB)! : (uint64A ?? bytesA)!).asAlgoTs()\n}) as selectType\n\ntype SetBitType = ((\n target: internal.primitives.StubBytesCompat,\n n: internal.primitives.StubUint64Compat,\n c: internal.primitives.StubUint64Compat,\n) => bytes) &\n ((\n target: internal.primitives.StubUint64Compat,\n n: internal.primitives.StubUint64Compat,\n c: internal.primitives.StubUint64Compat,\n ) => uint64)\n\nexport const setBit = ((\n a: internal.primitives.StubUint64Compat | internal.primitives.StubBytesCompat,\n b: internal.primitives.StubUint64Compat,\n c: internal.primitives.StubUint64Compat,\n) => {\n const uint64Cls = asMaybeUint64Cls(a)\n const bytesCls = asMaybeBytesCls(a)\n const binaryString = toBinaryString((uint64Cls ?? bytesCls)!)\n\n const isUint64 = !!uint64Cls\n const indexFromLeft = internal.primitives.Uint64Cls.fromCompat(b).asNumber()\n const indexFromRight = binaryString.length - indexFromLeft - 1\n const bit = internal.primitives.Uint64Cls.fromCompat(c).asNumber()\n\n const newBytes = doSetBit(binaryString, isUint64 ? indexFromRight : indexFromLeft, bit)\n return isUint64 ? newBytes.toUint64().asAlgoTs() : newBytes.asAlgoTs()\n}) as SetBitType\n\nexport const setByte = (\n a: internal.primitives.StubBytesCompat,\n b: internal.primitives.StubUint64Compat,\n c: internal.primitives.StubUint64Compat,\n): bytes => {\n const binaryString = toBinaryString(a)\n\n const byteIndex = internal.primitives.Uint64Cls.fromCompat(b).asNumber()\n const bitIndex = byteIndex * BITS_IN_BYTE\n\n const replacementNumber = internal.primitives.Uint64Cls.fromCompat(c).asBigInt()\n const replacement = replacementNumber === 0n ? '0'.repeat(BITS_IN_BYTE) : toBinaryString(c, true)\n\n if (bitIndex >= binaryString.length) {\n internal.errors.codeError(`setByte index ${byteIndex} is beyond length`)\n }\n if (replacementNumber > MAX_UINT8) {\n internal.errors.codeError(`setByte value ${replacementNumber} > ${MAX_UINT8}`)\n }\n const updatedString = binaryString.slice(0, bitIndex) + replacement + binaryString.slice(bitIndex + replacement.length)\n const updatedBytes = binaryStringToBytes(updatedString)\n return updatedBytes.asAlgoTs()\n}\n\nexport const shl = (a: internal.primitives.StubUint64Compat, b: internal.primitives.StubUint64Compat): uint64 => {\n const uint64A = internal.primitives.Uint64Cls.fromCompat(a)\n const uint64B = internal.primitives.Uint64Cls.fromCompat(b)\n const bigIntA = uint64A.asBigInt()\n const bigIntB = uint64B.asBigInt()\n if (bigIntB >= UINT64_SIZE) {\n internal.errors.codeError(`shl value ${bigIntB} >= ${UINT64_SIZE}`)\n }\n const shifted = (bigIntA * 2n ** bigIntB) % 2n ** BigInt(UINT64_SIZE)\n return Uint64(shifted)\n}\n\nexport const shr = (a: internal.primitives.StubUint64Compat, b: internal.primitives.StubUint64Compat): uint64 => {\n const uint64A = internal.primitives.Uint64Cls.fromCompat(a)\n const uint64B = internal.primitives.Uint64Cls.fromCompat(b)\n const bigIntA = uint64A.asBigInt()\n const bigIntB = uint64B.asBigInt()\n if (bigIntB >= UINT64_SIZE) {\n internal.errors.codeError(`shr value ${bigIntB} >= ${UINT64_SIZE}`)\n }\n const shifted = bigIntA / 2n ** bigIntB\n return Uint64(shifted)\n}\n\nexport const sqrt = (a: internal.primitives.StubUint64Compat): uint64 => {\n const bigIntValue = internal.primitives.Uint64Cls.fromCompat(a).asBigInt()\n const sqrtValue = squareroot(bigIntValue)\n return Uint64(sqrtValue)\n}\n\nexport const substring = (\n a: internal.primitives.StubBytesCompat,\n b: internal.primitives.StubUint64Compat,\n c: internal.primitives.StubUint64Compat,\n): bytes => {\n const bytesValue = internal.primitives.BytesCls.fromCompat(a)\n const start = internal.primitives.Uint64Cls.fromCompat(b).asBigInt()\n const end = internal.primitives.Uint64Cls.fromCompat(c).asBigInt()\n if (start > end) {\n internal.errors.codeError('substring end before start')\n }\n if (end > bytesValue.length.asNumber()) {\n internal.errors.codeError('substring range beyond length of string')\n }\n return bytesValue.slice(start, end).asAlgoTs()\n}\n\nexport const JsonRef = new Proxy({} as internal.opTypes.JsonRefType, {\n get: (_target, prop) => {\n notImplementedError(`JsonRef.${prop.toString()}`)\n },\n})\n\nconst squareroot = (x: bigint): bigint => {\n let lo = 0n,\n hi = x\n while (lo <= hi) {\n const mid = (lo + hi) / 2n\n if (mid * mid > x) hi = mid - 1n\n else lo = mid + 1n\n }\n return hi\n}\n\nconst toUint128 = (value: bigint): [uint64, uint64] => {\n const cf = value >> 64n\n const rest = value & MAX_UINT64\n return [Uint64(cf), Uint64(rest)]\n}\n\nconst uint128ToBigInt = (a: internal.primitives.StubUint64Compat, b: internal.primitives.StubUint64Compat): bigint => {\n const bigIntA = internal.primitives.Uint64Cls.fromCompat(a).asBigInt()\n const bigIntB = internal.primitives.Uint64Cls.fromCompat(b).asBigInt()\n return (bigIntA << 64n) + bigIntB\n}\n\nconst toBinaryString = (a: internal.primitives.StubUint64Compat | internal.primitives.StubBytesCompat, isDynamic = false): string => {\n const uint64Cls = asMaybeUint64Cls(a)\n const bytesCls = asMaybeBytesCls(a)\n let binaryString: string = ''\n if (uint64Cls) {\n binaryString = [...uint64Cls.toBytes(isDynamic).asUint8Array()].map((x) => x.toString(2).padStart(BITS_IN_BYTE, '0')).join('')\n } else if (bytesCls) {\n binaryString = [...bytesCls.asUint8Array()].map((x) => x.toString(2).padStart(BITS_IN_BYTE, '0')).join('')\n } else {\n internal.errors.codeError('unknown type for argument a')\n }\n return binaryString\n}\n\nconst doSetBit = (binaryString: string, index: number, bit: number): internal.primitives.BytesCls => {\n if (index < 0 || index >= binaryString.length) {\n internal.errors.codeError(`setBit index ${index < 0 ? binaryString.length - index : index} is beyond length`)\n }\n if (bit !== 0 && bit !== 1) {\n internal.errors.codeError(`setBit value > 1`)\n }\n const updatedString = binaryString.slice(0, index) + bit.toString() + binaryString.slice(index + 1)\n return binaryStringToBytes(updatedString)\n}\n","import { Account, Application, arc4, Asset, bytes, internal, TransactionType, uint64 } from '@algorandfoundation/algorand-typescript'\nimport { lazyContext } from '../context-helpers/internal-context'\nimport { asNumber, asUint64, asUint64Cls } from '../util'\n// import {\n// getApplicationTransaction,\n// getAssetConfigTransaction,\n// getAssetFreezeTransaction,\n// getAssetTransferTransaction,\n// getKeyRegistrationTransaction,\n// getPaymentTransaction,\n// getTransaction,\n// } from './gtxn'\n\nexport const gaid = (a: internal.primitives.StubUint64Compat): uint64 => {\n const group = lazyContext.activeGroup\n const transaction = group.transactions[asNumber(a)]\n if (transaction.type === TransactionType.ApplicationCall) {\n return transaction.createdApp.id\n } else if (transaction.type === TransactionType.AssetConfig) {\n return transaction.createdAsset.id\n } else {\n throw new internal.errors.InternalError(`transaction at index ${asNumber(a)} is not an Application Call or Asset Config`)\n }\n}\n\nexport const Txn: internal.opTypes.TxnType = {\n get sender(): Account {\n return lazyContext.activeGroup.getTransaction().sender\n },\n\n /**\n * microalgos\n */\n get fee(): uint64 {\n return lazyContext.activeGroup.getTransaction().fee\n },\n\n /**\n * round number\n */\n get firstValid(): uint64 {\n return lazyContext.activeGroup.getTransaction().firstValid\n },\n\n /**\n * UNIX timestamp of block before txn.FirstValid. Fails if negative\n */\n get firstValidTime(): uint64 {\n return lazyContext.activeGroup.getTransaction().firstValidTime\n },\n\n /**\n * round number\n */\n get lastValid(): uint64 {\n return lazyContext.activeGroup.getTransaction().lastValid\n },\n\n /**\n * Any data up to 1024 bytes\n */\n get note(): bytes {\n return lazyContext.activeGroup.getTransaction().note\n },\n\n /**\n * 32 byte lease value\n */\n get lease(): bytes {\n return lazyContext.activeGroup.getTransaction().lease\n },\n\n /**\n * 32 byte address\n */\n get receiver(): Account {\n return lazyContext.activeGroup.getPaymentTransaction().receiver\n },\n\n /**\n * microalgos\n */\n get amount(): uint64 {\n return lazyContext.activeGroup.getPaymentTransaction().amount\n },\n\n /**\n * 32 byte address\n */\n get closeRemainderTo(): Account {\n return lazyContext.activeGroup.getPaymentTransaction().closeRemainderTo\n },\n\n /**\n * 32 byte address\n */\n get votePk(): bytes {\n return lazyContext.activeGroup.getKeyRegistrationTransaction().voteKey\n },\n\n /**\n * 32 byte address\n */\n get selectionPk(): bytes {\n return lazyContext.activeGroup.getKeyRegistrationTransaction().selectionKey\n },\n\n /**\n * The first round that the participation key is valid.\n */\n get voteFirst(): uint64 {\n return lazyContext.activeGroup.getKeyRegistrationTransaction().voteFirst\n },\n\n /**\n * The last round that the participation key is valid.\n */\n get voteLast(): uint64 {\n return lazyContext.activeGroup.getKeyRegistrationTransaction().voteLast\n },\n\n /**\n * Dilution for the 2-level participation key\n */\n get voteKeyDilution(): uint64 {\n return lazyContext.activeGroup.getKeyRegistrationTransaction().voteKeyDilution\n },\n\n /**\n * Transaction type as bytes\n */\n get type(): bytes {\n return asUint64Cls(lazyContext.activeGroup.getTransaction().type).toBytes().asAlgoTs()\n },\n\n /**\n * Transaction type as integer\n */\n get typeEnum(): uint64 {\n return asUint64(lazyContext.activeGroup.getTransaction().type)\n },\n\n /**\n * Asset ID\n */\n get xferAsset(): Asset {\n return lazyContext.activeGroup.getAssetTransferTransaction().xferAsset\n },\n\n /**\n * value in Asset's units\n */\n get assetAmount(): uint64 {\n return lazyContext.activeGroup.getAssetTransferTransaction().assetAmount\n },\n\n /**\n * 32 byte address. Source of assets if Sender is the Asset's Clawback address.\n */\n get assetSender(): Account {\n return lazyContext.activeGroup.getAssetTransferTransaction().assetSender\n },\n\n /**\n * 32 byte address\n */\n get assetReceiver(): Account {\n return lazyContext.activeGroup.getAssetTransferTransaction().assetReceiver\n },\n\n /**\n * 32 byte address\n */\n get assetCloseTo(): Account {\n return lazyContext.activeGroup.getAssetTransferTransaction().assetCloseTo\n },\n\n /**\n * Position of this transaction within an atomic transaction group. A stand-alone transaction is implicitly element 0 in a group of 1\n */\n get groupIndex(): uint64 {\n return lazyContext.activeGroup.getTransaction().groupIndex\n },\n\n /**\n * The computed ID for this transaction. 32 bytes.\n */\n get txId(): bytes {\n return lazyContext.activeGroup.getTransaction().txnId\n },\n\n /**\n * ApplicationID from ApplicationCall transaction\n */\n get applicationId(): Application {\n return lazyContext.activeGroup.getApplicationTransaction().appId\n },\n\n /**\n * ApplicationCall transaction on completion action\n */\n get onCompletion(): uint64 {\n const onCompletionStr = lazyContext.activeGroup.getApplicationTransaction().onCompletion\n return asUint64(arc4.OnCompleteAction[onCompletionStr])\n },\n\n /**\n * Arguments passed to the application in the ApplicationCall transaction\n */\n applicationArgs(a: internal.primitives.StubUint64Compat): bytes {\n return lazyContext.activeGroup.getApplicationTransaction().appArgs(asUint64(a))\n },\n\n /**\n * Number of ApplicationArgs\n */\n get numAppArgs(): uint64 {\n return lazyContext.activeGroup.getApplicationTransaction().numAppArgs\n },\n\n /**\n * Accounts listed in the ApplicationCall transaction\n */\n accounts(a: internal.primitives.StubUint64Compat): Account {\n return lazyContext.activeGroup.getApplicationTransaction().accounts(asUint64(a))\n },\n\n /**\n * Number of Accounts\n */\n get numAccounts(): uint64 {\n return lazyContext.activeGroup.getApplicationTransaction().numAccounts\n },\n\n /**\n * Approval program\n */\n get approvalProgram(): bytes {\n return lazyContext.activeGroup.getApplicationTransaction().approvalProgram\n },\n\n /**\n * Clear state program\n */\n get clearStateProgram(): bytes {\n return lazyContext.activeGroup.getApplicationTransaction().clearStateProgram\n },\n\n /**\n * 32 byte Sender's new AuthAddr\n */\n get rekeyTo(): Account {\n return lazyContext.activeGroup.getTransaction().rekeyTo\n },\n\n /**\n * Asset ID in asset config transaction\n */\n get configAsset(): Asset {\n return lazyContext.activeGroup.getAssetConfigTransaction().configAsset\n },\n\n /**\n * Total number of units of this asset created\n */\n get configAssetTotal(): uint64 {\n return lazyContext.activeGroup.getAssetConfigTransaction().total\n },\n\n /**\n * Number of digits to display after the decimal place when displaying the asset\n */\n get configAssetDecimals(): uint64 {\n return lazyContext.activeGroup.getAssetConfigTransaction().decimals\n },\n\n /**\n * Whether the asset's slots are frozen by default or not, 0 or 1\n */\n get configAssetDefaultFrozen(): boolean {\n return lazyContext.activeGroup.getAssetConfigTransaction().defaultFrozen\n },\n\n /**\n * Unit name of the asset\n */\n get configAssetUnitName(): bytes {\n return lazyContext.activeGroup.getAssetConfigTransaction().unitName\n },\n\n /**\n * The asset name\n */\n get configAssetName(): bytes {\n return lazyContext.activeGroup.getAssetConfigTransaction().assetName\n },\n\n /**\n * URL\n */\n get configAssetUrl(): bytes {\n return lazyContext.activeGroup.getAssetConfigTransaction().url\n },\n\n /**\n * 32 byte commitment to unspecified asset metadata\n */\n get configAssetMetadataHash(): bytes {\n return lazyContext.activeGroup.getAssetConfigTransaction().metadataHash\n },\n\n /**\n * 32 byte address\n */\n get configAssetManager(): Account {\n return lazyContext.activeGroup.getAssetConfigTransaction().manager\n },\n\n /**\n * 32 byte address\n */\n get configAssetReserve(): Account {\n return lazyContext.activeGroup.getAssetConfigTransaction().reserve\n },\n\n /**\n * 32 byte address\n */\n get configAssetFreeze(): Account {\n return lazyContext.activeGroup.getAssetConfigTransaction().freeze\n },\n\n /**\n * 32 byte address\n */\n get configAssetClawback(): Account {\n return lazyContext.activeGroup.getAssetConfigTransaction().clawback\n },\n\n /**\n * Asset ID being frozen or un-frozen\n */\n get freezeAsset(): Asset {\n return lazyContext.activeGroup.getAssetFreezeTransaction().freezeAsset\n },\n\n /**\n * 32 byte address of the account whose asset slot is being frozen or un-frozen\n */\n get freezeAssetAccount(): Account {\n return lazyContext.activeGroup.getAssetFreezeTransaction().freezeAccount\n },\n\n /**\n * The new frozen value, 0 or 1\n */\n get freezeAssetFrozen(): boolean {\n return lazyContext.activeGroup.getAssetFreezeTransaction().frozen\n },\n\n /**\n * Foreign Assets listed in the ApplicationCall transaction\n */\n assets(a: internal.primitives.StubUint64Compat): Asset {\n return lazyContext.activeGroup.getApplicationTransaction().assets(asUint64(a))\n },\n\n /**\n * Number of Assets\n */\n get numAssets(): uint64 {\n return lazyContext.activeGroup.getApplicationTransaction().numAssets\n },\n\n /**\n * Foreign Apps listed in the ApplicationCall transaction\n */\n applications(a: internal.primitives.StubUint64Compat): Application {\n return lazyContext.activeGroup.getApplicationTransaction().apps(asUint64(a))\n },\n\n /**\n * Number of Applications\n */\n get numApplications(): uint64 {\n return lazyContext.activeGroup.getApplicationTransaction().numApps\n },\n\n /**\n * Number of global state integers in ApplicationCall\n */\n get globalNumUint(): uint64 {\n return lazyContext.activeGroup.getApplicationTransaction().globalNumUint\n },\n\n /**\n * Number of global state byteslices in ApplicationCall\n */\n get globalNumByteSlice(): uint64 {\n return lazyContext.activeGroup.getApplicationTransaction().globalNumBytes\n },\n\n /**\n * Number of local state integers in ApplicationCall\n */\n get localNumUint(): uint64 {\n return lazyContext.activeGroup.getApplicationTransaction().localNumUint\n },\n\n /**\n * Number of local state byteslices in ApplicationCall\n */\n get localNumByteSlice(): uint64 {\n return lazyContext.activeGroup.getApplicationTransaction().localNumBytes\n },\n\n /**\n * Number of additional pages for each of the application's approval and clear state programs. An ExtraProgramPages of 1 means 2048 more total bytes, or 1024 for each program.\n */\n get extraProgramPages(): uint64 {\n return lazyContext.activeGroup.getApplicationTransaction().extraProgramPages\n },\n\n /**\n * Marks an account nonparticipating for rewards\n */\n get nonparticipation(): boolean {\n return lazyContext.activeGroup.getKeyRegistrationTransaction().nonparticipation\n },\n\n /**\n * Log messages emitted by an application call (only with `itxn` in v5). Application mode only\n */\n logs(a: internal.primitives.StubUint64Compat): bytes {\n return lazyContext.activeGroup.getApplicationTransaction().logs(asUint64(a))\n },\n\n /**\n * Number of Logs (only with `itxn` in v5). Application mode only\n */\n get numLogs(): uint64 {\n return lazyContext.activeGroup.getApplicationTransaction().numLogs\n },\n\n /**\n * Asset ID allocated by the creation of an ASA (only with `itxn` in v5). Application mode only\n */\n get createdAssetId(): Asset {\n return lazyContext.activeGroup.getAssetConfigTransaction().createdAsset\n },\n\n /**\n * ApplicationID allocated by the creation of an application (only with `itxn` in v5). Application mode only\n */\n get createdApplicationId(): Application {\n return lazyContext.activeGroup.getApplicationTransaction().createdApp\n },\n\n /**\n * The last message emitted. Empty bytes if none were emitted. Application mode only\n */\n get lastLog(): bytes {\n return lazyContext.activeGroup.getApplicationTransaction().lastLog\n },\n\n /**\n * 64 byte state proof public key\n */\n get stateProofPk(): bytes {\n return lazyContext.activeGroup.getKeyRegistrationTransaction().stateProofKey\n },\n\n /**\n * Approval Program as an array of pages\n */\n approvalProgramPages(a: internal.primitives.StubUint64Compat): bytes {\n return lazyContext.activeGroup.getApplicationTransaction().approvalProgramPages(asUint64(a))\n },\n\n /**\n * Number of Approval Program pages\n */\n get numApprovalProgramPages(): uint64 {\n return lazyContext.activeGroup.getApplicationTransaction().numApprovalProgramPages\n },\n\n /**\n * ClearState Program as an array of pages\n */\n clearStateProgramPages(a: internal.primitives.StubUint64Compat): bytes {\n return lazyContext.activeGroup.getApplicationTransaction().clearStateProgramPages(asUint64(a))\n },\n\n /**\n * Number of ClearState Program pages\n */\n get numClearStateProgramPages(): uint64 {\n return lazyContext.activeGroup.getApplicationTransaction().numClearStateProgramPages\n },\n}\n","import { Account, Application, arc4, Asset, bytes, internal, itxn, TransactionType, uint64 } from '@algorandfoundation/algorand-typescript'\nimport { lazyContext } from '../context-helpers/internal-context'\nimport { asBytes, asBytesCls, asUint64, asUint64Cls } from '../util'\nimport { getApp } from './app-params'\nimport { getAsset } from './asset-params'\n\nexport type InnerTxn =\n | itxn.PaymentInnerTxn\n | itxn.KeyRegistrationInnerTxn\n | itxn.AssetConfigInnerTxn\n | itxn.AssetTransferInnerTxn\n | itxn.AssetFreezeInnerTxn\n | itxn.ApplicationInnerTxn\n\nexport type InnerTxnFields = (\n | itxn.PaymentFields\n | itxn.KeyRegistrationFields\n | itxn.AssetConfigFields\n | itxn.AssetTransferFields\n | itxn.AssetFreezeFields\n | itxn.ApplicationCallFields\n) & { type?: TransactionType }\n\nexport const GITxn: internal.opTypes.GITxnType = {\n sender: function (t: internal.primitives.StubUint64Compat): Account {\n return lazyContext.activeGroup.getItxnGroup().getInnerTxn(t).sender\n },\n fee: function (t: internal.primitives.StubUint64Compat): uint64 {\n return lazyContext.activeGroup.getItxnGroup().getInnerTxn(t).fee\n },\n firstValid: function (t: internal.primitives.StubUint64Compat): uint64 {\n return lazyContext.activeGroup.getItxnGroup().getInnerTxn(t).firstValid\n },\n firstValidTime: function (t: internal.primitives.StubUint64Compat): uint64 {\n return lazyContext.activeGroup.getItxnGroup().getInnerTxn(t).firstValidTime\n },\n lastValid: function (t: internal.primitives.StubUint64Compat): uint64 {\n return lazyContext.activeGroup.getItxnGroup().getInnerTxn(t).lastValid\n },\n note: function (t: internal.primitives.StubUint64Compat): bytes {\n return lazyContext.activeGroup.getItxnGroup().getInnerTxn(t).note\n },\n lease: function (t: internal.primitives.StubUint64Compat): bytes {\n return lazyContext.activeGroup.getItxnGroup().getInnerTxn(t).lease\n },\n receiver: function (t: internal.primitives.StubUint64Compat): Account {\n return lazyContext.activeGroup.getItxnGroup().getPaymentInnerTxn(t).receiver\n },\n amount: function (t: internal.primitives.StubUint64Compat): uint64 {\n return lazyContext.activeGroup.getItxnGroup().getPaymentInnerTxn(t).amount\n },\n closeRemainderTo: function (t: internal.primitives.StubUint64Compat): Account {\n return lazyContext.activeGroup.getItxnGroup().getPaymentInnerTxn(t).closeRemainderTo\n },\n votePk: function (t: internal.primitives.StubUint64Compat): bytes {\n return lazyContext.activeGroup.getItxnGroup().getKeyRegistrationInnerTxn(t).voteKey\n },\n selectionPk: function (t: internal.primitives.StubUint64Compat): bytes {\n return lazyContext.activeGroup.getItxnGroup().getKeyRegistrationInnerTxn(t).selectionKey\n },\n voteFirst: function (t: internal.primitives.StubUint64Compat): uint64 {\n return lazyContext.activeGroup.getItxnGroup().getKeyRegistrationInnerTxn(t).voteFirst\n },\n voteLast: function (t: internal.primitives.StubUint64Compat): uint64 {\n return lazyContext.activeGroup.getItxnGroup().getKeyRegistrationInnerTxn(t).voteLast\n },\n voteKeyDilution: function (t: internal.primitives.StubUint64Compat): uint64 {\n return lazyContext.activeGroup.getItxnGroup().getKeyRegistrationInnerTxn(t).voteKeyDilution\n },\n type: function (t: internal.primitives.StubUint64Compat): bytes {\n return asUint64Cls(lazyContext.activeGroup.getItxnGroup().getInnerTxn(t).type).toBytes().asAlgoTs()\n },\n typeEnum: function (t: internal.primitives.StubUint64Compat): uint64 {\n return asUint64(lazyContext.activeGroup.getItxnGroup().getInnerTxn(t).type)\n },\n xferAsset: function (t: internal.primitives.StubUint64Compat): Asset {\n return lazyContext.activeGroup.getItxnGroup().getAssetTransferInnerTxn(t).xferAsset\n },\n assetAmount: function (t: internal.primitives.StubUint64Compat): uint64 {\n return lazyContext.activeGroup.getItxnGroup().getAssetTransferInnerTxn(t).assetAmount\n },\n assetSender: function (t: internal.primitives.StubUint64Compat): Account {\n return lazyContext.activeGroup.getItxnGroup().getAssetTransferInnerTxn(t).assetSender\n },\n assetReceiver: function (t: internal.primitives.StubUint64Compat): Account {\n return lazyContext.activeGroup.getItxnGroup().getAssetTransferInnerTxn(t).assetReceiver\n },\n assetCloseTo: function (t: internal.primitives.StubUint64Compat): Account {\n return lazyContext.activeGroup.getItxnGroup().getAssetTransferInnerTxn(t).assetCloseTo\n },\n groupIndex: function (t: internal.primitives.StubUint64Compat): uint64 {\n return lazyContext.activeGroup.getItxnGroup().getInnerTxn(t).groupIndex\n },\n txId: function (t: internal.primitives.StubUint64Compat): bytes {\n return lazyContext.activeGroup.getItxnGroup().getInnerTxn(t).txnId\n },\n applicationId: function (t: internal.primitives.StubUint64Compat): Application {\n return lazyContext.activeGroup.getItxnGroup().getApplicationInnerTxn(t).appId\n },\n onCompletion: function (t: internal.primitives.StubUint64Compat): uint64 {\n const onCompletionStr = lazyContext.activeGroup.getItxnGroup().getApplicationInnerTxn(t).onCompletion\n return asUint64(arc4.OnCompleteAction[onCompletionStr])\n },\n applicationArgs: function (t: internal.primitives.StubUint64Compat, a: internal.primitives.StubUint64Compat): bytes {\n return lazyContext.activeGroup.getItxnGroup().getApplicationInnerTxn(t).appArgs(asUint64(a))\n },\n numAppArgs: function (t: internal.primitives.StubUint64Compat): uint64 {\n return lazyContext.activeGroup.getItxnGroup().getApplicationInnerTxn(t).numAppArgs\n },\n accounts: function (t: internal.primitives.StubUint64Compat, a: internal.primitives.StubUint64Compat): Account {\n return lazyContext.activeGroup.getItxnGroup().getApplicationInnerTxn(t).accounts(asUint64(a))\n },\n numAccounts: function (t: internal.primitives.StubUint64Compat): uint64 {\n return lazyContext.activeGroup.getItxnGroup().getApplicationInnerTxn(t).numAccounts\n },\n approvalProgram: function (t: internal.primitives.StubUint64Compat): bytes {\n return lazyContext.activeGroup.getItxnGroup().getApplicationInnerTxn(t).approvalProgram\n },\n clearStateProgram: function (t: internal.primitives.StubUint64Compat): bytes {\n return lazyContext.activeGroup.getItxnGroup().getApplicationInnerTxn(t).clearStateProgram\n },\n rekeyTo: function (t: internal.primitives.StubUint64Compat): Account {\n return lazyContext.activeGroup.getItxnGroup().getInnerTxn(t).rekeyTo\n },\n configAsset: function (t: internal.primitives.StubUint64Compat): Asset {\n return lazyContext.activeGroup.getItxnGroup().getAssetConfigInnerTxn(t).configAsset\n },\n configAssetTotal: function (t: internal.primitives.StubUint64Compat): uint64 {\n return lazyContext.activeGroup.getItxnGroup().getAssetConfigInnerTxn(t).total\n },\n configAssetDecimals: function (t: internal.primitives.StubUint64Compat): uint64 {\n return lazyContext.activeGroup.getItxnGroup().getAssetConfigInnerTxn(t).decimals\n },\n configAssetDefaultFrozen: function (t: internal.primitives.StubUint64Compat): boolean {\n return lazyContext.activeGroup.getItxnGroup().getAssetConfigInnerTxn(t).defaultFrozen\n },\n configAssetUnitName: function (t: internal.primitives.StubUint64Compat): bytes {\n return lazyContext.activeGroup.getItxnGroup().getAssetConfigInnerTxn(t).unitName\n },\n configAssetName: function (t: internal.primitives.StubUint64Compat): bytes {\n return lazyContext.activeGroup.getItxnGroup().getAssetConfigInnerTxn(t).assetName\n },\n configAssetUrl: function (t: internal.primitives.StubUint64Compat): bytes {\n return lazyContext.activeGroup.getItxnGroup().getAssetConfigInnerTxn(t).url\n },\n configAssetMetadataHash: function (t: internal.primitives.StubUint64Compat): bytes {\n return lazyContext.activeGroup.getItxnGroup().getAssetConfigInnerTxn(t).metadataHash\n },\n configAssetManager: function (t: internal.primitives.StubUint64Compat): Account {\n return lazyContext.activeGroup.getItxnGroup().getAssetConfigInnerTxn(t).manager\n },\n configAssetReserve: function (t: internal.primitives.StubUint64Compat): Account {\n return lazyContext.activeGroup.getItxnGroup().getAssetConfigInnerTxn(t).reserve\n },\n configAssetFreeze: function (t: internal.primitives.StubUint64Compat): Account {\n return lazyContext.activeGroup.getItxnGroup().getAssetConfigInnerTxn(t).freeze\n },\n configAssetClawback: function (t: internal.primitives.StubUint64Compat): Account {\n return lazyContext.activeGroup.getItxnGroup().getAssetConfigInnerTxn(t).clawback\n },\n freezeAsset: function (t: internal.primitives.StubUint64Compat): Asset {\n return lazyContext.activeGroup.getItxnGroup().getAssetFreezeInnerTxn(t).freezeAsset\n },\n freezeAssetAccount: function (t: internal.primitives.StubUint64Compat): Account {\n return lazyContext.activeGroup.getItxnGroup().getAssetFreezeInnerTxn(t).freezeAccount\n },\n freezeAssetFrozen: function (t: internal.primitives.StubUint64Compat): boolean {\n return lazyContext.activeGroup.getItxnGroup().getAssetFreezeInnerTxn(t).frozen\n },\n assets: function (t: internal.primitives.StubUint64Compat, a: internal.primitives.StubUint64Compat): Asset {\n return lazyContext.activeGroup.getItxnGroup().getApplicationInnerTxn(t).assets(asUint64(a))\n },\n numAssets: function (t: internal.primitives.StubUint64Compat): uint64 {\n return lazyContext.activeGroup.getItxnGroup().getApplicationInnerTxn(t).numAssets\n },\n applications: function (t: internal.primitives.StubUint64Compat, a: internal.primitives.StubUint64Compat): Application {\n return lazyContext.activeGroup.getItxnGroup().getApplicationInnerTxn(t).apps(asUint64(a))\n },\n numApplications: function (t: internal.primitives.StubUint64Compat): uint64 {\n return lazyContext.activeGroup.getItxnGroup().getApplicationInnerTxn(t).numApps\n },\n globalNumUint: function (t: internal.primitives.StubUint64Compat): uint64 {\n return lazyContext.activeGroup.getItxnGroup().getApplicationInnerTxn(t).globalNumUint\n },\n globalNumByteSlice: function (t: internal.primitives.StubUint64Compat): uint64 {\n return lazyContext.activeGroup.getItxnGroup().getApplicationInnerTxn(t).globalNumBytes\n },\n localNumUint: function (t: internal.primitives.StubUint64Compat): uint64 {\n return lazyContext.activeGroup.getItxnGroup().getApplicationInnerTxn(t).localNumUint\n },\n localNumByteSlice: function (t: internal.primitives.StubUint64Compat): uint64 {\n return lazyContext.activeGroup.getItxnGroup().getApplicationInnerTxn(t).localNumBytes\n },\n extraProgramPages: function (t: internal.primitives.StubUint64Compat): uint64 {\n return lazyContext.activeGroup.getItxnGroup().getApplicationInnerTxn(t).extraProgramPages\n },\n nonparticipation: function (t: internal.primitives.StubUint64Compat): boolean {\n return lazyContext.activeGroup.getItxnGroup().getKeyRegistrationInnerTxn(t).nonparticipation\n },\n logs: function (t: internal.primitives.StubUint64Compat, a: internal.primitives.StubUint64Compat): bytes {\n return lazyContext.activeGroup.getItxnGroup().getApplicationInnerTxn(t).logs(asUint64(a))\n },\n numLogs: function (t: internal.primitives.StubUint64Compat): uint64 {\n return lazyContext.activeGroup.getItxnGroup().getApplicationInnerTxn(t).numLogs\n },\n createdAssetId: function (t: internal.primitives.StubUint64Compat): Asset {\n return lazyContext.activeGroup.getItxnGroup().getAssetConfigInnerTxn(t).createdAsset\n },\n createdApplicationId: function (t: internal.primitives.StubUint64Compat): Application {\n return lazyContext.activeGroup.getItxnGroup().getApplicationInnerTxn(t).createdApp\n },\n lastLog: function (t: internal.primitives.StubUint64Compat): bytes {\n return lazyContext.activeGroup.getItxnGroup().getApplicationInnerTxn(t).lastLog\n },\n stateProofPk: function (t: internal.primitives.StubUint64Compat): bytes {\n return lazyContext.activeGroup.getItxnGroup().getKeyRegistrationInnerTxn(t).stateProofKey\n },\n approvalProgramPages: function (t: internal.primitives.StubUint64Compat, a: internal.primitives.StubUint64Compat): bytes {\n return lazyContext.activeGroup.getItxnGroup().getApplicationInnerTxn(t).approvalProgramPages(asUint64(a))\n },\n numApprovalProgramPages: function (t: internal.primitives.StubUint64Compat): uint64 {\n return lazyContext.activeGroup.getItxnGroup().getApplicationInnerTxn(t).numApprovalProgramPages\n },\n clearStateProgramPages: function (t: internal.primitives.StubUint64Compat, a: internal.primitives.StubUint64Compat): bytes {\n return lazyContext.activeGroup.getItxnGroup().getApplicationInnerTxn(t).clearStateProgramPages(asUint64(a))\n },\n numClearStateProgramPages: function (t: internal.primitives.StubUint64Compat): uint64 {\n return lazyContext.activeGroup.getItxnGroup().getApplicationInnerTxn(t).numClearStateProgramPages\n },\n}\nexport const ITxn: internal.opTypes.ITxnType = {\n /**\n * 32 byte address\n */\n get sender(): Account {\n return lazyContext.activeGroup.getItxnGroup().getInnerTxn().sender\n },\n /**\n * microalgos\n */\n get fee(): uint64 {\n return lazyContext.activeGroup.getItxnGroup().getInnerTxn().fee\n },\n /**\n * round number\n */\n get firstValid(): uint64 {\n return lazyContext.activeGroup.getItxnGroup().getInnerTxn().firstValid\n },\n /**\n * UNIX timestamp of block before txn.FirstValid. Fails if negative\n */\n get firstValidTime(): uint64 {\n return lazyContext.activeGroup.getItxnGroup().getInnerTxn().firstValidTime\n },\n /**\n * round number\n */\n get lastValid(): uint64 {\n return lazyContext.activeGroup.getItxnGroup().getInnerTxn().lastValid\n },\n /**\n * Any data up to 1024 bytes\n */\n get note(): bytes {\n return lazyContext.activeGroup.getItxnGroup().getInnerTxn().note\n },\n /**\n * 32 byte lease value\n */\n get lease(): bytes {\n return lazyContext.activeGroup.getItxnGroup().getInnerTxn().lease\n },\n /**\n * 32 byte address\n */\n get receiver(): Account {\n return lazyContext.activeGroup.getItxnGroup().getPaymentInnerTxn().receiver\n },\n /**\n * microalgos\n */\n get amount(): uint64 {\n return lazyContext.activeGroup.getItxnGroup().getPaymentInnerTxn().amount\n },\n /**\n * 32 byte address\n */\n get closeRemainderTo(): Account {\n return lazyContext.activeGroup.getItxnGroup().getPaymentInnerTxn().closeRemainderTo\n },\n /**\n * 32 byte address\n */\n get votePk(): bytes {\n return lazyContext.activeGroup.getItxnGroup().getKeyRegistrationInnerTxn().voteKey\n },\n /**\n * 32 byte address\n */\n get selectionPk(): bytes {\n return lazyContext.activeGroup.getItxnGroup().getKeyRegistrationInnerTxn().selectionKey\n },\n /**\n * The first round that the participation key is valid.\n */\n get voteFirst(): uint64 {\n return lazyContext.activeGroup.getItxnGroup().getKeyRegistrationInnerTxn().voteFirst\n },\n /**\n * The last round that the participation key is valid.\n */\n get voteLast(): uint64 {\n return lazyContext.activeGroup.getItxnGroup().getKeyRegistrationInnerTxn().voteLast\n },\n /**\n * Dilution for the 2-level participation key\n */\n get voteKeyDilution(): uint64 {\n return lazyContext.activeGroup.getItxnGroup().getKeyRegistrationInnerTxn().voteKeyDilution\n },\n /**\n * Transaction type as bytes\n */\n get type(): bytes {\n return asUint64Cls(lazyContext.activeGroup.getItxnGroup().getInnerTxn().type).toBytes().asAlgoTs()\n },\n /**\n * Transaction type as integer\n */\n get typeEnum(): uint64 {\n return asUint64(lazyContext.activeGroup.getItxnGroup().getInnerTxn().type)\n },\n /**\n * Asset ID\n */\n get xferAsset(): Asset {\n return lazyContext.activeGroup.getItxnGroup().getAssetTransferInnerTxn().xferAsset\n },\n /**\n * value in Asset's units\n */\n get assetAmount(): uint64 {\n return lazyContext.activeGroup.getItxnGroup().getAssetTransferInnerTxn().assetAmount\n },\n /**\n * 32 byte address. Source of assets if Sender is the Asset's Clawback address.\n */\n get assetSender(): Account {\n return lazyContext.activeGroup.getItxnGroup().getAssetTransferInnerTxn().assetSender\n },\n /**\n * 32 byte address\n */\n get assetReceiver(): Account {\n return lazyContext.activeGroup.getItxnGroup().getAssetTransferInnerTxn().assetReceiver\n },\n /**\n * 32 byte address\n */\n get assetCloseTo(): Account {\n return lazyContext.activeGroup.getItxnGroup().getAssetTransferInnerTxn().assetCloseTo\n },\n /**\n * Position of this transaction within an atomic transaction group. A stand-alone transaction is implicitly element 0 in a group of 1\n */\n get groupIndex(): uint64 {\n return lazyContext.activeGroup.getItxnGroup().getInnerTxn().groupIndex\n },\n /**\n * The computed ID for this transaction. 32 bytes.\n */\n get txId(): bytes {\n return lazyContext.activeGroup.getItxnGroup().getInnerTxn().txnId\n },\n /**\n * ApplicationID from ApplicationCall transaction\n */\n get applicationId(): Application {\n return lazyContext.activeGroup.getItxnGroup().getApplicationInnerTxn().appId\n },\n /**\n * ApplicationCall transaction on completion action\n */\n get onCompletion(): uint64 {\n const onCompletionStr = lazyContext.activeGroup.getItxnGroup().getApplicationInnerTxn().onCompletion\n return asUint64(arc4.OnCompleteAction[onCompletionStr])\n },\n /**\n * Arguments passed to the application in the ApplicationCall transaction\n */\n applicationArgs(a: internal.primitives.StubUint64Compat): bytes {\n return lazyContext.activeGroup.getItxnGroup().getApplicationInnerTxn().appArgs(asUint64(a))\n },\n /**\n * Number of ApplicationArgs\n */\n get numAppArgs(): uint64 {\n return lazyContext.activeGroup.getItxnGroup().getApplicationInnerTxn().numAppArgs\n },\n /**\n * Accounts listed in the ApplicationCall transaction\n */\n accounts(a: internal.primitives.StubUint64Compat): Account {\n return lazyContext.activeGroup.getItxnGroup().getApplicationInnerTxn().accounts(asUint64(a))\n },\n /**\n * Number of Accounts\n */\n get numAccounts(): uint64 {\n return lazyContext.activeGroup.getItxnGroup().getApplicationInnerTxn().numAccounts\n },\n /**\n * Approval program\n */\n get approvalProgram(): bytes {\n return lazyContext.activeGroup.getItxnGroup().getApplicationInnerTxn().approvalProgram\n },\n /**\n * Clear state program\n */\n get clearStateProgram(): bytes {\n return lazyContext.activeGroup.getItxnGroup().getApplicationInnerTxn().clearStateProgram\n },\n /**\n * 32 byte Sender's new AuthAddr\n */\n get rekeyTo(): Account {\n return lazyContext.activeGroup.getItxnGroup().getInnerTxn().rekeyTo\n },\n /**\n * Asset ID in asset config transaction\n */\n get configAsset(): Asset {\n return lazyContext.activeGroup.getItxnGroup().getAssetConfigInnerTxn().configAsset\n },\n /**\n * Total number of units of this asset created\n */\n get configAssetTotal(): uint64 {\n return lazyContext.activeGroup.getItxnGroup().getAssetConfigInnerTxn().total\n },\n /**\n * Number of digits to display after the decimal place when displaying the asset\n */\n get configAssetDecimals(): uint64 {\n return lazyContext.activeGroup.getItxnGroup().getAssetConfigInnerTxn().decimals\n },\n /**\n * Whether the asset's slots are frozen by default or not, 0 or 1\n */\n get configAssetDefaultFrozen(): boolean {\n return lazyContext.activeGroup.getItxnGroup().getAssetConfigInnerTxn().defaultFrozen\n },\n /**\n * Unit name of the asset\n */\n get configAssetUnitName(): bytes {\n return lazyContext.activeGroup.getItxnGroup().getAssetConfigInnerTxn().unitName\n },\n /**\n * The asset name\n */\n get configAssetName(): bytes {\n return lazyContext.activeGroup.getItxnGroup().getAssetConfigInnerTxn().assetName\n },\n /**\n * URL\n */\n get configAssetUrl(): bytes {\n return lazyContext.activeGroup.getItxnGroup().getAssetConfigInnerTxn().url\n },\n /**\n * 32 byte commitment to unspecified asset metadata\n */\n get configAssetMetadataHash(): bytes {\n return lazyContext.activeGroup.getItxnGroup().getAssetConfigInnerTxn().metadataHash\n },\n /**\n * 32 byte address\n */\n get configAssetManager(): Account {\n return lazyContext.activeGroup.getItxnGroup().getAssetConfigInnerTxn().manager\n },\n /**\n * 32 byte address\n */\n get configAssetReserve(): Account {\n return lazyContext.activeGroup.getItxnGroup().getAssetConfigInnerTxn().reserve\n },\n /**\n * 32 byte address\n */\n get configAssetFreeze(): Account {\n return lazyContext.activeGroup.getItxnGroup().getAssetConfigInnerTxn().freeze\n },\n /**\n * 32 byte address\n */\n get configAssetClawback(): Account {\n return lazyContext.activeGroup.getItxnGroup().getAssetConfigInnerTxn().clawback\n },\n /**\n * Asset ID being frozen or un-frozen\n */\n get freezeAsset(): Asset {\n return lazyContext.activeGroup.getItxnGroup().getAssetFreezeInnerTxn().freezeAsset\n },\n /**\n * 32 byte address of the account whose asset slot is being frozen or un-frozen\n */\n get freezeAssetAccount(): Account {\n return lazyContext.activeGroup.getItxnGroup().getAssetFreezeInnerTxn().freezeAccount\n },\n /**\n * The new frozen value, 0 or 1\n */\n get freezeAssetFrozen(): boolean {\n return lazyContext.activeGroup.getItxnGroup().getAssetFreezeInnerTxn().frozen\n },\n /**\n * Foreign Assets listed in the ApplicationCall transaction\n */\n assets(a: internal.primitives.StubUint64Compat): Asset {\n return lazyContext.activeGroup.getItxnGroup().getApplicationInnerTxn().assets(asUint64(a))\n },\n /**\n * Number of Assets\n */\n get numAssets(): uint64 {\n return lazyContext.activeGroup.getItxnGroup().getApplicationInnerTxn().numAssets\n },\n /**\n * Foreign Apps listed in the ApplicationCall transaction\n */\n applications(a: internal.primitives.StubUint64Compat): Application {\n return lazyContext.activeGroup.getItxnGroup().getApplicationInnerTxn().apps(asUint64(a))\n },\n /**\n * Number of Applications\n */\n get numApplications(): uint64 {\n return lazyContext.activeGroup.getItxnGroup().getApplicationInnerTxn().numApps\n },\n /**\n * Number of global state integers in ApplicationCall\n */\n get globalNumUint(): uint64 {\n return lazyContext.activeGroup.getItxnGroup().getApplicationInnerTxn().globalNumUint\n },\n /**\n * Number of global state byteslices in ApplicationCall\n */\n get globalNumByteSlice(): uint64 {\n return lazyContext.activeGroup.getItxnGroup().getApplicationInnerTxn().globalNumBytes\n },\n /**\n * Number of local state integers in ApplicationCall\n */\n get localNumUint(): uint64 {\n return lazyContext.activeGroup.getItxnGroup().getApplicationInnerTxn().localNumUint\n },\n /**\n * Number of local state byteslices in ApplicationCall\n */\n get localNumByteSlice(): uint64 {\n return lazyContext.activeGroup.getItxnGroup().getApplicationInnerTxn().localNumBytes\n },\n /**\n * Number of additional pages for each of the application's approval and clear state programs. An ExtraProgramPages of 1 means 2048 more total bytes, or 1024 for each program.\n */\n get extraProgramPages(): uint64 {\n return lazyContext.activeGroup.getItxnGroup().getApplicationInnerTxn().extraProgramPages\n },\n /**\n * Marks an account nonparticipating for rewards\n */\n get nonparticipation(): boolean {\n return lazyContext.activeGroup.getItxnGroup().getKeyRegistrationInnerTxn().nonparticipation\n },\n /**\n * Log messages emitted by an application call (only with `itxn` in v5). Application mode only\n */\n logs(a: internal.primitives.StubUint64Compat): bytes {\n return lazyContext.activeGroup.getItxnGroup().getApplicationInnerTxn().logs(asUint64(a))\n },\n /**\n * Number of Logs (only with `itxn` in v5). Application mode only\n */\n get numLogs(): uint64 {\n return lazyContext.activeGroup.getItxnGroup().getApplicationInnerTxn().numLogs\n },\n /**\n * Asset ID allocated by the creation of an ASA (only with `itxn` in v5). Application mode only\n */\n get createdAssetId(): Asset {\n return lazyContext.activeGroup.getItxnGroup().getAssetConfigInnerTxn().createdAsset\n },\n /**\n * ApplicationID allocated by the creation of an application (only with `itxn` in v5). Application mode only\n */\n get createdApplicationId(): Application {\n return lazyContext.activeGroup.getItxnGroup().getApplicationInnerTxn().createdApp\n },\n /**\n * The last message emitted. Empty bytes if none were emitted. Application mode only\n */\n get lastLog(): bytes {\n return lazyContext.activeGroup.getItxnGroup().getApplicationInnerTxn().lastLog\n },\n /**\n * 64 byte state proof public key\n */\n get stateProofPk(): bytes {\n return lazyContext.activeGroup.getItxnGroup().getKeyRegistrationInnerTxn().stateProofKey\n },\n /**\n * Approval Program as an array of pages\n */\n approvalProgramPages(a: internal.primitives.StubUint64Compat): bytes {\n return lazyContext.activeGroup.getItxnGroup().getApplicationInnerTxn().approvalProgramPages(asUint64(a))\n },\n /**\n * Number of Approval Program pages\n */\n get numApprovalProgramPages(): uint64 {\n return lazyContext.activeGroup.getItxnGroup().getApplicationInnerTxn().numApprovalProgramPages\n },\n /**\n * ClearState Program as an array of pages\n */\n clearStateProgramPages(a: internal.primitives.StubUint64Compat): bytes {\n return lazyContext.activeGroup.getItxnGroup().getApplicationInnerTxn().clearStateProgramPages(asUint64(a))\n },\n /**\n * Number of ClearState Program pages\n */\n get numClearStateProgramPages(): uint64 {\n return lazyContext.activeGroup.getItxnGroup().getApplicationInnerTxn().numClearStateProgramPages\n },\n}\n\nconst setConstructingItxnField = (fields: Partial<InnerTxnFields>): void => {\n Object.assign(lazyContext.activeGroup.constructingItxn, fields)\n}\n\nconst getConstructingItxn = <T extends InnerTxnFields>(): T => {\n return lazyContext.activeGroup.constructingItxn as T\n}\n\nexport const ITxnCreate: internal.opTypes.ITxnCreateType = {\n begin: function (): void {\n lazyContext.activeGroup.beginInnerTransactionGroup()\n },\n setSender: function (a: Account): void {\n setConstructingItxnField({ sender: a })\n },\n setFee: function (a: internal.primitives.StubUint64Compat): void {\n setConstructingItxnField({ fee: asUint64(a) })\n },\n setNote: function (a: internal.primitives.StubBytesCompat): void {\n setConstructingItxnField({ note: asBytes(a) })\n },\n setReceiver: function (a: Account): void {\n setConstructingItxnField({ receiver: a })\n },\n setAmount: function (a: internal.primitives.StubUint64Compat): void {\n setConstructingItxnField({ amount: asUint64(a) })\n },\n setCloseRemainderTo: function (a: Account): void {\n setConstructingItxnField({ closeRemainderTo: a })\n },\n setVotePk: function (a: internal.primitives.StubBytesCompat): void {\n setConstructingItxnField({ voteKey: asBytes(a) })\n },\n setSelectionPk: function (a: internal.primitives.StubBytesCompat): void {\n setConstructingItxnField({ selectionKey: asBytes(a) })\n },\n setVoteFirst: function (a: internal.primitives.StubUint64Compat): void {\n setConstructingItxnField({ voteFirst: asUint64(a) })\n },\n setVoteLast: function (a: internal.primitives.StubUint64Compat): void {\n setConstructingItxnField({ voteLast: asUint64(a) })\n },\n setVoteKeyDilution: function (a: internal.primitives.StubUint64Compat): void {\n setConstructingItxnField({ voteKeyDilution: asUint64(a) })\n },\n setType: function (a: internal.primitives.StubBytesCompat): void {\n setConstructingItxnField({ type: asBytesCls(a).toUint64().asNumber() as TransactionType })\n },\n setTypeEnum: function (a: internal.primitives.StubUint64Compat): void {\n setConstructingItxnField({ type: asUint64Cls(a).asNumber() as TransactionType })\n },\n setXferAsset: function (a: Asset | internal.primitives.StubUint64Compat): void {\n setConstructingItxnField({ xferAsset: getAsset(a) })\n },\n setAssetAmount: function (a: internal.primitives.StubUint64Compat): void {\n setConstructingItxnField({ assetAmount: asUint64(a) })\n },\n setAssetSender: function (a: Account): void {\n setConstructingItxnField({ assetSender: a })\n },\n setAssetReceiver: function (a: Account): void {\n setConstructingItxnField({ assetReceiver: a })\n },\n setAssetCloseTo: function (a: Account): void {\n setConstructingItxnField({ assetCloseTo: a })\n },\n setApplicationId: function (a: Application | internal.primitives.StubUint64Compat): void {\n setConstructingItxnField({ appId: getApp(a) })\n },\n setOnCompletion: function (a: internal.primitives.StubUint64Compat): void {\n setConstructingItxnField({ onCompletion: asUint64(a) })\n },\n setApplicationArgs: function (a: internal.primitives.StubBytesCompat): void {\n const appArgs = (getConstructingItxn<itxn.ApplicationCallFields>().appArgs ?? []) as bytes[]\n appArgs.push(asBytes(a))\n setConstructingItxnField({ appArgs })\n },\n setAccounts: function (a: Account): void {\n const accounts = (getConstructingItxn<itxn.ApplicationCallFields>().accounts ?? []) as Account[]\n accounts.push(a)\n setConstructingItxnField({ accounts })\n },\n setApprovalProgram: function (a: internal.primitives.StubBytesCompat): void {\n setConstructingItxnField({ approvalProgram: asBytes(a) })\n },\n setClearStateProgram: function (a: internal.primitives.StubBytesCompat): void {\n setConstructingItxnField({ clearStateProgram: asBytes(a) })\n },\n setRekeyTo: function (a: Account): void {\n setConstructingItxnField({ rekeyTo: a })\n },\n setConfigAsset: function (a: Asset | internal.primitives.StubUint64Compat): void {\n setConstructingItxnField({ configAsset: getAsset(a) })\n },\n setConfigAssetTotal: function (a: internal.primitives.StubUint64Compat): void {\n setConstructingItxnField({ total: asUint64(a) })\n },\n setConfigAssetDecimals: function (a: internal.primitives.StubUint64Compat): void {\n setConstructingItxnField({ decimals: asUint64(a) })\n },\n setConfigAssetDefaultFrozen: function (a: boolean): void {\n setConstructingItxnField({ defaultFrozen: a })\n },\n setConfigAssetUnitName: function (a: internal.primitives.StubBytesCompat): void {\n setConstructingItxnField({ unitName: asBytes(a) })\n },\n setConfigAssetName: function (a: internal.primitives.StubBytesCompat): void {\n setConstructingItxnField({ assetName: asBytes(a) })\n },\n setConfigAssetUrl: function (a: internal.primitives.StubBytesCompat): void {\n setConstructingItxnField({ url: asBytes(a) })\n },\n setConfigAssetMetadataHash: function (a: internal.primitives.StubBytesCompat): void {\n setConstructingItxnField({ metadataHash: asBytes(a) })\n },\n setConfigAssetManager: function (a: Account): void {\n setConstructingItxnField({ manager: a })\n },\n setConfigAssetReserve: function (a: Account): void {\n setConstructingItxnField({ reserve: a })\n },\n setConfigAssetFreeze: function (a: Account): void {\n setConstructingItxnField({ freeze: a })\n },\n setConfigAssetClawback: function (a: Account): void {\n setConstructingItxnField({ clawback: a })\n },\n setFreezeAsset: function (a: Asset | internal.primitives.StubUint64Compat): void {\n setConstructingItxnField({ freezeAsset: getAsset(a) })\n },\n setFreezeAssetAccount: function (a: Account): void {\n setConstructingItxnField({ freezeAccount: a })\n },\n setFreezeAssetFrozen: function (a: boolean): void {\n setConstructingItxnField({ frozen: a })\n },\n setAssets: function (a: internal.primitives.StubUint64Compat): void {\n const asset = getAsset(a)\n if (asset) {\n const assets = (getConstructingItxn<itxn.ApplicationCallFields>().assets ?? []) as Asset[]\n assets.push(asset)\n setConstructingItxnField({ assets })\n }\n },\n setApplications: function (a: internal.primitives.StubUint64Compat): void {\n const app = getApp(a)\n if (app) {\n const apps = (getConstructingItxn<itxn.ApplicationCallFields>().apps ?? []) as Application[]\n apps.push(app)\n setConstructingItxnField({ apps })\n }\n },\n setGlobalNumUint: function (a: internal.primitives.StubUint64Compat): void {\n setConstructingItxnField({ globalNumUint: asUint64(a) })\n },\n setGlobalNumByteSlice: function (a: internal.primitives.StubUint64Compat): void {\n setConstructingItxnField({ globalNumBytes: asUint64(a) })\n },\n setLocalNumUint: function (a: internal.primitives.StubUint64Compat): void {\n setConstructingItxnField({ localNumUint: asUint64(a) })\n },\n setLocalNumByteSlice: function (a: internal.primitives.StubUint64Compat): void {\n setConstructingItxnField({ localNumBytes: asUint64(a) })\n },\n setExtraProgramPages: function (a: internal.primitives.StubUint64Compat): void {\n setConstructingItxnField({ extraProgramPages: asUint64(a) })\n },\n setNonparticipation: function (a: boolean): void {\n setConstructingItxnField({ nonparticipation: a })\n },\n setStateProofPk: function (a: internal.primitives.StubBytesCompat): void {\n setConstructingItxnField({ stateProofKey: asBytes(a) })\n },\n setApprovalProgramPages: function (a: internal.primitives.StubBytesCompat): void {\n let pages = (getConstructingItxn<itxn.ApplicationCallFields>().approvalProgram ?? []) as bytes[]\n if (!Array.isArray(pages)) {\n pages = [pages]\n }\n pages.push(asBytes(a))\n setConstructingItxnField({ approvalProgram: pages })\n },\n setClearStateProgramPages: function (a: internal.primitives.StubBytesCompat): void {\n let pages = (getConstructingItxn<itxn.ApplicationCallFields>().clearStateProgram ?? []) as bytes[]\n if (!Array.isArray(pages)) {\n pages = [pages]\n }\n pages.push(asBytes(a))\n setConstructingItxnField({ clearStateProgram: pages })\n },\n next: function (): void {\n lazyContext.activeGroup.appendInnerTransactionGroup()\n },\n submit: function (): void {\n lazyContext.activeGroup.submitInnerTransactionGroup()\n },\n}\n","import { bytes, internal, uint64 } from '@algorandfoundation/algorand-typescript'\nimport { lazyContext } from '../context-helpers/internal-context'\n\nexport const Scratch: internal.opTypes.ScratchType = {\n loadBytes: function (a: internal.primitives.StubUint64Compat): bytes {\n const result = lazyContext.activeGroup.activeTransaction.getScratchSlot(a)\n if (result instanceof internal.primitives.BytesCls) {\n return result as bytes\n }\n throw new internal.errors.InternalError('Invalid scratch slot type')\n },\n loadUint64: function (a: internal.primitives.StubUint64Compat): uint64 {\n const result = lazyContext.activeGroup.activeTransaction.getScratchSlot(a)\n if (result instanceof internal.primitives.Uint64Cls) {\n return result as uint64\n }\n throw new internal.errors.InternalError('Invalid scratch slot type')\n },\n store: function (\n a: internal.primitives.StubUint64Compat,\n b: internal.primitives.StubUint64Compat | internal.primitives.StubBytesCompat,\n ): void {\n lazyContext.activeGroup.activeTransaction.setScratchSlot(a, b)\n },\n}\n","import { Account, Application, Bytes, bytes, uint64 } from '@algorandfoundation/algorand-typescript'\nimport algosdk from 'algosdk'\nimport { ALWAYS_APPROVE_TEAL_PROGRAM } from '../constants'\nimport { lazyContext } from '../context-helpers/internal-context'\nimport { Mutable } from '../typescript-helpers'\nimport { asBigInt, asUint64 } from '../util'\n\nexport class ApplicationData {\n application: Mutable<Omit<Application, 'id' | 'address'>> & { appLogs: bytes[] }\n isCreating: boolean = false\n\n get appLogs() {\n return this.application.appLogs\n }\n\n constructor() {\n this.application = {\n approvalProgram: ALWAYS_APPROVE_TEAL_PROGRAM,\n clearStateProgram: ALWAYS_APPROVE_TEAL_PROGRAM,\n globalNumUint: 0,\n globalNumBytes: 0,\n localNumUint: 0,\n localNumBytes: 0,\n extraProgramPages: 0,\n creator: lazyContext.defaultSender,\n appLogs: [],\n }\n }\n}\n\nexport class ApplicationCls implements Application {\n readonly id: uint64\n\n constructor(id?: uint64) {\n this.id = asUint64(id ?? 0)\n }\n\n private get data(): ApplicationData {\n return lazyContext.getApplicationData(this.id)\n }\n get approvalProgram(): bytes {\n return this.data.application.approvalProgram\n }\n get clearStateProgram(): bytes {\n return this.data.application.clearStateProgram\n }\n get globalNumUint(): uint64 {\n return this.data.application.globalNumUint\n }\n get globalNumBytes(): uint64 {\n return this.data.application.globalNumBytes\n }\n get localNumUint(): uint64 {\n return this.data.application.localNumUint\n }\n get localNumBytes(): uint64 {\n return this.data.application.localNumBytes\n }\n get extraProgramPages(): uint64 {\n return this.data.application.extraProgramPages\n }\n get creator(): Account {\n return this.data.application.creator\n }\n get address(): Account {\n const addr = algosdk.getApplicationAddress(asBigInt(this.id))\n return Account(Bytes(addr))\n }\n}\n","import { Account, Asset, bytes, internal, uint64 } from '@algorandfoundation/algorand-typescript'\nimport { lazyContext } from '../context-helpers/internal-context'\nimport { asBigInt, asUint64 } from '../util'\nimport { Mutable } from '../typescript-helpers'\nimport { AssetHolding } from './account'\n\nexport type AssetData = Mutable<Omit<Asset, 'id' | 'balance' | 'frozen'>>\n\nexport class AssetCls implements Asset {\n readonly id: uint64\n\n constructor(id?: internal.primitives.StubUint64Compat) {\n this.id = asUint64(id ?? 0)\n }\n\n private get data(): AssetData {\n return lazyContext.getAssetData(this.id)\n }\n\n get total(): uint64 {\n return this.data.total\n }\n get decimals(): uint64 {\n return this.data.decimals\n }\n get defaultFrozen(): boolean {\n return this.data.defaultFrozen\n }\n get unitName(): bytes {\n return this.data.unitName\n }\n get name(): bytes {\n return this.data.name\n }\n get url(): bytes {\n return this.data.url\n }\n get metadataHash(): bytes {\n return this.data.metadataHash\n }\n get manager(): Account {\n return this.data.manager\n }\n get reserve(): Account {\n return this.data.reserve\n }\n get freeze(): Account {\n return this.data.freeze\n }\n get clawback(): Account {\n return this.data.clawback\n }\n get creator(): Account {\n return this.data.creator\n }\n balance(account: Account): uint64 {\n return this.getAssetHolding(account).balance\n }\n frozen(account: Account): boolean {\n return this.getAssetHolding(account).frozen\n }\n\n private getAssetHolding(account: Account): AssetHolding {\n const accountData = lazyContext.getAccountData(account.bytes)\n if (!accountData.optedAssets.has(asBigInt(this.id))) {\n internal.errors.internalError(\n 'The asset is not opted into the account! Use `ctx.any.account(opted_asset_balances={{ASSET_ID: VALUE}})` to set emulated opted asset into the account.',\n )\n }\n return accountData.optedAssets.get(asBigInt(this.id))!\n }\n}\n","import { Account, Application, Asset, bytes, internal, uint64 } from '@algorandfoundation/algorand-typescript'\nimport { DEFAULT_ACCOUNT_MIN_BALANCE, ZERO_ADDRESS } from '../constants'\nimport { lazyContext } from '../context-helpers/internal-context'\nimport { Mutable } from '../typescript-helpers'\nimport { asBytes, asUint64, asUint64Cls } from '../util'\nimport { ApplicationCls } from './application'\nimport { AssetCls } from './asset'\n\nexport class AssetHolding {\n balance: uint64\n frozen: boolean\n constructor(balance: internal.primitives.StubUint64Compat, frozen: boolean) {\n this.balance = asUint64(balance)\n this.frozen = frozen\n }\n}\n\nexport class AccountData {\n optedAssets = new Map<bigint, AssetHolding>()\n optedApplications = new Map<bigint, Application>()\n account: Mutable<Omit<Account, 'bytes' | 'isOptedIn'>>\n\n constructor() {\n this.account = {\n totalAppsCreated: 0,\n totalAppsOptedIn: 0,\n totalAssets: 0,\n totalAssetsCreated: 0,\n totalBoxBytes: 0,\n totalBoxes: 0,\n totalExtraAppPages: 0,\n totalNumByteSlice: 0,\n totalNumUint: 0,\n minBalance: DEFAULT_ACCOUNT_MIN_BALANCE,\n balance: 0,\n authAddress: Account(),\n }\n }\n}\n\nexport class AccountCls implements Account {\n readonly bytes: bytes\n\n constructor(address?: internal.primitives.StubBytesCompat) {\n this.bytes = asBytes(address ?? ZERO_ADDRESS)\n }\n\n private get data(): AccountData {\n return lazyContext.getAccountData(this.bytes)\n }\n\n get balance(): uint64 {\n return this.data.account.balance\n }\n get minBalance(): uint64 {\n return this.data.account.minBalance\n }\n get authAddress(): Account {\n return this.data.account.authAddress\n }\n get totalNumUint(): uint64 {\n return this.data.account.totalNumUint\n }\n get totalNumByteSlice(): uint64 {\n return this.data.account.totalNumByteSlice\n }\n get totalExtraAppPages(): uint64 {\n return this.data.account.totalExtraAppPages\n }\n get totalAppsCreated(): uint64 {\n return this.data.account.totalAppsCreated\n }\n get totalAppsOptedIn(): uint64 {\n return this.data.account.totalAppsOptedIn\n }\n get totalAssetsCreated(): uint64 {\n return this.data.account.totalAssetsCreated\n }\n get totalAssets(): uint64 {\n return this.data.account.totalAssets\n }\n get totalBoxes(): uint64 {\n return this.data.account.totalBoxes\n }\n get totalBoxBytes(): uint64 {\n return this.data.account.totalBoxBytes\n }\n\n isOptedIn(assetOrApp: Asset | Application): boolean {\n if (assetOrApp instanceof AssetCls) {\n return this.data.optedAssets.has(asUint64Cls(assetOrApp.id).asBigInt())\n }\n if (assetOrApp instanceof ApplicationCls) {\n return this.data.optedApplications.has(asUint64Cls(assetOrApp.id).asBigInt())\n }\n throw new internal.errors.InternalError('Invalid argument type. Must be an `algopy.Asset` or `algopy.Application` instance.')\n }\n}\n","import {\n Account,\n Application,\n arc4,\n Asset,\n bytes,\n Bytes,\n gtxn,\n internal,\n TransactionType,\n uint64,\n Uint64,\n} from '@algorandfoundation/algorand-typescript'\nimport { MAX_ITEMS_IN_LOG } from '../constants'\nimport { lazyContext } from '../context-helpers/internal-context'\nimport { Mutable, ObjectKeys } from '../typescript-helpers'\nimport { asBytes, asMaybeBytesCls, asMaybeUint64Cls, asNumber, asUint64Cls, combineIntoMaxBytePages, getRandomBytes } from '../util'\n\nconst baseDefaultFields = () => ({\n sender: lazyContext.defaultSender,\n fee: Uint64(0),\n firstValid: Uint64(0),\n firstValidTime: Uint64(0),\n lastValid: Uint64(0),\n note: Bytes(),\n lease: Bytes(),\n groupIndex: Uint64(0),\n txnId: getRandomBytes(32).asAlgoTs(),\n rekeyTo: Account(),\n})\n\nexport type TxnFields<TTxn> = Partial<Mutable<Pick<TTxn, ObjectKeys<TTxn>>>>\n\nabstract class TransactionBase {\n protected constructor(fields: Partial<ReturnType<typeof baseDefaultFields>>) {\n const baseDefaults = baseDefaultFields()\n this.sender = fields.sender ?? baseDefaults.sender\n this.fee = fields.fee ?? baseDefaults.fee\n this.firstValid = fields.firstValid ?? baseDefaults.firstValid\n this.firstValidTime = fields.firstValidTime ?? baseDefaults.firstValidTime\n this.lastValid = fields.lastValid ?? baseDefaults.lastValid\n this.note = fields.note ?? baseDefaults.note\n this.lease = fields.lease ?? baseDefaults.lease\n this.groupIndex = fields.groupIndex ?? baseDefaults.groupIndex\n this.txnId = fields.txnId ?? baseDefaults.txnId\n this.rekeyTo = fields.rekeyTo ?? baseDefaults.rekeyTo\n this.scratchSpace = Array(256).fill(Uint64(0))\n }\n\n readonly sender: Account\n readonly fee: uint64\n readonly firstValid: uint64\n readonly firstValidTime: uint64\n readonly lastValid: uint64\n readonly note: bytes\n readonly lease: bytes\n readonly groupIndex: uint64\n readonly txnId: bytes\n readonly rekeyTo: Account\n readonly scratchSpace: Array<bytes | uint64>\n\n setScratchSlot(\n index: internal.primitives.StubUint64Compat,\n value: internal.primitives.StubBytesCompat | internal.primitives.StubUint64Compat,\n ): void {\n const i = asNumber(index)\n if (i >= this.scratchSpace.length) {\n throw internal.errors.internalError('invalid scratch slot')\n }\n const bytesValue = asMaybeBytesCls(value)\n const uint64Value = asMaybeUint64Cls(value)\n this.scratchSpace[i] = bytesValue?.asAlgoTs() ?? uint64Value?.asAlgoTs() ?? Uint64(0)\n }\n\n getScratchSlot(index: internal.primitives.StubUint64Compat): bytes | uint64 {\n const i = asNumber(index)\n if (i >= this.scratchSpace.length) {\n throw internal.errors.internalError('invalid scratch slot')\n }\n return this.scratchSpace[i]\n }\n}\n\nexport class PaymentTransaction extends TransactionBase implements gtxn.PaymentTxn {\n /* @internal */\n static create(fields: TxnFields<gtxn.PaymentTxn>) {\n return new PaymentTransaction(fields)\n }\n\n protected constructor(fields: TxnFields<gtxn.PaymentTxn>) {\n super(fields)\n this.receiver = fields.receiver ?? Account()\n this.amount = fields.amount ?? Uint64(0)\n this.closeRemainderTo = fields.closeRemainderTo ?? Account()\n }\n\n readonly receiver: Account\n readonly amount: uint64\n readonly closeRemainderTo: Account\n readonly type: TransactionType.Payment = TransactionType.Payment\n readonly typeBytes: bytes = asUint64Cls(TransactionType.Payment).toBytes().asAlgoTs()\n}\n\nexport class KeyRegistrationTransaction extends TransactionBase implements gtxn.KeyRegistrationTxn {\n /* @internal */\n static create(fields: TxnFields<gtxn.KeyRegistrationTxn>) {\n return new KeyRegistrationTransaction(fields)\n }\n\n protected constructor(fields: TxnFields<gtxn.KeyRegistrationTxn>) {\n super(fields)\n this.voteKey = fields.voteKey ?? Bytes()\n this.selectionKey = fields.selectionKey ?? Bytes()\n this.voteFirst = fields.voteFirst ?? Uint64(0)\n this.voteLast = fields.voteLast ?? Uint64(0)\n this.voteKeyDilution = fields.voteKeyDilution ?? Uint64(0)\n this.nonparticipation = fields.nonparticipation ?? false\n this.stateProofKey = fields.stateProofKey ?? Bytes()\n }\n\n readonly voteKey: bytes\n readonly selectionKey: bytes\n readonly voteFirst: uint64\n readonly voteLast: uint64\n readonly voteKeyDilution: uint64\n readonly nonparticipation: boolean\n readonly stateProofKey: bytes\n readonly type: TransactionType.KeyRegistration = TransactionType.KeyRegistration\n readonly typeBytes: bytes = asUint64Cls(TransactionType.KeyRegistration).toBytes().asAlgoTs()\n}\n\nexport class AssetConfigTransaction extends TransactionBase implements gtxn.AssetConfigTxn {\n /* @internal */\n static create(fields: TxnFields<gtxn.AssetConfigTxn>) {\n return new AssetConfigTransaction(fields)\n }\n\n protected constructor(fields: TxnFields<gtxn.AssetConfigTxn>) {\n super(fields)\n this.configAsset = fields.configAsset ?? Asset()\n this.total = fields.total ?? Uint64(0)\n this.decimals = fields.decimals ?? Uint64(0)\n this.defaultFrozen = fields.defaultFrozen ?? false\n this.unitName = fields.unitName ?? Bytes()\n this.assetName = fields.assetName ?? Bytes()\n this.url = fields.url ?? Bytes()\n this.metadataHash = fields.metadataHash ?? Bytes()\n this.manager = fields.manager ?? Account()\n this.reserve = fields.reserve ?? Account()\n this.freeze = fields.freeze ?? Account()\n this.clawback = fields.clawback ?? Account()\n this.createdAsset = fields.createdAsset ?? Asset()\n }\n\n readonly configAsset: Asset\n readonly total: uint64\n readonly decimals: uint64\n readonly defaultFrozen: boolean\n readonly unitName: bytes\n readonly assetName: bytes\n readonly url: bytes\n readonly metadataHash: bytes\n readonly manager: Account\n readonly reserve: Account\n readonly freeze: Account\n readonly clawback: Account\n readonly createdAsset: Asset\n readonly type: TransactionType.AssetConfig = TransactionType.AssetConfig\n readonly typeBytes: bytes = asUint64Cls(TransactionType.AssetConfig).toBytes().asAlgoTs()\n}\n\nexport class AssetTransferTransaction extends TransactionBase implements gtxn.AssetTransferTxn {\n /* @internal */\n static create(fields: TxnFields<gtxn.AssetTransferTxn>) {\n return new AssetTransferTransaction(fields)\n }\n\n protected constructor(fields: TxnFields<gtxn.AssetTransferTxn>) {\n super(fields)\n this.xferAsset = fields.xferAsset ?? Asset()\n this.assetAmount = fields.assetAmount ?? Uint64(0)\n this.assetSender = fields.assetSender ?? Account()\n this.assetReceiver = fields.assetReceiver ?? Account()\n this.assetCloseTo = fields.assetCloseTo ?? Account()\n }\n\n readonly xferAsset: Asset\n readonly assetAmount: uint64\n readonly assetSender: Account\n readonly assetReceiver: Account\n readonly assetCloseTo: Account\n\n readonly type: TransactionType.AssetTransfer = TransactionType.AssetTransfer\n readonly typeBytes: bytes = asUint64Cls(TransactionType.AssetTransfer).toBytes().asAlgoTs()\n}\n\nexport class AssetFreezeTransaction extends TransactionBase implements gtxn.AssetFreezeTxn {\n /* @internal */\n static create(fields: TxnFields<gtxn.AssetFreezeTxn>) {\n return new AssetFreezeTransaction(fields)\n }\n\n protected constructor(fields: TxnFields<gtxn.AssetFreezeTxn>) {\n super(fields)\n this.freezeAsset = fields.freezeAsset ?? Asset()\n this.freezeAccount = fields.freezeAccount ?? Account()\n this.frozen = fields.frozen ?? false\n }\n\n readonly freezeAsset: Asset\n readonly freezeAccount: Account\n readonly frozen: boolean\n\n readonly type: TransactionType.AssetFreeze = TransactionType.AssetFreeze\n readonly typeBytes: bytes = asUint64Cls(TransactionType.AssetFreeze).toBytes().asAlgoTs()\n}\n\nexport type ApplicationTransactionFields = TxnFields<gtxn.ApplicationTxn> &\n Partial<{\n appArgs: Array<bytes>\n accounts: Array<Account>\n assets: Array<Asset>\n apps: Array<Application>\n approvalProgramPages: Array<bytes>\n clearStateProgramPages: Array<bytes>\n appLogs: Array<bytes>\n scratchSpace: Array<bytes | uint64>\n }>\n\nexport class ApplicationTransaction extends TransactionBase implements gtxn.ApplicationTxn {\n /* @internal */\n static create(fields: ApplicationTransactionFields) {\n return new ApplicationTransaction(fields)\n }\n #appArgs: Array<bytes>\n #accounts: Array<Account>\n #assets: Array<Asset>\n #apps: Array<Application>\n #approvalProgramPages: Array<bytes>\n #clearStateProgramPages: Array<bytes>\n #appLogs: Array<bytes>\n\n protected constructor(fields: ApplicationTransactionFields) {\n super(fields)\n this.appId = fields.appId ?? Application()\n this.onCompletion = fields.onCompletion ?? 'NoOp'\n this.globalNumUint = fields.globalNumUint ?? Uint64(0)\n this.globalNumBytes = fields.globalNumBytes ?? Uint64(0)\n this.localNumUint = fields.localNumUint ?? Uint64(0)\n this.localNumBytes = fields.localNumBytes ?? Uint64(0)\n this.extraProgramPages = fields.extraProgramPages ?? Uint64(0)\n this.createdApp = fields.createdApp ?? Application()\n this.#appArgs = fields.appArgs ?? []\n this.#appLogs = fields.appLogs ?? []\n this.#accounts = fields.accounts ?? []\n this.#assets = fields.assets ?? []\n this.#apps = fields.apps ?? []\n this.#approvalProgramPages = fields.approvalProgramPages ?? (fields.approvalProgram ? [fields.approvalProgram] : [])\n this.#clearStateProgramPages = fields.clearStateProgramPages ?? (fields.clearStateProgram ? [fields.clearStateProgram] : [])\n fields.scratchSpace?.forEach((v, i) => this.setScratchSlot(i, v))\n }\n\n readonly appId: Application\n readonly onCompletion: arc4.OnCompleteActionStr\n readonly globalNumUint: uint64\n readonly globalNumBytes: uint64\n readonly localNumUint: uint64\n readonly localNumBytes: uint64\n readonly extraProgramPages: uint64\n readonly createdApp: Application\n get approvalProgram() {\n return this.approvalProgramPages(0)\n }\n get clearStateProgram() {\n return this.clearStateProgramPages(0)\n }\n get numAppArgs() {\n return Uint64(this.#appArgs.length)\n }\n get numAccounts() {\n return Uint64(this.#accounts.length)\n }\n get numAssets() {\n return Uint64(this.#assets.length)\n }\n get numApps() {\n return Uint64(this.#apps.length)\n }\n get numApprovalProgramPages() {\n return Uint64(this.approvalProgramPages.length)\n }\n get numClearStateProgramPages() {\n return Uint64(this.clearStateProgramPages.length)\n }\n get numLogs() {\n return Uint64(this.#appLogs.length || lazyContext.getApplicationData(this.appId.id).appLogs.length)\n }\n get lastLog() {\n return this.#appLogs.at(-1) ?? lazyContext.getApplicationData(this.appId.id).appLogs.at(-1) ?? Bytes()\n }\n appArgs(index: internal.primitives.StubUint64Compat): bytes {\n return this.#appArgs[asNumber(index)]\n }\n accounts(index: internal.primitives.StubUint64Compat): Account {\n return this.#accounts[asNumber(index)]\n }\n assets(index: internal.primitives.StubUint64Compat): Asset {\n return this.#assets[asNumber(index)]\n }\n apps(index: internal.primitives.StubUint64Compat): Application {\n return this.#apps[asNumber(index)]\n }\n approvalProgramPages(index: internal.primitives.StubUint64Compat): bytes {\n return combineIntoMaxBytePages(this.#approvalProgramPages)[asNumber(index)]\n }\n clearStateProgramPages(index: internal.primitives.StubUint64Compat): bytes {\n return combineIntoMaxBytePages(this.#clearStateProgramPages)[asNumber(index)]\n }\n logs(index: internal.primitives.StubUint64Compat): bytes {\n const i = asNumber(index)\n return this.#appLogs[i] ?? lazyContext.getApplicationData(this.appId.id).appLogs ?? Bytes()\n }\n readonly type: TransactionType.ApplicationCall = TransactionType.ApplicationCall\n readonly typeBytes: bytes = asUint64Cls(TransactionType.ApplicationCall).toBytes().asAlgoTs()\n\n /* @internal */\n get appLogs() {\n return this.#appLogs\n }\n /* @internal */\n appendLog(value: internal.primitives.StubBytesCompat): void {\n if (this.#appLogs.length + 1 > MAX_ITEMS_IN_LOG) {\n throw internal.errors.internalError(`Too many log calls in program, up to ${MAX_ITEMS_IN_LOG} is allowed`)\n }\n this.#appLogs.push(asBytes(value))\n }\n}\n\nexport type Transaction =\n | PaymentTransaction\n | KeyRegistrationTransaction\n | AssetConfigTransaction\n | AssetTransferTransaction\n | AssetFreezeTransaction\n | ApplicationTransaction\n\nexport type AllTransactionFields = TxnFields<gtxn.PaymentTxn> &\n TxnFields<gtxn.KeyRegistrationTxn> &\n TxnFields<gtxn.AssetConfigTxn> &\n TxnFields<gtxn.AssetTransferTxn> &\n TxnFields<gtxn.AssetFreezeTxn> &\n ApplicationTransactionFields\n","import { Account, Application, Asset, BaseContract, Bytes, bytes, Contract, internal } from '@algorandfoundation/algorand-typescript'\nimport { getAbiMetadata, hasAbiMetadata } from '../abi-metadata'\nimport { lazyContext } from '../context-helpers/internal-context'\nimport { AccountCls } from '../impl/account'\nimport { ApplicationCls } from '../impl/application'\nimport { AssetCls } from '../impl/asset'\nimport {\n ApplicationTransaction,\n AssetConfigTransaction,\n AssetFreezeTransaction,\n AssetTransferTransaction,\n KeyRegistrationTransaction,\n PaymentTransaction,\n Transaction,\n} from '../impl/transactions'\nimport { getGenericTypeInfo } from '../runtime-helpers'\nimport { DeliberateAny } from '../typescript-helpers'\nimport { extractGenericTypeArgs } from '../util'\n\ninterface IConstructor<T> {\n new (...args: DeliberateAny[]): T\n}\n\ntype StateTotals = Pick<Application, 'globalNumBytes' | 'globalNumUint' | 'localNumBytes' | 'localNumUint'>\n\ninterface States {\n globalStates: Map<bytes, internal.state.GlobalStateCls<unknown>>\n localStates: Map<bytes, internal.state.LocalStateMapCls<unknown>>\n totals: StateTotals\n}\n\nconst isUint64GenericType = (typeName: string | undefined) => {\n if (typeName === undefined) return false\n const genericTypes: string[] = extractGenericTypeArgs(typeName)\n return genericTypes.some((t) => t.toLocaleLowerCase() === 'uint64')\n}\n\nconst extractStates = (contract: BaseContract): States => {\n const stateTotals = { globalNumBytes: 0, globalNumUint: 0, localNumBytes: 0, localNumUint: 0 }\n const states = {\n globalStates: new Map<bytes, internal.state.GlobalStateCls<unknown>>(),\n localStates: new Map<bytes, internal.state.LocalStateMapCls<unknown>>(),\n totals: stateTotals,\n }\n Object.entries(contract).forEach(([key, value]) => {\n const isLocalState = value instanceof Function && value.name === 'localStateInternal'\n const isGlobalState = value instanceof internal.state.GlobalStateCls\n if (isLocalState || isGlobalState) {\n // set key using property name if not already set\n if (value.key === undefined) value.key = Bytes(key)\n\n // capture state into the context\n if (isLocalState) states.localStates.set(value.key, value.map)\n else states.globalStates.set(value.key, value)\n\n // populate state totals\n const isUint64State = isUint64GenericType(getGenericTypeInfo(value)!)\n stateTotals.globalNumUint += isGlobalState && isUint64State ? 1 : 0\n stateTotals.globalNumBytes += isGlobalState && !isUint64State ? 1 : 0\n stateTotals.localNumUint += isLocalState && isUint64State ? 1 : 0\n stateTotals.localNumBytes += isLocalState && !isUint64State ? 1 : 0\n }\n })\n return states\n}\n\nconst extractArraysFromArgs = (args: DeliberateAny[]) => {\n const transactions: Transaction[] = []\n const accounts: Account[] = []\n const apps: Application[] = []\n const assets: Asset[] = []\n for (const arg of args) {\n if (isTransaction(arg)) {\n transactions.push(arg)\n } else if (arg instanceof AccountCls) {\n accounts.push(arg as Account)\n } else if (arg instanceof ApplicationCls) {\n apps.push(arg as Application)\n } else if (arg instanceof AssetCls) {\n assets.push(arg as Asset)\n }\n }\n return { accounts, apps, assets, transactions }\n}\n\nfunction isTransaction(obj: unknown): obj is Transaction {\n return (\n obj instanceof PaymentTransaction ||\n obj instanceof KeyRegistrationTransaction ||\n obj instanceof AssetConfigTransaction ||\n obj instanceof AssetTransferTransaction ||\n obj instanceof AssetFreezeTransaction ||\n obj instanceof ApplicationTransaction\n )\n}\n\nexport class ContractContext {\n create<T extends BaseContract>(type: IConstructor<T>, ...args: DeliberateAny[]): T {\n const proxy = new Proxy(type, this.getContractProxyHandler<T>())\n return new proxy(...args)\n }\n\n private getContractProxyHandler<T extends BaseContract>(): ProxyHandler<IConstructor<T>> {\n const onConstructed = (instance: BaseContract) => {\n const states = extractStates(instance)\n\n const application = lazyContext.any.application({\n ...states.totals,\n })\n lazyContext.ledger.addAppIdContractMap(application.id, instance)\n }\n return {\n construct(target, args) {\n let isArc4 = false\n const instance = new Proxy(new target(...args), {\n get(target, prop, receiver) {\n const orig = Reflect.get(target, prop, receiver)\n if (isArc4 || prop === 'approvalProgram' || prop === 'clearStateProgram') {\n return (...args: DeliberateAny[]): DeliberateAny => {\n const app = lazyContext.ledger.getApplicationForContract(receiver)\n const { transactions, ...appCallArgs } = extractArraysFromArgs(args)\n const abiMetadata = getAbiMetadata(receiver, prop as string)\n const txns = [\n ...(transactions ?? []),\n lazyContext.any.txn.applicationCall({\n appId: app,\n ...appCallArgs,\n onCompletion: (abiMetadata?.allowActions ?? [])[0],\n }),\n ]\n return lazyContext.txn.ensureScope(txns).execute(() => (orig as DeliberateAny).apply(target, args))\n }\n }\n return orig\n },\n })\n onConstructed(instance)\n isArc4 = hasAbiMetadata(instance as Contract)\n\n return instance\n },\n }\n }\n}\n","import { Account, Application, Asset, BaseContract, internal } from '@algorandfoundation/algorand-typescript'\nimport { MAX_UINT64 } from '../constants'\nimport { AccountData, AssetHolding } from '../impl/account'\nimport { ApplicationData } from '../impl/application'\nimport { AssetData } from '../impl/asset'\nimport { asBigInt, asBytesCls, asMaybeBytesCls, asMaybeUint64Cls, asUint64, asUint64Cls, iterBigInt } from '../util'\nimport { GlobalData } from '../impl/global'\n\nexport class LedgerContext {\n appIdIter = iterBigInt(1001n, MAX_UINT64)\n assetIdIter = iterBigInt(1001n, MAX_UINT64)\n applicationDataMap = new Map<bigint, ApplicationData>()\n appIdContractMap = new Map<bigint, BaseContract>()\n accountDataMap = new Map<string, AccountData>()\n assetDataMap = new Map<bigint, AssetData>()\n globalData = new GlobalData()\n\n addAppIdContractMap(appId: internal.primitives.StubUint64Compat, contract: BaseContract): void {\n this.appIdContractMap.set(asBigInt(appId), contract)\n }\n\n getAsset(assetId: internal.primitives.StubUint64Compat): Asset {\n const id = asBigInt(assetId)\n if (this.assetDataMap.has(id)) {\n return Asset(asUint64(id))\n }\n throw internal.errors.internalError('Unknown asset, check correct testing context is active')\n }\n\n getApplication(applicationId: internal.primitives.StubUint64Compat): Application {\n const id = asBigInt(applicationId)\n if (this.applicationDataMap.has(id)) {\n return Application(asUint64(id))\n }\n throw internal.errors.internalError('Unknown application, check correct testing context is active')\n }\n\n getApplicationForContract(contract: BaseContract): Application {\n for (const [appId, c] of this.appIdContractMap) {\n if (c === contract) {\n if (this.applicationDataMap.has(appId)) {\n return Application(asUint64(appId))\n }\n }\n }\n throw internal.errors.internalError('Unknown contract, check correct testing context is active')\n }\n\n /**\n * Update asset holdings for account, only specified values will be updated.\n * Account will also be opted-in to asset\n * @param accountAddress\n * @param assetId\n * @param balance\n * @param frozen\n */\n updateAssetHolding(\n accountAddress: internal.primitives.StubBytesCompat | Account,\n assetId: internal.primitives.StubUint64Compat | Asset,\n balance?: internal.primitives.StubUint64Compat,\n frozen?: boolean,\n ): void {\n const addr = (asMaybeBytesCls(accountAddress) ?? asBytesCls((accountAddress as Account).bytes)).toString()\n const id = (asMaybeUint64Cls(assetId) ?? asUint64Cls((assetId as Asset).id)).asBigInt()\n const accountData = this.accountDataMap.get(addr)!\n const asset = this.assetDataMap.get(id)!\n const holding = accountData.optedAssets.get(id) ?? new AssetHolding(0n, asset.defaultFrozen)\n if (balance !== undefined) holding.balance = asUint64(balance)\n if (frozen !== undefined) holding.frozen = frozen\n accountData.optedAssets.set(id, holding)\n }\n\n patchGlobalData(data: Partial<GlobalData>) {\n this.globalData = {\n ...this.globalData,\n ...data,\n }\n }\n}\n","import { internal } from '@algorandfoundation/algorand-typescript'\n\nexport type LogDecoding = 'i' | 's' | 'b'\n\nexport type DecodedLog<T extends LogDecoding> = T extends 'i' ? bigint : T extends 's' ? string : Uint8Array\nexport type DecodedLogs<T extends [...LogDecoding[]]> = {\n [Index in keyof T]: DecodedLog<T[Index]>\n} & { length: T['length'] }\nexport function decodeLogs<const T extends [...LogDecoding[]]>(logs: Uint8Array[], decoding: T): DecodedLogs<T> {\n return logs.map((log, i) => {\n switch (decoding[i]) {\n case 'i':\n return internal.encodingUtil.uint8ArrayToBigInt(log)\n case 's':\n return internal.encodingUtil.uint8ArrayToUtf8(log)\n default:\n return log\n }\n }) as DecodedLogs<T>\n}\n","import { Account, Application, arc4, Asset, bytes, internal, itxn, TransactionType, uint64 } from '@algorandfoundation/algorand-typescript'\nimport {\n ApplicationTransaction,\n AssetConfigTransaction,\n AssetFreezeTransaction,\n AssetTransferTransaction,\n KeyRegistrationTransaction,\n PaymentTransaction,\n} from './transactions'\nimport { asBytes, toBytes } from '../util'\nimport { getAsset } from './asset-params'\nimport { InnerTxn, InnerTxnFields } from './itxn'\nimport { getApp } from './app-params'\nimport { Mutable } from '../typescript-helpers'\nimport { lazyContext } from '../context-helpers/internal-context'\n\nconst mapCommonFields = <T extends InnerTxnFields>(\n fields: T,\n): Omit<T, 'sender' | 'note' | 'rekeyTo'> & { sender?: Account; note?: bytes; rekeyTo?: Account } => {\n const { sender, note, rekeyTo, ...rest } = fields\n\n return {\n sender:\n sender instanceof Account ? sender : typeof sender === 'string' ? Account(asBytes(sender)) : lazyContext.activeApplication.address,\n note: note !== undefined ? asBytes(note) : undefined,\n rekeyTo: rekeyTo instanceof Account ? rekeyTo : typeof rekeyTo === 'string' ? Account(asBytes(rekeyTo)) : undefined,\n ...rest,\n }\n}\nexport class PaymentInnerTxn extends PaymentTransaction implements itxn.PaymentInnerTxn {\n readonly isItxn?: true\n\n /* @internal */\n static create(fields: itxn.PaymentFields) {\n return new PaymentInnerTxn(fields)\n }\n\n /* @internal */\n constructor(fields: itxn.PaymentFields) {\n super(mapCommonFields(fields))\n }\n}\n\nexport class KeyRegistrationInnerTxn extends KeyRegistrationTransaction implements itxn.KeyRegistrationInnerTxn {\n readonly isItxn?: true\n\n /* @internal */\n static create(fields: itxn.KeyRegistrationFields) {\n return new KeyRegistrationInnerTxn(fields)\n }\n\n /* @internal */\n constructor(fields: itxn.KeyRegistrationFields) {\n super(mapCommonFields(fields))\n }\n}\n\nexport class AssetConfigInnerTxn extends AssetConfigTransaction implements itxn.AssetConfigInnerTxn {\n readonly isItxn?: true\n\n /* @internal */\n static create(fields: itxn.AssetConfigFields) {\n return new AssetConfigInnerTxn(fields)\n }\n\n /* @internal */\n constructor(fields: itxn.AssetConfigFields) {\n const { assetName, unitName, url, ...rest } = mapCommonFields(fields)\n const createdAsset = lazyContext.any.asset({\n name: typeof assetName === 'string' ? asBytes(assetName) : assetName,\n unitName: typeof unitName === 'string' ? asBytes(unitName) : unitName,\n url: typeof url === 'string' ? asBytes(url) : url,\n ...rest,\n })\n\n super({\n assetName: typeof assetName === 'string' ? asBytes(assetName) : assetName,\n unitName: typeof unitName === 'string' ? asBytes(unitName) : unitName,\n url: typeof url === 'string' ? asBytes(url) : url,\n ...rest,\n createdAsset: createdAsset,\n })\n }\n}\n\nexport class AssetTransferInnerTxn extends AssetTransferTransaction implements itxn.AssetTransferInnerTxn {\n readonly isItxn?: true\n\n /* @internal */\n static create(fields: Partial<itxn.AssetTransferFields>) {\n if (fields.xferAsset === undefined) {\n throw new Error('xferAsset is required')\n }\n return new AssetTransferInnerTxn(fields as itxn.AssetTransferFields)\n }\n\n /* @internal */\n constructor(fields: itxn.AssetTransferFields) {\n super(mapCommonFields(fields))\n }\n}\n\nexport class AssetFreezeInnerTxn extends AssetFreezeTransaction implements itxn.AssetFreezeInnerTxn {\n readonly isItxn?: true\n\n /* @internal */\n static create(fields: Partial<itxn.AssetFreezeFields>) {\n if (fields.freezeAsset === undefined) {\n throw new Error('freezeAsset is required')\n }\n return new AssetFreezeInnerTxn(fields as itxn.AssetFreezeFields)\n }\n\n /* @internal */\n constructor(fields: itxn.AssetFreezeFields) {\n const { freezeAsset, freezeAccount, ...rest } = mapCommonFields(fields)\n const asset: Asset | undefined = freezeAsset instanceof internal.primitives.Uint64Cls ? getAsset(freezeAsset) : (freezeAsset as Asset)\n const account: Account | undefined = typeof freezeAccount === 'string' ? Account(asBytes(freezeAccount)) : (freezeAccount as Account)\n super({\n freezeAsset: asset,\n freezeAccount: account,\n ...rest,\n })\n }\n}\n\nexport class ApplicationInnerTxn extends ApplicationTransaction implements itxn.ApplicationInnerTxn {\n readonly isItxn?: true\n\n /* @internal */\n static create(\n fields: Omit<itxn.ApplicationCallFields, 'onCompletion'> & { onCompletion?: arc4.OnCompleteAction | uint64 | arc4.OnCompleteActionStr },\n ) {\n return new ApplicationInnerTxn(fields as itxn.ApplicationCallFields)\n }\n\n /* @internal */\n constructor(fields: Mutable<itxn.ApplicationCallFields>) {\n const { appId, approvalProgram, clearStateProgram, onCompletion, appArgs, accounts, assets, apps, ...rest } = mapCommonFields(fields)\n super({\n appId: appId instanceof internal.primitives.Uint64Cls ? getApp(appId) : (appId as Application),\n onCompletion:\n typeof onCompletion === 'string'\n ? (onCompletion as arc4.OnCompleteActionStr)\n : onCompletion !== undefined\n ? (arc4.OnCompleteAction[onCompletion] as arc4.OnCompleteActionStr)\n : undefined,\n approvalProgram: Array.isArray(approvalProgram) ? undefined : (approvalProgram as bytes),\n approvalProgramPages: Array.isArray(approvalProgram) ? approvalProgram : undefined,\n clearStateProgram: Array.isArray(clearStateProgram) ? undefined : (clearStateProgram as bytes),\n clearStateProgramPages: Array.isArray(clearStateProgram) ? clearStateProgram : undefined,\n appArgs: appArgs?.map((x) => toBytes(x)),\n accounts: accounts?.map((x) => x),\n assets: assets?.map((x) => x),\n apps: apps?.map((x) => x),\n ...rest,\n })\n }\n}\n\nexport const createInnerTxn = <TFields extends InnerTxnFields>(fields: TFields) => {\n switch (fields.type) {\n case TransactionType.Payment:\n return new PaymentInnerTxn(fields)\n case TransactionType.AssetConfig:\n return new AssetConfigInnerTxn(fields)\n case TransactionType.AssetTransfer:\n return new AssetTransferInnerTxn(fields as itxn.AssetTransferFields)\n case TransactionType.AssetFreeze:\n return new AssetFreezeInnerTxn(fields as itxn.AssetFreezeFields)\n case TransactionType.ApplicationCall:\n return new ApplicationInnerTxn(fields)\n case TransactionType.KeyRegistration:\n return new KeyRegistrationInnerTxn(fields)\n default:\n throw new internal.errors.InternalError(`Invalid inner transaction type: ${fields.type}`)\n }\n}\n\nexport function submitGroup<TFields extends itxn.InnerTxnList>(...transactionFields: TFields): itxn.TxnFor<TFields> {\n return transactionFields.map((f: (typeof transactionFields)[number]) => f.submit()) as itxn.TxnFor<TFields>\n}\nexport function payment(fields: itxn.PaymentFields): itxn.PaymentItxnParams {\n ensureItxnGroupBegin()\n return new ItxnParams<itxn.PaymentFields, itxn.PaymentInnerTxn>(fields, TransactionType.Payment)\n}\nexport function keyRegistration(fields: itxn.KeyRegistrationFields): itxn.KeyRegistrationItxnParams {\n ensureItxnGroupBegin()\n return new ItxnParams<itxn.KeyRegistrationFields, itxn.KeyRegistrationInnerTxn>(fields, TransactionType.KeyRegistration)\n}\nexport function assetConfig(fields: itxn.AssetConfigFields): itxn.AssetConfigItxnParams {\n ensureItxnGroupBegin()\n return new ItxnParams<itxn.AssetConfigFields, itxn.AssetConfigInnerTxn>(fields, TransactionType.AssetConfig)\n}\nexport function assetTransfer(fields: itxn.AssetTransferFields): itxn.AssetTransferItxnParams {\n ensureItxnGroupBegin()\n return new ItxnParams<itxn.AssetTransferFields, itxn.AssetTransferInnerTxn>(fields, TransactionType.AssetTransfer)\n}\nexport function assetFreeze(fields: itxn.AssetFreezeFields): itxn.AssetFreezeItxnParams {\n ensureItxnGroupBegin()\n return new ItxnParams<itxn.AssetFreezeFields, itxn.AssetFreezeInnerTxn>(fields, TransactionType.AssetFreeze)\n}\nexport function applicationCall(fields: itxn.ApplicationCallFields): itxn.ApplicationCallItxnParams {\n ensureItxnGroupBegin()\n return new ItxnParams<itxn.ApplicationCallFields, itxn.ApplicationInnerTxn>(fields, TransactionType.ApplicationCall)\n}\n\nexport class ItxnParams<TFields extends InnerTxnFields, TTransaction extends InnerTxn> {\n #fields: TFields & { type: TransactionType }\n constructor(fields: TFields, type: TransactionType) {\n this.#fields = { ...fields, type }\n }\n submit(): TTransaction {\n return createInnerTxn<InnerTxnFields>(this.#fields) as unknown as TTransaction\n }\n\n set(p: Partial<TFields>) {\n Object.assign(this.#fields, p)\n }\n\n copy() {\n return new ItxnParams<TFields, TTransaction>(this.#fields, this.#fields.type)\n }\n}\n\nconst ensureItxnGroupBegin = () => {\n if (!lazyContext.activeGroup.constructingItxnGroup.length) {\n lazyContext.activeGroup.beginInnerTransactionGroup()\n }\n}\n","import { bytes, internal, TransactionType, uint64 } from '@algorandfoundation/algorand-typescript'\nimport algosdk from 'algosdk'\nimport { lazyContext } from '../context-helpers/internal-context'\nimport { DecodedLogs, decodeLogs, LogDecoding } from '../decode-logs'\nimport { testInvariant } from '../errors'\nimport {\n AllTransactionFields,\n ApplicationTransaction,\n AssetConfigTransaction,\n AssetFreezeTransaction,\n AssetTransferTransaction,\n KeyRegistrationTransaction,\n PaymentTransaction,\n Transaction,\n} from '../impl/transactions'\nimport { asBigInt, asNumber, asUint64 } from '../util'\nimport { InnerTxn, InnerTxnFields } from '../impl/itxn'\nimport {\n ApplicationInnerTxn,\n AssetConfigInnerTxn,\n AssetFreezeInnerTxn,\n AssetTransferInnerTxn,\n createInnerTxn,\n KeyRegistrationInnerTxn,\n PaymentInnerTxn,\n} from '../impl/inner-transactions'\n\nfunction ScopeGenerator(dispose: () => void) {\n function* internal() {\n try {\n yield\n } finally {\n dispose()\n }\n }\n const scope = internal()\n scope.next()\n return {\n done: () => {\n scope.return()\n },\n }\n}\n\ninterface ExecutionScope {\n execute: <TReturn>(body: () => TReturn) => TReturn\n}\n\nexport class TransactionContext {\n readonly groups: TransactionGroup[] = []\n #activeGroup: TransactionGroup | undefined\n\n createScope(group: Transaction[], activeTransactionIndex?: number): ExecutionScope {\n const transactionGroup = new TransactionGroup(group, activeTransactionIndex)\n const previousGroup = this.#activeGroup\n this.#activeGroup = transactionGroup\n\n const scope = ScopeGenerator(() => {\n if (this.#activeGroup?.transactions?.length) {\n this.groups.push(this.#activeGroup)\n }\n this.#activeGroup = previousGroup\n })\n return {\n execute: <TReturn>(body: () => TReturn) => {\n const result = body()\n scope.done()\n return result\n },\n }\n }\n\n ensureScope(group: Transaction[], activeTransactionIndex?: number): ExecutionScope {\n if (!this.#activeGroup || !this.#activeGroup.transactions.length) {\n return this.createScope(group, activeTransactionIndex)\n }\n return {\n execute: <TReturn>(body: () => TReturn) => {\n return body()\n },\n }\n }\n\n get activeGroup(): TransactionGroup {\n if (this.#activeGroup) {\n return this.#activeGroup\n }\n throw internal.errors.internalError('no active txn group')\n }\n\n get lastGroup(): TransactionGroup {\n if (this.groups.length === 0) {\n internal.errors.internalError('No group transactions found!')\n }\n return this.groups.at(-1)!\n }\n\n get lastActive(): Transaction {\n return this.lastGroup.activeTransaction\n }\n\n /* internal */\n appendLog(value: internal.primitives.StubBytesCompat): void {\n const activeTransaction = this.activeGroup.activeTransaction\n if (activeTransaction.type !== TransactionType.ApplicationCall) {\n throw internal.errors.internalError('Can only add logs to ApplicationCallTransaction!')\n }\n activeTransaction.appendLog(value)\n }\n\n exportLogs<const T extends [...LogDecoding[]]>(appId: uint64, ...decoding: T): DecodedLogs<T> {\n const transaction = this.groups\n .flatMap((g) => g.transactions)\n .filter((t) => t.type === TransactionType.ApplicationCall)\n .find((t) => asBigInt(t.appId.id) === asBigInt(appId))\n let logs = []\n if (transaction) {\n logs = transaction.appLogs\n } else {\n logs = lazyContext.getApplicationData(appId).appLogs\n }\n const rawLogs = logs.map((l) => internal.primitives.toExternalValue(l))\n return decodeLogs(rawLogs, decoding)\n }\n}\n\nexport class TransactionGroup {\n activeTransactionIndex: number\n latestTimestamp: number\n transactions: Transaction[]\n itxnGroups: ItxnGroup[] = []\n constructingItxnGroup: InnerTxnFields[] = []\n\n constructor(transactions: Transaction[], activeTransactionIndex?: number) {\n this.latestTimestamp = Date.now()\n if (transactions.length > algosdk.AtomicTransactionComposer.MAX_GROUP_SIZE) {\n internal.errors.internalError(\n `Transaction group can have at most ${algosdk.AtomicTransactionComposer.MAX_GROUP_SIZE} transactions, as per AVM limits.`,\n )\n }\n transactions.forEach((txn, index) => Object.assign(txn, { groupIndex: asUint64(index) }))\n this.activeTransactionIndex = activeTransactionIndex === undefined ? transactions.length - 1 : activeTransactionIndex\n this.transactions = transactions\n }\n\n get activeTransaction() {\n return this.transactions[this.activeTransactionIndex]\n }\n\n get activeApplicationId() {\n if (this.transactions.length === 0) {\n internal.errors.internalError('No transactions in the group')\n }\n testInvariant(this.activeTransaction.type === TransactionType.ApplicationCall, 'No app_id found in the active transaction')\n return this.activeTransaction.appId.id\n }\n\n get constructingItxn() {\n if (!this.constructingItxnGroup.length) {\n internal.errors.internalError('itxn field without itxn begin')\n }\n return this.constructingItxnGroup.at(-1)!\n }\n\n getScratchSlot(index: internal.primitives.StubUint64Compat): bytes | uint64 {\n return this.activeTransaction.getScratchSlot(index)\n }\n\n patchActiveTransactionFields(fields: AllTransactionFields) {\n const activeTransaction = this.activeTransaction as unknown as AllTransactionFields\n const filteredFields = Object.fromEntries(Object.entries(fields).filter(([_, value]) => value !== undefined))\n Object.assign(activeTransaction, filteredFields)\n }\n\n beginInnerTransactionGroup() {\n if (this.constructingItxnGroup.length) {\n internal.errors.internalError('itxn begin without itxn submit')\n }\n testInvariant(this.activeTransaction.type === TransactionType.ApplicationCall, 'No active application call transaction')\n if (this.activeTransaction.onCompletion === 'ClearState') {\n internal.errors.internalError('Cannot begin inner transaction group in a clear state call')\n }\n this.constructingItxnGroup.push({} as InnerTxnFields)\n }\n\n appendInnerTransactionGroup() {\n if (!this.constructingItxnGroup.length) {\n internal.errors.internalError('itxn next without itxn begin')\n }\n this.constructingItxnGroup.push({ type: TransactionType.Payment } as InnerTxnFields)\n }\n\n submitInnerTransactionGroup() {\n if (!this.constructingItxnGroup.length) {\n internal.errors.internalError('itxn submit without itxn begin')\n }\n if (this.constructingItxnGroup.length > algosdk.AtomicTransactionComposer.MAX_GROUP_SIZE) {\n internal.errors.internalError('Cannot submit more than 16 inner transactions at once')\n }\n const itxns = this.constructingItxnGroup.map((t) => createInnerTxn(t))\n itxns.forEach((itxn, index) => Object.assign(itxn, { groupIndex: asUint64(index) }))\n this.itxnGroups.push(new ItxnGroup(itxns))\n this.constructingItxnGroup = []\n }\n\n getItxnGroup(index?: internal.primitives.StubUint64Compat): ItxnGroup {\n const i = index !== undefined ? asNumber(index) : undefined\n\n testInvariant(this.itxnGroups.length > 0, 'no previous inner transactions')\n if (i !== undefined && i >= this.itxnGroups.length) {\n throw new internal.errors.InternalError('Invalid group index')\n }\n const group = i !== undefined ? this.itxnGroups[i] : this.itxnGroups.at(-1)!\n testInvariant(group.itxns.length > 0, 'no previous inner transactions')\n\n return group\n }\n getApplicationTransaction(index?: internal.primitives.StubUint64Compat): ApplicationTransaction {\n return this.getTransactionImpl({ type: TransactionType.ApplicationCall, index }) as ApplicationTransaction\n }\n getAssetConfigTransaction(index?: internal.primitives.StubUint64Compat): AssetConfigTransaction {\n return this.getTransactionImpl({ type: TransactionType.AssetConfig, index }) as AssetConfigTransaction\n }\n getAssetTransferTransaction(index?: internal.primitives.StubUint64Compat): AssetTransferTransaction {\n return this.getTransactionImpl({ type: TransactionType.AssetTransfer, index }) as AssetTransferTransaction\n }\n getAssetFreezeTransaction(index?: internal.primitives.StubUint64Compat): AssetFreezeTransaction {\n return this.getTransactionImpl({ type: TransactionType.AssetFreeze, index }) as AssetFreezeTransaction\n }\n getKeyRegistrationTransaction(index?: internal.primitives.StubUint64Compat): KeyRegistrationTransaction {\n return this.getTransactionImpl({ type: TransactionType.KeyRegistration, index }) as KeyRegistrationTransaction\n }\n getPaymentTransaction(index?: internal.primitives.StubUint64Compat): PaymentTransaction {\n return this.getTransactionImpl({ type: TransactionType.Payment, index }) as PaymentTransaction\n }\n getTransaction(index?: internal.primitives.StubUint64Compat): Transaction {\n return this.getTransactionImpl({ index })\n }\n private getTransactionImpl({ type, index }: { type?: TransactionType; index?: internal.primitives.StubUint64Compat }) {\n const i = index !== undefined ? asNumber(index) : undefined\n if (i !== undefined && i >= lazyContext.activeGroup.transactions.length) {\n throw new internal.errors.InternalError('Invalid group index')\n }\n const transaction = i !== undefined ? lazyContext.activeGroup.transactions[i] : lazyContext.activeGroup.activeTransaction\n if (type === undefined) {\n return transaction\n }\n if (transaction.type !== type) {\n throw new internal.errors.InternalError(`Invalid transaction type: ${transaction.type}`)\n }\n switch (type) {\n case TransactionType.ApplicationCall:\n return transaction as ApplicationTransaction\n case TransactionType.Payment:\n return transaction as PaymentTransaction\n case TransactionType.AssetConfig:\n return transaction as AssetConfigTransaction\n case TransactionType.AssetTransfer:\n return transaction as AssetTransferTransaction\n case TransactionType.AssetFreeze:\n return transaction as AssetFreezeTransaction\n case TransactionType.KeyRegistration:\n return transaction as KeyRegistrationTransaction\n default:\n throw new internal.errors.InternalError(`Invalid transaction type: ${type}`)\n }\n }\n}\n\nexport class ItxnGroup {\n itxns: InnerTxn[] = []\n constructor(itxns: InnerTxn[]) {\n this.itxns = itxns\n }\n\n getApplicationInnerTxn(index?: internal.primitives.StubUint64Compat): ApplicationInnerTxn {\n return this.getInnerTxnImpl({ type: TransactionType.ApplicationCall, index }) as ApplicationInnerTxn\n }\n getAssetConfigInnerTxn(index?: internal.primitives.StubUint64Compat): AssetConfigInnerTxn {\n return this.getInnerTxnImpl({ type: TransactionType.AssetConfig, index }) as AssetConfigInnerTxn\n }\n getAssetTransferInnerTxn(index?: internal.primitives.StubUint64Compat): AssetTransferInnerTxn {\n return this.getInnerTxnImpl({ type: TransactionType.AssetTransfer, index }) as AssetTransferInnerTxn\n }\n getAssetFreezeInnerTxn(index?: internal.primitives.StubUint64Compat): AssetFreezeInnerTxn {\n return this.getInnerTxnImpl({ type: TransactionType.AssetFreeze, index }) as AssetFreezeInnerTxn\n }\n getKeyRegistrationInnerTxn(index?: internal.primitives.StubUint64Compat): KeyRegistrationInnerTxn {\n return this.getInnerTxnImpl({ type: TransactionType.KeyRegistration, index }) as KeyRegistrationInnerTxn\n }\n getPaymentInnerTxn(index?: internal.primitives.StubUint64Compat): PaymentInnerTxn {\n return this.getInnerTxnImpl({ type: TransactionType.Payment, index }) as PaymentInnerTxn\n }\n getInnerTxn(index?: internal.primitives.StubUint64Compat): InnerTxn {\n return this.getInnerTxnImpl({ index })\n }\n\n private getInnerTxnImpl({ type, index }: { type?: TransactionType; index?: internal.primitives.StubUint64Compat }) {\n testInvariant(this.itxns.length > 0, 'no previous inner transactions')\n const i = index !== undefined ? asNumber(index) : undefined\n if (i !== undefined && i >= this.itxns.length) {\n throw new internal.errors.InternalError('Invalid group index')\n }\n const transaction = i !== undefined ? this.itxns[i] : this.itxns.at(-1)!\n if (type === undefined) {\n return transaction\n }\n if (transaction.type !== type) {\n throw new internal.errors.InternalError(`Invalid transaction type: ${transaction.type}`)\n }\n switch (type) {\n case TransactionType.ApplicationCall:\n return transaction as ApplicationInnerTxn\n case TransactionType.Payment:\n return transaction as PaymentInnerTxn\n case TransactionType.AssetConfig:\n return transaction as AssetConfigInnerTxn\n case TransactionType.AssetTransfer:\n return transaction as AssetTransferInnerTxn\n case TransactionType.AssetFreeze:\n return transaction as AssetFreezeInnerTxn\n case TransactionType.KeyRegistration:\n return transaction as KeyRegistrationInnerTxn\n default:\n throw new internal.errors.InternalError(`Invalid transaction type: ${type}`)\n }\n }\n}\n","import { Account, Application, Asset, bytes, Bytes, internal, Uint64, uint64 } from '@algorandfoundation/algorand-typescript'\nimport algosdk from 'algosdk'\nimport { randomBytes } from 'crypto'\nimport { MAX_BYTES_SIZE, MAX_UINT64, ZERO_ADDRESS } from '../constants'\nimport { lazyContext } from '../context-helpers/internal-context'\nimport { AccountCls, AccountData } from '../impl/account'\nimport { ApplicationCls, ApplicationData } from '../impl/application'\nimport { AssetCls, AssetData } from '../impl/asset'\nimport { asBigInt, asBytesCls, asUint64Cls, getRandomBigInt } from '../util'\n\ntype AccountContextData = Partial<AccountData['account']> & {\n address?: internal.primitives.StubBytesCompat\n optedAssetBalances?: Map<internal.primitives.StubUint64Compat, internal.primitives.StubUint64Compat>\n optedApplications?: Application[]\n}\n\ntype AssetContextData = Partial<AssetData> & { assetId?: internal.primitives.StubUint64Compat }\n\ntype ApplicationContextData = Partial<ApplicationData['application']> & { applicationId?: internal.primitives.StubUint64Compat }\n\nexport class AvmValueGenerator {\n uint64(minValue: number | bigint = 0n, maxValue: number | bigint = MAX_UINT64): uint64 {\n if (maxValue > MAX_UINT64) {\n internal.errors.internalError('maxValue must be less than or equal to MAX_UINT64')\n }\n if (minValue > maxValue) {\n internal.errors.internalError('minValue must be less than or equal to maxValue')\n }\n if (minValue < 0n || maxValue < 0n) {\n internal.errors.internalError('minValue and maxValue must be greater than or equal to 0')\n }\n return Uint64(getRandomBigInt(minValue, maxValue))\n }\n\n bytes(length = MAX_BYTES_SIZE): bytes {\n return Bytes(new Uint8Array(randomBytes(length)))\n }\n\n account(input?: AccountContextData): Account {\n const addr = input?.address ? asBytesCls(input.address).toString() : undefined\n if (addr && lazyContext.ledger.accountDataMap.has(addr)) {\n internal.errors.internalError(\n 'Account with such address already exists in testing context. Use `context.ledger.getAccount(address)` to retrieve the existing account.',\n )\n }\n\n const accountAddress = addr ?? algosdk.generateAccount().addr\n const data = new AccountData()\n const { address, optedAssetBalances, optedApplications, ...account } = input ?? {}\n data.account = {\n ...data.account,\n ...account,\n }\n lazyContext.ledger.accountDataMap.set(accountAddress, data)\n\n if (input?.optedAssetBalances) {\n for (const [assetId, balance] of input.optedAssetBalances) {\n lazyContext.ledger.updateAssetHolding(accountAddress, assetId, balance)\n }\n }\n if (input?.optedApplications) {\n for (const app of input.optedApplications) {\n data.optedApplications.set(asBigInt(app.id), app)\n }\n }\n return new AccountCls(Bytes(accountAddress))\n }\n\n asset(input?: AssetContextData): Asset {\n const id = input?.assetId\n if (id && lazyContext.ledger.assetDataMap.has(asBigInt(id))) {\n internal.errors.internalError('Asset with such ID already exists in testing context!')\n }\n const assetId = asUint64Cls(id ?? lazyContext.ledger.assetIdIter.next().value)\n const defaultAssetData = {\n total: lazyContext.any.uint64(),\n decimals: lazyContext.any.uint64(1, 6),\n defaultFrozen: false,\n unitName: lazyContext.any.bytes(4),\n name: lazyContext.any.bytes(32),\n url: lazyContext.any.bytes(10),\n metadataHash: lazyContext.any.bytes(32),\n manager: Account(ZERO_ADDRESS),\n freeze: Account(ZERO_ADDRESS),\n clawback: Account(ZERO_ADDRESS),\n creator: lazyContext.defaultSender,\n reserve: Account(ZERO_ADDRESS),\n }\n const { assetId: _, ...assetData } = input ?? {}\n lazyContext.ledger.assetDataMap.set(assetId.asBigInt(), {\n ...defaultAssetData,\n ...assetData,\n })\n return new AssetCls(assetId.asAlgoTs())\n }\n\n application(input?: ApplicationContextData): Application {\n const id = input?.applicationId\n if (id && lazyContext.ledger.applicationDataMap.has(asBigInt(id))) {\n internal.errors.internalError('Application with such ID already exists in testing context!')\n }\n const applicationId = asUint64Cls(id ?? lazyContext.ledger.appIdIter.next().value)\n const data = new ApplicationData()\n const { applicationId: _, ...applicationData } = input ?? {}\n data.application = {\n ...data.application,\n ...applicationData,\n }\n lazyContext.ledger.applicationDataMap.set(applicationId.asBigInt(), data)\n return new ApplicationCls(applicationId.asAlgoTs())\n }\n}\n","import { gtxn, internal } from '@algorandfoundation/algorand-typescript'\nimport { lazyContext } from '../context-helpers/internal-context'\nimport {\n ApplicationTransaction,\n ApplicationTransactionFields,\n AssetConfigTransaction,\n AssetFreezeTransaction,\n AssetTransferTransaction,\n KeyRegistrationTransaction,\n PaymentTransaction,\n TxnFields,\n} from '../impl/transactions'\nimport { asBigInt } from '../util'\n\nexport class TxnValueGenerator {\n applicationCall(fields?: ApplicationTransactionFields): ApplicationTransaction {\n const params = fields ?? {}\n if (params.appId && !lazyContext.ledger.applicationDataMap.has(asBigInt(params.appId.id))) {\n internal.errors.internalError(`Application ID ${params.appId.id} not found in test context`)\n }\n if (!params.appId) {\n params.appId = lazyContext.any.application()\n }\n\n return ApplicationTransaction.create(params)\n }\n\n payment(fields?: TxnFields<gtxn.PaymentTxn>): PaymentTransaction {\n return PaymentTransaction.create(fields ?? {})\n }\n\n keyRegistration(fields?: TxnFields<gtxn.KeyRegistrationTxn>): KeyRegistrationTransaction {\n return KeyRegistrationTransaction.create(fields ?? {})\n }\n\n assetConfig(fields?: TxnFields<gtxn.AssetConfigTxn>): AssetConfigTransaction {\n return AssetConfigTransaction.create(fields ?? {})\n }\n\n assetTransfer(fields?: TxnFields<gtxn.AssetTransferTxn>): AssetTransferTransaction {\n return AssetTransferTransaction.create(fields ?? {})\n }\n\n assetFreeze(fields?: TxnFields<gtxn.AssetFreezeTxn>): AssetFreezeTransaction {\n return AssetFreezeTransaction.create(fields ?? {})\n }\n}\n","import { AvmValueGenerator } from './avm'\nimport { TxnValueGenerator } from './txn'\n\nexport class ValueGenerator extends AvmValueGenerator {\n txn: TxnValueGenerator\n\n constructor() {\n super()\n this.txn = new TxnValueGenerator()\n }\n}\n","import { Account, Application, Asset, Bytes, bytes, internal, uint64 } from '@algorandfoundation/algorand-typescript'\nimport algosdk from 'algosdk'\nimport { captureMethodConfig } from './abi-metadata'\nimport { DecodedLogs, LogDecoding } from './decode-logs'\nimport * as ops from './impl'\nimport { AccountCls } from './impl/account'\nimport { ApplicationCls } from './impl/application'\nimport { AssetCls } from './impl/asset'\nimport { ContractContext } from './subcontexts/contract-context'\nimport { LedgerContext } from './subcontexts/ledger-context'\nimport { TransactionContext } from './subcontexts/transaction-context'\nimport { ValueGenerator } from './value-generators'\nimport {\n submitGroup as itxnSubmitGroup,\n payment as itxnPayment,\n keyRegistration as itxnKeyRegistration,\n assetConfig as itxnAssetConfig,\n assetTransfer as itxnAssetTransfer,\n assetFreeze as itxnAssetFreeze,\n applicationCall as itxnApplicationCall,\n} from './impl/inner-transactions'\n\nexport class TestExecutionContext implements internal.ExecutionContext {\n #applicationLogs: Map<bigint, bytes[]>\n #contractContext: ContractContext\n #ledgerContext: LedgerContext\n #txnContext: TransactionContext\n #valueGenerator: ValueGenerator\n #defaultSender: Account\n\n constructor() {\n internal.ctxMgr.instance = this\n this.#applicationLogs = new Map()\n this.#contractContext = new ContractContext()\n this.#ledgerContext = new LedgerContext()\n this.#txnContext = new TransactionContext()\n this.#valueGenerator = new ValueGenerator()\n this.#defaultSender = Account(Bytes(algosdk.generateAccount().addr))\n }\n\n account(address?: bytes): Account {\n return new AccountCls(address)\n }\n\n application(id?: uint64): Application {\n return new ApplicationCls(id)\n }\n\n asset(id?: uint64): Asset {\n return new AssetCls(id)\n }\n\n log(value: bytes): void {\n this.txn.appendLog(value)\n }\n\n exportLogs<const T extends [...LogDecoding[]]>(appId: uint64, ...decoding: T): DecodedLogs<T> {\n return this.txn.exportLogs(appId, ...decoding)\n }\n\n get op() {\n return ops\n }\n get contract() {\n return this.#contractContext\n }\n\n get ledger() {\n return this.#ledgerContext\n }\n\n get txn() {\n return this.#txnContext\n }\n\n get any() {\n return this.#valueGenerator\n }\n\n get defaultSender(): Account {\n return this.#defaultSender\n }\n\n get abiMetadata() {\n return {\n captureMethodConfig,\n }\n }\n\n get gtxn() {\n return {\n Transaction: (index: uint64) => this.txn.activeGroup.getTransaction(index),\n PaymentTxn: (index: uint64) => this.txn.activeGroup.getPaymentTransaction(index),\n KeyRegistrationTxn: (index: uint64) => this.txn.activeGroup.getKeyRegistrationTransaction(index),\n AssetConfigTxn: (index: uint64) => this.txn.activeGroup.getAssetConfigTransaction(index),\n AssetTransferTxn: (index: uint64) => this.txn.activeGroup.getAssetTransferTransaction(index),\n AssetFreezeTxn: (index: uint64) => this.txn.activeGroup.getAssetFreezeTransaction(index),\n ApplicationTxn: (index: uint64) => this.txn.activeGroup.getApplicationTransaction(index),\n }\n }\n\n get itxn() {\n return {\n submitGroup: itxnSubmitGroup,\n payment: itxnPayment,\n keyRegistration: itxnKeyRegistration,\n assetConfig: itxnAssetConfig,\n assetTransfer: itxnAssetTransfer,\n assetFreeze: itxnAssetFreeze,\n applicationCall: itxnApplicationCall,\n }\n }\n\n reset() {\n this.#applicationLogs.clear()\n this.#contractContext = new ContractContext()\n this.#ledgerContext = new LedgerContext()\n this.#txnContext = new TransactionContext()\n internal.ctxMgr.reset()\n internal.ctxMgr.instance = this\n }\n}\n"],"names":["AssetHolding","js_sha256","js_sha3_256","js_keccak256","js_sha512_256","itxnSubmitGroup","itxnPayment","itxnKeyRegistration","itxnAssetConfig","itxnAssetTransfer","itxnAssetFreeze","itxnApplicationCall"],"mappings":"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"}