@algorandfoundation/algorand-typescript-testing 1.0.0-alpha.10
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.
- package/abi-metadata.d.ts +16 -0
- package/collections/custom-key-map.d.ts +29 -0
- package/constants.d.ts +27 -0
- package/context-helpers/internal-context.d.ts +26 -0
- package/decode-logs.d.ts +9 -0
- package/encoders.d.ts +9 -0
- package/errors.d.ts +5 -0
- package/impl/account.d.ts +32 -0
- package/impl/acct-params.d.ts +5 -0
- package/impl/app-global.d.ts +2 -0
- package/impl/app-local.d.ts +2 -0
- package/impl/app-params.d.ts +3 -0
- package/impl/application.d.ts +30 -0
- package/impl/asset-holding.d.ts +2 -0
- package/impl/asset-params.d.ts +3 -0
- package/impl/asset.d.ts +24 -0
- package/impl/base.d.ts +18 -0
- package/impl/block.d.ts +2 -0
- package/impl/box.d.ts +2 -0
- package/impl/crypto.d.ts +12 -0
- package/impl/encoded-types.d.ts +165 -0
- package/impl/global.d.ts +18 -0
- package/impl/gtxn.d.ts +2 -0
- package/impl/index.d.ts +15 -0
- package/impl/inner-transactions.d.ts +51 -0
- package/impl/itxn.d.ts +8 -0
- package/impl/pure.d.ts +32 -0
- package/impl/scratch.d.ts +4 -0
- package/impl/state.d.ts +103 -0
- package/impl/transactions.d.ts +140 -0
- package/impl/txn.d.ts +3 -0
- package/index.d.ts +1 -0
- package/index.mjs +4563 -0
- package/index.mjs.map +1 -0
- package/package.json +45 -0
- package/runtime-helpers-DlIX78iw.js +1426 -0
- package/runtime-helpers-DlIX78iw.js.map +1 -0
- package/runtime-helpers.d.ts +11 -0
- package/runtime-helpers.mjs +8 -0
- package/runtime-helpers.mjs.map +1 -0
- package/set-up.d.ts +11 -0
- package/subcontexts/contract-context.d.ts +9 -0
- package/subcontexts/ledger-context.d.ts +45 -0
- package/subcontexts/transaction-context.d.ts +67 -0
- package/test-execution-context.d.ts +53 -0
- package/test-transformer/errors.d.ts +3 -0
- package/test-transformer/helpers.d.ts +3 -0
- package/test-transformer/index.d.ts +6 -0
- package/test-transformer/index.mjs +458 -0
- package/test-transformer/index.mjs.map +1 -0
- package/test-transformer/node-factory.d.ts +14 -0
- package/test-transformer/supported-binary-op-string.d.ts +4 -0
- package/test-transformer/visitors.d.ts +11 -0
- package/typescript-helpers.d.ts +15 -0
- package/util.d.ts +29 -0
- package/value-generators/avm.d.ts +23 -0
- package/value-generators/index.d.ts +6 -0
- 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/app-global.ts","../src/impl/app-local.ts","../src/impl/asset-params.ts","../src/impl/asset-holding.ts","../src/impl/box.ts","../src/errors.ts","../src/impl/crypto.ts","../src/impl/global.ts","../src/impl/gtxn.ts","../src/impl/itxn.ts","../src/impl/pure.ts","../src/impl/scratch.ts","../src/impl/block.ts","../src/impl/txn.ts","../src/collections/custom-key-map.ts","../src/impl/application.ts","../src/impl/asset.ts","../src/impl/account.ts","../src/impl/transactions.ts","../src/impl/inner-transactions.ts","../src/encoders.ts","../src/impl/state.ts","../src/subcontexts/contract-context.ts","../src/subcontexts/ledger-context.ts","../src/decode-logs.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 { Account, 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(account: Account): AccountData {\n const data = this.ledger.accountDataMap.get(account)\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 data = this.ledger.applicationDataMap.get(id)\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(a: Account | internal.primitives.StubUint64Compat): readonly [uint64, boolean] {\n const acct = getAccount(a)\n return [acct.balance, acct.balance !== 0]\n },\n acctMinBalance(a: Account | internal.primitives.StubUint64Compat): readonly [uint64, boolean] {\n const acct = getAccount(a)\n return [acct.minBalance, acct.balance !== 0]\n },\n acctAuthAddr(a: Account | internal.primitives.StubUint64Compat): readonly [Account, boolean] {\n const acct = getAccount(a)\n return [acct.authAddress, acct.balance !== 0]\n },\n acctTotalNumUint(a: Account | internal.primitives.StubUint64Compat): readonly [uint64, boolean] {\n const acct = getAccount(a)\n return [acct.totalNumUint, acct.balance !== 0]\n },\n acctTotalNumByteSlice(a: Account | internal.primitives.StubUint64Compat): readonly [uint64, boolean] {\n const acct = getAccount(a)\n return [acct.totalNumByteSlice, acct.balance !== 0]\n },\n acctTotalExtraAppPages(a: Account | internal.primitives.StubUint64Compat): readonly [uint64, boolean] {\n const acct = getAccount(a)\n return [acct.totalExtraAppPages, acct.balance !== 0]\n },\n acctTotalAppsCreated(a: Account | internal.primitives.StubUint64Compat): readonly [uint64, boolean] {\n const acct = getAccount(a)\n return [acct.totalAppsCreated, acct.balance !== 0]\n },\n acctTotalAppsOptedIn(a: Account | internal.primitives.StubUint64Compat): readonly [uint64, boolean] {\n const acct = getAccount(a)\n return [acct.totalAppsOptedIn, acct.balance !== 0]\n },\n acctTotalAssetsCreated(a: Account | internal.primitives.StubUint64Compat): readonly [uint64, boolean] {\n const acct = getAccount(a)\n return [acct.totalAssetsCreated, acct.balance !== 0]\n },\n acctTotalAssets(a: Account | internal.primitives.StubUint64Compat): readonly [uint64, boolean] {\n const acct = getAccount(a)\n return [acct.totalAssets, acct.balance !== 0]\n },\n acctTotalBoxes(a: Account | internal.primitives.StubUint64Compat): readonly [uint64, boolean] {\n const acct = getAccount(a)\n return [acct.totalBoxes, acct.balance !== 0]\n },\n acctTotalBoxBytes(a: Account | internal.primitives.StubUint64Compat): readonly [uint64, boolean] {\n const acct = getAccount(a)\n return [acct.totalBoxBytes, acct.balance !== 0]\n },\n // TODO: implement v11 methods\n acctIncentiveEligible: function (_a: Account | uint64): readonly [boolean, boolean] {\n throw new Error('Function not implemented.')\n },\n acctLastProposed: function (_a: Account | uint64): readonly [uint64, boolean] {\n throw new Error('Function not implemented.')\n },\n acctLastHeartbeat: function (_a: Account | uint64): readonly [uint64, boolean] {\n throw new Error('Function not implemented.')\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(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(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(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(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(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(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(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(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(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 { Application, Bytes, bytes, internal, Uint64, uint64 } from '@algorandfoundation/algorand-typescript'\nimport { lazyContext } from '../context-helpers/internal-context'\nimport { asBytes } from '../util'\nimport { getApp } from './app-params'\n\nexport const AppGlobal: internal.opTypes.AppGlobalType = {\n delete(a: internal.primitives.StubBytesCompat): void {\n lazyContext.ledger.setGlobalState(lazyContext.activeApplication, a, undefined)\n },\n getBytes(a: internal.primitives.StubBytesCompat): bytes {\n return this.getExBytes(0, asBytes(a))[0]\n },\n getUint64(a: internal.primitives.StubBytesCompat): uint64 {\n return this.getExUint64(0, asBytes(a))[0]\n },\n getExBytes(a: Application | internal.primitives.StubUint64Compat, b: internal.primitives.StubBytesCompat): readonly [bytes, boolean] {\n const app = getApp(a)\n if (app === undefined) {\n return [Bytes(), false]\n }\n const [state, exists] = lazyContext.ledger.getGlobalState(app, b)\n if (!exists) {\n return [Bytes(), false]\n }\n return [state!.value as bytes, exists]\n },\n getExUint64(a: Application | internal.primitives.StubUint64Compat, b: internal.primitives.StubBytesCompat): readonly [uint64, boolean] {\n const app = getApp(a)\n if (app === undefined) {\n return [Uint64(0), false]\n }\n const [state, exists] = lazyContext.ledger.getGlobalState(app, b)\n if (!exists) {\n return [Uint64(0), false]\n }\n return [state!.value as uint64, exists]\n },\n put(a: internal.primitives.StubBytesCompat, b: internal.primitives.StubUint64Compat | internal.primitives.StubBytesCompat): void {\n lazyContext.ledger.setGlobalState(lazyContext.activeApplication, a, b)\n },\n}\n","import { Account, Application, Bytes, bytes, internal, Uint64, uint64 } from '@algorandfoundation/algorand-typescript'\nimport { lazyContext } from '../context-helpers/internal-context'\nimport { asBytes } from '../util'\nimport { getAccount } from './acct-params'\nimport { getApp } from './app-params'\n\nexport const AppLocal: internal.opTypes.AppLocalType = {\n delete: function (a: Account | internal.primitives.StubUint64Compat, b: internal.primitives.StubBytesCompat): void {\n const app = lazyContext.activeApplication\n const account = getAccount(a)\n lazyContext.ledger.setLocalState(app, account, b, undefined)\n },\n getBytes: function (a: Account | internal.primitives.StubUint64Compat, b: internal.primitives.StubBytesCompat): bytes {\n const account = getAccount(a)\n return this.getExBytes(account, 0, asBytes(b))[0]\n },\n getUint64: function (a: Account | internal.primitives.StubUint64Compat, b: internal.primitives.StubBytesCompat): uint64 {\n const account = getAccount(a)\n return this.getExUint64(account, 0, asBytes(b))[0]\n },\n getExBytes: function (\n a: Account | internal.primitives.StubUint64Compat,\n b: Application | internal.primitives.StubUint64Compat,\n c: internal.primitives.StubBytesCompat,\n ): readonly [bytes, boolean] {\n const app = getApp(b)\n const account = getAccount(a)\n if (app === undefined || account === undefined) {\n return [Bytes(), false]\n }\n const [state, exists] = lazyContext.ledger.getLocalState(app, account, c)\n if (!exists) {\n return [Bytes(), false]\n }\n return [state!.value as bytes, exists]\n },\n getExUint64: function (\n a: Account | internal.primitives.StubUint64Compat,\n b: Application | internal.primitives.StubUint64Compat,\n c: internal.primitives.StubBytesCompat,\n ): readonly [uint64, boolean] {\n const app = getApp(b)\n const account = getAccount(a)\n if (app === undefined || account === undefined) {\n return [Uint64(0), false]\n }\n const [state, exists] = lazyContext.ledger.getLocalState(app, account, c)\n if (!exists) {\n return [Uint64(0), false]\n }\n return [state!.value as uint64, exists]\n },\n put: function (a: Account | internal.primitives.StubUint64Compat, b: internal.primitives.StubBytesCompat, c: uint64 | bytes): void {\n const app = lazyContext.activeApplication\n const account = getAccount(a)\n lazyContext.ledger.setLocalState(app, account, b, c)\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(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(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(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(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(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(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(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(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(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(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(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(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 { 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)\n const holding = accountData.optedAssets.get(asset.id)\n if (holding === undefined) {\n return undefined\n }\n return holding\n}\n\nexport const AssetHolding: internal.opTypes.AssetHoldingType = {\n assetBalance(\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(\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 { bytes, internal, uint64 } from '@algorandfoundation/algorand-typescript'\nimport { MAX_BOX_SIZE } from '../constants'\nimport { lazyContext } from '../context-helpers/internal-context'\nimport { asBytes, asBytesCls, asNumber, asUint8Array, conactUint8Arrays, toBytes } from '../util'\n\nexport const Box: internal.opTypes.BoxType = {\n create(a: internal.primitives.StubBytesCompat, b: internal.primitives.StubUint64Compat): boolean {\n const name = asBytes(a)\n const size = asNumber(b)\n if (name.length === 0 || size > MAX_BOX_SIZE) {\n throw new internal.errors.InternalError('Invalid box name or size')\n }\n const app = lazyContext.activeApplication\n if (lazyContext.ledger.boxExists(app, name)) {\n return false\n }\n lazyContext.ledger.setBox(app, name, new Uint8Array(size))\n return true\n },\n delete(a: internal.primitives.StubBytesCompat): boolean {\n const name = asBytes(a)\n const app = lazyContext.activeApplication\n if (!lazyContext.ledger.boxExists(app, name)) {\n return false\n }\n lazyContext.ledger.deleteBox(app, name)\n return true\n },\n extract(a: internal.primitives.StubBytesCompat, b: internal.primitives.StubUint64Compat, c: internal.primitives.StubUint64Compat): bytes {\n const name = asBytes(a)\n const start = asNumber(b)\n const length = asNumber(c)\n const app = lazyContext.activeApplication\n if (!lazyContext.ledger.boxExists(app, name)) {\n throw new internal.errors.InternalError('Box does not exist')\n }\n const boxContent = lazyContext.ledger.getBox(app, name)\n return toBytes(boxContent.slice(start, start + length))\n },\n get(a: internal.primitives.StubBytesCompat): readonly [bytes, boolean] {\n const name = asBytes(a)\n const app = lazyContext.activeApplication\n const boxContent = lazyContext.ledger.getBox(app, name)\n return [toBytes(boxContent), lazyContext.ledger.boxExists(app, name)]\n },\n length(a: internal.primitives.StubBytesCompat): readonly [uint64, boolean] {\n const name = asBytes(a)\n const app = lazyContext.activeApplication\n const boxContent = lazyContext.ledger.getBox(app, name)\n const exists = lazyContext.ledger.boxExists(app, name)\n return [boxContent.length, exists]\n },\n put(a: internal.primitives.StubBytesCompat, b: internal.primitives.StubBytesCompat): void {\n const name = asBytes(a)\n const app = lazyContext.activeApplication\n const newContent = asBytesCls(b)\n if (lazyContext.ledger.boxExists(app, name)) {\n const boxContent = lazyContext.ledger.getBox(app, name)\n const length = boxContent.length\n if (asNumber(length) !== asNumber(newContent.length)) {\n throw new internal.errors.InternalError('New content length does not match existing box length')\n }\n }\n lazyContext.ledger.setBox(app, name, newContent.asUint8Array())\n },\n replace(a: internal.primitives.StubBytesCompat, b: internal.primitives.StubUint64Compat, c: internal.primitives.StubBytesCompat): void {\n const name = asBytes(a)\n const start = asNumber(b)\n const newContent = asUint8Array(c)\n const app = lazyContext.activeApplication\n if (!lazyContext.ledger.boxExists(app, name)) {\n throw new internal.errors.InternalError('Box does not exist')\n }\n const boxContent = lazyContext.ledger.getBox(app, name)\n if (start + newContent.length > boxContent.length) {\n throw new internal.errors.InternalError('Replacement content exceeds box size')\n }\n const updatedContent = conactUint8Arrays(boxContent.slice(0, start), newContent, boxContent.slice(start + newContent.length))\n lazyContext.ledger.setBox(app, name, updatedContent)\n },\n resize(a: internal.primitives.StubBytesCompat, b: internal.primitives.StubUint64Compat): void {\n const name = asBytes(a)\n const newSize = asNumber(b)\n const app = lazyContext.activeApplication\n if (!lazyContext.ledger.boxExists(app, name)) {\n throw new internal.errors.InternalError('Box does not exist')\n }\n const boxContent = lazyContext.ledger.getBox(app, name)\n const size = boxContent.length\n let updatedContent\n if (newSize > size) {\n updatedContent = conactUint8Arrays(boxContent, new Uint8Array(newSize - size))\n } else {\n updatedContent = boxContent.slice(0, newSize)\n }\n lazyContext.ledger.setBox(app, name, updatedContent)\n },\n splice(\n a: internal.primitives.StubBytesCompat,\n b: internal.primitives.StubUint64Compat,\n c: internal.primitives.StubUint64Compat,\n d: internal.primitives.StubBytesCompat,\n ): void {\n const name = asBytes(a)\n const start = asNumber(b)\n const length = asNumber(c)\n const newContent = asUint8Array(d)\n const app = lazyContext.activeApplication\n if (!lazyContext.ledger.boxExists(app, name)) {\n throw new internal.errors.InternalError('Box does not exist')\n }\n const boxContent = lazyContext.ledger.getBox(app, name)\n const size = boxContent.length\n if (start > size) {\n throw new internal.errors.InternalError('Start index exceeds box size')\n }\n const end = Math.min(start + length, size)\n let updatedContent = conactUint8Arrays(boxContent.slice(0, start), newContent, boxContent.slice(end))\n // Adjust the size if necessary\n if (updatedContent.length > size) {\n updatedContent = updatedContent.slice(0, size)\n } else if (updatedContent.length < size) {\n updatedContent = conactUint8Arrays(updatedContent, new Uint8Array(size - asNumber(updatedContent.length)))\n }\n lazyContext.ledger.setBox(app, name, updatedContent)\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 { arc4, bytes, Bytes, Ecdsa, gtxn, internal, VrfVerify } from '@algorandfoundation/algorand-typescript'\nimport algosdk from 'algosdk'\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 { LOGIC_DATA_PREFIX } from '../constants'\nimport { lazyContext } from '../context-helpers/internal-context'\nimport { notImplementedError } from '../errors'\nimport { asBytes, asBytesCls } from '../util'\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 = Bytes(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: 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: 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 !== 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(x), Bytes(y)]\n}\n\nexport const ecdsaPkDecompress = (v: 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: 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 [Ecdsa.Secp256k1]: 'secp256k1',\n [Ecdsa.Secp256r1]: 'p256',\n}\n","import { Account, Application, Bytes, bytes, internal, op, Uint64, uint64 } from '@algorandfoundation/algorand-typescript'\nimport algosdk from 'algosdk'\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 { lazyContext } from '../context-helpers/internal-context'\nimport { asBigInt, getObjectReference } from '../util'\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.fromBase32(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.fromBase32(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 payoutsEnabled: false,\n // TODO: implement v11 fields\n payoutsGoOnlineFee: 0,\n payoutsPercent: 0,\n payoutsMinBalance: 0,\n payoutsMaxBalance: 0,\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 { 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 { Base64, 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, testInvariant } 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: Base64, a: internal.primitives.StubBytesCompat): bytes => {\n const encoding = e === 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 Bytes(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(Number(size)))\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(internal.primitives.isUint64(a) ? asUint64Cls(a).toBytes().asAlgoTs() : asBytes(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 indexParam = internal.primitives.Uint64Cls.fromCompat(b).asNumber()\n const bit = internal.primitives.Uint64Cls.fromCompat(c).asNumber()\n if (uint64Cls) {\n const binaryString = toBinaryString(uint64Cls?.toBytes().asAlgoTs())\n const index = binaryString.length - indexParam - 1\n const newBytes = doSetBit(binaryString, index, bit)\n return newBytes.toUint64().asAlgoTs()\n } else {\n const bytesCls = asMaybeBytesCls(a)\n testInvariant(bytesCls, 'a must be uint64 or bytes')\n const binaryString = toBinaryString(bytesCls.asAlgoTs())\n const newBytes = doSetBit(binaryString, indexParam, bit)\n return newBytes.asAlgoTs()\n }\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(internal.primitives.BytesCls.fromCompat(a).asAlgoTs())\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)\n const replacement = toBinaryString(replacementNumber.toBytes().at(-1).asAlgoTs())\n\n if (bitIndex >= binaryString.length) {\n internal.errors.codeError(`setByte index ${byteIndex} is beyond length`)\n }\n if (replacementNumber.valueOf() > MAX_UINT8) {\n internal.errors.codeError(`setByte value ${replacementNumber.asNumber()} > ${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: bytes): string => {\n return [...internal.primitives.BytesCls.fromCompat(a).asUint8Array()].map((x) => x.toString(2).padStart(BITS_IN_BYTE, '0')).join('')\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 { bytes, internal, uint64 } from '@algorandfoundation/algorand-typescript'\nimport { lazyContext } from '../context-helpers/internal-context'\n\nexport const gloadUint64: internal.opTypes.GloadUint64Type = (\n a: internal.primitives.StubUint64Compat,\n b: internal.primitives.StubUint64Compat,\n): uint64 => {\n const txn = lazyContext.activeGroup.getTransaction(a)\n const result = txn.getScratchSlot(b)\n if (result instanceof internal.primitives.Uint64Cls) {\n return result.asAlgoTs()\n }\n throw new internal.errors.InternalError('invalid scratch slot type')\n}\n\nexport const gloadBytes: internal.opTypes.GloadBytesType = (\n a: internal.primitives.StubUint64Compat,\n b: internal.primitives.StubUint64Compat,\n): bytes => {\n const txn = lazyContext.activeGroup.getTransaction(a)\n const result = txn.getScratchSlot(b)\n if (result instanceof internal.primitives.BytesCls) {\n return result.asAlgoTs()\n }\n throw new internal.errors.InternalError('invalid scratch slot type')\n}\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, bytes, internal, uint64 } from '@algorandfoundation/algorand-typescript'\nimport { lazyContext } from '../context-helpers/internal-context'\nimport { asUint64 } from '../util'\nimport { itob } from './pure'\n\nexport const Block: internal.opTypes.BlockType = {\n blkSeed: function (a: internal.primitives.StubUint64Compat): bytes {\n return itob(lazyContext.ledger.getBlockContent(a).seed)\n },\n blkTimestamp: function (a: internal.primitives.StubUint64Compat): uint64 {\n return asUint64(lazyContext.ledger.getBlockContent(a).timestamp)\n },\n // TODO: implement v11 methods\n blkProposer: function (_a: uint64): Account {\n throw new Error('Function not implemented.')\n },\n blkFeesCollected: function (_a: uint64): uint64 {\n throw new Error('Function not implemented.')\n },\n blkBonus: function (_a: uint64): uint64 {\n throw new Error('Function not implemented.')\n },\n blkBranch: function (_a: uint64): bytes {\n throw new Error('Function not implemented.')\n },\n blkFeeSink: function (_a: uint64): Account {\n throw new Error('Function not implemented.')\n },\n blkProtocol: function (_a: uint64): bytes {\n throw new Error('Function not implemented.')\n },\n blkTxnCounter: function (_a: uint64): uint64 {\n throw new Error('Function not implemented.')\n },\n blkProposerPayout: function (_a: uint64): uint64 {\n throw new Error('Function not implemented.')\n },\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\nexport const gaid = (a: internal.primitives.StubUint64Compat): uint64 => {\n const group = lazyContext.activeGroup\n const transaction = group.getTransaction(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, internal } from '@algorandfoundation/algorand-typescript'\nimport { DeliberateAny } from '../typescript-helpers'\nimport { asBytesCls, asUint64Cls } from '../util'\n\ntype Primitive = number | bigint | string | boolean\nexport abstract class CustomKeyMap<TKey, TValue> implements Map<TKey, TValue> {\n #keySerializer: (key: TKey) => Primitive\n #map = new Map<Primitive, [TKey, TValue]>()\n\n constructor(keySerializer: (key: TKey) => number | bigint | string) {\n this.#keySerializer = keySerializer\n }\n\n clear(): void {\n this.#map.clear()\n }\n delete(key: TKey): boolean {\n return this.#map.delete(this.#keySerializer(key))\n }\n forEach(callbackfn: (value: TValue, key: TKey, map: Map<TKey, TValue>) => void, thisArg?: DeliberateAny): void {\n for (const [key, value] of this.#map.values()) {\n callbackfn.call(thisArg ?? this, value, key, this)\n }\n }\n get(key: TKey): TValue | undefined {\n return this.#map.get(this.#keySerializer(key))?.[1]\n }\n getOrFail(key: TKey): TValue {\n const value = this.get(key)\n if (value === undefined) {\n throw internal.errors.internalError('Key not found')\n }\n return value\n }\n has(key: TKey): boolean {\n return this.#map.has(this.#keySerializer(key))\n }\n set(key: TKey, value: TValue): this {\n this.#map.set(this.#keySerializer(key), [key, value])\n return this\n }\n get size(): number {\n return this.#map.size\n }\n entries(): MapIterator<[TKey, TValue]> {\n return this.#map.values()\n }\n *keys(): MapIterator<TKey> {\n for (const [key] of this.#map.values()) {\n yield key\n }\n }\n *values(): MapIterator<TValue> {\n for (const [, value] of this.#map.values()) {\n yield value\n }\n }\n [Symbol.iterator](): MapIterator<[TKey, TValue]> {\n return this.#map.values()\n }\n get [Symbol.toStringTag](): string {\n return this.constructor.name\n }\n}\n\nexport class AccountMap<TValue> extends CustomKeyMap<Account, TValue> {\n constructor() {\n super(AccountMap.getAddressStrFromAccount)\n }\n\n private static getAddressStrFromAccount = (acc: Account) => {\n return asBytesCls(acc.bytes).valueOf()\n }\n}\n\nexport class BytesMap<TValue> extends CustomKeyMap<internal.primitives.StubBytesCompat, TValue> {\n constructor() {\n super((bytes) => asBytesCls(bytes).valueOf())\n }\n}\n\nexport class Uint64Map<TValue> extends CustomKeyMap<internal.primitives.StubUint64Compat, TValue> {\n constructor() {\n super((uint64) => asUint64Cls(uint64).valueOf())\n }\n}\n","import { Account, Application, Bytes, bytes, LocalState, uint64 } from '@algorandfoundation/algorand-typescript'\nimport algosdk from 'algosdk'\nimport { BytesMap } from '../collections/custom-key-map'\nimport { ALWAYS_APPROVE_TEAL_PROGRAM } from '../constants'\nimport { lazyContext } from '../context-helpers/internal-context'\nimport { Mutable } from '../typescript-helpers'\nimport { asBigInt, asUint64 } from '../util'\nimport { Uint64BackedCls } from './base'\nimport { GlobalStateCls } from './state'\n\nexport class ApplicationData {\n application: Mutable<Omit<Application, 'id' | 'address'>> & {\n appLogs: bytes[]\n globalStates: BytesMap<GlobalStateCls<unknown>>\n localStates: BytesMap<LocalState<unknown>>\n boxes: BytesMap<Uint8Array>\n }\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 globalStates: new BytesMap(),\n localStates: new BytesMap(),\n boxes: new BytesMap(),\n }\n }\n}\n\nexport class ApplicationCls extends Uint64BackedCls implements Application {\n get id() {\n return this.uint64\n }\n\n constructor(id?: uint64) {\n super(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.fromBase32(addr))\n }\n}\n","import { Account, Asset, bytes, internal, uint64 } from '@algorandfoundation/algorand-typescript'\nimport { lazyContext } from '../context-helpers/internal-context'\nimport { Mutable } from '../typescript-helpers'\nimport { asUint64 } from '../util'\nimport { AssetHolding } from './account'\nimport { Uint64BackedCls } from './base'\n\nexport type AssetData = Mutable<Omit<Asset, 'id' | 'balance' | 'frozen'>>\n\nexport class AssetCls extends Uint64BackedCls implements Asset {\n get id(): uint64 {\n return this.uint64\n }\n\n constructor(id?: internal.primitives.StubUint64Compat) {\n super(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)\n const assetHolding = accountData.optedAssets.get(this.id)\n if (assetHolding === undefined) {\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 assetHolding\n }\n}\n","import { Account, Application, Asset, bytes, internal, uint64 } from '@algorandfoundation/algorand-typescript'\nimport { Uint64Map } from '../collections/custom-key-map'\nimport { DEFAULT_ACCOUNT_MIN_BALANCE, ZERO_ADDRESS } from '../constants'\nimport { lazyContext } from '../context-helpers/internal-context'\nimport { Mutable } from '../typescript-helpers'\nimport { asUint64, asUint64Cls } from '../util'\nimport { ApplicationCls } from './application'\nimport { AssetCls } from './asset'\nimport { BytesBackedCls } from './base'\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 Uint64Map<AssetHolding>()\n optedApplications = new Uint64Map<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 extends BytesBackedCls implements Account {\n constructor(address?: bytes) {\n const addressBytes = address ?? ZERO_ADDRESS\n if (![32n, 36n].includes(asUint64Cls(addressBytes.length).valueOf())) {\n throw new internal.errors.AvmError('Address must be 32 bytes long, or 36 bytes including checksum')\n }\n super(addressBytes.slice(0, 32))\n }\n\n private get data(): AccountData {\n return lazyContext.getAccountData(this)\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(assetOrApp.id)\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 { ABI_RETURN_VALUE_LOG_PREFIX, MAX_ITEMS_IN_LOG } from '../constants'\nimport { lazyContext } from '../context-helpers/internal-context'\nimport { Mutable, ObjectKeys } from '../typescript-helpers'\nimport {\n asBytes,\n asMaybeBytesCls,\n asMaybeUint64Cls,\n asNumber,\n asUint64Cls,\n combineIntoMaxBytePages,\n getRandomBytes,\n toBytes,\n} 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: Record<number, 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 Object.entries(fields.scratchSpace ?? {}).forEach(([k, v]) => this.setScratchSlot(Number(k), 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 /* @internal */\n logArc4ReturnValue(value: unknown): void {\n this.appendLog(ABI_RETURN_VALUE_LOG_PREFIX.concat(toBytes(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, 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 { biguint, BigUint, bytes, internal, TransactionType, uint64, Uint64 } from '@algorandfoundation/algorand-typescript'\nimport { OnCompleteAction } from '@algorandfoundation/algorand-typescript/arc4'\nimport { AccountCls } from './impl/account'\nimport { ApplicationCls } from './impl/application'\nimport { AssetCls } from './impl/asset'\nimport { arc4Encoders, getArc4Encoder } from './impl/encoded-types'\nimport { DeliberateAny } from './typescript-helpers'\nimport { asBytes, asUint8Array } from './util'\n\nexport type TypeInfo = {\n name: string\n genericArgs?: TypeInfo[] | Record<string, TypeInfo>\n}\n\nexport type fromBytes<T> = (val: Uint8Array | internal.primitives.StubBytesCompat, typeInfo: TypeInfo, prefix?: 'none' | 'log') => T\n\nconst booleanFromBytes: fromBytes<boolean> = (val) => {\n return internal.encodingUtil.uint8ArrayToBigInt(asUint8Array(val)) > 0n\n}\n\nconst bigUintFromBytes: fromBytes<biguint> = (val) => {\n return BigUint(internal.encodingUtil.uint8ArrayToBigInt(asUint8Array(val)))\n}\n\nconst bytesFromBytes: fromBytes<bytes> = (val) => {\n return asBytes(val)\n}\n\nconst stringFromBytes: fromBytes<string> = (val) => {\n return asBytes(val).toString()\n}\n\nconst uint64FromBytes: fromBytes<uint64> = (val) => {\n return Uint64(internal.encodingUtil.uint8ArrayToBigInt(asUint8Array(val)))\n}\n\nconst onCompletionFromBytes: fromBytes<OnCompleteAction> = (val) => {\n return Uint64(internal.encodingUtil.uint8ArrayToBigInt(asUint8Array(val))) as OnCompleteAction\n}\n\nconst transactionTypeFromBytes: fromBytes<TransactionType> = (val) => {\n return Uint64(internal.encodingUtil.uint8ArrayToBigInt(asUint8Array(val))) as TransactionType\n}\n\nexport const encoders: Record<string, fromBytes<DeliberateAny>> = {\n account: AccountCls.fromBytes,\n application: ApplicationCls.fromBytes,\n asset: AssetCls.fromBytes,\n boolean: booleanFromBytes,\n biguint: bigUintFromBytes,\n bytes: bytesFromBytes,\n string: stringFromBytes,\n uint64: uint64FromBytes,\n OnCompleteAction: onCompletionFromBytes,\n TransactionType: transactionTypeFromBytes,\n ...arc4Encoders,\n}\n\nexport const getEncoder = <T>(typeInfo: TypeInfo): fromBytes<T> => {\n return getArc4Encoder<T>(typeInfo, encoders)\n}\n","import {\n Account,\n Application,\n BoxMap as BoxMapType,\n BoxRef as BoxRefType,\n Box as BoxType,\n Bytes,\n bytes,\n GlobalStateOptions,\n GlobalState as GlobalStateType,\n internal,\n LocalStateForAccount,\n LocalState as LocalStateType,\n uint64,\n Uint64,\n} from '@algorandfoundation/algorand-typescript'\nimport { AccountMap } from '../collections/custom-key-map'\nimport { MAX_BOX_SIZE } from '../constants'\nimport { lazyContext } from '../context-helpers/internal-context'\nimport { getEncoder, TypeInfo } from '../encoders'\nimport { getGenericTypeInfo } from '../runtime-helpers'\nimport { asBytes, asBytesCls, asNumber, asUint8Array, conactUint8Arrays, toBytes } from '../util'\n\nexport class GlobalStateCls<ValueType> {\n private readonly _type: string = GlobalStateCls.name\n\n #value: ValueType | undefined\n key: bytes | undefined\n\n get hasKey(): boolean {\n return this.key !== undefined && this.key.length > 0\n }\n\n delete: () => void = () => {\n if (this.#value instanceof internal.primitives.Uint64Cls) {\n this.#value = Uint64(0) as ValueType\n } else {\n this.#value = undefined\n }\n }\n\n static [Symbol.hasInstance](x: unknown): x is GlobalStateCls<unknown> {\n return x instanceof Object && '_type' in x && (x as { _type: string })['_type'] === GlobalStateCls.name\n }\n\n get value(): ValueType {\n if (this.#value === undefined) {\n throw new internal.errors.AssertError('value is not set')\n }\n return this.#value\n }\n\n set value(v: ValueType) {\n this.#value = v\n }\n\n get hasValue(): boolean {\n return this.#value !== undefined\n }\n\n constructor(key?: bytes | string, value?: ValueType) {\n this.key = key !== undefined ? asBytes(key) : undefined\n this.#value = value\n }\n}\n\nexport class LocalStateCls<ValueType> {\n #value: ValueType | undefined\n delete: () => void = () => {\n if (this.#value instanceof internal.primitives.Uint64Cls) {\n this.#value = Uint64(0) as ValueType\n } else {\n this.#value = undefined\n }\n }\n get value(): ValueType {\n if (this.#value === undefined) {\n throw new internal.errors.AssertError('value is not set')\n }\n return this.#value\n }\n\n set value(v: ValueType) {\n this.#value = v\n }\n\n get hasValue(): boolean {\n return this.#value !== undefined\n }\n}\n\nexport class LocalStateMapCls<ValueType> {\n #value = new AccountMap<LocalStateCls<ValueType>>()\n\n getValue(account: Account): LocalStateCls<ValueType> {\n if (!this.#value.has(account)) {\n this.#value.set(account, new LocalStateCls<ValueType>())\n }\n return this.#value.getOrFail(account)!\n }\n}\n\nexport function GlobalState<ValueType>(options?: GlobalStateOptions<ValueType>): GlobalStateType<ValueType> {\n return new GlobalStateCls(options?.key, options?.initialValue)\n}\n\nexport function LocalState<ValueType>(options?: { key?: bytes | string }): LocalStateType<ValueType> {\n function localStateInternal(account: Account): LocalStateForAccount<ValueType> {\n return localStateInternal.map.getValue(account)\n }\n localStateInternal.key = options?.key\n localStateInternal.hasKey = options?.key !== undefined && options.key.length > 0\n localStateInternal.map = new LocalStateMapCls<ValueType>()\n return localStateInternal\n}\n\nexport class BoxCls<TValue> {\n #key: bytes | undefined\n #app: Application\n\n private readonly _type: string = BoxCls.name\n\n static [Symbol.hasInstance](x: unknown): x is BoxCls<unknown> {\n return x instanceof Object && '_type' in x && (x as { _type: string })['_type'] === BoxCls.name\n }\n\n constructor(key?: internal.primitives.StubBytesCompat) {\n this.#key = key ? asBytes(key) : undefined\n this.#app = lazyContext.activeApplication\n }\n\n private get fromBytes() {\n const typeInfo = getGenericTypeInfo(this)\n const valueType = (typeInfo!.genericArgs! as TypeInfo[])[0]\n return (val: Uint8Array) => getEncoder<TValue>(valueType)(val, valueType)\n }\n\n get value(): TValue {\n if (!this.exists) {\n throw new internal.errors.InternalError('Box has not been created')\n }\n\n return this.fromBytes(lazyContext.ledger.getBox(this.#app, this.key))\n }\n set value(v: TValue) {\n lazyContext.ledger.setBox(this.#app, this.key, asUint8Array(toBytes(v)))\n }\n\n get hasKey(): boolean {\n return this.#key !== undefined && this.#key.length > 0\n }\n\n get key(): bytes {\n if (this.#key === undefined || this.#key.length === 0) {\n throw new internal.errors.InternalError('Box key is empty')\n }\n return this.#key\n }\n\n set key(key: internal.primitives.StubBytesCompat) {\n this.#key = asBytes(key)\n }\n\n get exists(): boolean {\n return lazyContext.ledger.boxExists(this.#app, this.key)\n }\n\n get length(): uint64 {\n if (!this.exists) {\n throw new internal.errors.InternalError('Box has not been created')\n }\n return toBytes(this.value).length\n }\n\n get(options: { default: TValue }): TValue {\n const [value, exists] = this.maybe()\n return exists ? value : options.default\n }\n\n delete(): boolean {\n return lazyContext.ledger.deleteBox(this.#app, this.key)\n }\n\n maybe(): readonly [TValue, boolean] {\n const value = this.fromBytes(lazyContext.ledger.getBox(this.#app, this.key))\n return [value, lazyContext.ledger.boxExists(this.#app, this.key)]\n }\n}\n\nexport class BoxMapCls<TKey, TValue> {\n #keyPrefix: bytes | undefined\n #app: Application\n\n private readonly _type: string = BoxMapCls.name\n\n static [Symbol.hasInstance](x: unknown): x is BoxMapCls<unknown, unknown> {\n return x instanceof Object && '_type' in x && (x as { _type: string })['_type'] === BoxMapCls.name\n }\n\n private get fromBytes() {\n const typeInfo = getGenericTypeInfo(this)\n const valueType = (typeInfo!.genericArgs! as TypeInfo[])[1]\n return (val: Uint8Array) => getEncoder<TValue>(valueType)(val, valueType)\n }\n\n constructor(keyPrefix?: internal.primitives.StubBytesCompat) {\n this.#keyPrefix = keyPrefix ? asBytes(keyPrefix) : undefined\n this.#app = lazyContext.activeApplication\n }\n\n get hasKeyPrefix(): boolean {\n return this.#keyPrefix !== undefined && this.#keyPrefix.length > 0\n }\n\n get keyPrefix(): bytes {\n if (this.#keyPrefix === undefined || this.#keyPrefix.length === 0) {\n throw new internal.errors.InternalError('Box key prefix is empty')\n }\n return this.#keyPrefix\n }\n\n set keyPrefix(keyPrefix: internal.primitives.StubBytesCompat) {\n this.#keyPrefix = asBytes(keyPrefix)\n }\n\n get(key: TKey, options?: { default: TValue }): TValue {\n const [value, exists] = this.maybe(key)\n if (!exists && options === undefined) {\n throw new internal.errors.InternalError('Box has not been created')\n }\n return exists ? value : options!.default\n }\n\n set(key: TKey, value: TValue): void {\n lazyContext.ledger.setBox(this.#app, this.getFullKey(key), asUint8Array(toBytes(value)))\n }\n\n delete(key: TKey): boolean {\n return lazyContext.ledger.deleteBox(this.#app, this.getFullKey(key))\n }\n\n has(key: TKey): boolean {\n return lazyContext.ledger.boxExists(this.#app, this.getFullKey(key))\n }\n\n maybe(key: TKey): readonly [TValue, boolean] {\n const fullKey = this.getFullKey(key)\n const value = this.fromBytes(lazyContext.ledger.getBox(this.#app, fullKey))\n return [value, lazyContext.ledger.boxExists(this.#app, fullKey)]\n }\n\n length(key: TKey): uint64 {\n return toBytes(this.get(key)).length\n }\n\n private getFullKey(key: TKey): bytes {\n return this.keyPrefix.concat(toBytes(key))\n }\n}\n\nexport class BoxRefCls {\n #key: bytes | undefined\n #app: Application\n\n private readonly _type: string = BoxRefCls.name\n\n static [Symbol.hasInstance](x: unknown): x is BoxRefCls {\n return x instanceof Object && '_type' in x && (x as { _type: string })['_type'] === BoxRefCls.name\n }\n\n constructor(key?: internal.primitives.StubBytesCompat) {\n this.#key = key ? asBytes(key) : undefined\n this.#app = lazyContext.activeApplication\n }\n\n get hasKey(): boolean {\n return this.#key !== undefined && this.#key.length > 0\n }\n\n get key(): bytes {\n if (this.#key === undefined || this.#key.length === 0) {\n throw new internal.errors.InternalError('Box key is empty')\n }\n return this.#key\n }\n\n set key(key: internal.primitives.StubBytesCompat) {\n this.#key = asBytes(key)\n }\n\n get value(): bytes {\n if (!this.exists) {\n throw new internal.errors.InternalError('Box has not been created')\n }\n return toBytes(this.backingValue)\n }\n\n set value(v: internal.primitives.StubBytesCompat) {\n const bytesValue = asBytesCls(v)\n const content = this.backingValue\n if (this.exists && content.length !== bytesValue.length.asNumber()) {\n throw new internal.errors.InternalError('Box already exists with a different size')\n }\n this.backingValue = bytesValue.asUint8Array()\n }\n\n get exists(): boolean {\n return lazyContext.ledger.boxExists(this.#app, this.key)\n }\n\n create(options: { size: internal.primitives.StubUint64Compat }): boolean {\n const size = asNumber(options.size)\n if (size > MAX_BOX_SIZE) {\n throw new internal.errors.InternalError(`Box size cannot exceed ${MAX_BOX_SIZE}`)\n }\n const content = this.backingValue\n if (this.exists && content.length !== size) {\n throw new internal.errors.InternalError('Box already exists with a different size')\n }\n if (this.exists) {\n return false\n }\n this.backingValue = new Uint8Array(size)\n return true\n }\n\n get(options: { default: internal.primitives.StubBytesCompat }): bytes {\n const [value, exists] = this.maybe()\n return exists ? value : asBytes(options.default)\n }\n\n put(value: internal.primitives.StubBytesCompat): void {\n this.value = value\n }\n\n splice(\n start: internal.primitives.StubUint64Compat,\n length: internal.primitives.StubUint64Compat,\n value: internal.primitives.StubBytesCompat,\n ): void {\n const content = this.backingValue\n const startNumber = asNumber(start)\n const lengthNumber = asNumber(length)\n const valueBytes = asBytesCls(value)\n if (!this.exists) {\n throw new internal.errors.InternalError('Box has not been created')\n }\n if (startNumber > content.length) {\n throw new internal.errors.InternalError('Start index exceeds box size')\n }\n const end = Math.min(startNumber + lengthNumber, content.length)\n let updatedContent = conactUint8Arrays(content.slice(0, startNumber), valueBytes.asUint8Array(), content.slice(end))\n\n if (updatedContent.length > content.length) {\n updatedContent = updatedContent.slice(0, content.length)\n } else if (updatedContent.length < content.length) {\n updatedContent = conactUint8Arrays(updatedContent, new Uint8Array(content.length - updatedContent.length))\n }\n this.backingValue = updatedContent\n }\n\n replace(start: internal.primitives.StubUint64Compat, value: internal.primitives.StubBytesCompat): void {\n const content = this.backingValue\n const startNumber = asNumber(start)\n const valueBytes = asBytesCls(value)\n if (!this.exists) {\n throw new internal.errors.InternalError('Box has not been created')\n }\n if (startNumber + asNumber(valueBytes.length) > content.length) {\n throw new internal.errors.InternalError('Replacement content exceeds box size')\n }\n const updatedContent = conactUint8Arrays(\n content.slice(0, startNumber),\n valueBytes.asUint8Array(),\n content.slice(startNumber + valueBytes.length.asNumber()),\n )\n this.backingValue = updatedContent\n }\n\n extract(start: internal.primitives.StubUint64Compat, length: internal.primitives.StubUint64Compat): bytes {\n const content = this.backingValue\n const startNumber = asNumber(start)\n const lengthNumber = asNumber(length)\n if (!this.exists) {\n throw new internal.errors.InternalError('Box has not been created')\n }\n if (startNumber + lengthNumber > content.length) {\n throw new internal.errors.InternalError('Index out of bounds')\n }\n return toBytes(content.slice(startNumber, startNumber + lengthNumber))\n }\n delete(): boolean {\n return lazyContext.ledger.deleteBox(this.#app, this.key)\n }\n\n resize(newSize: uint64): void {\n const newSizeNumber = asNumber(newSize)\n if (newSizeNumber > MAX_BOX_SIZE) {\n throw new internal.errors.InternalError(`Box size cannot exceed ${MAX_BOX_SIZE}`)\n }\n const content = this.backingValue\n if (!this.exists) {\n throw new internal.errors.InternalError('Box has not been created')\n }\n let updatedContent\n if (newSizeNumber > content.length) {\n updatedContent = conactUint8Arrays(content, new Uint8Array(newSizeNumber - content.length))\n } else {\n updatedContent = content.slice(0, newSize)\n }\n this.backingValue = updatedContent\n }\n\n maybe(): readonly [bytes, boolean] {\n return [Bytes(lazyContext.ledger.getBox(this.#app, this.key)), lazyContext.ledger.boxExists(this.#app, this.key)]\n }\n\n get length(): uint64 {\n if (!this.exists) {\n throw new internal.errors.InternalError('Box has not been created')\n }\n return this.backingValue.length\n }\n\n private get backingValue(): Uint8Array {\n return lazyContext.ledger.getBox(this.#app, this.key)\n }\n\n private set backingValue(value: Uint8Array) {\n lazyContext.ledger.setBox(this.#app, this.key, value)\n }\n}\n\nexport function Box<TValue>(options?: { key: bytes | string }): BoxType<TValue> {\n return new BoxCls<TValue>(options?.key)\n}\n\nexport function BoxMap<TKey, TValue>(options?: { keyPrefix: bytes | string }): BoxMapType<TKey, TValue> {\n return new BoxMapCls<TKey, TValue>(options?.keyPrefix)\n}\n\nexport function BoxRef(options?: { key: bytes | string }): BoxRefType {\n return new BoxRefCls(options?.key)\n}\n","import { Account, Application, Asset, BaseContract, Bytes, bytes, Contract, LocalState } from '@algorandfoundation/algorand-typescript'\nimport { getAbiMetadata } from '../abi-metadata'\nimport { BytesMap } from '../collections/custom-key-map'\nimport { lazyContext } from '../context-helpers/internal-context'\nimport type { TypeInfo } from '../encoders'\nimport { AccountCls } from '../impl/account'\nimport { ApplicationCls } from '../impl/application'\nimport { AssetCls } from '../impl/asset'\nimport { BoxCls, BoxMapCls, BoxRefCls, GlobalStateCls } from '../impl/state'\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, IConstructor } from '../typescript-helpers'\nimport { asUint64Cls } from '../util'\n\ntype StateTotals = Pick<Application, 'globalNumBytes' | 'globalNumUint' | 'localNumBytes' | 'localNumUint'>\n\ninterface States {\n globalStates: BytesMap<GlobalStateCls<unknown>>\n localStates: BytesMap<LocalState<unknown>>\n totals: StateTotals\n}\n\nconst isUint64GenericType = (typeInfo: TypeInfo | undefined) => {\n if (!Array.isArray(typeInfo?.genericArgs) || !typeInfo?.genericArgs?.length) return false\n return typeInfo.genericArgs.some((t) => t.name.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 BytesMap<GlobalStateCls<unknown>>(),\n localStates: new BytesMap<LocalState<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 GlobalStateCls\n const isBox = value instanceof BoxCls\n const isBoxRef = value instanceof BoxRefCls\n const isBoxMap = value instanceof BoxMapCls\n if (isLocalState || isGlobalState || isBox || isBoxRef) {\n // set key using property name if not already set\n if (!value.hasKey) value.key = Bytes(key)\n } else if (isBoxMap) {\n if (!value.hasKeyPrefix) value.keyPrefix = Bytes(key)\n }\n\n if (isLocalState || isGlobalState) {\n // capture state into the context\n if (isLocalState) states.localStates.set(value.key, value)\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 = (app: Application, args: DeliberateAny[]) => {\n const transactions: Transaction[] = []\n const accounts: Account[] = []\n const apps: Application[] = [app]\n const assets: Asset[] = []\n const appArgs: bytes[] = []\n\n // TODO: replace `asUint64Cls(accounts.length).toBytes().asAlgoTs()` with `arc4.Uint8(account.length).toBytes().asAlgoTs()`\n for (const arg of args) {\n if (isTransaction(arg)) {\n transactions.push(arg)\n } else if (arg instanceof AccountCls) {\n appArgs.push(asUint64Cls(accounts.length).toBytes().asAlgoTs())\n accounts.push(arg as Account)\n } else if (arg instanceof ApplicationCls) {\n appArgs.push(asUint64Cls(apps.length).toBytes().asAlgoTs())\n apps.push(arg as Application)\n } else if (arg instanceof AssetCls) {\n appArgs.push(asUint64Cls(assets.length).toBytes().asAlgoTs())\n assets.push(arg as Asset)\n }\n }\n\n // TODO: use actual method selector in appArgs\n return { accounts, apps, assets, transactions, appArgs: [Bytes('method_selector'), ...appArgs] }\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>(this.isArc4(type)))\n return new proxy(...args)\n }\n\n static createMethodCallTxns<TParams extends unknown[], TReturn>(\n contract: BaseContract,\n method: (...args: TParams) => TReturn,\n ...args: TParams\n ): Transaction[] {\n const abiMetadata = getAbiMetadata(contract, method.name)\n const app = lazyContext.ledger.getApplicationForContract(contract)\n const { transactions, ...appCallArgs } = extractArraysFromArgs(app, args)\n const appTxn = lazyContext.any.txn.applicationCall({\n appId: app,\n ...appCallArgs,\n // TODO: This needs to be specifiable by the test code\n onCompletion: (abiMetadata?.allowActions ?? [])[0],\n })\n const txns = [...(transactions ?? []), appTxn]\n return txns\n }\n\n private isArc4<T extends BaseContract>(type: IConstructor<T>): boolean {\n const proto = Object.getPrototypeOf(type)\n if (proto === BaseContract) {\n return false\n } else if (proto === Contract) {\n return true\n } else if (proto === Object) {\n throw new Error('Cannot create a contract for class as it does not extend Contract or BaseContract')\n }\n return this.isArc4(proto)\n }\n\n private getContractProxyHandler<T extends BaseContract>(isArc4: boolean): ProxyHandler<IConstructor<T>> {\n const onConstructed = (application: Application, instance: T) => {\n const states = extractStates(instance)\n\n const applicationData = lazyContext.ledger.applicationDataMap.getOrFail(application.id)\n applicationData.application = {\n ...applicationData.application,\n globalStates: states.globalStates,\n localStates: states.localStates,\n ...states.totals,\n }\n lazyContext.ledger.addAppIdContractMap(application.id, instance)\n }\n return {\n construct(target, args) {\n let t: T | undefined = undefined\n const application = lazyContext.any.application()\n const txn = lazyContext.any.txn.applicationCall({ appId: application })\n lazyContext.txn.ensureScope([txn]).execute(() => {\n t = new target(...args)\n })\n const instance = new Proxy(t!, {\n get(target, prop, receiver) {\n const orig = Reflect.get(target, prop, receiver)\n const abiMetadata = getAbiMetadata(target, prop as string)\n const isProgramMethod = prop === 'approvalProgram' || prop === 'clearStateProgram'\n const isAbiMethod = isArc4 && abiMetadata\n if (isAbiMethod || isProgramMethod) {\n return (...args: DeliberateAny[]): DeliberateAny => {\n const txns = ContractContext.createMethodCallTxns(receiver, orig as DeliberateAny, ...args)\n return lazyContext.txn.ensureScope(txns).execute(() => {\n const returnValue = (orig as DeliberateAny).apply(target, args)\n if (!isProgramMethod && isAbiMethod && returnValue !== undefined) {\n ;(txns.at(-1) as ApplicationTransaction).logArc4ReturnValue(returnValue)\n }\n return returnValue\n })\n }\n }\n return orig\n },\n })\n\n onConstructed(application, instance)\n\n return instance\n },\n }\n }\n}\n","import { Account, Application, Asset, BaseContract, internal, LocalStateForAccount } from '@algorandfoundation/algorand-typescript'\nimport { AccountMap, Uint64Map } from '../collections/custom-key-map'\nimport { MAX_UINT64 } from '../constants'\nimport { AccountData, AssetHolding } from '../impl/account'\nimport { ApplicationData } from '../impl/application'\nimport { AssetData } from '../impl/asset'\nimport { GlobalData } from '../impl/global'\nimport { GlobalStateCls } from '../impl/state'\nimport { asBigInt, asMaybeBytesCls, asMaybeUint64Cls, asUint64, asUint64Cls, iterBigInt } from '../util'\n\ninterface BlockData {\n seed: bigint\n timestamp: bigint\n}\n\nexport class LedgerContext {\n appIdIter = iterBigInt(1001n, MAX_UINT64)\n assetIdIter = iterBigInt(1001n, MAX_UINT64)\n applicationDataMap = new Uint64Map<ApplicationData>()\n appIdContractMap = new Uint64Map<BaseContract>()\n accountDataMap = new AccountMap<AccountData>()\n assetDataMap = new Uint64Map<AssetData>()\n blocks = new Uint64Map<BlockData>()\n globalData = new GlobalData()\n\n addAppIdContractMap(appId: internal.primitives.StubUint64Compat, contract: BaseContract): void {\n this.appIdContractMap.set(appId, contract)\n }\n\n getAsset(assetId: internal.primitives.StubUint64Compat): Asset {\n if (this.assetDataMap.has(assetId)) {\n return Asset(asUint64(assetId))\n }\n throw internal.errors.internalError('Unknown asset, check correct testing context is active')\n }\n\n getApplication(applicationId: internal.primitives.StubUint64Compat): Application {\n if (this.applicationDataMap.has(applicationId)) {\n return Application(asUint64(applicationId))\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 account\n * @param assetId\n * @param balance\n * @param frozen\n */\n updateAssetHolding(\n account: Account,\n assetId: internal.primitives.StubUint64Compat | Asset,\n balance?: internal.primitives.StubUint64Compat,\n frozen?: boolean,\n ): void {\n const id = asMaybeUint64Cls(assetId) ?? asUint64Cls((assetId as Asset).id)\n const accountData = this.accountDataMap.get(account)!\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 setBlock(\n index: internal.primitives.StubUint64Compat,\n seed: internal.primitives.StubUint64Compat,\n timestamp: internal.primitives.StubUint64Compat,\n ): void {\n const i = asBigInt(index)\n const s = asBigInt(seed)\n const t = asBigInt(timestamp)\n\n this.blocks.set(i, { seed: s, timestamp: t })\n }\n\n getBlockContent(index: internal.primitives.StubUint64Compat): BlockData {\n const i = asBigInt(index)\n if (this.blocks.has(i)) {\n return this.blocks.get(i)!\n }\n throw internal.errors.internalError(`Block ${i} not set`)\n }\n\n getGlobalState(app: Application, key: internal.primitives.StubBytesCompat): [GlobalStateCls<unknown>, true] | [undefined, false] {\n const appData = this.applicationDataMap.get(app.id)\n if (!appData?.application.globalStates.has(key)) {\n return [undefined, false]\n }\n return [appData.application.globalStates.getOrFail(key), true]\n }\n\n setGlobalState(\n app: Application,\n key: internal.primitives.StubBytesCompat,\n value: internal.primitives.StubUint64Compat | internal.primitives.StubBytesCompat | undefined,\n ): void {\n const appData = this.applicationDataMap.getOrFail(app.id)\n const globalState = appData.application.globalStates.getOrFail(key)\n if (value === undefined) {\n globalState.delete()\n } else {\n globalState.value = asMaybeUint64Cls(value) ?? asMaybeBytesCls(value)\n }\n }\n\n getLocalState(\n app: Application,\n account: Account,\n key: internal.primitives.StubBytesCompat,\n ): [LocalStateForAccount<unknown>, true] | [undefined, false] {\n const appData = this.applicationDataMap.get(app.id)\n if (!appData?.application.localStates.has(key)) {\n return [undefined, false]\n }\n const localState = appData.application.localStates.getOrFail(key)\n return [localState(account), true]\n }\n\n setLocalState(\n app: Application,\n account: Account,\n key: internal.primitives.StubBytesCompat,\n value: internal.primitives.StubUint64Compat | internal.primitives.StubBytesCompat | undefined,\n ): void {\n const appData = this.applicationDataMap.getOrFail(app.id)\n const localState = appData.application.localStates.getOrFail(key)\n const accountLocalState = localState(account)\n if (value === undefined) {\n accountLocalState.delete()\n } else {\n accountLocalState.value = asMaybeUint64Cls(value) ?? asMaybeBytesCls(value)\n }\n }\n\n getBox(app: Application, key: internal.primitives.StubBytesCompat): Uint8Array {\n const appData = this.applicationDataMap.getOrFail(app.id)\n return appData.application.boxes.get(key) ?? new Uint8Array()\n }\n\n setBox(app: Application, key: internal.primitives.StubBytesCompat, value: Uint8Array): void {\n const appData = this.applicationDataMap.getOrFail(app.id)\n appData.application.boxes.set(key, value)\n }\n\n deleteBox(app: Application, key: internal.primitives.StubBytesCompat): boolean {\n const appData = this.applicationDataMap.getOrFail(app.id)\n return appData.application.boxes.delete(key)\n }\n\n boxExists(app: Application, key: internal.primitives.StubBytesCompat): boolean {\n const appData = this.applicationDataMap.getOrFail(app.id)\n return appData.application.boxes.has(key)\n }\n}\n","import { bytes, op } 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: bytes[], decoding: T): DecodedLogs<T> {\n return logs.map((log, i) => {\n switch (decoding[i]) {\n case 'i':\n return op.btoi(log)\n case 's':\n return log.toString()\n default:\n return log\n }\n }) as DecodedLogs<T>\n}\n","import { bytes, Contract, 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 ApplicationInnerTxn,\n AssetConfigInnerTxn,\n AssetFreezeInnerTxn,\n AssetTransferInnerTxn,\n createInnerTxn,\n KeyRegistrationInnerTxn,\n PaymentInnerTxn,\n} from '../impl/inner-transactions'\nimport { InnerTxn, InnerTxnFields } from '../impl/itxn'\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 { ContractContext } from './contract-context'\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 DeferredAppCall<TParams extends unknown[], TReturn> {\n constructor(\n private readonly appId: uint64,\n readonly txns: Transaction[],\n private readonly method: (...args: TParams) => TReturn,\n private readonly args: TParams,\n ) {}\n\n submit(): TReturn {\n // TODO: check_routing_conditions\n return this.method(...this.args)\n }\n}\n\nexport class TransactionContext {\n readonly groups: TransactionGroup[] = []\n #activeGroup: TransactionGroup | undefined\n\n createScope(group: Array<Transaction | DeferredAppCall<unknown[], unknown>>, activeTransactionIndex?: number): ExecutionScope {\n const transactions = group.map((t) => (t instanceof DeferredAppCall ? t.txns : [t])).flat()\n const transactionGroup = new TransactionGroup(transactions, 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 deferAppCall<TParams extends unknown[], TReturn>(\n contract: Contract,\n method: (...args: TParams) => TReturn,\n ...args: TParams\n ): DeferredAppCall<TParams, TReturn> {\n const appId = lazyContext.ledger.getApplicationForContract(contract)\n const txns = ContractContext.createMethodCallTxns(contract, method, ...args)\n return new DeferredAppCall(appId.id, txns, method, args)\n }\n\n exportLogs<const T extends [...LogDecoding[]]>(appId: uint64, ...decoding: T): DecodedLogs<T> {\n const transaction = this.lastGroup.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\n return decodeLogs(logs, 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 getScratchSpace() {\n return this.activeTransaction.scratchSpace\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 { AccountData } from '../impl/account'\nimport { ApplicationCls, ApplicationData } from '../impl/application'\nimport { AssetCls, AssetData } from '../impl/asset'\nimport { asBigInt, asUint64Cls, getRandomBigInt } from '../util'\n\ntype AccountContextData = Partial<AccountData['account']> & {\n address?: Account\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 account = input?.address ?? Account(Bytes.fromBase32(algosdk.generateAccount().addr))\n\n if (input?.address && lazyContext.ledger.accountDataMap.has(account)) {\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 data = new AccountData()\n const { address, optedAssetBalances, optedApplications, ...accountData } = input ?? {}\n data.account = {\n ...data.account,\n ...accountData,\n }\n lazyContext.ledger.accountDataMap.set(account, data)\n\n if (input?.optedAssetBalances) {\n for (const [assetId, balance] of input.optedAssetBalances) {\n lazyContext.ledger.updateAssetHolding(account, 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 account\n }\n\n asset(input?: AssetContextData): Asset {\n const id = input?.assetId\n if (id && lazyContext.ledger.assetDataMap.has(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, {\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(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, 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'\n\nexport class TxnValueGenerator {\n applicationCall(fields?: ApplicationTransactionFields): ApplicationTransaction {\n const params = fields ?? {}\n if (params.appId && !lazyContext.ledger.applicationDataMap.has(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 {\n applicationCall as itxnApplicationCall,\n assetConfig as itxnAssetConfig,\n assetFreeze as itxnAssetFreeze,\n assetTransfer as itxnAssetTransfer,\n keyRegistration as itxnKeyRegistration,\n payment as itxnPayment,\n submitGroup as itxnSubmitGroup,\n} from './impl/inner-transactions'\nimport { Box, BoxMap, BoxRef, GlobalState, LocalState } from './impl/state'\nimport { ContractContext } from './subcontexts/contract-context'\nimport { LedgerContext } from './subcontexts/ledger-context'\nimport { TransactionContext } from './subcontexts/transaction-context'\nimport { ValueGenerator } from './value-generators'\n\nexport class TestExecutionContext implements internal.ExecutionContext {\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.#contractContext = new ContractContext()\n this.#ledgerContext = new LedgerContext()\n this.#txnContext = new TransactionContext()\n this.#valueGenerator = new ValueGenerator()\n this.#defaultSender = Account(Bytes.fromBase32(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 get state() {\n return {\n GlobalState,\n LocalState,\n Box,\n BoxMap,\n BoxRef,\n }\n }\n\n reset() {\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","Box","js_sha256","js_sha3_256","js_keccak256","js_sha512_256","itxnSubmitGroup","itxnPayment","itxnKeyRegistration","itxnAssetConfig","itxnAssetTransfer","itxnAssetFreeze","itxnApplicationCall"],"mappings":"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"}
|