@algorandfoundation/algorand-typescript-testing 1.0.0-beta.4 → 1.0.0-beta.5

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/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  import { Bytes, Uint64, Account, internal, op, BigUint, arc4, Base64, TransactionType, Asset, Application, BaseContract, Contract } from '@algorandfoundation/algorand-typescript';
2
- import { a as asMaybeUint64Cls, l as lazyContext, b as asUint64, g as getObjectReference, c as getApplicationAddress, M as MIN_TXN_FEE, D as DEFAULT_ACCOUNT_MIN_BALANCE, d as DEFAULT_MAX_TXN_LIFE, Z as ZERO_ADDRESS, e as DEFAULT_ASSET_CREATE_MIN_BALANCE, f as DEFAULT_ASSET_OPT_IN_MIN_BALANCE, h as DEFAULT_GLOBAL_GENESIS_HASH, i as asMaybeBytesCls, j as asMaybeBigUintCls, B as BytesBackedCls, U as Uint64BackedCls, k as asUint64Cls, m as encodeArc4Impl, n as nameOfType, o as getArc4Encoder, A as AccountCls, p as ApplicationCls, q as AssetCls, r as arc4Encoders, s as asUint8Array, t as asBytes, u as getRandomBytes, v as asNumber, w as MAX_BOX_SIZE, x as asBytesCls, y as conactUint8Arrays, z as asBigUint, C as BITS_IN_BYTE, E as MAX_BYTES_SIZE, F as testInvariant, G as MAX_UINT8, H as binaryStringToBytes, I as UINT64_SIZE, J as notImplementedError, K as MAX_UINT64, L as EllipticCurve, N as ecdsaPkDecompress, O as ecdsaPkRecover, P as ecdsaVerify, Q as ed25519verify, R as ed25519verifyBare, S as keccak256, T as sha256, V as sha3_256, W as sha512_256, X as vrfVerify, Y as combineIntoMaxBytePages, _ as MAX_ITEMS_IN_LOG, $ as ABI_RETURN_VALUE_LOG_PREFIX, a0 as AccountMap, a1 as getGenericTypeInfo, a2 as getArc4Selector, a3 as isContractProxy, a4 as getContractMethodAbiMetadata, a5 as copyAbiMetadatas, a6 as getContractAbiMetadata, a7 as BytesMap, a8 as iterBigInt, a9 as Uint64Map, aa as AssetHolding$1, ab as AccountData, ac as asBigInt, ad as TRANSACTION_GROUP_MAX_SIZE, ae as getRandomBigInt, af as ApplicationData, ag as AddressImpl, ah as UintNImpl, ai as getRandomNumber, aj as MAX_UINT16, ak as MAX_UINT32, al as MAX_UINT128, am as MAX_UINT256, an as MAX_UINT512, ao as DynamicBytesImpl, ap as StrImpl, aq as captureMethodConfig, ar as DEFAULT_TEMPLATE_VAR_PREFIX } from './runtime-helpers-BYjWzlmi.js';
2
+ import { a as asMaybeUint64Cls, l as lazyContext, b as asUint64, g as getObjectReference, c as getApplicationAddress, M as MIN_TXN_FEE, D as DEFAULT_ACCOUNT_MIN_BALANCE, d as DEFAULT_MAX_TXN_LIFE, Z as ZERO_ADDRESS, e as DEFAULT_ASSET_CREATE_MIN_BALANCE, f as DEFAULT_ASSET_OPT_IN_MIN_BALANCE, h as DEFAULT_GLOBAL_GENESIS_HASH, i as asMaybeBytesCls, j as asMaybeBigUintCls, B as BytesBackedCls, U as Uint64BackedCls, k as asUint64Cls, m as encodeArc4Impl, n as nameOfType, o as getArc4Encoder, A as AccountCls, p as ApplicationCls, q as AssetCls, r as arc4Encoders, s as asUint8Array, t as asBytes, u as getRandomBytes, v as asNumber, w as MAX_BOX_SIZE, x as asBytesCls, y as conactUint8Arrays, z as asBigUint, C as BITS_IN_BYTE, E as MAX_BYTES_SIZE, F as testInvariant, G as MAX_UINT8, H as binaryStringToBytes, I as UINT64_SIZE, J as notImplementedError, K as MAX_UINT64, L as EllipticCurve, N as ecdsaPkDecompress, O as ecdsaPkRecover, P as ecdsaVerify, Q as ed25519verify, R as ed25519verifyBare, S as keccak256, T as sha256, V as sha3_256, W as sha512_256, X as vrfVerify, Y as combineIntoMaxBytePages, _ as MAX_ITEMS_IN_LOG, $ as ABI_RETURN_VALUE_LOG_PREFIX, a0 as AccountMap, a1 as getGenericTypeInfo, a2 as getArc4Selector, a3 as isContractProxy, a4 as getContractMethodAbiMetadata, a5 as copyAbiMetadatas, a6 as getContractAbiMetadata, a7 as BytesMap, a8 as iterBigInt, a9 as Uint64Map, aa as AssetHolding$1, ab as AccountData, ac as asBigInt, ad as TRANSACTION_GROUP_MAX_SIZE, ae as getRandomBigInt, af as ApplicationData, ag as AddressImpl, ah as UintNImpl, ai as getRandomNumber, aj as MAX_UINT16, ak as MAX_UINT32, al as MAX_UINT128, am as MAX_UINT256, an as MAX_UINT512, ao as DynamicBytesImpl, ap as StrImpl, aq as captureMethodConfig, ar as DEFAULT_TEMPLATE_VAR_PREFIX } from './runtime-helpers-DHsiw5ur.js';
3
3
  import { ARC4Encoded } from '@algorandfoundation/algorand-typescript/arc4';
4
4
  import { randomBytes } from 'crypto';
5
5
  import '@algorandfoundation/puya-ts';
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "**"
5
5
  ],
6
6
  "name": "@algorandfoundation/algorand-typescript-testing",
7
- "version": "1.0.0-beta.4",
7
+ "version": "1.0.0-beta.5",
8
8
  "description": "A library which allows you to execute Algorand TypeScript code locally under a test context either emulating or mocking AVM behaviour.",
9
9
  "private": false,
10
10
  "peerDependencies": {
@@ -2,11 +2,11 @@ import { Bytes, internal, BaseContract, Account, Uint64, arc4, Ecdsa, OpUpFeeSou
2
2
  import { UintN, UFixedNxM, Byte, Str, Bool, StaticArray, Address, DynamicArray, Tuple, Struct, DynamicBytes, StaticBytes, ARC4Encoded } from '@algorandfoundation/algorand-typescript/arc4';
3
3
  import { encodingUtil } from '@algorandfoundation/puya-ts';
4
4
  import { randomBytes } from 'crypto';
5
- import { sha512_256 as sha512_256$1 } from 'js-sha512';
5
+ import js_sha512 from 'js-sha512';
6
6
  import assert from 'assert';
7
7
  import elliptic from 'elliptic';
8
- import { sha256 as sha256$1 } from 'js-sha256';
9
- import { sha3_256 as sha3_256$1, keccak256 as keccak256$1 } from 'js-sha3';
8
+ import js_sha256 from 'js-sha256';
9
+ import js_sha3 from 'js-sha3';
10
10
  import nacl from 'tweetnacl';
11
11
 
12
12
  const UINT64_SIZE = 64;
@@ -243,11 +243,11 @@ const uint8ArrayToNumber = (value) => {
243
243
  return value.reduce((acc, x) => acc * 256 + x, 0);
244
244
  };
245
245
  const checksumFromPublicKey = (pk) => {
246
- return Uint8Array.from(sha512_256$1.array(pk).slice(HASH_BYTES_LENGTH - ALGORAND_CHECKSUM_BYTE_LENGTH, HASH_BYTES_LENGTH));
246
+ return Uint8Array.from(js_sha512.sha512_256.array(pk).slice(HASH_BYTES_LENGTH - ALGORAND_CHECKSUM_BYTE_LENGTH, HASH_BYTES_LENGTH));
247
247
  };
248
248
  const getApplicationAddress = (appId) => {
249
249
  const toBeSigned = conactUint8Arrays(asUint8Array(APP_ID_PREFIX), encodingUtil.bigIntToUint8Array(asBigInt(appId), 8));
250
- const appIdHash = sha512_256$1.array(toBeSigned);
250
+ const appIdHash = js_sha512.sha512_256.array(toBeSigned);
251
251
  const publicKey = Uint8Array.from(appIdHash);
252
252
  const address = encodeAddress(publicKey);
253
253
  return Account(Bytes.fromBase32(address));
@@ -1658,7 +1658,7 @@ const getArc4Signature = (metadata) => {
1658
1658
  return metadata.methodSignature;
1659
1659
  };
1660
1660
  const getArc4Selector = (metadata) => {
1661
- const hash = sha512_256$1.array(getArc4Signature(metadata));
1661
+ const hash = js_sha512.sha512_256.array(getArc4Signature(metadata));
1662
1662
  return new Uint8Array(hash.slice(0, 4));
1663
1663
  };
1664
1664
  const getArc4TypeName = (t) => {
@@ -1711,25 +1711,25 @@ function testInvariant(condition, message) {
1711
1711
 
1712
1712
  const sha256 = (a) => {
1713
1713
  const bytesA = internal.primitives.BytesCls.fromCompat(a);
1714
- const hashArray = sha256$1.create().update(bytesA.asUint8Array()).digest();
1714
+ const hashArray = js_sha256.sha256.create().update(bytesA.asUint8Array()).digest();
1715
1715
  const hashBytes = internal.primitives.BytesCls.fromCompat(new Uint8Array(hashArray));
1716
1716
  return hashBytes.asAlgoTs();
1717
1717
  };
1718
1718
  const sha3_256 = (a) => {
1719
1719
  const bytesA = internal.primitives.BytesCls.fromCompat(a);
1720
- const hashArray = sha3_256$1.create().update(bytesA.asUint8Array()).digest();
1720
+ const hashArray = js_sha3.sha3_256.create().update(bytesA.asUint8Array()).digest();
1721
1721
  const hashBytes = internal.primitives.BytesCls.fromCompat(new Uint8Array(hashArray));
1722
1722
  return hashBytes.asAlgoTs();
1723
1723
  };
1724
1724
  const keccak256 = (a) => {
1725
1725
  const bytesA = internal.primitives.BytesCls.fromCompat(a);
1726
- const hashArray = keccak256$1.create().update(bytesA.asUint8Array()).digest();
1726
+ const hashArray = js_sha3.keccak256.create().update(bytesA.asUint8Array()).digest();
1727
1727
  const hashBytes = internal.primitives.BytesCls.fromCompat(new Uint8Array(hashArray));
1728
1728
  return hashBytes.asAlgoTs();
1729
1729
  };
1730
1730
  const sha512_256 = (a) => {
1731
1731
  const bytesA = internal.primitives.BytesCls.fromCompat(a);
1732
- const hashArray = sha512_256$1.create().update(bytesA.asUint8Array()).digest();
1732
+ const hashArray = js_sha512.sha512_256.create().update(bytesA.asUint8Array()).digest();
1733
1733
  const hashBytes = internal.primitives.BytesCls.fromCompat(new Uint8Array(hashArray));
1734
1734
  return hashBytes.asAlgoTs();
1735
1735
  };
@@ -1743,7 +1743,7 @@ const ed25519verify = (a, b, c) => {
1743
1743
  const txn = lazyContext.activeGroup.activeTransaction;
1744
1744
  const programBytes = asBytesCls(txn.onCompletion == arc4.OnCompleteAction[arc4.OnCompleteAction.ClearState] ? txn.clearStateProgram : txn.approvalProgram);
1745
1745
  const logicSig = conactUint8Arrays(asUint8Array(PROGRAM_TAG), programBytes.asUint8Array());
1746
- const logicSigAddress = sha512_256$1.array(logicSig);
1746
+ const logicSigAddress = js_sha512.sha512_256.array(logicSig);
1747
1747
  const addressBytes = Bytes(logicSigAddress);
1748
1748
  const data = LOGIC_DATA_PREFIX.concat(addressBytes).concat(asBytes(a));
1749
1749
  return ed25519verifyBare(data, b, c);
@@ -2245,4 +2245,4 @@ function getGenericTypeInfo(target) {
2245
2245
  }
2246
2246
 
2247
2247
  export { ABI_RETURN_VALUE_LOG_PREFIX as $, AccountCls as A, BytesBackedCls as B, BITS_IN_BYTE as C, DEFAULT_ACCOUNT_MIN_BALANCE as D, MAX_BYTES_SIZE as E, testInvariant as F, MAX_UINT8 as G, binaryStringToBytes as H, UINT64_SIZE as I, notImplementedError as J, MAX_UINT64 as K, EllipticCurve as L, MIN_TXN_FEE as M, ecdsaPkDecompress as N, ecdsaPkRecover as O, ecdsaVerify as P, ed25519verify as Q, ed25519verifyBare as R, keccak256 as S, sha256 as T, Uint64BackedCls as U, sha3_256 as V, sha512_256 as W, vrfVerify as X, combineIntoMaxBytePages as Y, ZERO_ADDRESS as Z, MAX_ITEMS_IN_LOG as _, asMaybeUint64Cls as a, AccountMap as a0, getGenericTypeInfo as a1, getArc4Selector as a2, isContractProxy as a3, getContractMethodAbiMetadata as a4, copyAbiMetadatas as a5, getContractAbiMetadata as a6, BytesMap as a7, iterBigInt as a8, Uint64Map as a9, ensureBudgetImpl as aA, assertMatchImpl as aB, matchImpl as aC, TemplateVarImpl as aD, urangeImpl as aE, UFixedNxMImpl as aF, ByteImpl as aG, BoolImpl as aH, StaticArrayImpl as aI, DynamicArrayImpl as aJ, TupleImpl as aK, StructImpl as aL, StaticBytesImpl as aM, interpretAsArc4Impl as aN, getArc4TypeName$1 as aO, getArc4Encoded as aP, AssetHolding as aa, AccountData as ab, asBigInt as ac, TRANSACTION_GROUP_MAX_SIZE as ad, getRandomBigInt as ae, ApplicationData as af, AddressImpl as ag, UintNImpl as ah, getRandomNumber as ai, MAX_UINT16 as aj, MAX_UINT32 as ak, MAX_UINT128 as al, MAX_UINT256 as am, MAX_UINT512 as an, DynamicBytesImpl as ao, StrImpl as ap, captureMethodConfig as aq, DEFAULT_TEMPLATE_VAR_PREFIX as ar, switchableValue as as, binaryOp as at, unaryOp as au, captureGenericTypeInfo as av, attachAbiMetadata as aw, compileImpl as ax, emitImpl as ay, decodeArc4Impl as az, asUint64 as b, getApplicationAddress as c, DEFAULT_MAX_TXN_LIFE as d, DEFAULT_ASSET_CREATE_MIN_BALANCE as e, DEFAULT_ASSET_OPT_IN_MIN_BALANCE as f, getObjectReference as g, DEFAULT_GLOBAL_GENESIS_HASH as h, asMaybeBytesCls as i, asMaybeBigUintCls as j, asUint64Cls as k, lazyContext as l, encodeArc4Impl as m, nameOfType as n, getArc4Encoder as o, ApplicationCls as p, AssetCls as q, arc4Encoders as r, asUint8Array as s, asBytes as t, getRandomBytes as u, asNumber as v, MAX_BOX_SIZE as w, asBytesCls as x, conactUint8Arrays as y, asBigUint as z };
2248
- //# sourceMappingURL=runtime-helpers-BYjWzlmi.js.map
2248
+ //# sourceMappingURL=runtime-helpers-DHsiw5ur.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-helpers-DHsiw5ur.js","sources":["../src/constants.ts","../src/context-helpers/internal-context.ts","../src/util.ts","../src/collections/custom-key-map.ts","../src/impl/base.ts","../src/impl/application.ts","../src/impl/asset.ts","../src/impl/account.ts","../src/impl/encoded-types.ts","../src/abi-metadata.ts","../src/errors.ts","../src/impl/crypto.ts","../src/impl/compiled.ts","../src/impl/emit.ts","../src/impl/ensure-budget.ts","../src/impl/match.ts","../src/impl/template-var.ts","../src/impl/urange.ts","../src/runtime-helpers.ts"],"sourcesContent":["import { Bytes } from '@algorandfoundation/algorand-typescript'\n\nexport const UINT64_SIZE = 64\nexport const UINT512_SIZE = 512\nexport const MAX_UINT8 = 2 ** 8 - 1\nexport const MAX_UINT16 = 2 ** 16 - 1\nexport const MAX_UINT32 = 2 ** 32 - 1\nexport const MAX_UINT64 = 2n ** 64n - 1n\nexport const MAX_UINT128 = 2n ** 128n - 1n\nexport const MAX_UINT256 = 2n ** 256n - 1n\nexport const MAX_UINT512 = 2n ** 512n - 1n\nexport const MAX_BYTES_SIZE = 4096\nexport const MAX_LOG_SIZE = 1024\nexport const MAX_ITEMS_IN_LOG = 32\nexport const MAX_BOX_SIZE = 32768\nexport const BITS_IN_BYTE = 8\nexport const DEFAULT_ACCOUNT_MIN_BALANCE = 100_000\nexport const DEFAULT_MAX_TXN_LIFE = 1_000\nexport const DEFAULT_ASSET_CREATE_MIN_BALANCE = 1000_000\nexport const DEFAULT_ASSET_OPT_IN_MIN_BALANCE = 10_000\n\n// from python code: list(b\"\\x85Y\\xb5\\x14x\\xfd\\x89\\xc1vC\\xd0]\\x15\\xa8\\xaek\\x10\\xabG\\xbbm\\x8a1\\x88\\x11V\\xe6\\xbd;\\xae\\x95\\xd1\")\nexport const DEFAULT_GLOBAL_GENESIS_HASH = Bytes(\n new Uint8Array([\n 133, 89, 181, 20, 120, 253, 137, 193, 118, 67, 208, 93, 21, 168, 174, 107, 16, 171, 71, 187, 109, 138, 49, 136, 17, 86, 230, 189, 59,\n 174, 149, 209,\n ]),\n)\n\n// algorand encoded address of 32 zero bytes\nexport const ZERO_ADDRESS = Bytes.fromBase32('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA')\n\n/**\n\"\\x09\" # pragma version 9\n\"\\x81\\x01\" # pushint 1\n */\nexport const ALWAYS_APPROVE_TEAL_PROGRAM = Bytes(new Uint8Array([0x09, 0x81, 0x01]))\n\n// bytes: program (logic) data prefix when signing\nexport const LOGIC_DATA_PREFIX = Bytes('ProgData')\n\n//number: minimum transaction fee\nexport const MIN_TXN_FEE = 1000\n\nexport const ABI_RETURN_VALUE_LOG_PREFIX = Bytes.fromHex('151F7C75')\n\nexport const UINT64_OVERFLOW_UNDERFLOW_MESSAGE = 'Uint64 overflow or underflow'\nexport const BIGUINT_OVERFLOW_UNDERFLOW_MESSAGE = 'BigUint overflow or underflow'\nexport const DEFAULT_TEMPLATE_VAR_PREFIX = 'TMPL_'\n\nexport const APP_ID_PREFIX = 'appID'\nexport const HASH_BYTES_LENGTH = 32\nexport const ALGORAND_ADDRESS_BYTE_LENGTH = 36\nexport const ALGORAND_CHECKSUM_BYTE_LENGTH = 4\nexport const ALGORAND_ADDRESS_LENGTH = 58\n\nexport const PROGRAM_TAG = 'Program'\n\nexport const TRANSACTION_GROUP_MAX_SIZE = 16\n\nexport enum OnApplicationComplete {\n NoOpOC = 0,\n OptInOC = 1,\n CloseOutOC = 2,\n ClearStateOC = 3,\n UpdateApplicationOC = 4,\n DeleteApplicationOC = 5,\n}\n","import { Account, BaseContract, internal } from '@algorandfoundation/algorand-typescript'\nimport { AccountData } from '../impl/account'\nimport { ApplicationData } from '../impl/application'\nimport { AssetData } from '../impl/asset'\nimport { VoterData } from '../impl/voter-params'\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 | BaseContract): ApplicationData {\n const uint64Id =\n id instanceof BaseContract ? this.ledger.getApplicationForContract(id).id : internal.primitives.Uint64Cls.fromCompat(id)\n const data = this.ledger.applicationDataMap.get(uint64Id)\n if (!data) {\n throw internal.errors.internalError('Unknown application, check correct testing context is active')\n }\n return data\n }\n\n getVoterData(account: Account): VoterData {\n const data = this.ledger.voterDataMap.get(account)\n if (!data) {\n throw internal.errors.internalError('Unknown voter, check correct testing context is active')\n }\n return data\n }\n}\n\nexport const lazyContext = new InternalContext()\n","import { Account, Bytes, bytes, internal } from '@algorandfoundation/algorand-typescript'\nimport { encodingUtil } from '@algorandfoundation/puya-ts'\nimport { randomBytes } from 'crypto'\nimport js_sha512 from 'js-sha512'\nimport {\n ALGORAND_ADDRESS_BYTE_LENGTH,\n ALGORAND_ADDRESS_LENGTH,\n ALGORAND_CHECKSUM_BYTE_LENGTH,\n APP_ID_PREFIX,\n BITS_IN_BYTE,\n HASH_BYTES_LENGTH,\n MAX_BYTES_SIZE,\n MAX_UINT512,\n MAX_UINT8,\n UINT512_SIZE,\n} from './constants'\nimport { DeliberateAny } from './typescript-helpers'\n\nexport const nameOfType = (x: unknown) => {\n if (typeof x === 'object') {\n if (x === null) return 'Null'\n if (x === undefined) return 'undefined'\n if ('constructor' in x) {\n return x.constructor.name\n }\n }\n return typeof x\n}\n\nexport function* iterBigInt(start: bigint, end: bigint): Generator<bigint> {\n for (let i = start; i < end; i++) {\n yield BigInt(i)\n }\n}\n\nexport const asBigInt = (v: internal.primitives.StubUint64Compat): bigint => asUint64Cls(v).asBigInt()\n\nexport const asNumber = (v: internal.primitives.StubUint64Compat): number => asUint64Cls(v).asNumber()\n\nexport const asUint64Cls = (val: internal.primitives.StubUint64Compat) => internal.primitives.Uint64Cls.fromCompat(val)\n\nexport const asBigUintCls = (val: internal.primitives.StubBigUintCompat | Uint8Array) =>\n internal.primitives.BigUintCls.fromCompat(\n val instanceof Uint8Array ? asBytes(val) : Array.isArray(val) ? asBytes(new Uint8Array(val)) : val,\n )\n\nexport const asBytesCls = (val: internal.primitives.StubBytesCompat | Uint8Array) => internal.primitives.BytesCls.fromCompat(val)\n\nexport const asUint64 = (val: internal.primitives.StubUint64Compat) => asUint64Cls(val).asAlgoTs()\n\nexport const asBigUint = (val: internal.primitives.StubBigUintCompat | Uint8Array) => asBigUintCls(val).asAlgoTs()\n\nexport const asBytes = (val: internal.primitives.StubBytesCompat | Uint8Array) => asBytesCls(val).asAlgoTs()\n\nexport const asUint8Array = (val: internal.primitives.StubBytesCompat | Uint8Array) => asBytesCls(val).asUint8Array()\n\nexport const asMaybeUint64Cls = (val: DeliberateAny) => {\n try {\n return internal.primitives.Uint64Cls.fromCompat(val)\n } catch (e) {\n if (e instanceof internal.errors.InternalError) {\n // swallow error and return undefined\n } else {\n throw e\n }\n }\n return undefined\n}\n\nexport const asMaybeBigUintCls = (val: DeliberateAny) => {\n try {\n return internal.primitives.BigUintCls.fromCompat(val)\n } catch (e) {\n if (e instanceof internal.errors.InternalError) {\n // swallow error and return undefined\n } else {\n throw e\n }\n }\n return undefined\n}\nexport const asMaybeBytesCls = (val: DeliberateAny) => {\n try {\n return internal.primitives.BytesCls.fromCompat(val)\n } catch (e) {\n if (e instanceof internal.errors.InternalError) {\n // swallow error and return undefined\n } else {\n throw e\n }\n }\n return undefined\n}\n\nexport const binaryStringToBytes = (s: string): internal.primitives.BytesCls =>\n internal.primitives.BytesCls.fromCompat(new Uint8Array(s.match(/.{1,8}/g)!.map((x) => parseInt(x, 2))))\n\nexport const getRandomNumber = (min: number, max: number): number => {\n return Math.floor(Math.random() * (max - min + 1)) + min\n}\n\nexport const getRandomBigInt = (min: number | bigint, max: number | bigint): bigint => {\n const bigIntMin = BigInt(min)\n const bigIntMax = BigInt(max)\n const randomValue = [...Array(UINT512_SIZE / BITS_IN_BYTE).keys()]\n .map(() => getRandomNumber(0, MAX_UINT8))\n .reduce((acc, x) => acc * 256n + BigInt(x), 0n)\n return (randomValue % (bigIntMax - bigIntMin)) + bigIntMin\n}\n\nexport const getRandomBytes = (length: number): internal.primitives.BytesCls => asBytesCls(Bytes(randomBytes(length)))\n\nconst NoValue = Symbol('no-value')\ntype LazyInstance<T> = () => T\nexport const Lazy = <T>(factory: () => T): LazyInstance<T> => {\n let val: T | typeof NoValue = NoValue\n\n return () => {\n if (val === NoValue) {\n val = factory()\n }\n return val\n }\n}\n\nconst ObjectReferenceSymbol = Symbol('ObjectReference')\nconst objectRefIter = iterBigInt(1001n, MAX_UINT512)\nexport const getObjectReference = (obj: DeliberateAny): bigint => {\n const tryGetReference = (obj: DeliberateAny): bigint | undefined => {\n const s = Object.getOwnPropertySymbols(obj).find((s) => s.toString() === ObjectReferenceSymbol.toString())\n return s ? obj[s] : ObjectReferenceSymbol in obj ? obj[ObjectReferenceSymbol] : undefined\n }\n const existingRef = tryGetReference(obj)\n if (existingRef !== undefined) {\n return existingRef\n }\n const ref = objectRefIter.next().value\n Object.defineProperty(obj, ObjectReferenceSymbol, {\n value: ref,\n enumerable: false,\n writable: false,\n })\n\n return ref\n}\n\nexport const combineIntoMaxBytePages = (pages: bytes[]): bytes[] => {\n const combined = pages.reduce((acc, x) => acc.concat(x), asBytesCls(''))\n const totalPages = (asNumber(combined.length) + MAX_BYTES_SIZE - 1) / MAX_BYTES_SIZE\n const result = [] as bytes[]\n for (let i = 0; i < totalPages; i++) {\n const start = i * MAX_BYTES_SIZE\n const end = Math.min((i + 1) * MAX_BYTES_SIZE, asNumber(combined.length))\n const page = combined.slice(start, end)\n result.push(page.asAlgoTs())\n }\n return result\n}\n\nexport const conactUint8Arrays = (...values: Uint8Array[]): Uint8Array => {\n const result = new Uint8Array(values.reduce((acc, value) => acc + value.length, 0))\n let index = 0\n for (const value of values) {\n result.set(value, index)\n index += value.length\n }\n return result\n}\n\nexport const uint8ArrayToNumber = (value: Uint8Array): number => {\n return value.reduce((acc, x) => acc * 256 + x, 0)\n}\n\nexport const checksumFromPublicKey = (pk: Uint8Array): Uint8Array => {\n return Uint8Array.from(js_sha512.sha512_256.array(pk).slice(HASH_BYTES_LENGTH - ALGORAND_CHECKSUM_BYTE_LENGTH, HASH_BYTES_LENGTH))\n}\n\nexport const getApplicationAddress = (appId: internal.primitives.StubUint64Compat): Account => {\n const toBeSigned = conactUint8Arrays(asUint8Array(APP_ID_PREFIX), encodingUtil.bigIntToUint8Array(asBigInt(appId), 8))\n const appIdHash = js_sha512.sha512_256.array(toBeSigned)\n const publicKey = Uint8Array.from(appIdHash)\n const address = encodeAddress(publicKey)\n return Account(Bytes.fromBase32(address))\n}\n\nexport const encodeAddress = (address: Uint8Array): string => {\n const checksum = checksumFromPublicKey(address)\n return encodingUtil.uint8ArrayToBase32(conactUint8Arrays(address, checksum)).slice(0, ALGORAND_ADDRESS_LENGTH)\n}\n\nexport const decodePublicKey = (address: string): Uint8Array => {\n const decoded = encodingUtil.base32ToUint8Array(address)\n return decoded.slice(0, ALGORAND_ADDRESS_BYTE_LENGTH - ALGORAND_CHECKSUM_BYTE_LENGTH)\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 { bytes, internal, Uint64, uint64 } from '@algorandfoundation/algorand-typescript'\nimport { encodingUtil } from '@algorandfoundation/puya-ts'\nimport type { TypeInfo } from '../encoders'\n\nexport abstract class BytesBackedCls {\n #value: bytes\n // #typeInfo: GenericTypeInfo | undefined\n\n get bytes() {\n return this.#value\n }\n constructor(value: bytes, _typeInfo?: TypeInfo) {\n this.#value = value\n // this.#typeInfo = typeInfo\n }\n\n static fromBytes<T extends BytesBackedCls>(\n this: { new (v: bytes, typeInfo?: TypeInfo): T },\n value: internal.primitives.StubBytesCompat | Uint8Array,\n typeInfo?: TypeInfo,\n ) {\n return new this(internal.primitives.BytesCls.fromCompat(value).asAlgoTs(), typeInfo)\n }\n}\n\nexport abstract class Uint64BackedCls {\n #value: uint64\n\n get uint64() {\n return this.#value\n }\n\n constructor(value: uint64) {\n this.#value = value\n }\n\n static fromBytes<T extends Uint64BackedCls>(this: { new (v: uint64): T }, value: internal.primitives.StubBytesCompat | Uint8Array) {\n const uint8ArrayValue = value instanceof Uint8Array ? value : internal.primitives.BytesCls.fromCompat(value).asUint8Array()\n const uint64Value = Uint64(encodingUtil.uint8ArrayToBigInt(uint8ArrayValue))\n return new this(uint64Value)\n }\n}\n","import { Account, Application, bytes, LocalState, uint64 } from '@algorandfoundation/algorand-typescript'\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 { asUint64, getApplicationAddress } 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 return getApplicationAddress(this.id)\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 incentiveEligible = false\n lastProposed?: uint64\n lastHeartbeat?: uint64\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 `Asset` or `Application` instance.')\n }\n}\n","import { Account, BigUintCompat, Bytes, bytes, internal, StringCompat, uint64, Uint64Compat } from '@algorandfoundation/algorand-typescript'\nimport {\n Address,\n ARC4Encoded,\n BitSize,\n Bool,\n Byte,\n DynamicArray,\n DynamicBytes,\n StaticArray,\n StaticBytes,\n Str,\n Struct,\n Tuple,\n UFixedNxM,\n UintN,\n} from '@algorandfoundation/algorand-typescript/arc4'\nimport { encodingUtil } from '@algorandfoundation/puya-ts'\nimport assert from 'assert'\nimport {\n ABI_RETURN_VALUE_LOG_PREFIX,\n ALGORAND_ADDRESS_BYTE_LENGTH,\n ALGORAND_CHECKSUM_BYTE_LENGTH,\n BITS_IN_BYTE,\n UINT64_SIZE,\n} from '../constants'\nimport { lazyContext } from '../context-helpers/internal-context'\nimport { fromBytes, TypeInfo } from '../encoders'\nimport { DeliberateAny } from '../typescript-helpers'\nimport { asBigInt, asBigUint, asBigUintCls, asBytesCls, asUint64, asUint8Array, conactUint8Arrays, uint8ArrayToNumber } from '../util'\nimport { AccountCls } from './account'\nimport { ApplicationCls } from './application'\nimport { AssetCls } from './asset'\nimport { ApplicationTransaction } from './transactions'\n\nconst ABI_LENGTH_SIZE = 2\nconst maxBigIntValue = (bitSize: number) => 2n ** BigInt(bitSize) - 1n\nconst maxBytesLength = (bitSize: number) => Math.floor(bitSize / BITS_IN_BYTE)\nconst encodeLength = (length: number) => new internal.primitives.BytesCls(encodingUtil.bigIntToUint8Array(BigInt(length), ABI_LENGTH_SIZE))\n\ntype CompatForArc4Int<N extends BitSize> = N extends 8 | 16 | 32 | 64 ? Uint64Compat : BigUintCompat\nexport class UintNImpl<N extends BitSize> extends UintN<N> {\n private value: Uint8Array\n private bitSize: N\n typeInfo: TypeInfo\n\n constructor(typeInfo: TypeInfo | string, v?: CompatForArc4Int<N>) {\n super()\n this.typeInfo = typeof typeInfo === 'string' ? JSON.parse(typeInfo) : typeInfo\n this.bitSize = UintNImpl.getMaxBitsLength(this.typeInfo) as N\n\n assert([8, 16, 32, 64, 128, 256, 512].includes(this.bitSize), `Invalid bit size ${this.bitSize}`)\n\n const bigIntValue = asBigUintCls(v ?? 0n).valueOf()\n const maxValue = maxBigIntValue(this.bitSize)\n assert(bigIntValue <= maxValue, `expected value <= ${maxValue}, got: ${bigIntValue}`)\n\n this.value = encodingUtil.bigIntToUint8Array(bigIntValue, maxBytesLength(this.bitSize))\n }\n\n get native() {\n const bigIntValue = encodingUtil.uint8ArrayToBigInt(this.value)\n return (this.bitSize <= UINT64_SIZE ? asUint64(bigIntValue) : asBigUint(bigIntValue)) as UintN<N>['native']\n }\n\n get bytes(): bytes {\n return Bytes(this.value)\n }\n\n equals(other: this): boolean {\n if (!(other instanceof UintNImpl) || JSON.stringify(this.typeInfo) !== JSON.stringify(other.typeInfo)) {\n throw new internal.errors.CodeError(`Expected expression of type ${this.typeInfo.name}, got ${other.typeInfo.name}`)\n }\n return this.bytes.equals(other.bytes)\n }\n\n static fromBytesImpl(\n value: internal.primitives.StubBytesCompat | Uint8Array,\n typeInfo: string | TypeInfo,\n prefix: 'none' | 'log' = 'none',\n ): UintNImpl<BitSize> {\n let bytesValue = asBytesCls(value)\n if (prefix === 'log') {\n assert(bytesValue.slice(0, 4).equals(ABI_RETURN_VALUE_LOG_PREFIX), 'ABI return prefix not found')\n bytesValue = bytesValue.slice(4)\n }\n const result = new UintNImpl<BitSize>(typeInfo)\n result.value = asUint8Array(bytesValue)\n return result\n }\n\n static getMaxBitsLength(typeInfo: TypeInfo): BitSize {\n return parseInt((typeInfo.genericArgs as TypeInfo[])![0].name, 10) as BitSize\n }\n\n static getArc4TypeName = (t: TypeInfo): string => {\n return `uint${this.getMaxBitsLength(t)}`\n }\n}\n\nconst regExpNxM = (maxPrecision: number) => new RegExp(`^\\\\d*\\\\.?\\\\d{0,${maxPrecision}}$`)\nconst trimTrailingDecimalZeros = (v: string) => v.replace(/(\\d+\\.\\d*?)0+$/, '$1').replace(/\\.$/, '')\ntype uFixedNxMGenericArgs = { n: TypeInfo; m: TypeInfo }\nexport class UFixedNxMImpl<N extends BitSize, M extends number> extends UFixedNxM<N, M> {\n private value: Uint8Array\n private bitSize: N\n private precision: M\n typeInfo: TypeInfo\n\n constructor(typeInfo: TypeInfo | string, v: `${number}.${number}`) {\n super(v)\n this.typeInfo = typeof typeInfo === 'string' ? JSON.parse(typeInfo) : typeInfo\n const genericArgs = this.typeInfo.genericArgs as uFixedNxMGenericArgs\n this.bitSize = UFixedNxMImpl.getMaxBitsLength(this.typeInfo) as N\n this.precision = parseInt(genericArgs.m.name, 10) as M\n\n const trimmedValue = trimTrailingDecimalZeros(v)\n assert(regExpNxM(this.precision).test(trimmedValue), `expected positive decimal literal with max of ${this.precision} decimal places`)\n\n const bigIntValue = BigInt(trimmedValue.replace('.', ''))\n const maxValue = maxBigIntValue(this.bitSize)\n assert(bigIntValue <= maxValue, `expected value <= ${maxValue}, got: ${bigIntValue}`)\n\n this.value = encodingUtil.bigIntToUint8Array(bigIntValue, maxBytesLength(this.bitSize))\n }\n\n get native() {\n const bigIntValue = encodingUtil.uint8ArrayToBigInt(this.value)\n return (this.bitSize <= UINT64_SIZE ? asUint64(bigIntValue) : asBigUint(bigIntValue)) as UFixedNxM<N, M>['native']\n }\n\n get bytes(): bytes {\n return Bytes(this.value)\n }\n\n equals(other: this): boolean {\n if (!(other instanceof UFixedNxMImpl) || JSON.stringify(this.typeInfo) !== JSON.stringify(other.typeInfo)) {\n throw new internal.errors.CodeError(`Expected expression of type ${this.typeInfo.name}, got ${other.typeInfo.name}`)\n }\n return this.bytes.equals(other.bytes)\n }\n\n static fromBytesImpl(\n value: internal.primitives.StubBytesCompat | Uint8Array,\n typeInfo: string | TypeInfo,\n prefix: 'none' | 'log' = 'none',\n ): UFixedNxM<BitSize, number> {\n let bytesValue = asBytesCls(value)\n if (prefix === 'log') {\n assert(bytesValue.slice(0, 4).equals(ABI_RETURN_VALUE_LOG_PREFIX), 'ABI return prefix not found')\n bytesValue = bytesValue.slice(4)\n }\n const result = new UFixedNxMImpl<BitSize, number>(typeInfo, '0.0')\n result.value = asUint8Array(bytesValue)\n return result\n }\n\n static getMaxBitsLength(typeInfo: TypeInfo): BitSize {\n const genericArgs = typeInfo.genericArgs as uFixedNxMGenericArgs\n return parseInt(genericArgs.n.name, 10) as BitSize\n }\n\n static getArc4TypeName = (t: TypeInfo): string => {\n const genericArgs = t.genericArgs as uFixedNxMGenericArgs\n return `ufixed${genericArgs.n.name}x${genericArgs.m.name}`\n }\n}\n\nexport class ByteImpl extends Byte {\n typeInfo: TypeInfo\n private value: UintNImpl<8>\n\n constructor(typeInfo: TypeInfo | string, v?: CompatForArc4Int<8>) {\n super(v)\n this.typeInfo = typeof typeInfo === 'string' ? JSON.parse(typeInfo) : typeInfo\n this.value = new UintNImpl<8>(typeInfo, v)\n }\n\n get native() {\n return this.value.native\n }\n\n get bytes(): bytes {\n return this.value.bytes\n }\n\n equals(other: this): boolean {\n if (!(other instanceof ByteImpl) || JSON.stringify(this.value.typeInfo) !== JSON.stringify(other.value.typeInfo)) {\n throw new internal.errors.CodeError(`Expected expression of type ${this.value.typeInfo.name}, got ${other.value.typeInfo.name}`)\n }\n return this.bytes.equals(other.bytes)\n }\n\n static fromBytesImpl(\n value: internal.primitives.StubBytesCompat | Uint8Array,\n typeInfo: string | TypeInfo,\n prefix: 'none' | 'log' = 'none',\n ): ByteImpl {\n const uintNValue = UintNImpl.fromBytesImpl(value, typeInfo, prefix) as UintNImpl<8>\n const result = new ByteImpl(typeInfo)\n result.value = uintNValue\n return result\n }\n\n static getMaxBitsLength(typeInfo: TypeInfo): BitSize {\n return UintNImpl.getMaxBitsLength(typeInfo)\n }\n}\n\nexport class StrImpl extends Str {\n typeInfo: TypeInfo\n private value: Uint8Array\n\n constructor(typeInfo: TypeInfo | string, s?: StringCompat) {\n super()\n const bytesValue = asBytesCls(s ?? '')\n const bytesLength = encodeLength(bytesValue.length.asNumber())\n this.typeInfo = typeof typeInfo === 'string' ? JSON.parse(typeInfo) : typeInfo\n this.value = asUint8Array(bytesLength.concat(bytesValue))\n }\n get native(): string {\n return encodingUtil.uint8ArrayToUtf8(this.value.slice(ABI_LENGTH_SIZE))\n }\n\n get bytes(): bytes {\n return Bytes(this.value)\n }\n\n equals(other: this): boolean {\n if (!(other instanceof StrImpl)) {\n throw new internal.errors.CodeError(`Expected expression of type Str, got ${(other as object).constructor.name}`)\n }\n return this.bytes.equals(other.bytes)\n }\n\n static fromBytesImpl(\n value: internal.primitives.StubBytesCompat | Uint8Array,\n typeInfo: string | TypeInfo,\n prefix: 'none' | 'log' = 'none',\n ): StrImpl {\n let bytesValue = asBytesCls(value)\n if (prefix === 'log') {\n assert(bytesValue.slice(0, 4).equals(ABI_RETURN_VALUE_LOG_PREFIX), 'ABI return prefix not found')\n bytesValue = bytesValue.slice(4)\n }\n const result = new StrImpl(typeInfo)\n result.value = asUint8Array(bytesValue)\n return result\n }\n}\n\nconst TRUE_BIGINT_VALUE = 128n\nconst FALSE_BIGINT_VALUE = 0n\nexport class BoolImpl extends Bool {\n private value: Uint8Array\n typeInfo: TypeInfo\n\n constructor(typeInfo: TypeInfo | string, v?: boolean) {\n super(v)\n this.typeInfo = typeof typeInfo === 'string' ? JSON.parse(typeInfo) : typeInfo\n this.value = encodingUtil.bigIntToUint8Array(v ? TRUE_BIGINT_VALUE : FALSE_BIGINT_VALUE, 1)\n }\n\n get native(): boolean {\n return encodingUtil.uint8ArrayToBigInt(this.value) === TRUE_BIGINT_VALUE\n }\n\n equals(other: this): boolean {\n if (!(other instanceof BoolImpl)) {\n throw new internal.errors.CodeError(`Expected expression of type Bool, got ${(other as object).constructor.name}`)\n }\n return this.bytes.equals(other.bytes)\n }\n\n get bytes(): bytes {\n return Bytes(this.value)\n }\n\n static fromBytesImpl(\n value: internal.primitives.StubBytesCompat | Uint8Array,\n typeInfo: string | TypeInfo,\n prefix: 'none' | 'log' = 'none',\n ): BoolImpl {\n let bytesValue = asBytesCls(value)\n if (prefix === 'log') {\n assert(bytesValue.slice(0, 4).equals(ABI_RETURN_VALUE_LOG_PREFIX), 'ABI return prefix not found')\n bytesValue = bytesValue.slice(4)\n }\n const result = new BoolImpl(typeInfo)\n result.value = asUint8Array(bytesValue)\n return result\n }\n}\n\nconst areAllARC4Encoded = <T extends ARC4Encoded>(items: T[]): items is T[] => items.every((item) => item instanceof ARC4Encoded)\nconst checkItemTypeName = (type: TypeInfo, value: ARC4Encoded) => {\n const typeName = trimGenericTypeName(type.name)\n const validTypeNames = [typeName, `${typeName}Impl`]\n assert(validTypeNames.includes(value.constructor.name), `item must be of type ${typeName}, not ${value.constructor.name}`)\n}\ntype StaticArrayGenericArgs = { elementType: TypeInfo; size: TypeInfo }\nconst arrayProxyHandler = <TItem>() => ({\n get(target: { items: TItem[] }, prop: PropertyKey) {\n const idx = prop ? parseInt(prop.toString(), 10) : NaN\n if (!isNaN(idx)) {\n if (idx < target.items.length) return target.items[idx]\n internal.errors.avmError('Index out of bounds')\n } else if (prop === Symbol.iterator) {\n return target.items[Symbol.iterator].bind(target.items)\n } else if (prop === 'entries') {\n return target.items.entries.bind(target.items)\n } else if (prop === 'at') {\n return (index: Uint64Compat): TItem => {\n return internal.primitives.arrayUtil.arrayAt(target.items, index)\n }\n }\n return Reflect.get(target, prop)\n },\n set(target: { items: TItem[]; setItem: (index: number, value: TItem) => void }, prop: PropertyKey, value: TItem) {\n const idx = prop ? parseInt(prop.toString(), 10) : NaN\n if (!isNaN(idx)) {\n if (idx < target.items.length) {\n target.setItem(idx, value)\n return true\n }\n internal.errors.avmError('Index out of bounds')\n }\n\n return Reflect.set(target, prop, value)\n },\n})\nexport class StaticArrayImpl<TItem extends ARC4Encoded, TLength extends number> extends StaticArray<TItem, TLength> {\n private value?: TItem[]\n private uint8ArrayValue?: Uint8Array\n private size: number\n typeInfo: TypeInfo\n genericArgs: StaticArrayGenericArgs\n\n constructor(typeInfo: TypeInfo | string, ...items: TItem[] & { length: TLength })\n constructor(typeInfo: TypeInfo | string, ...items: TItem[])\n constructor(typeInfo: TypeInfo | string, ...items: TItem[] & { length: TLength }) {\n super(...items)\n this.typeInfo = typeof typeInfo === 'string' ? JSON.parse(typeInfo) : typeInfo\n this.genericArgs = this.typeInfo.genericArgs as StaticArrayGenericArgs\n\n this.size = parseInt(this.genericArgs.size.name, 10)\n if (items.length && items.length !== this.size) {\n throw new internal.errors.CodeError(`expected ${this.size} items, not ${items.length}`)\n }\n\n assert(areAllARC4Encoded(items), 'expected ARC4 type')\n\n items.forEach((item) => {\n checkItemTypeName(this.genericArgs.elementType, item)\n })\n\n this.value = items.length ? items : undefined\n\n return new Proxy(this, arrayProxyHandler<TItem>()) as StaticArrayImpl<TItem, TLength>\n }\n\n get bytes(): bytes {\n return Bytes(this.uint8ArrayValue ?? encode(this.items))\n }\n\n equals(other: this): boolean {\n if (!(other instanceof StaticArrayImpl) || JSON.stringify(this.typeInfo) !== JSON.stringify(other.typeInfo)) {\n throw new internal.errors.CodeError(`Expected expression of type ${this.typeInfo.name}, got ${other.typeInfo.name}`)\n }\n return this.bytes.equals(other.bytes)\n }\n\n get length(): uint64 {\n return this.size\n }\n\n get items(): TItem[] {\n if (this.uint8ArrayValue) {\n const childTypes = Array(this.size).fill(this.genericArgs.elementType)\n this.value = decode(this.uint8ArrayValue, childTypes) as TItem[]\n this.uint8ArrayValue = undefined\n return this.value\n } else if (this.value) {\n this.uint8ArrayValue = undefined\n return this.value\n }\n throw new internal.errors.CodeError('value is not set')\n }\n\n setItem(index: number, value: TItem): void {\n this.items[index] = value\n }\n\n copy(): StaticArrayImpl<TItem, TLength> {\n return StaticArrayImpl.fromBytesImpl(this.bytes, JSON.stringify(this.typeInfo)) as StaticArrayImpl<TItem, TLength>\n }\n\n get native(): TItem[] {\n return this.items\n }\n\n static fromBytesImpl(\n value: internal.primitives.StubBytesCompat | Uint8Array,\n typeInfo: string | TypeInfo,\n prefix: 'none' | 'log' = 'none',\n ): StaticArrayImpl<ARC4Encoded, number> {\n let bytesValue = asBytesCls(value)\n if (prefix === 'log') {\n assert(bytesValue.slice(0, 4).equals(ABI_RETURN_VALUE_LOG_PREFIX), 'ABI return prefix not found')\n bytesValue = bytesValue.slice(4)\n }\n const result = new StaticArrayImpl(typeInfo)\n result.uint8ArrayValue = asUint8Array(bytesValue)\n return result\n }\n\n static getMaxBytesLength(typeInfo: TypeInfo): number {\n const genericArgs = typeInfo.genericArgs as StaticArrayGenericArgs\n const arraySize = parseInt(genericArgs.size.name, 10)\n const childTypes = Array(arraySize).fill(genericArgs.elementType)\n let i = 0\n let size = 0\n if (genericArgs.elementType.name === 'Bool') {\n while (i < childTypes.length) {\n const after = findBoolTypes(childTypes, i, 1)\n const boolNum = after + 1\n size += Math.floor(boolNum / BITS_IN_BYTE)\n size += boolNum % BITS_IN_BYTE ? 1 : 0\n i += after + 1\n }\n } else {\n size = getMaxLengthOfStaticContentType(genericArgs.elementType) * arraySize\n }\n return size\n }\n\n static getArc4TypeName = (t: TypeInfo): string => {\n const genericArgs = t.genericArgs as StaticArrayGenericArgs\n return `${getArc4TypeName(genericArgs.elementType)}[${genericArgs.size.name}]`\n }\n}\n\nexport class AddressImpl extends Address {\n typeInfo: TypeInfo\n private value: StaticArrayImpl<ByteImpl, 32>\n\n constructor(typeInfo: TypeInfo | string, value?: Account | string | bytes) {\n super(value)\n let uint8ArrayValue: Uint8Array\n if (value === undefined) {\n uint8ArrayValue = new Uint8Array(32)\n } else if (typeof value === 'string') {\n uint8ArrayValue = encodingUtil.base32ToUint8Array(value).slice(0, ALGORAND_ADDRESS_BYTE_LENGTH - ALGORAND_CHECKSUM_BYTE_LENGTH)\n } else if (internal.primitives.isBytes(value)) {\n uint8ArrayValue = internal.primitives.getUint8Array(value)\n } else {\n uint8ArrayValue = internal.primitives.getUint8Array(value.bytes)\n }\n internal.errors.avmInvariant(uint8ArrayValue.length === 32, 'Addresses should be 32 bytes')\n\n this.value = StaticArrayImpl.fromBytesImpl(uint8ArrayValue, typeInfo) as StaticArrayImpl<ByteImpl, 32>\n this.typeInfo = typeof typeInfo === 'string' ? JSON.parse(typeInfo) : typeInfo\n return new Proxy(this, arrayProxyHandler<ByteImpl>()) as AddressImpl\n }\n\n get bytes(): bytes {\n return this.value.bytes\n }\n\n equals(other: this): boolean {\n if (!(other instanceof AddressImpl) || JSON.stringify(this.typeInfo) !== JSON.stringify(other.typeInfo)) {\n throw new internal.errors.CodeError(`Expected expression of type ${this.typeInfo.name}, got ${other.typeInfo.name}`)\n }\n return this.bytes.equals(other.bytes)\n }\n\n get length(): uint64 {\n return 32\n }\n\n get native(): Account {\n return Account(this.value.bytes)\n }\n\n get items(): ByteImpl[] {\n return this.value.items\n }\n\n setItem(_index: number, _value: ByteImpl): void {\n throw new internal.errors.CodeError('Address is immutable')\n }\n\n static fromBytesImpl(\n value: internal.primitives.StubBytesCompat | Uint8Array,\n typeInfo: string | TypeInfo,\n prefix: 'none' | 'log' = 'none',\n ): AddressImpl {\n const staticArrayValue = StaticArrayImpl.fromBytesImpl(value, typeInfo, prefix) as StaticArrayImpl<ByteImpl, 32>\n const result = new AddressImpl(typeInfo)\n result.value = staticArrayValue\n return result\n }\n\n static getMaxBytesLength(typeInfo: TypeInfo): number {\n return StaticArrayImpl.getMaxBytesLength(typeInfo)\n }\n}\n\ntype DynamicArrayGenericArgs = { elementType: TypeInfo }\nconst readLength = (value: Uint8Array): readonly [number, Uint8Array] => {\n const length = Number(encodingUtil.uint8ArrayToBigInt(value.slice(0, ABI_LENGTH_SIZE)))\n const data = value.slice(ABI_LENGTH_SIZE)\n return [length, data]\n}\nexport class DynamicArrayImpl<TItem extends ARC4Encoded> extends DynamicArray<TItem> {\n private value?: TItem[]\n private uint8ArrayValue?: Uint8Array\n typeInfo: TypeInfo\n genericArgs: DynamicArrayGenericArgs\n\n constructor(typeInfo: TypeInfo | string, ...items: TItem[]) {\n super(...items)\n this.typeInfo = typeof typeInfo === 'string' ? JSON.parse(typeInfo) : typeInfo\n this.genericArgs = this.typeInfo.genericArgs as DynamicArrayGenericArgs\n\n assert(areAllARC4Encoded(items), 'expected ARC4 type')\n\n items.forEach((item) => {\n checkItemTypeName(this.genericArgs.elementType, item)\n })\n this.value = items\n\n return new Proxy(this, arrayProxyHandler<TItem>()) as DynamicArrayImpl<TItem>\n }\n\n get bytes(): bytes {\n return Bytes(this.uint8ArrayValue ?? this.encodeWithLength(this.items))\n }\n\n equals(other: this): boolean {\n if (!(other instanceof DynamicArrayImpl) || JSON.stringify(this.typeInfo) !== JSON.stringify(other.typeInfo)) {\n throw new internal.errors.CodeError(`Expected expression of type ${this.typeInfo.name}, got ${other.typeInfo.name}`)\n }\n return this.bytes.equals(other.bytes)\n }\n\n get length(): uint64 {\n return this.items.length\n }\n\n get items(): TItem[] {\n if (this.uint8ArrayValue) {\n const [length, data] = readLength(this.uint8ArrayValue)\n const childTypes = Array(length).fill(this.genericArgs.elementType)\n this.value = decode(data, childTypes) as TItem[]\n this.uint8ArrayValue = undefined\n return this.value\n } else if (this.value) {\n this.uint8ArrayValue = undefined\n return this.value\n }\n throw new internal.errors.CodeError('value is not set')\n }\n\n setItem(index: number, value: TItem): void {\n this.items[index] = value\n }\n\n copy(): DynamicArrayImpl<TItem> {\n return DynamicArrayImpl.fromBytesImpl(this.bytes, JSON.stringify(this.typeInfo)) as DynamicArrayImpl<TItem>\n }\n\n get native(): TItem[] {\n return this.items\n }\n\n push(...values: TItem[]) {\n const items = this.items\n items.push(...values)\n }\n\n pop(): TItem {\n const items = this.items\n const popped = items.pop()\n if (popped === undefined) internal.errors.avmError('The array is empty')\n return popped\n }\n\n static fromBytesImpl(\n value: internal.primitives.StubBytesCompat | Uint8Array,\n typeInfo: string | TypeInfo,\n prefix: 'none' | 'log' = 'none',\n ): DynamicArrayImpl<ARC4Encoded> {\n let bytesValue = asBytesCls(value)\n if (prefix === 'log') {\n assert(bytesValue.slice(0, 4).equals(ABI_RETURN_VALUE_LOG_PREFIX), 'ABI return prefix not found')\n bytesValue = bytesValue.slice(4)\n }\n const result = new DynamicArrayImpl(typeInfo)\n result.uint8ArrayValue = asUint8Array(bytesValue)\n return result\n }\n\n static getArc4TypeName = (t: TypeInfo): string => {\n const genericArgs = t.genericArgs as DynamicArrayGenericArgs\n return `${getArc4TypeName(genericArgs.elementType)}[]`\n }\n\n private encodeWithLength(items: TItem[]) {\n return conactUint8Arrays(encodeLength(items.length).asUint8Array(), encode(items))\n }\n}\n\nexport class TupleImpl<TTuple extends [ARC4Encoded, ...ARC4Encoded[]]> extends Tuple<TTuple> {\n private value?: TTuple\n private uint8ArrayValue?: Uint8Array\n typeInfo: TypeInfo\n genericArgs: TypeInfo[]\n\n constructor(typeInfo: TypeInfo | string)\n constructor(typeInfo: TypeInfo | string, ...items: TTuple) {\n super(...items)\n this.typeInfo = typeof typeInfo === 'string' ? JSON.parse(typeInfo) : typeInfo\n this.genericArgs = Object.values(this.typeInfo.genericArgs as Record<string, TypeInfo>)\n\n assert(areAllARC4Encoded(items), 'expected ARC4 type')\n\n items.forEach((item, index) => {\n checkItemTypeName(this.genericArgs[index], item)\n })\n this.value = items.length ? items : undefined\n }\n\n get bytes(): bytes {\n return Bytes(this.uint8ArrayValue ?? encode(this.items))\n }\n\n equals(other: this): boolean {\n if (!(other instanceof TupleImpl) || JSON.stringify(this.typeInfo) !== JSON.stringify(other.typeInfo)) {\n throw new internal.errors.CodeError(`Expected expression of type ${this.typeInfo.name}, got ${other.typeInfo.name}`)\n }\n return this.bytes.equals(other.bytes)\n }\n\n get length(): TTuple['length'] & uint64 {\n return this.items.length\n }\n\n get native(): TTuple {\n return this.items\n }\n\n at<TIndex extends keyof TTuple>(index: TIndex): TTuple[TIndex] {\n return this.items[index]\n }\n\n private get items(): TTuple {\n if (this.uint8ArrayValue) {\n this.value = decode(this.uint8ArrayValue, this.genericArgs) as TTuple\n this.uint8ArrayValue = undefined\n return this.value\n } else if (this.value) {\n this.uint8ArrayValue = undefined\n return this.value\n }\n throw new internal.errors.CodeError('value is not set')\n }\n\n static fromBytesImpl(\n value: internal.primitives.StubBytesCompat | Uint8Array,\n typeInfo: string | TypeInfo,\n prefix: 'none' | 'log' = 'none',\n ): TupleImpl<[ARC4Encoded, ...ARC4Encoded[]]> {\n let bytesValue = asBytesCls(value)\n if (prefix === 'log') {\n assert(bytesValue.slice(0, 4).equals(ABI_RETURN_VALUE_LOG_PREFIX), 'ABI return prefix not found')\n bytesValue = bytesValue.slice(4)\n }\n const result = new TupleImpl(typeInfo)\n result.uint8ArrayValue = asUint8Array(bytesValue)\n return result\n }\n\n static getMaxBytesLength(typeInfo: TypeInfo): number {\n const genericArgs = Object.values(typeInfo.genericArgs as Record<string, TypeInfo>)\n let i = 0\n let size = 0\n\n while (i < genericArgs.length) {\n const childType = genericArgs[i]\n if (childType.name === 'Bool') {\n const after = findBoolTypes(genericArgs, i, 1)\n const boolNum = after + 1\n size += Math.floor(boolNum / BITS_IN_BYTE)\n size += boolNum % BITS_IN_BYTE ? 1 : 0\n i += after\n } else {\n size += getMaxLengthOfStaticContentType(childType)\n }\n i += 1\n }\n return size\n }\n\n static getArc4TypeName = (t: TypeInfo): string => {\n const genericArgs = Object.values(t.genericArgs as Record<string, TypeInfo>)\n return `(${genericArgs.map(getArc4TypeName).join(',')})`\n }\n}\n\ntype StructConstraint = Record<string, ARC4Encoded>\nexport class StructImpl<T extends StructConstraint> extends (Struct<StructConstraint> as DeliberateAny) {\n private uint8ArrayValue?: Uint8Array\n genericArgs: Record<string, TypeInfo>\n\n constructor(typeInfo: TypeInfo | string, value: T = {} as T) {\n super(value)\n this.typeInfo = typeof typeInfo === 'string' ? JSON.parse(typeInfo) : typeInfo\n this.genericArgs = this.typeInfo.genericArgs as Record<string, TypeInfo>\n\n Object.keys(this.genericArgs).forEach((key) => {\n Object.defineProperty(this, key, {\n value: value[key],\n writable: true,\n enumerable: true,\n })\n })\n\n return new Proxy(this, {\n get(target, prop) {\n const originalValue = Reflect.get(target, prop)\n if (originalValue === undefined && target.uint8ArrayValue && Object.keys(target.genericArgs).includes(prop.toString())) {\n return target.items[prop.toString()]\n }\n return originalValue\n },\n set(target, prop, value) {\n if (target.uint8ArrayValue && Object.keys(target.genericArgs).includes(prop.toString())) {\n target.decodeAsProperties()\n }\n return Reflect.set(target, prop, value)\n },\n })\n }\n\n get bytes(): bytes {\n return Bytes(this.uint8ArrayValue ?? encode(Object.values(this.items)))\n }\n\n get items(): T {\n this.decodeAsProperties()\n const result = {} as StructConstraint\n Object.keys(this.genericArgs).forEach((key) => {\n result[key] = (this as unknown as StructConstraint)[key]\n })\n return result as T\n }\n\n get native(): T {\n return this.items\n }\n\n private decodeAsProperties() {\n if (this.uint8ArrayValue) {\n const values = decode(this.uint8ArrayValue, Object.values(this.genericArgs))\n Object.keys(this.genericArgs).forEach((key, index) => {\n ;(this as unknown as StructConstraint)[key] = values[index]\n })\n this.uint8ArrayValue = undefined\n }\n }\n\n static fromBytesImpl(\n value: internal.primitives.StubBytesCompat | Uint8Array,\n typeInfo: string | TypeInfo,\n prefix: 'none' | 'log' = 'none',\n ): StructImpl<StructConstraint> {\n let bytesValue = asBytesCls(value)\n if (prefix === 'log') {\n assert(bytesValue.slice(0, 4).equals(ABI_RETURN_VALUE_LOG_PREFIX), 'ABI return prefix not found')\n bytesValue = bytesValue.slice(4)\n }\n const result = new StructImpl(typeInfo)\n result.uint8ArrayValue = asUint8Array(bytesValue)\n return result\n }\n\n static getArc4TypeName = (t: TypeInfo): string => {\n const genericArgs = Object.values(t.genericArgs as Record<string, TypeInfo>)\n return `(${genericArgs.map(getArc4TypeName).join(',')})`\n }\n}\n\nexport class DynamicBytesImpl extends DynamicBytes {\n typeInfo: TypeInfo\n private value: DynamicArrayImpl<ByteImpl>\n\n constructor(typeInfo: TypeInfo | string, value?: bytes | string) {\n super(value)\n const uint8ArrayValue = conactUint8Arrays(encodeLength(value?.length ?? 0).asUint8Array(), asUint8Array(value ?? new Uint8Array()))\n this.value = DynamicArrayImpl.fromBytesImpl(uint8ArrayValue, typeInfo) as DynamicArrayImpl<ByteImpl>\n this.typeInfo = typeof typeInfo === 'string' ? JSON.parse(typeInfo) : typeInfo\n return new Proxy(this, arrayProxyHandler<ByteImpl>()) as DynamicBytesImpl\n }\n\n get bytes(): bytes {\n return this.value.bytes\n }\n\n equals(other: this): boolean {\n if (!(other instanceof DynamicBytesImpl) || JSON.stringify(this.typeInfo) !== JSON.stringify(other.typeInfo)) {\n throw new internal.errors.CodeError(`Expected expression of type ${this.typeInfo.name}, got ${other.typeInfo.name}`)\n }\n return this.bytes.equals(other.bytes)\n }\n\n get length(): uint64 {\n return this.value.length\n }\n\n get native(): bytes {\n return this.value.bytes.slice(ABI_LENGTH_SIZE)\n }\n\n get items(): ByteImpl[] {\n return this.value.items\n }\n\n setItem(_index: number, _value: ByteImpl): void {\n throw new internal.errors.CodeError('DynamicBytes is immutable')\n }\n\n static fromBytesImpl(\n value: internal.primitives.StubBytesCompat | Uint8Array,\n typeInfo: string | TypeInfo,\n prefix: 'none' | 'log' = 'none',\n ): DynamicBytesImpl {\n const dynamicArrayValue = DynamicArrayImpl.fromBytesImpl(value, typeInfo, prefix) as DynamicArrayImpl<ByteImpl>\n const result = new DynamicBytesImpl(typeInfo)\n result.value = dynamicArrayValue\n return result\n }\n\n static getArc4TypeName = (_t: TypeInfo): string => {\n return 'byte[]'\n }\n}\n\nexport class StaticBytesImpl extends StaticBytes {\n private value: StaticArrayImpl<ByteImpl, number>\n typeInfo: TypeInfo\n\n constructor(typeInfo: TypeInfo | string, value?: bytes | string) {\n super(value)\n const uint8ArrayValue = asUint8Array(value ?? new Uint8Array())\n this.value = StaticArrayImpl.fromBytesImpl(uint8ArrayValue, typeInfo) as StaticArrayImpl<ByteImpl, number>\n this.typeInfo = typeof typeInfo === 'string' ? JSON.parse(typeInfo) : typeInfo\n return new Proxy(this, arrayProxyHandler<ByteImpl>()) as StaticBytesImpl\n }\n\n get bytes(): bytes {\n return this.value.bytes\n }\n\n equals(other: this): boolean {\n if (!(other instanceof StaticBytesImpl) || JSON.stringify(this.typeInfo) !== JSON.stringify(other.typeInfo)) {\n throw new internal.errors.CodeError(`Expected expression of type ${this.typeInfo.name}, got ${other.typeInfo.name}`)\n }\n return this.bytes.equals(other.bytes)\n }\n\n get length(): uint64 {\n return this.value.length\n }\n\n get native(): bytes {\n return this.value.bytes\n }\n\n get items(): ByteImpl[] {\n return this.value.items\n }\n\n setItem(_index: number, _value: ByteImpl): void {\n throw new internal.errors.CodeError('StaticBytes is immutable')\n }\n\n static fromBytesImpl(\n value: internal.primitives.StubBytesCompat | Uint8Array,\n typeInfo: string | TypeInfo,\n prefix: 'none' | 'log' = 'none',\n ): StaticBytesImpl {\n const staticArrayValue = StaticArrayImpl.fromBytesImpl(value, typeInfo, prefix) as StaticArrayImpl<ByteImpl, number>\n const result = new StaticBytesImpl(typeInfo)\n result.value = staticArrayValue\n return result\n }\n\n static getMaxBytesLength(typeInfo: TypeInfo): number {\n return StaticArrayImpl.getMaxBytesLength(typeInfo)\n }\n\n static getArc4TypeName = (t: TypeInfo): string => {\n const genericArgs = t.genericArgs as StaticArrayGenericArgs\n return `byte[${genericArgs.size.name}]`\n }\n}\n\nconst decode = (value: Uint8Array, childTypes: TypeInfo[]) => {\n let i = 0\n let arrayIndex = 0\n const valuePartitions: Uint8Array[] = []\n const dynamicSegments: Array<Array<number>> = [] // Store the start and end of a dynamic element\n\n while (i < childTypes.length) {\n const childType = childTypes[i]\n if (holdsDynamicLengthContent(childType)) {\n // Decode the size of the dynamic element\n const dynamicIndex = uint8ArrayToNumber(value.slice(arrayIndex, arrayIndex + ABI_LENGTH_SIZE))\n if (dynamicSegments.length) {\n dynamicSegments.at(-1)![1] = dynamicIndex\n }\n // Since we do not know where the current dynamic element ends,\n // put a placeholder and update later\n dynamicSegments.push([dynamicIndex, -1])\n valuePartitions.push(new Uint8Array())\n arrayIndex += ABI_LENGTH_SIZE\n } else if (childType.name === 'Bool') {\n const before = findBoolTypes(childTypes, i, -1)\n let after = findBoolTypes(childTypes, i, 1)\n\n if (before % 8 != 0) {\n throw new internal.errors.CodeError('\"expected before index should have number of bool mod 8 equal 0\"')\n }\n after = Math.min(7, after)\n const bits = uint8ArrayToNumber(value.slice(arrayIndex, arrayIndex + 1))\n Array(after + 1)\n .fill(0)\n .forEach((_, j) => {\n const mask = 128 >> j\n valuePartitions.push(\n mask & bits ? encodingUtil.bigIntToUint8Array(TRUE_BIGINT_VALUE) : encodingUtil.bigIntToUint8Array(FALSE_BIGINT_VALUE),\n )\n })\n i += after\n arrayIndex += 1\n } else {\n const currLen = getMaxLengthOfStaticContentType(childType)\n valuePartitions.push(value.slice(arrayIndex, arrayIndex + currLen))\n arrayIndex += currLen\n }\n\n if (arrayIndex >= value.length && i != childTypes.length - 1) {\n throw new internal.errors.CodeError('input string is not long enough to be decoded')\n }\n i += 1\n }\n\n if (dynamicSegments.length > 0) {\n dynamicSegments.at(-1)![1] = value.length\n arrayIndex = value.length\n }\n if (arrayIndex < value.length) {\n throw new internal.errors.CodeError('input string was not fully consumed')\n }\n\n // Check dynamic element partitions\n let segmentIndex = 0\n childTypes.forEach((childType, index) => {\n if (holdsDynamicLengthContent(childType)) {\n const [segmentStart, segmentEnd] = dynamicSegments[segmentIndex]\n valuePartitions[index] = value.slice(segmentStart, segmentEnd)\n segmentIndex += 1\n }\n })\n\n const values: ARC4Encoded[] = []\n childTypes.forEach((childType, index) => {\n values.push(getArc4Encoder<ARC4Encoded>(childType)(valuePartitions[index], childType))\n })\n return values\n}\n\nconst findBoolTypes = (values: TypeInfo[], index: number, delta: number): number => {\n // Helper function to find consecutive booleans from current index in a tuple.\n let until = 0\n const length = values.length\n while (true) {\n const curr = index + delta * until\n if (values[curr].name === 'Bool') {\n if ((curr != length - 1 && delta > 0) || (curr > 0 && delta < 0)) {\n until += 1\n } else {\n break\n }\n } else {\n until -= 1\n break\n }\n }\n return until\n}\n\nconst getMaxLengthOfStaticContentType = (type: TypeInfo): number => {\n switch (trimGenericTypeName(type.name)) {\n case 'Address':\n return AddressImpl.getMaxBytesLength(type)\n case 'Byte':\n return ByteImpl.getMaxBitsLength(type) / BITS_IN_BYTE\n case 'UintN':\n return UintNImpl.getMaxBitsLength(type) / BITS_IN_BYTE\n case 'UFixedNxM':\n return UFixedNxMImpl.getMaxBitsLength(type) / BITS_IN_BYTE\n case 'StaticArray':\n return StaticArrayImpl.getMaxBytesLength(type)\n case 'StaticBytes':\n return StaticBytesImpl.getMaxBytesLength(type)\n case 'Tuple':\n return TupleImpl.getMaxBytesLength(type)\n }\n throw new internal.errors.CodeError(`unsupported type ${type.name}`)\n}\n\nconst encode = (values: ARC4Encoded[]) => {\n const length = values.length\n const heads = []\n const tails = []\n const dynamicLengthTypeIndex = []\n let i = 0\n const valuesLengthBytes = values instanceof DynamicArray ? encodeLength(length).asUint8Array() : new Uint8Array()\n while (i < length) {\n const value = values[i]\n assert(value instanceof ARC4Encoded, `expected ARC4 type ${value.constructor.name}`)\n dynamicLengthTypeIndex.push(isDynamicLengthType(value))\n if (dynamicLengthTypeIndex.at(-1)) {\n heads.push(asUint8Array(Bytes.fromHex('0000')))\n tails.push(asUint8Array(value.bytes))\n } else {\n if (value instanceof Bool) {\n const before = findBool(values, i, -1)\n let after = findBool(values, i, 1)\n if (before % 8 != 0) {\n throw new internal.errors.CodeError('\"expected before index should have number of bool mod 8 equal 0\"')\n }\n after = Math.min(7, after)\n const consecutiveBools = values.slice(i, i + after + 1) as Bool[]\n const compressedNumber = compressMultipleBool(consecutiveBools)\n heads.push(new Uint8Array([compressedNumber]))\n i += after\n } else {\n heads.push(asUint8Array(value.bytes))\n }\n tails.push(new Uint8Array())\n }\n i += 1\n }\n\n // Adjust heads for dynamic types\n let headLength = 0\n heads.forEach((head) => {\n // If the element is not a placeholder, append the length of the element\n headLength += head.length\n })\n\n // Correctly encode dynamic types and replace placeholder\n let tailCurrLength = 0\n for (let i = 0; i < heads.length; i++) {\n if (dynamicLengthTypeIndex[i]) {\n const headValue = headLength + tailCurrLength\n heads[i] = asUint8Array(encodeLength(headValue))\n }\n tailCurrLength += tails[i].length\n }\n\n return conactUint8Arrays(valuesLengthBytes, ...heads, ...tails)\n}\n\nconst findBool = (values: ARC4Encoded[], index: number, delta: number) => {\n let until = 0\n const length = values.length\n while (true) {\n const curr = index + delta * until\n if (values[curr] instanceof Bool) {\n if ((curr !== length - 1 && delta > 0) || (curr > 0 && delta < 0)) {\n until += 1\n } else {\n break\n }\n } else {\n until -= 1\n break\n }\n }\n return until\n}\n\nconst compressMultipleBool = (values: Bool[]): number => {\n let result = 0\n if (values.length > 8) {\n throw new Error('length of list should not be greater than 8')\n }\n for (let i = 0; i < values.length; i++) {\n const value = values[i]\n if (value.native) {\n result |= 1 << (7 - i)\n }\n }\n return result\n}\n\nconst trimGenericTypeName = (typeName: string) => typeName.replace(/<.*>/, '')\n\nconst isDynamicLengthType = (value: ARC4Encoded) =>\n value instanceof StrImpl ||\n (value instanceof StaticArrayImpl && holdsDynamicLengthContent(value)) ||\n (value instanceof TupleImpl && value.genericArgs.some(holdsDynamicLengthContent)) ||\n (value instanceof StructImpl && Object.values(value.genericArgs).some(holdsDynamicLengthContent)) ||\n value instanceof DynamicArrayImpl ||\n value instanceof DynamicBytesImpl\n\nconst holdsDynamicLengthContent = (value: StaticArrayImpl<ARC4Encoded, number> | DynamicArrayImpl<ARC4Encoded> | TypeInfo): boolean => {\n const itemTypeName = trimGenericTypeName(\n value instanceof StaticArrayImpl || value instanceof DynamicArrayImpl ? value.genericArgs.elementType.name : value.name,\n )\n return (\n itemTypeName === 'Str' ||\n itemTypeName === 'DynamicArray' ||\n itemTypeName === 'DynamicBytes' ||\n (itemTypeName === 'StaticArray' &&\n holdsDynamicLengthContent(((value as StaticArrayImpl<ARC4Encoded, number>).genericArgs as StaticArrayGenericArgs).elementType)) ||\n ((itemTypeName === 'Tuple' || itemTypeName === 'Struct') &&\n Object.values(value.genericArgs as Record<string, TypeInfo>).some(holdsDynamicLengthContent))\n )\n}\n\nexport function interpretAsArc4Impl<T extends ARC4Encoded>(\n typeInfoString: string,\n bytes: internal.primitives.StubBytesCompat,\n prefix: 'none' | 'log' = 'none',\n): T {\n const typeInfo = JSON.parse(typeInfoString)\n return getArc4Encoder<T>(typeInfo)(bytes, typeInfo, prefix)\n}\n\nexport const arc4Encoders: Record<string, fromBytes<DeliberateAny>> = {\n Address: AddressImpl.fromBytesImpl,\n Bool: BoolImpl.fromBytesImpl,\n Byte: ByteImpl.fromBytesImpl,\n Str: StrImpl.fromBytesImpl,\n 'UintN<.*>': UintNImpl.fromBytesImpl,\n 'UFixedNxM<.*>': UFixedNxMImpl.fromBytesImpl,\n 'StaticArray<.*>': StaticArrayImpl.fromBytesImpl,\n 'DynamicArray<.*>': DynamicArrayImpl.fromBytesImpl,\n 'Tuple(<.*>)?': TupleImpl.fromBytesImpl,\n 'Struct(<.*>)?': StructImpl.fromBytesImpl,\n DynamicBytes: DynamicBytesImpl.fromBytesImpl,\n 'StaticBytes<.*>': StaticBytesImpl.fromBytesImpl,\n}\nexport const getArc4Encoder = <T>(typeInfo: TypeInfo, encoders?: Record<string, fromBytes<DeliberateAny>>): fromBytes<T> => {\n const encoder = Object.entries(encoders ?? arc4Encoders).find(([k, _]) => new RegExp(`^${k}$`, 'i').test(typeInfo.name))?.[1]\n if (!encoder) {\n throw new Error(`No encoder found for type ${typeInfo.name}`)\n }\n return encoder as fromBytes<T>\n}\n\nexport const getArc4TypeName = (typeInfo: TypeInfo): string | undefined => {\n const map = {\n Address: 'address',\n Bool: 'bool',\n Byte: 'byte',\n Str: 'string',\n 'UintN<.*>': UintNImpl.getArc4TypeName,\n 'UFixedNxM<.*>': UFixedNxMImpl.getArc4TypeName,\n 'StaticArray<.*>': StaticArrayImpl.getArc4TypeName,\n 'DynamicArray<.*>': DynamicArrayImpl.getArc4TypeName,\n 'Tuple(<.*>)?': TupleImpl.getArc4TypeName,\n 'Struct(<.*>)?': StructImpl.getArc4TypeName,\n DynamicBytes: DynamicBytesImpl.getArc4TypeName,\n 'StaticBytes<.*>': StaticBytesImpl.getArc4TypeName,\n }\n const name = Object.entries(map).find(([k, _]) => new RegExp(`^${k}$`, 'i').test(typeInfo.name))?.[1]\n if (typeof name === 'string') return name\n else if (typeof name === 'function') return name(typeInfo)\n return undefined\n}\n\nexport function decodeArc4Impl<T>(\n sourceTypeInfoString: string,\n bytes: internal.primitives.StubBytesCompat,\n prefix: 'none' | 'log' = 'none',\n): T {\n const sourceTypeInfo = JSON.parse(sourceTypeInfoString)\n const encoder = getArc4Encoder(sourceTypeInfo)\n const source = encoder(bytes, sourceTypeInfo, prefix)\n return getNativeValue(source) as T\n}\n\nexport function encodeArc4Impl<T>(_targetTypeInfoString: string, source: T): bytes {\n const arc4Encoded = getArc4Encoded(source)\n return arc4Encoded.bytes\n}\n\nconst getNativeValue = (value: DeliberateAny): DeliberateAny => {\n const native = (value as DeliberateAny).native\n if (Array.isArray(native)) {\n return native.map((item) => getNativeValue(item))\n } else if (native instanceof internal.primitives.AlgoTsPrimitiveCls) {\n return native\n } else if (typeof native === 'object') {\n return Object.fromEntries(Object.entries(native).map(([key, value]) => [key, getNativeValue(value)]))\n }\n return native\n}\n\nexport const getArc4Encoded = (value: DeliberateAny): ARC4Encoded => {\n if (value instanceof ARC4Encoded) {\n return value\n }\n if (value instanceof AccountCls) {\n const index = (lazyContext.activeGroup.activeTransaction as ApplicationTransaction).apat.indexOf(value)\n return new UintNImpl({ name: 'UintN<64>', genericArgs: [{ name: '64' }] }, asBigInt(index))\n }\n if (value instanceof AssetCls) {\n const index = (lazyContext.activeGroup.activeTransaction as ApplicationTransaction).apas.indexOf(value)\n return new UintNImpl({ name: 'UintN<64>', genericArgs: [{ name: '64' }] }, asBigInt(index))\n }\n if (value instanceof ApplicationCls) {\n const index = (lazyContext.activeGroup.activeTransaction as ApplicationTransaction).apfa.indexOf(value)\n return new UintNImpl({ name: 'UintN<64>', genericArgs: [{ name: '64' }] }, asBigInt(index))\n }\n if (typeof value === 'boolean') {\n return new BoolImpl({ name: 'Bool' }, value)\n }\n if (value instanceof internal.primitives.Uint64Cls || typeof value === 'number') {\n return new UintNImpl({ name: 'UintN<64>', genericArgs: [{ name: '64' }] }, asBigInt(value))\n }\n if (value instanceof internal.primitives.BigUintCls) {\n return new UintNImpl({ name: 'UintN<512>', genericArgs: [{ name: '512' }] }, value.asBigInt())\n }\n if (typeof value === 'bigint') {\n return new UintNImpl({ name: 'UintN<512>', genericArgs: [{ name: '512' }] }, value)\n }\n if (value instanceof internal.primitives.BytesCls) {\n return new DynamicBytesImpl(\n { name: 'DynamicBytes', genericArgs: { elementType: { name: 'Byte', genericArgs: [{ name: '8' }] } } },\n value.asAlgoTs(),\n )\n }\n if (typeof value === 'string') {\n return new StrImpl({ name: 'Str' }, value)\n }\n if (Array.isArray(value)) {\n const result: ARC4Encoded[] = value.reduce((acc: ARC4Encoded[], cur: DeliberateAny) => {\n return acc.concat(getArc4Encoded(cur))\n }, [])\n const genericArgs: TypeInfo[] = result.map((x) => (x as DeliberateAny).typeInfo)\n const typeInfo = { name: `Tuple<[${genericArgs.map((x) => x.name).join(',')}]>`, genericArgs }\n return new TupleImpl(typeInfo, ...(result as []))\n }\n if (typeof value === 'object') {\n const result = Object.values(value).reduce((acc: ARC4Encoded[], cur: DeliberateAny) => {\n return acc.concat(getArc4Encoded(cur))\n }, [])\n const genericArgs: TypeInfo[] = result.map((x) => (x as DeliberateAny).typeInfo)\n const typeInfo = {\n name: `Struct<${value.constructor.name}>`,\n genericArgs: Object.fromEntries(Object.keys(value).map((x, i) => [x, genericArgs[i]])),\n }\n return new StructImpl(typeInfo, Object.fromEntries(Object.keys(value).map((x, i) => [x, result[i]])))\n }\n\n throw internal.errors.codeError(`Unsupported type for encoding: ${typeof value}`)\n}\n","import { BaseContract, Contract } from '@algorandfoundation/algorand-typescript'\nimport { AbiMethodConfig, BareMethodConfig, CreateOptions, OnCompleteActionStr } from '@algorandfoundation/algorand-typescript/arc4'\nimport js_sha512 from 'js-sha512'\nimport { TypeInfo } from './encoders'\nimport { getArc4TypeName as getArc4TypeNameForARC4Encoded } from './impl/encoded-types'\nimport { DeliberateAny } from './typescript-helpers'\n\nexport interface AbiMetadata {\n methodName: string\n methodSignature: string | undefined\n argTypes: string[]\n returnType: string\n onCreate?: CreateOptions\n allowActions?: OnCompleteActionStr[]\n}\nconst AbiMetaSymbol = Symbol('AbiMetadata')\nexport const isContractProxy = Symbol('isContractProxy')\nexport const attachAbiMetadata = (contract: { new (): Contract }, methodName: string, metadata: AbiMetadata): void => {\n const metadatas: Record<string, AbiMetadata> = (AbiMetaSymbol in contract ? contract[AbiMetaSymbol] : {}) as Record<string, AbiMetadata>\n metadatas[methodName] = metadata\n if (!(AbiMetaSymbol in contract)) {\n Object.defineProperty(contract, AbiMetaSymbol, {\n value: metadatas,\n writable: true,\n enumerable: false,\n })\n }\n}\n\nexport const copyAbiMetadatas = <T extends BaseContract>(sourceContract: T, targetContract: T): void => {\n const metadatas = getContractAbiMetadata(sourceContract)\n Object.defineProperty(targetContract, AbiMetaSymbol, {\n value: metadatas,\n writable: true,\n enumerable: false,\n })\n}\n\nexport const captureMethodConfig = <T extends Contract>(\n contract: T,\n methodName: string,\n config?: AbiMethodConfig<T> | BareMethodConfig,\n): void => {\n const metadata = getContractMethodAbiMetadata(contract, methodName)\n metadata.onCreate = config?.onCreate ?? 'disallow'\n metadata.allowActions = ([] as OnCompleteActionStr[]).concat(config?.allowActions ?? 'NoOp')\n}\n\nexport const hasAbiMetadata = <T extends Contract>(contract: T): boolean => {\n const contractClass = contract.constructor as { new (): T }\n return (\n Object.getOwnPropertySymbols(contractClass).some((s) => s.toString() === AbiMetaSymbol.toString()) || AbiMetaSymbol in contractClass\n )\n}\nexport const getContractAbiMetadata = <T extends BaseContract>(contract: T): Record<string, AbiMetadata> => {\n if ((contract as DeliberateAny)[isContractProxy]) {\n return (contract as DeliberateAny)[AbiMetaSymbol] as Record<string, AbiMetadata>\n }\n const contractClass = contract.constructor as { new (): T }\n const s = Object.getOwnPropertySymbols(contractClass).find((s) => s.toString() === AbiMetaSymbol.toString())\n const metadatas: Record<string, AbiMetadata> = (\n s ? (contractClass as DeliberateAny)[s] : AbiMetaSymbol in contractClass ? contractClass[AbiMetaSymbol] : {}\n ) as Record<string, AbiMetadata>\n return metadatas\n}\n\nexport const getContractMethodAbiMetadata = <T extends BaseContract>(contract: T, methodName: string): AbiMetadata => {\n const metadatas = getContractAbiMetadata(contract)\n return metadatas[methodName]\n}\n\nexport const getArc4Signature = (metadata: AbiMetadata): string => {\n if (metadata.methodSignature === undefined) {\n const argTypes = metadata.argTypes.map((t) => JSON.parse(t) as TypeInfo).map(getArc4TypeName)\n const returnType = getArc4TypeName(JSON.parse(metadata.returnType) as TypeInfo)\n metadata.methodSignature = `${metadata.methodName}(${argTypes.join(',')})${returnType}`\n }\n return metadata.methodSignature\n}\n\nexport const getArc4Selector = (metadata: AbiMetadata): Uint8Array => {\n const hash = js_sha512.sha512_256.array(getArc4Signature(metadata))\n return new Uint8Array(hash.slice(0, 4))\n}\n\nconst getArc4TypeName = (t: TypeInfo): string => {\n const map: Record<string, string | ((t: TypeInfo) => string)> = {\n void: 'void',\n account: 'account',\n application: 'application',\n asset: 'asset',\n boolean: 'bool',\n biguint: 'uint512',\n bytes: 'byte[]',\n string: 'string',\n uint64: 'uint64',\n OnCompleteAction: 'uint64',\n TransactionType: 'uint64',\n Transaction: 'txn',\n PaymentTxn: 'pay',\n KeyRegistrationTxn: 'keyreg',\n AssetConfigTxn: 'acfg',\n AssetTransferTxn: 'axfer',\n AssetFreezeTxn: 'afrz',\n ApplicationTxn: 'appl',\n 'Tuple(<.*>)?': (t) =>\n `(${Object.values(t.genericArgs as Record<string, TypeInfo>)\n .map(getArc4TypeName)\n .join(',')})`,\n }\n const entry = Object.entries(map).find(([k, _]) => new RegExp(`^${k}$`, 'i').test(t.name))?.[1]\n if (entry === undefined) {\n return getArc4TypeNameForARC4Encoded(t) ?? t.name\n }\n if (entry instanceof Function) {\n return entry(t)\n }\n return entry\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 elliptic from 'elliptic'\nimport js_sha256 from 'js-sha256'\nimport js_sha3 from 'js-sha3'\nimport js_sha512 from 'js-sha512'\nimport nacl from 'tweetnacl'\nimport { LOGIC_DATA_PREFIX, PROGRAM_TAG } from '../constants'\nimport { lazyContext } from '../context-helpers/internal-context'\nimport { notImplementedError } from '../errors'\nimport { asBytes, asBytesCls, asUint8Array, conactUint8Arrays } from '../util'\n\nexport const sha256 = (a: internal.primitives.StubBytesCompat): bytes => {\n const bytesA = internal.primitives.BytesCls.fromCompat(a)\n const hashArray = js_sha256.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.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_sha3.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.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 = conactUint8Arrays(asUint8Array(PROGRAM_TAG), programBytes.asUint8Array())\n const logicSigAddress = js_sha512.sha512_256.array(logicSig)\n\n const addressBytes = Bytes(logicSigAddress)\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 elliptic.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 elliptic.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 elliptic.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 {\n Account,\n BaseContract,\n CompileContractOptions,\n CompiledContract,\n CompiledLogicSig,\n CompileLogicSigOptions,\n LogicSig,\n} from '@algorandfoundation/algorand-typescript'\nimport { lazyContext } from '../context-helpers/internal-context'\nimport { ConstructorFor } from '../typescript-helpers'\nimport { ApplicationData } from './application'\n\nexport function compileImpl(\n artefact: ConstructorFor<BaseContract> | ConstructorFor<LogicSig>,\n options?: CompileContractOptions | CompileLogicSigOptions,\n): CompiledLogicSig | CompiledContract {\n let app: ApplicationData | undefined\n let account: Account | undefined\n const compiledApp = lazyContext.value.getCompiledApp(artefact as ConstructorFor<BaseContract>)\n const compiledLogicSig = lazyContext.value.getCompiledLogicSig(artefact as ConstructorFor<LogicSig>)\n if (compiledApp !== undefined) {\n app = lazyContext.ledger.applicationDataMap.get(compiledApp[1])\n }\n if (compiledLogicSig !== undefined) {\n account = compiledLogicSig[1]\n }\n if (options?.templateVars) {\n Object.entries(options.templateVars).forEach(([key, value]) => {\n lazyContext.value.setTemplateVar(key, value, options.templateVarsPrefix)\n })\n }\n return new Proxy({} as CompiledLogicSig | CompiledContract, {\n get: (_target, prop) => {\n switch (prop) {\n case 'approvalProgram':\n return app?.application.approvalProgram ?? [lazyContext.any.bytes(10), lazyContext.any.bytes(10)]\n case 'clearStateProgram':\n return app?.application.clearStateProgram ?? [lazyContext.any.bytes(10), lazyContext.any.bytes(10)]\n case 'extraProgramPages':\n return (options as CompileContractOptions)?.extraProgramPages ?? app?.application.extraProgramPages ?? lazyContext.any.uint64()\n case 'globalUints':\n return (options as CompileContractOptions)?.globalUints ?? app?.application.globalNumUint ?? lazyContext.any.uint64()\n case 'globalBytes':\n return (options as CompileContractOptions)?.globalBytes ?? app?.application.globalNumBytes ?? lazyContext.any.uint64()\n case 'localUints':\n return (options as CompileContractOptions)?.localUints ?? app?.application.localNumUint ?? lazyContext.any.uint64()\n case 'localBytes':\n return (options as CompileContractOptions)?.localBytes ?? app?.application.localNumBytes ?? lazyContext.any.uint64()\n case 'account':\n return account ?? lazyContext.any.account()\n }\n },\n })\n}\n","import { internal } from '@algorandfoundation/algorand-typescript'\nimport { lazyContext } from '../context-helpers/internal-context'\nimport { DeliberateAny } from '../typescript-helpers'\nimport { sha512_256 } from './crypto'\nimport { getArc4Encoded, getArc4TypeName } from './encoded-types'\n\nexport function emitImpl<T>(typeInfoString: string, event: T | string, ...eventProps: unknown[]) {\n let eventData\n let eventName\n if (typeof event === 'string') {\n eventData = getArc4Encoded(eventProps)\n eventName = event\n const argTypes = getArc4TypeName((eventData as DeliberateAny).typeInfo)!\n if (eventName.indexOf('(') === -1) {\n eventName += argTypes\n } else if (event.indexOf(argTypes) === -1) {\n throw internal.errors.codeError(`Event signature ${event} does not match arg types ${argTypes}`)\n }\n } else {\n eventData = getArc4Encoded(event)\n const typeInfo = JSON.parse(typeInfoString)\n const argTypes = getArc4TypeName((eventData as DeliberateAny).typeInfo)!\n eventName = typeInfo.name.replace(/.*</, '').replace(/>.*/, '') + argTypes\n }\n\n const eventHash = sha512_256(eventName)\n lazyContext.value.log(eventHash.slice(0, 4).concat(eventData.bytes))\n}\n","import { OpUpFeeSource, uint64 } from '@algorandfoundation/algorand-typescript'\n\nexport function ensureBudgetImpl(_budget: uint64, _feeSource: OpUpFeeSource = OpUpFeeSource.GroupCredit) {\n // ensureBudget function is emulated to be a no-op\n}\n","import { assert, assertMatch, internal, match } from '@algorandfoundation/algorand-typescript'\nimport { ARC4Encoded } from '@algorandfoundation/algorand-typescript/arc4'\nimport { DeliberateAny } from '../typescript-helpers'\nimport { asBytes, asMaybeBigUintCls } from '../util'\nimport { BytesBackedCls, Uint64BackedCls } from './base'\n\nexport const matchImpl: typeof match = (subject, test): boolean => {\n const bigIntSubjectValue = getBigIntValue(subject)\n if (bigIntSubjectValue !== undefined) {\n const bigIntTestValue = getBigIntValue(test)\n if (bigIntTestValue !== undefined) {\n return bigIntSubjectValue === bigIntTestValue\n } else if (Object.hasOwn(test, 'lessThan')) {\n return bigIntSubjectValue < getBigIntValue((test as DeliberateAny).lessThan)!\n } else if (Object.hasOwn(test, 'greaterThan')) {\n return bigIntSubjectValue > getBigIntValue((test as DeliberateAny).greaterThan)!\n } else if (Object.hasOwn(test, 'lessThanEq')) {\n return bigIntSubjectValue <= getBigIntValue((test as DeliberateAny).lessThanEq)!\n } else if (Object.hasOwn(test, 'greaterThanEq')) {\n return bigIntSubjectValue >= getBigIntValue((test as DeliberateAny).greaterThanEq)!\n } else if (Object.hasOwn(test, 'between')) {\n const [start, end] = (test as DeliberateAny).between\n return bigIntSubjectValue >= getBigIntValue(start)! && bigIntSubjectValue <= getBigIntValue(end)!\n }\n } else if (subject instanceof internal.primitives.BytesCls) {\n return subject.equals(asBytes(test as unknown as internal.primitives.StubBytesCompat))\n } else if (typeof subject === 'string') {\n return subject === test\n } else if (subject instanceof BytesBackedCls) {\n return subject.bytes.equals((test as unknown as BytesBackedCls).bytes)\n } else if (subject instanceof Uint64BackedCls) {\n return (\n getBigIntValue(subject.uint64 as unknown as internal.primitives.Uint64Cls) ===\n getBigIntValue((test as unknown as Uint64BackedCls).uint64 as unknown as internal.primitives.Uint64Cls)\n )\n } else if (test instanceof ARC4Encoded) {\n return (subject as unknown as ARC4Encoded).bytes.equals(test.bytes)\n } else if (Array.isArray(test)) {\n return test.map((x, i) => matchImpl((subject as DeliberateAny)[i], x as DeliberateAny)).every((x) => x)\n } else if (typeof test === 'object') {\n return Object.entries(test!)\n .map(([k, v]) => matchImpl((subject as DeliberateAny)[k], v as DeliberateAny))\n .every((x) => x)\n }\n return false\n}\n\nexport const assertMatchImpl: typeof assertMatch = (subject, test, message): boolean => {\n const isMatching = matchImpl(subject, test)\n assert(isMatching, message)\n return isMatching\n}\n\nconst getBigIntValue = (x: unknown) => {\n return asMaybeBigUintCls(x)?.asBigInt()\n}\n","import { internal } from '@algorandfoundation/algorand-typescript'\nimport { DEFAULT_TEMPLATE_VAR_PREFIX } from '../constants'\nimport { lazyContext } from '../context-helpers/internal-context'\n\nexport function TemplateVarImpl<T>(variableName: string, prefix = DEFAULT_TEMPLATE_VAR_PREFIX): T {\n const key = prefix + variableName\n if (!Object.hasOwn(lazyContext.value.templateVars, key)) {\n throw internal.errors.codeError(`Template variable ${key} not found in test context!`)\n }\n return lazyContext.value.templateVars[prefix + variableName] as T\n}\n","import { internal } from '@algorandfoundation/algorand-typescript'\nimport { asBigInt, asUint64 } from '../util'\n\nexport function* urangeImpl(\n a: internal.primitives.StubUint64Compat,\n b?: internal.primitives.StubUint64Compat,\n c?: internal.primitives.StubUint64Compat,\n) {\n const start = b ? asBigInt(a) : BigInt(0)\n const end = b ? asBigInt(b) : asBigInt(a)\n const step = c ? asBigInt(c) : BigInt(1)\n let iterationCount = 0\n for (let i = start; i < end; i += step) {\n iterationCount++\n yield asUint64(i)\n }\n return iterationCount\n}\n","import { internal } from '@algorandfoundation/algorand-typescript'\nimport { ARC4Encoded } from '@algorandfoundation/algorand-typescript/arc4'\nimport { MAX_UINT64 } from './constants'\nimport type { TypeInfo } from './encoders'\nimport { AccountCls } from './impl/account'\nimport { Uint64BackedCls } from './impl/base'\nimport { DeliberateAny } from './typescript-helpers'\nimport { nameOfType } from './util'\n\nexport { attachAbiMetadata } from './abi-metadata'\nexport { compileImpl } from './impl/compiled'\nexport { emitImpl } from './impl/emit'\nexport * from './impl/encoded-types'\nexport { decodeArc4Impl, encodeArc4Impl } from './impl/encoded-types'\nexport { ensureBudgetImpl } from './impl/ensure-budget'\nexport { assertMatchImpl, matchImpl } from './impl/match'\nexport { TemplateVarImpl } from './impl/template-var'\nexport { urangeImpl } from './impl/urange'\n\nexport function switchableValue(x: unknown): bigint | string | boolean {\n if (typeof x === 'boolean') return x\n if (typeof x === 'bigint') return x\n if (typeof x === 'string') return x\n if (x instanceof internal.primitives.AlgoTsPrimitiveCls) return x.valueOf()\n internal.errors.internalError(`Cannot convert ${nameOfType(x)} to switchable value`)\n}\n// export function wrapLiteral(x: unknown) {\n// if (typeof x === 'boolean') return x\n// if (isBytes(x)) return makeBytes(x)\n// if (isUint64(x)) return makeUint64(x)\n// internalError(`Cannot wrap ${nameOfType(x)}`)\n// }\n\ntype BinaryOps = '+' | '-' | '*' | '**' | '/' | '%' | '>' | '>=' | '<' | '<=' | '===' | '!==' | '<<' | '>>' | '&' | '|' | '^'\ntype UnaryOps = '~'\n\nfunction tryGetBigInt(value: unknown): bigint | undefined {\n if (typeof value == 'bigint') return value\n if (typeof value == 'number' && Number.isInteger(value)) return BigInt(value)\n if (value instanceof internal.primitives.Uint64Cls) return value.valueOf()\n if (value instanceof internal.primitives.BigUintCls) return value.valueOf()\n return undefined\n}\n\nexport function binaryOp(left: unknown, right: unknown, op: BinaryOps) {\n if (left instanceof ARC4Encoded && right instanceof ARC4Encoded) {\n return arc4EncodedOp(left, right, op)\n }\n if (left instanceof AccountCls && right instanceof AccountCls) {\n return accountBinaryOp(left, right, op)\n }\n if (left instanceof Uint64BackedCls && right instanceof Uint64BackedCls) {\n return uint64BackedClsBinaryOp(left, right, op)\n }\n if (left instanceof internal.primitives.BigUintCls || right instanceof internal.primitives.BigUintCls) {\n return bigUintBinaryOp(left, right, op)\n }\n if (left instanceof internal.primitives.Uint64Cls || right instanceof internal.primitives.Uint64Cls) {\n return uint64BinaryOp(left, right, op)\n }\n if (left instanceof internal.primitives.BytesCls || right instanceof internal.primitives.BytesCls) {\n return bytesBinaryOp(left, right, op)\n }\n const lbi = tryGetBigInt(left)\n const rbi = tryGetBigInt(right)\n if (lbi !== undefined && rbi !== undefined) {\n const result = defaultBinaryOp(lbi, rbi, op)\n\n if (typeof result === 'boolean') {\n return result\n }\n\n if (typeof left === 'number' && typeof right === 'number' && result <= Number.MAX_SAFE_INTEGER) {\n return Number(result)\n }\n\n return result\n }\n return defaultBinaryOp(left, right, op)\n}\n\nexport function unaryOp(operand: unknown, op: UnaryOps) {\n if (operand instanceof internal.primitives.Uint64Cls) {\n return uint64UnaryOp(operand, op)\n }\n return defaultUnaryOp(operand, op)\n}\n\nfunction arc4EncodedOp(left: ARC4Encoded, right: ARC4Encoded, op: BinaryOps): DeliberateAny {\n const hasEqualsMethod = (x: ARC4Encoded) => Object.hasOwn(x, 'equals') && typeof (x as DeliberateAny).equals === 'function'\n const compareEquality = (x: ARC4Encoded, y: ARC4Encoded) =>\n hasEqualsMethod(x) ? (x as DeliberateAny).equals(y) : (y as DeliberateAny).equals(x)\n switch (op) {\n case '===':\n return compareEquality(left, right)\n case '!==':\n return !compareEquality(left, right)\n default:\n internal.errors.internalError(`Unsupported operator ${op}`)\n }\n}\n\nfunction accountBinaryOp(left: AccountCls, right: AccountCls, op: BinaryOps): DeliberateAny {\n switch (op) {\n case '===':\n case '!==':\n return bytesBinaryOp(left.bytes, right.bytes, op)\n default:\n internal.errors.internalError(`Unsupported operator ${op}`)\n }\n}\nfunction uint64BackedClsBinaryOp(left: Uint64BackedCls, right: Uint64BackedCls, op: BinaryOps): DeliberateAny {\n switch (op) {\n case '===':\n case '!==':\n return uint64BinaryOp(left.uint64, right.uint64, op)\n default:\n internal.errors.internalError(`Unsupported operator ${op}`)\n }\n}\nfunction uint64BinaryOp(left: DeliberateAny, right: DeliberateAny, op: BinaryOps): DeliberateAny {\n const lbi = internal.primitives.Uint64Cls.fromCompat(left).valueOf()\n const rbi = internal.primitives.Uint64Cls.fromCompat(right).valueOf()\n const result = (function () {\n switch (op) {\n case '+':\n return lbi + rbi\n case '-':\n return lbi - rbi\n case '*':\n return lbi * rbi\n case '**':\n if (lbi === 0n && rbi === 0n) {\n throw internal.errors.codeError('0 ** 0 is undefined')\n }\n return lbi ** rbi\n case '/':\n return lbi / rbi\n case '%':\n return lbi % rbi\n case '>>':\n if (rbi > 63n) {\n throw new internal.errors.CodeError('expected shift <= 63')\n }\n return (lbi >> rbi) & MAX_UINT64\n case '<<':\n if (rbi > 63n) {\n throw new internal.errors.CodeError('expected shift <= 63')\n }\n return (lbi << rbi) & MAX_UINT64\n case '>':\n return lbi > rbi\n case '<':\n return lbi < rbi\n case '>=':\n return lbi >= rbi\n case '<=':\n return lbi <= rbi\n case '===':\n return lbi === rbi\n case '!==':\n return lbi !== rbi\n case '&':\n return lbi & rbi\n case '|':\n return lbi | rbi\n case '^':\n return lbi ^ rbi\n default:\n internal.errors.internalError(`Unsupported operator ${op}`)\n }\n })()\n return typeof result === 'boolean' ? result : new internal.primitives.Uint64Cls(result)\n}\n\nfunction bigUintBinaryOp(left: DeliberateAny, right: DeliberateAny, op: BinaryOps): DeliberateAny {\n const lbi = internal.primitives.checkBigUint(internal.primitives.BigUintCls.fromCompat(left).valueOf())\n const rbi = internal.primitives.checkBigUint(internal.primitives.BigUintCls.fromCompat(right).valueOf())\n const result = (function () {\n switch (op) {\n case '+':\n return lbi + rbi\n case '-':\n return lbi - rbi\n case '*':\n return lbi * rbi\n case '**':\n if (lbi === 0n && rbi === 0n) {\n throw internal.errors.codeError('0 ** 0 is undefined')\n }\n return lbi ** rbi\n case '/':\n return lbi / rbi\n case '%':\n return lbi % rbi\n case '>>':\n throw new internal.errors.CodeError('BigUint does not support >> operator')\n case '<<':\n throw new internal.errors.CodeError('BigUint does not support << operator')\n case '>':\n return lbi > rbi\n case '<':\n return lbi < rbi\n case '>=':\n return lbi >= rbi\n case '<=':\n return lbi <= rbi\n case '===':\n return lbi === rbi\n case '!==':\n return lbi !== rbi\n case '&':\n return lbi & rbi\n case '|':\n return lbi | rbi\n case '^':\n return lbi ^ rbi\n default:\n internal.errors.internalError(`Unsupported operator ${op}`)\n }\n })()\n if (typeof result === 'boolean') {\n return result\n }\n\n if (result < 0) {\n internal.errors.avmError('BigUint underflow')\n }\n return new internal.primitives.BigUintCls(result)\n}\n\nfunction bytesBinaryOp(left: DeliberateAny, right: DeliberateAny, op: BinaryOps): DeliberateAny {\n const lbb = internal.primitives.checkBytes(internal.primitives.BytesCls.fromCompat(left).asUint8Array())\n const rbb = internal.primitives.checkBytes(internal.primitives.BytesCls.fromCompat(right).asUint8Array())\n const lbi = internal.encodingUtil.uint8ArrayToBigInt(lbb)\n const rbi = internal.encodingUtil.uint8ArrayToBigInt(rbb)\n\n const result = (function () {\n switch (op) {\n case '>':\n return lbi > rbi\n case '<':\n return lbi < rbi\n case '>=':\n return lbi >= rbi\n case '<=':\n return lbi <= rbi\n case '===':\n return lbi === rbi\n case '!==':\n return lbi !== rbi\n default:\n internal.errors.internalError(`Unsupported operator ${op}`)\n }\n })()\n return result\n}\n\nfunction defaultBinaryOp(left: DeliberateAny, right: DeliberateAny, op: BinaryOps): DeliberateAny {\n switch (op) {\n case '+':\n return left + right\n case '-':\n return left - right\n case '*':\n return left * right\n case '**':\n if (left === 0n && right === 0n) {\n throw new internal.errors.CodeError('0 ** 0 is undefined')\n }\n return left ** right\n case '/':\n return left / right\n case '%':\n return left % right\n case '>>':\n if (typeof left === 'bigint' && typeof right === 'bigint') {\n if (right > 63n) {\n throw new internal.errors.CodeError('expected shift <= 63')\n }\n return (left >> right) & MAX_UINT64\n }\n return left >> right\n case '<<':\n if (typeof left === 'bigint' && typeof right === 'bigint') {\n if (right > 63n) {\n throw new internal.errors.CodeError('expected shift <= 63')\n }\n return (left << right) & MAX_UINT64\n }\n return left << right\n case '>':\n return left > right\n case '<':\n return left < right\n case '>=':\n return left >= right\n case '<=':\n return left <= right\n case '===':\n return left === right\n case '!==':\n return left !== right\n case '&':\n return left & right\n case '|':\n return left | right\n case '^':\n return left ^ right\n default:\n internal.errors.internalError(`Unsupported operator ${op}`)\n }\n}\n\nfunction uint64UnaryOp(operand: DeliberateAny, op: UnaryOps): DeliberateAny {\n const obi = internal.primitives.Uint64Cls.fromCompat(operand).valueOf()\n switch (op) {\n case '~':\n return ~obi & MAX_UINT64\n default:\n internal.errors.internalError(`Unsupported operator ${op}`)\n }\n}\n\nfunction defaultUnaryOp(_operand: DeliberateAny, op: UnaryOps): DeliberateAny {\n internal.errors.internalError(`Unsupported operator ${op}`)\n}\n\nconst genericTypeMap = new WeakMap<DeliberateAny, TypeInfo>()\nexport function captureGenericTypeInfo(target: DeliberateAny, t: string) {\n genericTypeMap.set(target, JSON.parse(t))\n return target\n}\n\nexport function getGenericTypeInfo(target: DeliberateAny): TypeInfo | undefined {\n return genericTypeMap.get(target)\n}\n"],"names":["getArc4TypeName","getArc4TypeNameForARC4Encoded","assert"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import '@algorandfoundation/algorand-typescript';
2
2
  import '@algorandfoundation/algorand-typescript/arc4';
3
- export { ag as AddressImpl, aH as BoolImpl, aG as ByteImpl, aJ as DynamicArrayImpl, ao as DynamicBytesImpl, aI as StaticArrayImpl, aM as StaticBytesImpl, ap as StrImpl, aL as StructImpl, aD as TemplateVarImpl, aK as TupleImpl, aF as UFixedNxMImpl, ah as UintNImpl, r as arc4Encoders, aB as assertMatchImpl, aw as attachAbiMetadata, at as binaryOp, av as captureGenericTypeInfo, ax as compileImpl, az as decodeArc4Impl, ay as emitImpl, m as encodeArc4Impl, aA as ensureBudgetImpl, aP as getArc4Encoded, o as getArc4Encoder, aO as getArc4TypeName, a1 as getGenericTypeInfo, aN as interpretAsArc4Impl, aC as matchImpl, as as switchableValue, au as unaryOp, aE as urangeImpl } from './runtime-helpers-BYjWzlmi.js';
3
+ export { ag as AddressImpl, aH as BoolImpl, aG as ByteImpl, aJ as DynamicArrayImpl, ao as DynamicBytesImpl, aI as StaticArrayImpl, aM as StaticBytesImpl, ap as StrImpl, aL as StructImpl, aD as TemplateVarImpl, aK as TupleImpl, aF as UFixedNxMImpl, ah as UintNImpl, r as arc4Encoders, aB as assertMatchImpl, aw as attachAbiMetadata, at as binaryOp, av as captureGenericTypeInfo, ax as compileImpl, az as decodeArc4Impl, ay as emitImpl, m as encodeArc4Impl, aA as ensureBudgetImpl, aP as getArc4Encoded, o as getArc4Encoder, aO as getArc4TypeName, a1 as getGenericTypeInfo, aN as interpretAsArc4Impl, aC as matchImpl, as as switchableValue, au as unaryOp, aE as urangeImpl } from './runtime-helpers-DHsiw5ur.js';
4
4
  import '@algorandfoundation/puya-ts';
5
5
  import 'crypto';
6
6
  import 'js-sha512';
@@ -1 +0,0 @@
1
- {"version":3,"file":"runtime-helpers-BYjWzlmi.js","sources":["../src/constants.ts","../src/context-helpers/internal-context.ts","../src/util.ts","../src/collections/custom-key-map.ts","../src/impl/base.ts","../src/impl/application.ts","../src/impl/asset.ts","../src/impl/account.ts","../src/impl/encoded-types.ts","../src/abi-metadata.ts","../src/errors.ts","../src/impl/crypto.ts","../src/impl/compiled.ts","../src/impl/emit.ts","../src/impl/ensure-budget.ts","../src/impl/match.ts","../src/impl/template-var.ts","../src/impl/urange.ts","../src/runtime-helpers.ts"],"sourcesContent":["import { Bytes } from '@algorandfoundation/algorand-typescript'\n\nexport const UINT64_SIZE = 64\nexport const UINT512_SIZE = 512\nexport const MAX_UINT8 = 2 ** 8 - 1\nexport const MAX_UINT16 = 2 ** 16 - 1\nexport const MAX_UINT32 = 2 ** 32 - 1\nexport const MAX_UINT64 = 2n ** 64n - 1n\nexport const MAX_UINT128 = 2n ** 128n - 1n\nexport const MAX_UINT256 = 2n ** 256n - 1n\nexport const MAX_UINT512 = 2n ** 512n - 1n\nexport const MAX_BYTES_SIZE = 4096\nexport const MAX_LOG_SIZE = 1024\nexport const MAX_ITEMS_IN_LOG = 32\nexport const MAX_BOX_SIZE = 32768\nexport const BITS_IN_BYTE = 8\nexport const DEFAULT_ACCOUNT_MIN_BALANCE = 100_000\nexport const DEFAULT_MAX_TXN_LIFE = 1_000\nexport const DEFAULT_ASSET_CREATE_MIN_BALANCE = 1000_000\nexport const DEFAULT_ASSET_OPT_IN_MIN_BALANCE = 10_000\n\n// from python code: list(b\"\\x85Y\\xb5\\x14x\\xfd\\x89\\xc1vC\\xd0]\\x15\\xa8\\xaek\\x10\\xabG\\xbbm\\x8a1\\x88\\x11V\\xe6\\xbd;\\xae\\x95\\xd1\")\nexport const DEFAULT_GLOBAL_GENESIS_HASH = Bytes(\n new Uint8Array([\n 133, 89, 181, 20, 120, 253, 137, 193, 118, 67, 208, 93, 21, 168, 174, 107, 16, 171, 71, 187, 109, 138, 49, 136, 17, 86, 230, 189, 59,\n 174, 149, 209,\n ]),\n)\n\n// algorand encoded address of 32 zero bytes\nexport const ZERO_ADDRESS = Bytes.fromBase32('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA')\n\n/**\n\"\\x09\" # pragma version 9\n\"\\x81\\x01\" # pushint 1\n */\nexport const ALWAYS_APPROVE_TEAL_PROGRAM = Bytes(new Uint8Array([0x09, 0x81, 0x01]))\n\n// bytes: program (logic) data prefix when signing\nexport const LOGIC_DATA_PREFIX = Bytes('ProgData')\n\n//number: minimum transaction fee\nexport const MIN_TXN_FEE = 1000\n\nexport const ABI_RETURN_VALUE_LOG_PREFIX = Bytes.fromHex('151F7C75')\n\nexport const UINT64_OVERFLOW_UNDERFLOW_MESSAGE = 'Uint64 overflow or underflow'\nexport const BIGUINT_OVERFLOW_UNDERFLOW_MESSAGE = 'BigUint overflow or underflow'\nexport const DEFAULT_TEMPLATE_VAR_PREFIX = 'TMPL_'\n\nexport const APP_ID_PREFIX = 'appID'\nexport const HASH_BYTES_LENGTH = 32\nexport const ALGORAND_ADDRESS_BYTE_LENGTH = 36\nexport const ALGORAND_CHECKSUM_BYTE_LENGTH = 4\nexport const ALGORAND_ADDRESS_LENGTH = 58\n\nexport const PROGRAM_TAG = 'Program'\n\nexport const TRANSACTION_GROUP_MAX_SIZE = 16\n\nexport enum OnApplicationComplete {\n NoOpOC = 0,\n OptInOC = 1,\n CloseOutOC = 2,\n ClearStateOC = 3,\n UpdateApplicationOC = 4,\n DeleteApplicationOC = 5,\n}\n","import { Account, BaseContract, internal } from '@algorandfoundation/algorand-typescript'\nimport { AccountData } from '../impl/account'\nimport { ApplicationData } from '../impl/application'\nimport { AssetData } from '../impl/asset'\nimport { VoterData } from '../impl/voter-params'\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 | BaseContract): ApplicationData {\n const uint64Id =\n id instanceof BaseContract ? this.ledger.getApplicationForContract(id).id : internal.primitives.Uint64Cls.fromCompat(id)\n const data = this.ledger.applicationDataMap.get(uint64Id)\n if (!data) {\n throw internal.errors.internalError('Unknown application, check correct testing context is active')\n }\n return data\n }\n\n getVoterData(account: Account): VoterData {\n const data = this.ledger.voterDataMap.get(account)\n if (!data) {\n throw internal.errors.internalError('Unknown voter, check correct testing context is active')\n }\n return data\n }\n}\n\nexport const lazyContext = new InternalContext()\n","import { Account, Bytes, bytes, internal } from '@algorandfoundation/algorand-typescript'\nimport { encodingUtil } from '@algorandfoundation/puya-ts'\nimport { randomBytes } from 'crypto'\nimport { sha512_256 as js_sha512_256 } from 'js-sha512'\nimport {\n ALGORAND_ADDRESS_BYTE_LENGTH,\n ALGORAND_ADDRESS_LENGTH,\n ALGORAND_CHECKSUM_BYTE_LENGTH,\n APP_ID_PREFIX,\n BITS_IN_BYTE,\n HASH_BYTES_LENGTH,\n MAX_BYTES_SIZE,\n MAX_UINT512,\n MAX_UINT8,\n UINT512_SIZE,\n} from './constants'\nimport { DeliberateAny } from './typescript-helpers'\n\nexport const nameOfType = (x: unknown) => {\n if (typeof x === 'object') {\n if (x === null) return 'Null'\n if (x === undefined) return 'undefined'\n if ('constructor' in x) {\n return x.constructor.name\n }\n }\n return typeof x\n}\n\nexport function* iterBigInt(start: bigint, end: bigint): Generator<bigint> {\n for (let i = start; i < end; i++) {\n yield BigInt(i)\n }\n}\n\nexport const asBigInt = (v: internal.primitives.StubUint64Compat): bigint => asUint64Cls(v).asBigInt()\n\nexport const asNumber = (v: internal.primitives.StubUint64Compat): number => asUint64Cls(v).asNumber()\n\nexport const asUint64Cls = (val: internal.primitives.StubUint64Compat) => internal.primitives.Uint64Cls.fromCompat(val)\n\nexport const asBigUintCls = (val: internal.primitives.StubBigUintCompat | Uint8Array) =>\n internal.primitives.BigUintCls.fromCompat(\n val instanceof Uint8Array ? asBytes(val) : Array.isArray(val) ? asBytes(new Uint8Array(val)) : val,\n )\n\nexport const asBytesCls = (val: internal.primitives.StubBytesCompat | Uint8Array) => internal.primitives.BytesCls.fromCompat(val)\n\nexport const asUint64 = (val: internal.primitives.StubUint64Compat) => asUint64Cls(val).asAlgoTs()\n\nexport const asBigUint = (val: internal.primitives.StubBigUintCompat | Uint8Array) => asBigUintCls(val).asAlgoTs()\n\nexport const asBytes = (val: internal.primitives.StubBytesCompat | Uint8Array) => asBytesCls(val).asAlgoTs()\n\nexport const asUint8Array = (val: internal.primitives.StubBytesCompat | Uint8Array) => asBytesCls(val).asUint8Array()\n\nexport const asMaybeUint64Cls = (val: DeliberateAny) => {\n try {\n return internal.primitives.Uint64Cls.fromCompat(val)\n } catch (e) {\n if (e instanceof internal.errors.InternalError) {\n // swallow error and return undefined\n } else {\n throw e\n }\n }\n return undefined\n}\n\nexport const asMaybeBigUintCls = (val: DeliberateAny) => {\n try {\n return internal.primitives.BigUintCls.fromCompat(val)\n } catch (e) {\n if (e instanceof internal.errors.InternalError) {\n // swallow error and return undefined\n } else {\n throw e\n }\n }\n return undefined\n}\nexport const asMaybeBytesCls = (val: DeliberateAny) => {\n try {\n return internal.primitives.BytesCls.fromCompat(val)\n } catch (e) {\n if (e instanceof internal.errors.InternalError) {\n // swallow error and return undefined\n } else {\n throw e\n }\n }\n return undefined\n}\n\nexport const binaryStringToBytes = (s: string): internal.primitives.BytesCls =>\n internal.primitives.BytesCls.fromCompat(new Uint8Array(s.match(/.{1,8}/g)!.map((x) => parseInt(x, 2))))\n\nexport const getRandomNumber = (min: number, max: number): number => {\n return Math.floor(Math.random() * (max - min + 1)) + min\n}\n\nexport const getRandomBigInt = (min: number | bigint, max: number | bigint): bigint => {\n const bigIntMin = BigInt(min)\n const bigIntMax = BigInt(max)\n const randomValue = [...Array(UINT512_SIZE / BITS_IN_BYTE).keys()]\n .map(() => getRandomNumber(0, MAX_UINT8))\n .reduce((acc, x) => acc * 256n + BigInt(x), 0n)\n return (randomValue % (bigIntMax - bigIntMin)) + bigIntMin\n}\n\nexport const getRandomBytes = (length: number): internal.primitives.BytesCls => asBytesCls(Bytes(randomBytes(length)))\n\nconst NoValue = Symbol('no-value')\ntype LazyInstance<T> = () => T\nexport const Lazy = <T>(factory: () => T): LazyInstance<T> => {\n let val: T | typeof NoValue = NoValue\n\n return () => {\n if (val === NoValue) {\n val = factory()\n }\n return val\n }\n}\n\nconst ObjectReferenceSymbol = Symbol('ObjectReference')\nconst objectRefIter = iterBigInt(1001n, MAX_UINT512)\nexport const getObjectReference = (obj: DeliberateAny): bigint => {\n const tryGetReference = (obj: DeliberateAny): bigint | undefined => {\n const s = Object.getOwnPropertySymbols(obj).find((s) => s.toString() === ObjectReferenceSymbol.toString())\n return s ? obj[s] : ObjectReferenceSymbol in obj ? obj[ObjectReferenceSymbol] : undefined\n }\n const existingRef = tryGetReference(obj)\n if (existingRef !== undefined) {\n return existingRef\n }\n const ref = objectRefIter.next().value\n Object.defineProperty(obj, ObjectReferenceSymbol, {\n value: ref,\n enumerable: false,\n writable: false,\n })\n\n return ref\n}\n\nexport const combineIntoMaxBytePages = (pages: bytes[]): bytes[] => {\n const combined = pages.reduce((acc, x) => acc.concat(x), asBytesCls(''))\n const totalPages = (asNumber(combined.length) + MAX_BYTES_SIZE - 1) / MAX_BYTES_SIZE\n const result = [] as bytes[]\n for (let i = 0; i < totalPages; i++) {\n const start = i * MAX_BYTES_SIZE\n const end = Math.min((i + 1) * MAX_BYTES_SIZE, asNumber(combined.length))\n const page = combined.slice(start, end)\n result.push(page.asAlgoTs())\n }\n return result\n}\n\nexport const conactUint8Arrays = (...values: Uint8Array[]): Uint8Array => {\n const result = new Uint8Array(values.reduce((acc, value) => acc + value.length, 0))\n let index = 0\n for (const value of values) {\n result.set(value, index)\n index += value.length\n }\n return result\n}\n\nexport const uint8ArrayToNumber = (value: Uint8Array): number => {\n return value.reduce((acc, x) => acc * 256 + x, 0)\n}\n\nexport const checksumFromPublicKey = (pk: Uint8Array): Uint8Array => {\n return Uint8Array.from(js_sha512_256.array(pk).slice(HASH_BYTES_LENGTH - ALGORAND_CHECKSUM_BYTE_LENGTH, HASH_BYTES_LENGTH))\n}\n\nexport const getApplicationAddress = (appId: internal.primitives.StubUint64Compat): Account => {\n const toBeSigned = conactUint8Arrays(asUint8Array(APP_ID_PREFIX), encodingUtil.bigIntToUint8Array(asBigInt(appId), 8))\n const appIdHash = js_sha512_256.array(toBeSigned)\n const publicKey = Uint8Array.from(appIdHash)\n const address = encodeAddress(publicKey)\n return Account(Bytes.fromBase32(address))\n}\n\nexport const encodeAddress = (address: Uint8Array): string => {\n const checksum = checksumFromPublicKey(address)\n return encodingUtil.uint8ArrayToBase32(conactUint8Arrays(address, checksum)).slice(0, ALGORAND_ADDRESS_LENGTH)\n}\n\nexport const decodePublicKey = (address: string): Uint8Array => {\n const decoded = encodingUtil.base32ToUint8Array(address)\n return decoded.slice(0, ALGORAND_ADDRESS_BYTE_LENGTH - ALGORAND_CHECKSUM_BYTE_LENGTH)\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 { bytes, internal, Uint64, uint64 } from '@algorandfoundation/algorand-typescript'\nimport { encodingUtil } from '@algorandfoundation/puya-ts'\nimport type { TypeInfo } from '../encoders'\n\nexport abstract class BytesBackedCls {\n #value: bytes\n // #typeInfo: GenericTypeInfo | undefined\n\n get bytes() {\n return this.#value\n }\n constructor(value: bytes, _typeInfo?: TypeInfo) {\n this.#value = value\n // this.#typeInfo = typeInfo\n }\n\n static fromBytes<T extends BytesBackedCls>(\n this: { new (v: bytes, typeInfo?: TypeInfo): T },\n value: internal.primitives.StubBytesCompat | Uint8Array,\n typeInfo?: TypeInfo,\n ) {\n return new this(internal.primitives.BytesCls.fromCompat(value).asAlgoTs(), typeInfo)\n }\n}\n\nexport abstract class Uint64BackedCls {\n #value: uint64\n\n get uint64() {\n return this.#value\n }\n\n constructor(value: uint64) {\n this.#value = value\n }\n\n static fromBytes<T extends Uint64BackedCls>(this: { new (v: uint64): T }, value: internal.primitives.StubBytesCompat | Uint8Array) {\n const uint8ArrayValue = value instanceof Uint8Array ? value : internal.primitives.BytesCls.fromCompat(value).asUint8Array()\n const uint64Value = Uint64(encodingUtil.uint8ArrayToBigInt(uint8ArrayValue))\n return new this(uint64Value)\n }\n}\n","import { Account, Application, bytes, LocalState, uint64 } from '@algorandfoundation/algorand-typescript'\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 { asUint64, getApplicationAddress } 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 return getApplicationAddress(this.id)\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 incentiveEligible = false\n lastProposed?: uint64\n lastHeartbeat?: uint64\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 `Asset` or `Application` instance.')\n }\n}\n","import { Account, BigUintCompat, Bytes, bytes, internal, StringCompat, uint64, Uint64Compat } from '@algorandfoundation/algorand-typescript'\nimport {\n Address,\n ARC4Encoded,\n BitSize,\n Bool,\n Byte,\n DynamicArray,\n DynamicBytes,\n StaticArray,\n StaticBytes,\n Str,\n Struct,\n Tuple,\n UFixedNxM,\n UintN,\n} from '@algorandfoundation/algorand-typescript/arc4'\nimport { encodingUtil } from '@algorandfoundation/puya-ts'\nimport assert from 'assert'\nimport {\n ABI_RETURN_VALUE_LOG_PREFIX,\n ALGORAND_ADDRESS_BYTE_LENGTH,\n ALGORAND_CHECKSUM_BYTE_LENGTH,\n BITS_IN_BYTE,\n UINT64_SIZE,\n} from '../constants'\nimport { lazyContext } from '../context-helpers/internal-context'\nimport { fromBytes, TypeInfo } from '../encoders'\nimport { DeliberateAny } from '../typescript-helpers'\nimport { asBigInt, asBigUint, asBigUintCls, asBytesCls, asUint64, asUint8Array, conactUint8Arrays, uint8ArrayToNumber } from '../util'\nimport { AccountCls } from './account'\nimport { ApplicationCls } from './application'\nimport { AssetCls } from './asset'\nimport { ApplicationTransaction } from './transactions'\n\nconst ABI_LENGTH_SIZE = 2\nconst maxBigIntValue = (bitSize: number) => 2n ** BigInt(bitSize) - 1n\nconst maxBytesLength = (bitSize: number) => Math.floor(bitSize / BITS_IN_BYTE)\nconst encodeLength = (length: number) => new internal.primitives.BytesCls(encodingUtil.bigIntToUint8Array(BigInt(length), ABI_LENGTH_SIZE))\n\ntype CompatForArc4Int<N extends BitSize> = N extends 8 | 16 | 32 | 64 ? Uint64Compat : BigUintCompat\nexport class UintNImpl<N extends BitSize> extends UintN<N> {\n private value: Uint8Array\n private bitSize: N\n typeInfo: TypeInfo\n\n constructor(typeInfo: TypeInfo | string, v?: CompatForArc4Int<N>) {\n super()\n this.typeInfo = typeof typeInfo === 'string' ? JSON.parse(typeInfo) : typeInfo\n this.bitSize = UintNImpl.getMaxBitsLength(this.typeInfo) as N\n\n assert([8, 16, 32, 64, 128, 256, 512].includes(this.bitSize), `Invalid bit size ${this.bitSize}`)\n\n const bigIntValue = asBigUintCls(v ?? 0n).valueOf()\n const maxValue = maxBigIntValue(this.bitSize)\n assert(bigIntValue <= maxValue, `expected value <= ${maxValue}, got: ${bigIntValue}`)\n\n this.value = encodingUtil.bigIntToUint8Array(bigIntValue, maxBytesLength(this.bitSize))\n }\n\n get native() {\n const bigIntValue = encodingUtil.uint8ArrayToBigInt(this.value)\n return (this.bitSize <= UINT64_SIZE ? asUint64(bigIntValue) : asBigUint(bigIntValue)) as UintN<N>['native']\n }\n\n get bytes(): bytes {\n return Bytes(this.value)\n }\n\n equals(other: this): boolean {\n if (!(other instanceof UintNImpl) || JSON.stringify(this.typeInfo) !== JSON.stringify(other.typeInfo)) {\n throw new internal.errors.CodeError(`Expected expression of type ${this.typeInfo.name}, got ${other.typeInfo.name}`)\n }\n return this.bytes.equals(other.bytes)\n }\n\n static fromBytesImpl(\n value: internal.primitives.StubBytesCompat | Uint8Array,\n typeInfo: string | TypeInfo,\n prefix: 'none' | 'log' = 'none',\n ): UintNImpl<BitSize> {\n let bytesValue = asBytesCls(value)\n if (prefix === 'log') {\n assert(bytesValue.slice(0, 4).equals(ABI_RETURN_VALUE_LOG_PREFIX), 'ABI return prefix not found')\n bytesValue = bytesValue.slice(4)\n }\n const result = new UintNImpl<BitSize>(typeInfo)\n result.value = asUint8Array(bytesValue)\n return result\n }\n\n static getMaxBitsLength(typeInfo: TypeInfo): BitSize {\n return parseInt((typeInfo.genericArgs as TypeInfo[])![0].name, 10) as BitSize\n }\n\n static getArc4TypeName = (t: TypeInfo): string => {\n return `uint${this.getMaxBitsLength(t)}`\n }\n}\n\nconst regExpNxM = (maxPrecision: number) => new RegExp(`^\\\\d*\\\\.?\\\\d{0,${maxPrecision}}$`)\nconst trimTrailingDecimalZeros = (v: string) => v.replace(/(\\d+\\.\\d*?)0+$/, '$1').replace(/\\.$/, '')\ntype uFixedNxMGenericArgs = { n: TypeInfo; m: TypeInfo }\nexport class UFixedNxMImpl<N extends BitSize, M extends number> extends UFixedNxM<N, M> {\n private value: Uint8Array\n private bitSize: N\n private precision: M\n typeInfo: TypeInfo\n\n constructor(typeInfo: TypeInfo | string, v: `${number}.${number}`) {\n super(v)\n this.typeInfo = typeof typeInfo === 'string' ? JSON.parse(typeInfo) : typeInfo\n const genericArgs = this.typeInfo.genericArgs as uFixedNxMGenericArgs\n this.bitSize = UFixedNxMImpl.getMaxBitsLength(this.typeInfo) as N\n this.precision = parseInt(genericArgs.m.name, 10) as M\n\n const trimmedValue = trimTrailingDecimalZeros(v)\n assert(regExpNxM(this.precision).test(trimmedValue), `expected positive decimal literal with max of ${this.precision} decimal places`)\n\n const bigIntValue = BigInt(trimmedValue.replace('.', ''))\n const maxValue = maxBigIntValue(this.bitSize)\n assert(bigIntValue <= maxValue, `expected value <= ${maxValue}, got: ${bigIntValue}`)\n\n this.value = encodingUtil.bigIntToUint8Array(bigIntValue, maxBytesLength(this.bitSize))\n }\n\n get native() {\n const bigIntValue = encodingUtil.uint8ArrayToBigInt(this.value)\n return (this.bitSize <= UINT64_SIZE ? asUint64(bigIntValue) : asBigUint(bigIntValue)) as UFixedNxM<N, M>['native']\n }\n\n get bytes(): bytes {\n return Bytes(this.value)\n }\n\n equals(other: this): boolean {\n if (!(other instanceof UFixedNxMImpl) || JSON.stringify(this.typeInfo) !== JSON.stringify(other.typeInfo)) {\n throw new internal.errors.CodeError(`Expected expression of type ${this.typeInfo.name}, got ${other.typeInfo.name}`)\n }\n return this.bytes.equals(other.bytes)\n }\n\n static fromBytesImpl(\n value: internal.primitives.StubBytesCompat | Uint8Array,\n typeInfo: string | TypeInfo,\n prefix: 'none' | 'log' = 'none',\n ): UFixedNxM<BitSize, number> {\n let bytesValue = asBytesCls(value)\n if (prefix === 'log') {\n assert(bytesValue.slice(0, 4).equals(ABI_RETURN_VALUE_LOG_PREFIX), 'ABI return prefix not found')\n bytesValue = bytesValue.slice(4)\n }\n const result = new UFixedNxMImpl<BitSize, number>(typeInfo, '0.0')\n result.value = asUint8Array(bytesValue)\n return result\n }\n\n static getMaxBitsLength(typeInfo: TypeInfo): BitSize {\n const genericArgs = typeInfo.genericArgs as uFixedNxMGenericArgs\n return parseInt(genericArgs.n.name, 10) as BitSize\n }\n\n static getArc4TypeName = (t: TypeInfo): string => {\n const genericArgs = t.genericArgs as uFixedNxMGenericArgs\n return `ufixed${genericArgs.n.name}x${genericArgs.m.name}`\n }\n}\n\nexport class ByteImpl extends Byte {\n typeInfo: TypeInfo\n private value: UintNImpl<8>\n\n constructor(typeInfo: TypeInfo | string, v?: CompatForArc4Int<8>) {\n super(v)\n this.typeInfo = typeof typeInfo === 'string' ? JSON.parse(typeInfo) : typeInfo\n this.value = new UintNImpl<8>(typeInfo, v)\n }\n\n get native() {\n return this.value.native\n }\n\n get bytes(): bytes {\n return this.value.bytes\n }\n\n equals(other: this): boolean {\n if (!(other instanceof ByteImpl) || JSON.stringify(this.value.typeInfo) !== JSON.stringify(other.value.typeInfo)) {\n throw new internal.errors.CodeError(`Expected expression of type ${this.value.typeInfo.name}, got ${other.value.typeInfo.name}`)\n }\n return this.bytes.equals(other.bytes)\n }\n\n static fromBytesImpl(\n value: internal.primitives.StubBytesCompat | Uint8Array,\n typeInfo: string | TypeInfo,\n prefix: 'none' | 'log' = 'none',\n ): ByteImpl {\n const uintNValue = UintNImpl.fromBytesImpl(value, typeInfo, prefix) as UintNImpl<8>\n const result = new ByteImpl(typeInfo)\n result.value = uintNValue\n return result\n }\n\n static getMaxBitsLength(typeInfo: TypeInfo): BitSize {\n return UintNImpl.getMaxBitsLength(typeInfo)\n }\n}\n\nexport class StrImpl extends Str {\n typeInfo: TypeInfo\n private value: Uint8Array\n\n constructor(typeInfo: TypeInfo | string, s?: StringCompat) {\n super()\n const bytesValue = asBytesCls(s ?? '')\n const bytesLength = encodeLength(bytesValue.length.asNumber())\n this.typeInfo = typeof typeInfo === 'string' ? JSON.parse(typeInfo) : typeInfo\n this.value = asUint8Array(bytesLength.concat(bytesValue))\n }\n get native(): string {\n return encodingUtil.uint8ArrayToUtf8(this.value.slice(ABI_LENGTH_SIZE))\n }\n\n get bytes(): bytes {\n return Bytes(this.value)\n }\n\n equals(other: this): boolean {\n if (!(other instanceof StrImpl)) {\n throw new internal.errors.CodeError(`Expected expression of type Str, got ${(other as object).constructor.name}`)\n }\n return this.bytes.equals(other.bytes)\n }\n\n static fromBytesImpl(\n value: internal.primitives.StubBytesCompat | Uint8Array,\n typeInfo: string | TypeInfo,\n prefix: 'none' | 'log' = 'none',\n ): StrImpl {\n let bytesValue = asBytesCls(value)\n if (prefix === 'log') {\n assert(bytesValue.slice(0, 4).equals(ABI_RETURN_VALUE_LOG_PREFIX), 'ABI return prefix not found')\n bytesValue = bytesValue.slice(4)\n }\n const result = new StrImpl(typeInfo)\n result.value = asUint8Array(bytesValue)\n return result\n }\n}\n\nconst TRUE_BIGINT_VALUE = 128n\nconst FALSE_BIGINT_VALUE = 0n\nexport class BoolImpl extends Bool {\n private value: Uint8Array\n typeInfo: TypeInfo\n\n constructor(typeInfo: TypeInfo | string, v?: boolean) {\n super(v)\n this.typeInfo = typeof typeInfo === 'string' ? JSON.parse(typeInfo) : typeInfo\n this.value = encodingUtil.bigIntToUint8Array(v ? TRUE_BIGINT_VALUE : FALSE_BIGINT_VALUE, 1)\n }\n\n get native(): boolean {\n return encodingUtil.uint8ArrayToBigInt(this.value) === TRUE_BIGINT_VALUE\n }\n\n equals(other: this): boolean {\n if (!(other instanceof BoolImpl)) {\n throw new internal.errors.CodeError(`Expected expression of type Bool, got ${(other as object).constructor.name}`)\n }\n return this.bytes.equals(other.bytes)\n }\n\n get bytes(): bytes {\n return Bytes(this.value)\n }\n\n static fromBytesImpl(\n value: internal.primitives.StubBytesCompat | Uint8Array,\n typeInfo: string | TypeInfo,\n prefix: 'none' | 'log' = 'none',\n ): BoolImpl {\n let bytesValue = asBytesCls(value)\n if (prefix === 'log') {\n assert(bytesValue.slice(0, 4).equals(ABI_RETURN_VALUE_LOG_PREFIX), 'ABI return prefix not found')\n bytesValue = bytesValue.slice(4)\n }\n const result = new BoolImpl(typeInfo)\n result.value = asUint8Array(bytesValue)\n return result\n }\n}\n\nconst areAllARC4Encoded = <T extends ARC4Encoded>(items: T[]): items is T[] => items.every((item) => item instanceof ARC4Encoded)\nconst checkItemTypeName = (type: TypeInfo, value: ARC4Encoded) => {\n const typeName = trimGenericTypeName(type.name)\n const validTypeNames = [typeName, `${typeName}Impl`]\n assert(validTypeNames.includes(value.constructor.name), `item must be of type ${typeName}, not ${value.constructor.name}`)\n}\ntype StaticArrayGenericArgs = { elementType: TypeInfo; size: TypeInfo }\nconst arrayProxyHandler = <TItem>() => ({\n get(target: { items: TItem[] }, prop: PropertyKey) {\n const idx = prop ? parseInt(prop.toString(), 10) : NaN\n if (!isNaN(idx)) {\n if (idx < target.items.length) return target.items[idx]\n internal.errors.avmError('Index out of bounds')\n } else if (prop === Symbol.iterator) {\n return target.items[Symbol.iterator].bind(target.items)\n } else if (prop === 'entries') {\n return target.items.entries.bind(target.items)\n } else if (prop === 'at') {\n return (index: Uint64Compat): TItem => {\n return internal.primitives.arrayUtil.arrayAt(target.items, index)\n }\n }\n return Reflect.get(target, prop)\n },\n set(target: { items: TItem[]; setItem: (index: number, value: TItem) => void }, prop: PropertyKey, value: TItem) {\n const idx = prop ? parseInt(prop.toString(), 10) : NaN\n if (!isNaN(idx)) {\n if (idx < target.items.length) {\n target.setItem(idx, value)\n return true\n }\n internal.errors.avmError('Index out of bounds')\n }\n\n return Reflect.set(target, prop, value)\n },\n})\nexport class StaticArrayImpl<TItem extends ARC4Encoded, TLength extends number> extends StaticArray<TItem, TLength> {\n private value?: TItem[]\n private uint8ArrayValue?: Uint8Array\n private size: number\n typeInfo: TypeInfo\n genericArgs: StaticArrayGenericArgs\n\n constructor(typeInfo: TypeInfo | string, ...items: TItem[] & { length: TLength })\n constructor(typeInfo: TypeInfo | string, ...items: TItem[])\n constructor(typeInfo: TypeInfo | string, ...items: TItem[] & { length: TLength }) {\n super(...items)\n this.typeInfo = typeof typeInfo === 'string' ? JSON.parse(typeInfo) : typeInfo\n this.genericArgs = this.typeInfo.genericArgs as StaticArrayGenericArgs\n\n this.size = parseInt(this.genericArgs.size.name, 10)\n if (items.length && items.length !== this.size) {\n throw new internal.errors.CodeError(`expected ${this.size} items, not ${items.length}`)\n }\n\n assert(areAllARC4Encoded(items), 'expected ARC4 type')\n\n items.forEach((item) => {\n checkItemTypeName(this.genericArgs.elementType, item)\n })\n\n this.value = items.length ? items : undefined\n\n return new Proxy(this, arrayProxyHandler<TItem>()) as StaticArrayImpl<TItem, TLength>\n }\n\n get bytes(): bytes {\n return Bytes(this.uint8ArrayValue ?? encode(this.items))\n }\n\n equals(other: this): boolean {\n if (!(other instanceof StaticArrayImpl) || JSON.stringify(this.typeInfo) !== JSON.stringify(other.typeInfo)) {\n throw new internal.errors.CodeError(`Expected expression of type ${this.typeInfo.name}, got ${other.typeInfo.name}`)\n }\n return this.bytes.equals(other.bytes)\n }\n\n get length(): uint64 {\n return this.size\n }\n\n get items(): TItem[] {\n if (this.uint8ArrayValue) {\n const childTypes = Array(this.size).fill(this.genericArgs.elementType)\n this.value = decode(this.uint8ArrayValue, childTypes) as TItem[]\n this.uint8ArrayValue = undefined\n return this.value\n } else if (this.value) {\n this.uint8ArrayValue = undefined\n return this.value\n }\n throw new internal.errors.CodeError('value is not set')\n }\n\n setItem(index: number, value: TItem): void {\n this.items[index] = value\n }\n\n copy(): StaticArrayImpl<TItem, TLength> {\n return StaticArrayImpl.fromBytesImpl(this.bytes, JSON.stringify(this.typeInfo)) as StaticArrayImpl<TItem, TLength>\n }\n\n get native(): TItem[] {\n return this.items\n }\n\n static fromBytesImpl(\n value: internal.primitives.StubBytesCompat | Uint8Array,\n typeInfo: string | TypeInfo,\n prefix: 'none' | 'log' = 'none',\n ): StaticArrayImpl<ARC4Encoded, number> {\n let bytesValue = asBytesCls(value)\n if (prefix === 'log') {\n assert(bytesValue.slice(0, 4).equals(ABI_RETURN_VALUE_LOG_PREFIX), 'ABI return prefix not found')\n bytesValue = bytesValue.slice(4)\n }\n const result = new StaticArrayImpl(typeInfo)\n result.uint8ArrayValue = asUint8Array(bytesValue)\n return result\n }\n\n static getMaxBytesLength(typeInfo: TypeInfo): number {\n const genericArgs = typeInfo.genericArgs as StaticArrayGenericArgs\n const arraySize = parseInt(genericArgs.size.name, 10)\n const childTypes = Array(arraySize).fill(genericArgs.elementType)\n let i = 0\n let size = 0\n if (genericArgs.elementType.name === 'Bool') {\n while (i < childTypes.length) {\n const after = findBoolTypes(childTypes, i, 1)\n const boolNum = after + 1\n size += Math.floor(boolNum / BITS_IN_BYTE)\n size += boolNum % BITS_IN_BYTE ? 1 : 0\n i += after + 1\n }\n } else {\n size = getMaxLengthOfStaticContentType(genericArgs.elementType) * arraySize\n }\n return size\n }\n\n static getArc4TypeName = (t: TypeInfo): string => {\n const genericArgs = t.genericArgs as StaticArrayGenericArgs\n return `${getArc4TypeName(genericArgs.elementType)}[${genericArgs.size.name}]`\n }\n}\n\nexport class AddressImpl extends Address {\n typeInfo: TypeInfo\n private value: StaticArrayImpl<ByteImpl, 32>\n\n constructor(typeInfo: TypeInfo | string, value?: Account | string | bytes) {\n super(value)\n let uint8ArrayValue: Uint8Array\n if (value === undefined) {\n uint8ArrayValue = new Uint8Array(32)\n } else if (typeof value === 'string') {\n uint8ArrayValue = encodingUtil.base32ToUint8Array(value).slice(0, ALGORAND_ADDRESS_BYTE_LENGTH - ALGORAND_CHECKSUM_BYTE_LENGTH)\n } else if (internal.primitives.isBytes(value)) {\n uint8ArrayValue = internal.primitives.getUint8Array(value)\n } else {\n uint8ArrayValue = internal.primitives.getUint8Array(value.bytes)\n }\n internal.errors.avmInvariant(uint8ArrayValue.length === 32, 'Addresses should be 32 bytes')\n\n this.value = StaticArrayImpl.fromBytesImpl(uint8ArrayValue, typeInfo) as StaticArrayImpl<ByteImpl, 32>\n this.typeInfo = typeof typeInfo === 'string' ? JSON.parse(typeInfo) : typeInfo\n return new Proxy(this, arrayProxyHandler<ByteImpl>()) as AddressImpl\n }\n\n get bytes(): bytes {\n return this.value.bytes\n }\n\n equals(other: this): boolean {\n if (!(other instanceof AddressImpl) || JSON.stringify(this.typeInfo) !== JSON.stringify(other.typeInfo)) {\n throw new internal.errors.CodeError(`Expected expression of type ${this.typeInfo.name}, got ${other.typeInfo.name}`)\n }\n return this.bytes.equals(other.bytes)\n }\n\n get length(): uint64 {\n return 32\n }\n\n get native(): Account {\n return Account(this.value.bytes)\n }\n\n get items(): ByteImpl[] {\n return this.value.items\n }\n\n setItem(_index: number, _value: ByteImpl): void {\n throw new internal.errors.CodeError('Address is immutable')\n }\n\n static fromBytesImpl(\n value: internal.primitives.StubBytesCompat | Uint8Array,\n typeInfo: string | TypeInfo,\n prefix: 'none' | 'log' = 'none',\n ): AddressImpl {\n const staticArrayValue = StaticArrayImpl.fromBytesImpl(value, typeInfo, prefix) as StaticArrayImpl<ByteImpl, 32>\n const result = new AddressImpl(typeInfo)\n result.value = staticArrayValue\n return result\n }\n\n static getMaxBytesLength(typeInfo: TypeInfo): number {\n return StaticArrayImpl.getMaxBytesLength(typeInfo)\n }\n}\n\ntype DynamicArrayGenericArgs = { elementType: TypeInfo }\nconst readLength = (value: Uint8Array): readonly [number, Uint8Array] => {\n const length = Number(encodingUtil.uint8ArrayToBigInt(value.slice(0, ABI_LENGTH_SIZE)))\n const data = value.slice(ABI_LENGTH_SIZE)\n return [length, data]\n}\nexport class DynamicArrayImpl<TItem extends ARC4Encoded> extends DynamicArray<TItem> {\n private value?: TItem[]\n private uint8ArrayValue?: Uint8Array\n typeInfo: TypeInfo\n genericArgs: DynamicArrayGenericArgs\n\n constructor(typeInfo: TypeInfo | string, ...items: TItem[]) {\n super(...items)\n this.typeInfo = typeof typeInfo === 'string' ? JSON.parse(typeInfo) : typeInfo\n this.genericArgs = this.typeInfo.genericArgs as DynamicArrayGenericArgs\n\n assert(areAllARC4Encoded(items), 'expected ARC4 type')\n\n items.forEach((item) => {\n checkItemTypeName(this.genericArgs.elementType, item)\n })\n this.value = items\n\n return new Proxy(this, arrayProxyHandler<TItem>()) as DynamicArrayImpl<TItem>\n }\n\n get bytes(): bytes {\n return Bytes(this.uint8ArrayValue ?? this.encodeWithLength(this.items))\n }\n\n equals(other: this): boolean {\n if (!(other instanceof DynamicArrayImpl) || JSON.stringify(this.typeInfo) !== JSON.stringify(other.typeInfo)) {\n throw new internal.errors.CodeError(`Expected expression of type ${this.typeInfo.name}, got ${other.typeInfo.name}`)\n }\n return this.bytes.equals(other.bytes)\n }\n\n get length(): uint64 {\n return this.items.length\n }\n\n get items(): TItem[] {\n if (this.uint8ArrayValue) {\n const [length, data] = readLength(this.uint8ArrayValue)\n const childTypes = Array(length).fill(this.genericArgs.elementType)\n this.value = decode(data, childTypes) as TItem[]\n this.uint8ArrayValue = undefined\n return this.value\n } else if (this.value) {\n this.uint8ArrayValue = undefined\n return this.value\n }\n throw new internal.errors.CodeError('value is not set')\n }\n\n setItem(index: number, value: TItem): void {\n this.items[index] = value\n }\n\n copy(): DynamicArrayImpl<TItem> {\n return DynamicArrayImpl.fromBytesImpl(this.bytes, JSON.stringify(this.typeInfo)) as DynamicArrayImpl<TItem>\n }\n\n get native(): TItem[] {\n return this.items\n }\n\n push(...values: TItem[]) {\n const items = this.items\n items.push(...values)\n }\n\n pop(): TItem {\n const items = this.items\n const popped = items.pop()\n if (popped === undefined) internal.errors.avmError('The array is empty')\n return popped\n }\n\n static fromBytesImpl(\n value: internal.primitives.StubBytesCompat | Uint8Array,\n typeInfo: string | TypeInfo,\n prefix: 'none' | 'log' = 'none',\n ): DynamicArrayImpl<ARC4Encoded> {\n let bytesValue = asBytesCls(value)\n if (prefix === 'log') {\n assert(bytesValue.slice(0, 4).equals(ABI_RETURN_VALUE_LOG_PREFIX), 'ABI return prefix not found')\n bytesValue = bytesValue.slice(4)\n }\n const result = new DynamicArrayImpl(typeInfo)\n result.uint8ArrayValue = asUint8Array(bytesValue)\n return result\n }\n\n static getArc4TypeName = (t: TypeInfo): string => {\n const genericArgs = t.genericArgs as DynamicArrayGenericArgs\n return `${getArc4TypeName(genericArgs.elementType)}[]`\n }\n\n private encodeWithLength(items: TItem[]) {\n return conactUint8Arrays(encodeLength(items.length).asUint8Array(), encode(items))\n }\n}\n\nexport class TupleImpl<TTuple extends [ARC4Encoded, ...ARC4Encoded[]]> extends Tuple<TTuple> {\n private value?: TTuple\n private uint8ArrayValue?: Uint8Array\n typeInfo: TypeInfo\n genericArgs: TypeInfo[]\n\n constructor(typeInfo: TypeInfo | string)\n constructor(typeInfo: TypeInfo | string, ...items: TTuple) {\n super(...items)\n this.typeInfo = typeof typeInfo === 'string' ? JSON.parse(typeInfo) : typeInfo\n this.genericArgs = Object.values(this.typeInfo.genericArgs as Record<string, TypeInfo>)\n\n assert(areAllARC4Encoded(items), 'expected ARC4 type')\n\n items.forEach((item, index) => {\n checkItemTypeName(this.genericArgs[index], item)\n })\n this.value = items.length ? items : undefined\n }\n\n get bytes(): bytes {\n return Bytes(this.uint8ArrayValue ?? encode(this.items))\n }\n\n equals(other: this): boolean {\n if (!(other instanceof TupleImpl) || JSON.stringify(this.typeInfo) !== JSON.stringify(other.typeInfo)) {\n throw new internal.errors.CodeError(`Expected expression of type ${this.typeInfo.name}, got ${other.typeInfo.name}`)\n }\n return this.bytes.equals(other.bytes)\n }\n\n get length(): TTuple['length'] & uint64 {\n return this.items.length\n }\n\n get native(): TTuple {\n return this.items\n }\n\n at<TIndex extends keyof TTuple>(index: TIndex): TTuple[TIndex] {\n return this.items[index]\n }\n\n private get items(): TTuple {\n if (this.uint8ArrayValue) {\n this.value = decode(this.uint8ArrayValue, this.genericArgs) as TTuple\n this.uint8ArrayValue = undefined\n return this.value\n } else if (this.value) {\n this.uint8ArrayValue = undefined\n return this.value\n }\n throw new internal.errors.CodeError('value is not set')\n }\n\n static fromBytesImpl(\n value: internal.primitives.StubBytesCompat | Uint8Array,\n typeInfo: string | TypeInfo,\n prefix: 'none' | 'log' = 'none',\n ): TupleImpl<[ARC4Encoded, ...ARC4Encoded[]]> {\n let bytesValue = asBytesCls(value)\n if (prefix === 'log') {\n assert(bytesValue.slice(0, 4).equals(ABI_RETURN_VALUE_LOG_PREFIX), 'ABI return prefix not found')\n bytesValue = bytesValue.slice(4)\n }\n const result = new TupleImpl(typeInfo)\n result.uint8ArrayValue = asUint8Array(bytesValue)\n return result\n }\n\n static getMaxBytesLength(typeInfo: TypeInfo): number {\n const genericArgs = Object.values(typeInfo.genericArgs as Record<string, TypeInfo>)\n let i = 0\n let size = 0\n\n while (i < genericArgs.length) {\n const childType = genericArgs[i]\n if (childType.name === 'Bool') {\n const after = findBoolTypes(genericArgs, i, 1)\n const boolNum = after + 1\n size += Math.floor(boolNum / BITS_IN_BYTE)\n size += boolNum % BITS_IN_BYTE ? 1 : 0\n i += after\n } else {\n size += getMaxLengthOfStaticContentType(childType)\n }\n i += 1\n }\n return size\n }\n\n static getArc4TypeName = (t: TypeInfo): string => {\n const genericArgs = Object.values(t.genericArgs as Record<string, TypeInfo>)\n return `(${genericArgs.map(getArc4TypeName).join(',')})`\n }\n}\n\ntype StructConstraint = Record<string, ARC4Encoded>\nexport class StructImpl<T extends StructConstraint> extends (Struct<StructConstraint> as DeliberateAny) {\n private uint8ArrayValue?: Uint8Array\n genericArgs: Record<string, TypeInfo>\n\n constructor(typeInfo: TypeInfo | string, value: T = {} as T) {\n super(value)\n this.typeInfo = typeof typeInfo === 'string' ? JSON.parse(typeInfo) : typeInfo\n this.genericArgs = this.typeInfo.genericArgs as Record<string, TypeInfo>\n\n Object.keys(this.genericArgs).forEach((key) => {\n Object.defineProperty(this, key, {\n value: value[key],\n writable: true,\n enumerable: true,\n })\n })\n\n return new Proxy(this, {\n get(target, prop) {\n const originalValue = Reflect.get(target, prop)\n if (originalValue === undefined && target.uint8ArrayValue && Object.keys(target.genericArgs).includes(prop.toString())) {\n return target.items[prop.toString()]\n }\n return originalValue\n },\n set(target, prop, value) {\n if (target.uint8ArrayValue && Object.keys(target.genericArgs).includes(prop.toString())) {\n target.decodeAsProperties()\n }\n return Reflect.set(target, prop, value)\n },\n })\n }\n\n get bytes(): bytes {\n return Bytes(this.uint8ArrayValue ?? encode(Object.values(this.items)))\n }\n\n get items(): T {\n this.decodeAsProperties()\n const result = {} as StructConstraint\n Object.keys(this.genericArgs).forEach((key) => {\n result[key] = (this as unknown as StructConstraint)[key]\n })\n return result as T\n }\n\n get native(): T {\n return this.items\n }\n\n private decodeAsProperties() {\n if (this.uint8ArrayValue) {\n const values = decode(this.uint8ArrayValue, Object.values(this.genericArgs))\n Object.keys(this.genericArgs).forEach((key, index) => {\n ;(this as unknown as StructConstraint)[key] = values[index]\n })\n this.uint8ArrayValue = undefined\n }\n }\n\n static fromBytesImpl(\n value: internal.primitives.StubBytesCompat | Uint8Array,\n typeInfo: string | TypeInfo,\n prefix: 'none' | 'log' = 'none',\n ): StructImpl<StructConstraint> {\n let bytesValue = asBytesCls(value)\n if (prefix === 'log') {\n assert(bytesValue.slice(0, 4).equals(ABI_RETURN_VALUE_LOG_PREFIX), 'ABI return prefix not found')\n bytesValue = bytesValue.slice(4)\n }\n const result = new StructImpl(typeInfo)\n result.uint8ArrayValue = asUint8Array(bytesValue)\n return result\n }\n\n static getArc4TypeName = (t: TypeInfo): string => {\n const genericArgs = Object.values(t.genericArgs as Record<string, TypeInfo>)\n return `(${genericArgs.map(getArc4TypeName).join(',')})`\n }\n}\n\nexport class DynamicBytesImpl extends DynamicBytes {\n typeInfo: TypeInfo\n private value: DynamicArrayImpl<ByteImpl>\n\n constructor(typeInfo: TypeInfo | string, value?: bytes | string) {\n super(value)\n const uint8ArrayValue = conactUint8Arrays(encodeLength(value?.length ?? 0).asUint8Array(), asUint8Array(value ?? new Uint8Array()))\n this.value = DynamicArrayImpl.fromBytesImpl(uint8ArrayValue, typeInfo) as DynamicArrayImpl<ByteImpl>\n this.typeInfo = typeof typeInfo === 'string' ? JSON.parse(typeInfo) : typeInfo\n return new Proxy(this, arrayProxyHandler<ByteImpl>()) as DynamicBytesImpl\n }\n\n get bytes(): bytes {\n return this.value.bytes\n }\n\n equals(other: this): boolean {\n if (!(other instanceof DynamicBytesImpl) || JSON.stringify(this.typeInfo) !== JSON.stringify(other.typeInfo)) {\n throw new internal.errors.CodeError(`Expected expression of type ${this.typeInfo.name}, got ${other.typeInfo.name}`)\n }\n return this.bytes.equals(other.bytes)\n }\n\n get length(): uint64 {\n return this.value.length\n }\n\n get native(): bytes {\n return this.value.bytes.slice(ABI_LENGTH_SIZE)\n }\n\n get items(): ByteImpl[] {\n return this.value.items\n }\n\n setItem(_index: number, _value: ByteImpl): void {\n throw new internal.errors.CodeError('DynamicBytes is immutable')\n }\n\n static fromBytesImpl(\n value: internal.primitives.StubBytesCompat | Uint8Array,\n typeInfo: string | TypeInfo,\n prefix: 'none' | 'log' = 'none',\n ): DynamicBytesImpl {\n const dynamicArrayValue = DynamicArrayImpl.fromBytesImpl(value, typeInfo, prefix) as DynamicArrayImpl<ByteImpl>\n const result = new DynamicBytesImpl(typeInfo)\n result.value = dynamicArrayValue\n return result\n }\n\n static getArc4TypeName = (_t: TypeInfo): string => {\n return 'byte[]'\n }\n}\n\nexport class StaticBytesImpl extends StaticBytes {\n private value: StaticArrayImpl<ByteImpl, number>\n typeInfo: TypeInfo\n\n constructor(typeInfo: TypeInfo | string, value?: bytes | string) {\n super(value)\n const uint8ArrayValue = asUint8Array(value ?? new Uint8Array())\n this.value = StaticArrayImpl.fromBytesImpl(uint8ArrayValue, typeInfo) as StaticArrayImpl<ByteImpl, number>\n this.typeInfo = typeof typeInfo === 'string' ? JSON.parse(typeInfo) : typeInfo\n return new Proxy(this, arrayProxyHandler<ByteImpl>()) as StaticBytesImpl\n }\n\n get bytes(): bytes {\n return this.value.bytes\n }\n\n equals(other: this): boolean {\n if (!(other instanceof StaticBytesImpl) || JSON.stringify(this.typeInfo) !== JSON.stringify(other.typeInfo)) {\n throw new internal.errors.CodeError(`Expected expression of type ${this.typeInfo.name}, got ${other.typeInfo.name}`)\n }\n return this.bytes.equals(other.bytes)\n }\n\n get length(): uint64 {\n return this.value.length\n }\n\n get native(): bytes {\n return this.value.bytes\n }\n\n get items(): ByteImpl[] {\n return this.value.items\n }\n\n setItem(_index: number, _value: ByteImpl): void {\n throw new internal.errors.CodeError('StaticBytes is immutable')\n }\n\n static fromBytesImpl(\n value: internal.primitives.StubBytesCompat | Uint8Array,\n typeInfo: string | TypeInfo,\n prefix: 'none' | 'log' = 'none',\n ): StaticBytesImpl {\n const staticArrayValue = StaticArrayImpl.fromBytesImpl(value, typeInfo, prefix) as StaticArrayImpl<ByteImpl, number>\n const result = new StaticBytesImpl(typeInfo)\n result.value = staticArrayValue\n return result\n }\n\n static getMaxBytesLength(typeInfo: TypeInfo): number {\n return StaticArrayImpl.getMaxBytesLength(typeInfo)\n }\n\n static getArc4TypeName = (t: TypeInfo): string => {\n const genericArgs = t.genericArgs as StaticArrayGenericArgs\n return `byte[${genericArgs.size.name}]`\n }\n}\n\nconst decode = (value: Uint8Array, childTypes: TypeInfo[]) => {\n let i = 0\n let arrayIndex = 0\n const valuePartitions: Uint8Array[] = []\n const dynamicSegments: Array<Array<number>> = [] // Store the start and end of a dynamic element\n\n while (i < childTypes.length) {\n const childType = childTypes[i]\n if (holdsDynamicLengthContent(childType)) {\n // Decode the size of the dynamic element\n const dynamicIndex = uint8ArrayToNumber(value.slice(arrayIndex, arrayIndex + ABI_LENGTH_SIZE))\n if (dynamicSegments.length) {\n dynamicSegments.at(-1)![1] = dynamicIndex\n }\n // Since we do not know where the current dynamic element ends,\n // put a placeholder and update later\n dynamicSegments.push([dynamicIndex, -1])\n valuePartitions.push(new Uint8Array())\n arrayIndex += ABI_LENGTH_SIZE\n } else if (childType.name === 'Bool') {\n const before = findBoolTypes(childTypes, i, -1)\n let after = findBoolTypes(childTypes, i, 1)\n\n if (before % 8 != 0) {\n throw new internal.errors.CodeError('\"expected before index should have number of bool mod 8 equal 0\"')\n }\n after = Math.min(7, after)\n const bits = uint8ArrayToNumber(value.slice(arrayIndex, arrayIndex + 1))\n Array(after + 1)\n .fill(0)\n .forEach((_, j) => {\n const mask = 128 >> j\n valuePartitions.push(\n mask & bits ? encodingUtil.bigIntToUint8Array(TRUE_BIGINT_VALUE) : encodingUtil.bigIntToUint8Array(FALSE_BIGINT_VALUE),\n )\n })\n i += after\n arrayIndex += 1\n } else {\n const currLen = getMaxLengthOfStaticContentType(childType)\n valuePartitions.push(value.slice(arrayIndex, arrayIndex + currLen))\n arrayIndex += currLen\n }\n\n if (arrayIndex >= value.length && i != childTypes.length - 1) {\n throw new internal.errors.CodeError('input string is not long enough to be decoded')\n }\n i += 1\n }\n\n if (dynamicSegments.length > 0) {\n dynamicSegments.at(-1)![1] = value.length\n arrayIndex = value.length\n }\n if (arrayIndex < value.length) {\n throw new internal.errors.CodeError('input string was not fully consumed')\n }\n\n // Check dynamic element partitions\n let segmentIndex = 0\n childTypes.forEach((childType, index) => {\n if (holdsDynamicLengthContent(childType)) {\n const [segmentStart, segmentEnd] = dynamicSegments[segmentIndex]\n valuePartitions[index] = value.slice(segmentStart, segmentEnd)\n segmentIndex += 1\n }\n })\n\n const values: ARC4Encoded[] = []\n childTypes.forEach((childType, index) => {\n values.push(getArc4Encoder<ARC4Encoded>(childType)(valuePartitions[index], childType))\n })\n return values\n}\n\nconst findBoolTypes = (values: TypeInfo[], index: number, delta: number): number => {\n // Helper function to find consecutive booleans from current index in a tuple.\n let until = 0\n const length = values.length\n while (true) {\n const curr = index + delta * until\n if (values[curr].name === 'Bool') {\n if ((curr != length - 1 && delta > 0) || (curr > 0 && delta < 0)) {\n until += 1\n } else {\n break\n }\n } else {\n until -= 1\n break\n }\n }\n return until\n}\n\nconst getMaxLengthOfStaticContentType = (type: TypeInfo): number => {\n switch (trimGenericTypeName(type.name)) {\n case 'Address':\n return AddressImpl.getMaxBytesLength(type)\n case 'Byte':\n return ByteImpl.getMaxBitsLength(type) / BITS_IN_BYTE\n case 'UintN':\n return UintNImpl.getMaxBitsLength(type) / BITS_IN_BYTE\n case 'UFixedNxM':\n return UFixedNxMImpl.getMaxBitsLength(type) / BITS_IN_BYTE\n case 'StaticArray':\n return StaticArrayImpl.getMaxBytesLength(type)\n case 'StaticBytes':\n return StaticBytesImpl.getMaxBytesLength(type)\n case 'Tuple':\n return TupleImpl.getMaxBytesLength(type)\n }\n throw new internal.errors.CodeError(`unsupported type ${type.name}`)\n}\n\nconst encode = (values: ARC4Encoded[]) => {\n const length = values.length\n const heads = []\n const tails = []\n const dynamicLengthTypeIndex = []\n let i = 0\n const valuesLengthBytes = values instanceof DynamicArray ? encodeLength(length).asUint8Array() : new Uint8Array()\n while (i < length) {\n const value = values[i]\n assert(value instanceof ARC4Encoded, `expected ARC4 type ${value.constructor.name}`)\n dynamicLengthTypeIndex.push(isDynamicLengthType(value))\n if (dynamicLengthTypeIndex.at(-1)) {\n heads.push(asUint8Array(Bytes.fromHex('0000')))\n tails.push(asUint8Array(value.bytes))\n } else {\n if (value instanceof Bool) {\n const before = findBool(values, i, -1)\n let after = findBool(values, i, 1)\n if (before % 8 != 0) {\n throw new internal.errors.CodeError('\"expected before index should have number of bool mod 8 equal 0\"')\n }\n after = Math.min(7, after)\n const consecutiveBools = values.slice(i, i + after + 1) as Bool[]\n const compressedNumber = compressMultipleBool(consecutiveBools)\n heads.push(new Uint8Array([compressedNumber]))\n i += after\n } else {\n heads.push(asUint8Array(value.bytes))\n }\n tails.push(new Uint8Array())\n }\n i += 1\n }\n\n // Adjust heads for dynamic types\n let headLength = 0\n heads.forEach((head) => {\n // If the element is not a placeholder, append the length of the element\n headLength += head.length\n })\n\n // Correctly encode dynamic types and replace placeholder\n let tailCurrLength = 0\n for (let i = 0; i < heads.length; i++) {\n if (dynamicLengthTypeIndex[i]) {\n const headValue = headLength + tailCurrLength\n heads[i] = asUint8Array(encodeLength(headValue))\n }\n tailCurrLength += tails[i].length\n }\n\n return conactUint8Arrays(valuesLengthBytes, ...heads, ...tails)\n}\n\nconst findBool = (values: ARC4Encoded[], index: number, delta: number) => {\n let until = 0\n const length = values.length\n while (true) {\n const curr = index + delta * until\n if (values[curr] instanceof Bool) {\n if ((curr !== length - 1 && delta > 0) || (curr > 0 && delta < 0)) {\n until += 1\n } else {\n break\n }\n } else {\n until -= 1\n break\n }\n }\n return until\n}\n\nconst compressMultipleBool = (values: Bool[]): number => {\n let result = 0\n if (values.length > 8) {\n throw new Error('length of list should not be greater than 8')\n }\n for (let i = 0; i < values.length; i++) {\n const value = values[i]\n if (value.native) {\n result |= 1 << (7 - i)\n }\n }\n return result\n}\n\nconst trimGenericTypeName = (typeName: string) => typeName.replace(/<.*>/, '')\n\nconst isDynamicLengthType = (value: ARC4Encoded) =>\n value instanceof StrImpl ||\n (value instanceof StaticArrayImpl && holdsDynamicLengthContent(value)) ||\n (value instanceof TupleImpl && value.genericArgs.some(holdsDynamicLengthContent)) ||\n (value instanceof StructImpl && Object.values(value.genericArgs).some(holdsDynamicLengthContent)) ||\n value instanceof DynamicArrayImpl ||\n value instanceof DynamicBytesImpl\n\nconst holdsDynamicLengthContent = (value: StaticArrayImpl<ARC4Encoded, number> | DynamicArrayImpl<ARC4Encoded> | TypeInfo): boolean => {\n const itemTypeName = trimGenericTypeName(\n value instanceof StaticArrayImpl || value instanceof DynamicArrayImpl ? value.genericArgs.elementType.name : value.name,\n )\n return (\n itemTypeName === 'Str' ||\n itemTypeName === 'DynamicArray' ||\n itemTypeName === 'DynamicBytes' ||\n (itemTypeName === 'StaticArray' &&\n holdsDynamicLengthContent(((value as StaticArrayImpl<ARC4Encoded, number>).genericArgs as StaticArrayGenericArgs).elementType)) ||\n ((itemTypeName === 'Tuple' || itemTypeName === 'Struct') &&\n Object.values(value.genericArgs as Record<string, TypeInfo>).some(holdsDynamicLengthContent))\n )\n}\n\nexport function interpretAsArc4Impl<T extends ARC4Encoded>(\n typeInfoString: string,\n bytes: internal.primitives.StubBytesCompat,\n prefix: 'none' | 'log' = 'none',\n): T {\n const typeInfo = JSON.parse(typeInfoString)\n return getArc4Encoder<T>(typeInfo)(bytes, typeInfo, prefix)\n}\n\nexport const arc4Encoders: Record<string, fromBytes<DeliberateAny>> = {\n Address: AddressImpl.fromBytesImpl,\n Bool: BoolImpl.fromBytesImpl,\n Byte: ByteImpl.fromBytesImpl,\n Str: StrImpl.fromBytesImpl,\n 'UintN<.*>': UintNImpl.fromBytesImpl,\n 'UFixedNxM<.*>': UFixedNxMImpl.fromBytesImpl,\n 'StaticArray<.*>': StaticArrayImpl.fromBytesImpl,\n 'DynamicArray<.*>': DynamicArrayImpl.fromBytesImpl,\n 'Tuple(<.*>)?': TupleImpl.fromBytesImpl,\n 'Struct(<.*>)?': StructImpl.fromBytesImpl,\n DynamicBytes: DynamicBytesImpl.fromBytesImpl,\n 'StaticBytes<.*>': StaticBytesImpl.fromBytesImpl,\n}\nexport const getArc4Encoder = <T>(typeInfo: TypeInfo, encoders?: Record<string, fromBytes<DeliberateAny>>): fromBytes<T> => {\n const encoder = Object.entries(encoders ?? arc4Encoders).find(([k, _]) => new RegExp(`^${k}$`, 'i').test(typeInfo.name))?.[1]\n if (!encoder) {\n throw new Error(`No encoder found for type ${typeInfo.name}`)\n }\n return encoder as fromBytes<T>\n}\n\nexport const getArc4TypeName = (typeInfo: TypeInfo): string | undefined => {\n const map = {\n Address: 'address',\n Bool: 'bool',\n Byte: 'byte',\n Str: 'string',\n 'UintN<.*>': UintNImpl.getArc4TypeName,\n 'UFixedNxM<.*>': UFixedNxMImpl.getArc4TypeName,\n 'StaticArray<.*>': StaticArrayImpl.getArc4TypeName,\n 'DynamicArray<.*>': DynamicArrayImpl.getArc4TypeName,\n 'Tuple(<.*>)?': TupleImpl.getArc4TypeName,\n 'Struct(<.*>)?': StructImpl.getArc4TypeName,\n DynamicBytes: DynamicBytesImpl.getArc4TypeName,\n 'StaticBytes<.*>': StaticBytesImpl.getArc4TypeName,\n }\n const name = Object.entries(map).find(([k, _]) => new RegExp(`^${k}$`, 'i').test(typeInfo.name))?.[1]\n if (typeof name === 'string') return name\n else if (typeof name === 'function') return name(typeInfo)\n return undefined\n}\n\nexport function decodeArc4Impl<T>(\n sourceTypeInfoString: string,\n bytes: internal.primitives.StubBytesCompat,\n prefix: 'none' | 'log' = 'none',\n): T {\n const sourceTypeInfo = JSON.parse(sourceTypeInfoString)\n const encoder = getArc4Encoder(sourceTypeInfo)\n const source = encoder(bytes, sourceTypeInfo, prefix)\n return getNativeValue(source) as T\n}\n\nexport function encodeArc4Impl<T>(_targetTypeInfoString: string, source: T): bytes {\n const arc4Encoded = getArc4Encoded(source)\n return arc4Encoded.bytes\n}\n\nconst getNativeValue = (value: DeliberateAny): DeliberateAny => {\n const native = (value as DeliberateAny).native\n if (Array.isArray(native)) {\n return native.map((item) => getNativeValue(item))\n } else if (native instanceof internal.primitives.AlgoTsPrimitiveCls) {\n return native\n } else if (typeof native === 'object') {\n return Object.fromEntries(Object.entries(native).map(([key, value]) => [key, getNativeValue(value)]))\n }\n return native\n}\n\nexport const getArc4Encoded = (value: DeliberateAny): ARC4Encoded => {\n if (value instanceof ARC4Encoded) {\n return value\n }\n if (value instanceof AccountCls) {\n const index = (lazyContext.activeGroup.activeTransaction as ApplicationTransaction).apat.indexOf(value)\n return new UintNImpl({ name: 'UintN<64>', genericArgs: [{ name: '64' }] }, asBigInt(index))\n }\n if (value instanceof AssetCls) {\n const index = (lazyContext.activeGroup.activeTransaction as ApplicationTransaction).apas.indexOf(value)\n return new UintNImpl({ name: 'UintN<64>', genericArgs: [{ name: '64' }] }, asBigInt(index))\n }\n if (value instanceof ApplicationCls) {\n const index = (lazyContext.activeGroup.activeTransaction as ApplicationTransaction).apfa.indexOf(value)\n return new UintNImpl({ name: 'UintN<64>', genericArgs: [{ name: '64' }] }, asBigInt(index))\n }\n if (typeof value === 'boolean') {\n return new BoolImpl({ name: 'Bool' }, value)\n }\n if (value instanceof internal.primitives.Uint64Cls || typeof value === 'number') {\n return new UintNImpl({ name: 'UintN<64>', genericArgs: [{ name: '64' }] }, asBigInt(value))\n }\n if (value instanceof internal.primitives.BigUintCls) {\n return new UintNImpl({ name: 'UintN<512>', genericArgs: [{ name: '512' }] }, value.asBigInt())\n }\n if (typeof value === 'bigint') {\n return new UintNImpl({ name: 'UintN<512>', genericArgs: [{ name: '512' }] }, value)\n }\n if (value instanceof internal.primitives.BytesCls) {\n return new DynamicBytesImpl(\n { name: 'DynamicBytes', genericArgs: { elementType: { name: 'Byte', genericArgs: [{ name: '8' }] } } },\n value.asAlgoTs(),\n )\n }\n if (typeof value === 'string') {\n return new StrImpl({ name: 'Str' }, value)\n }\n if (Array.isArray(value)) {\n const result: ARC4Encoded[] = value.reduce((acc: ARC4Encoded[], cur: DeliberateAny) => {\n return acc.concat(getArc4Encoded(cur))\n }, [])\n const genericArgs: TypeInfo[] = result.map((x) => (x as DeliberateAny).typeInfo)\n const typeInfo = { name: `Tuple<[${genericArgs.map((x) => x.name).join(',')}]>`, genericArgs }\n return new TupleImpl(typeInfo, ...(result as []))\n }\n if (typeof value === 'object') {\n const result = Object.values(value).reduce((acc: ARC4Encoded[], cur: DeliberateAny) => {\n return acc.concat(getArc4Encoded(cur))\n }, [])\n const genericArgs: TypeInfo[] = result.map((x) => (x as DeliberateAny).typeInfo)\n const typeInfo = {\n name: `Struct<${value.constructor.name}>`,\n genericArgs: Object.fromEntries(Object.keys(value).map((x, i) => [x, genericArgs[i]])),\n }\n return new StructImpl(typeInfo, Object.fromEntries(Object.keys(value).map((x, i) => [x, result[i]])))\n }\n\n throw internal.errors.codeError(`Unsupported type for encoding: ${typeof value}`)\n}\n","import { BaseContract, Contract } from '@algorandfoundation/algorand-typescript'\nimport { AbiMethodConfig, BareMethodConfig, CreateOptions, OnCompleteActionStr } from '@algorandfoundation/algorand-typescript/arc4'\nimport { sha512_256 as js_sha512_256 } from 'js-sha512'\nimport { TypeInfo } from './encoders'\nimport { getArc4TypeName as getArc4TypeNameForARC4Encoded } from './impl/encoded-types'\nimport { DeliberateAny } from './typescript-helpers'\n\nexport interface AbiMetadata {\n methodName: string\n methodSignature: string | undefined\n argTypes: string[]\n returnType: string\n onCreate?: CreateOptions\n allowActions?: OnCompleteActionStr[]\n}\nconst AbiMetaSymbol = Symbol('AbiMetadata')\nexport const isContractProxy = Symbol('isContractProxy')\nexport const attachAbiMetadata = (contract: { new (): Contract }, methodName: string, metadata: AbiMetadata): void => {\n const metadatas: Record<string, AbiMetadata> = (AbiMetaSymbol in contract ? contract[AbiMetaSymbol] : {}) as Record<string, AbiMetadata>\n metadatas[methodName] = metadata\n if (!(AbiMetaSymbol in contract)) {\n Object.defineProperty(contract, AbiMetaSymbol, {\n value: metadatas,\n writable: true,\n enumerable: false,\n })\n }\n}\n\nexport const copyAbiMetadatas = <T extends BaseContract>(sourceContract: T, targetContract: T): void => {\n const metadatas = getContractAbiMetadata(sourceContract)\n Object.defineProperty(targetContract, AbiMetaSymbol, {\n value: metadatas,\n writable: true,\n enumerable: false,\n })\n}\n\nexport const captureMethodConfig = <T extends Contract>(\n contract: T,\n methodName: string,\n config?: AbiMethodConfig<T> | BareMethodConfig,\n): void => {\n const metadata = getContractMethodAbiMetadata(contract, methodName)\n metadata.onCreate = config?.onCreate ?? 'disallow'\n metadata.allowActions = ([] as OnCompleteActionStr[]).concat(config?.allowActions ?? 'NoOp')\n}\n\nexport const hasAbiMetadata = <T extends Contract>(contract: T): boolean => {\n const contractClass = contract.constructor as { new (): T }\n return (\n Object.getOwnPropertySymbols(contractClass).some((s) => s.toString() === AbiMetaSymbol.toString()) || AbiMetaSymbol in contractClass\n )\n}\nexport const getContractAbiMetadata = <T extends BaseContract>(contract: T): Record<string, AbiMetadata> => {\n if ((contract as DeliberateAny)[isContractProxy]) {\n return (contract as DeliberateAny)[AbiMetaSymbol] as Record<string, AbiMetadata>\n }\n const contractClass = contract.constructor as { new (): T }\n const s = Object.getOwnPropertySymbols(contractClass).find((s) => s.toString() === AbiMetaSymbol.toString())\n const metadatas: Record<string, AbiMetadata> = (\n s ? (contractClass as DeliberateAny)[s] : AbiMetaSymbol in contractClass ? contractClass[AbiMetaSymbol] : {}\n ) as Record<string, AbiMetadata>\n return metadatas\n}\n\nexport const getContractMethodAbiMetadata = <T extends BaseContract>(contract: T, methodName: string): AbiMetadata => {\n const metadatas = getContractAbiMetadata(contract)\n return metadatas[methodName]\n}\n\nexport const getArc4Signature = (metadata: AbiMetadata): string => {\n if (metadata.methodSignature === undefined) {\n const argTypes = metadata.argTypes.map((t) => JSON.parse(t) as TypeInfo).map(getArc4TypeName)\n const returnType = getArc4TypeName(JSON.parse(metadata.returnType) as TypeInfo)\n metadata.methodSignature = `${metadata.methodName}(${argTypes.join(',')})${returnType}`\n }\n return metadata.methodSignature\n}\n\nexport const getArc4Selector = (metadata: AbiMetadata): Uint8Array => {\n const hash = js_sha512_256.array(getArc4Signature(metadata))\n return new Uint8Array(hash.slice(0, 4))\n}\n\nconst getArc4TypeName = (t: TypeInfo): string => {\n const map: Record<string, string | ((t: TypeInfo) => string)> = {\n void: 'void',\n account: 'account',\n application: 'application',\n asset: 'asset',\n boolean: 'bool',\n biguint: 'uint512',\n bytes: 'byte[]',\n string: 'string',\n uint64: 'uint64',\n OnCompleteAction: 'uint64',\n TransactionType: 'uint64',\n Transaction: 'txn',\n PaymentTxn: 'pay',\n KeyRegistrationTxn: 'keyreg',\n AssetConfigTxn: 'acfg',\n AssetTransferTxn: 'axfer',\n AssetFreezeTxn: 'afrz',\n ApplicationTxn: 'appl',\n 'Tuple(<.*>)?': (t) =>\n `(${Object.values(t.genericArgs as Record<string, TypeInfo>)\n .map(getArc4TypeName)\n .join(',')})`,\n }\n const entry = Object.entries(map).find(([k, _]) => new RegExp(`^${k}$`, 'i').test(t.name))?.[1]\n if (entry === undefined) {\n return getArc4TypeNameForARC4Encoded(t) ?? t.name\n }\n if (entry instanceof Function) {\n return entry(t)\n }\n return entry\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 elliptic 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, PROGRAM_TAG } from '../constants'\nimport { lazyContext } from '../context-helpers/internal-context'\nimport { notImplementedError } from '../errors'\nimport { asBytes, asBytesCls, asUint8Array, conactUint8Arrays } 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 = conactUint8Arrays(asUint8Array(PROGRAM_TAG), programBytes.asUint8Array())\n const logicSigAddress = js_sha512_256.array(logicSig)\n\n const addressBytes = Bytes(logicSigAddress)\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 elliptic.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 elliptic.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 elliptic.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 {\n Account,\n BaseContract,\n CompileContractOptions,\n CompiledContract,\n CompiledLogicSig,\n CompileLogicSigOptions,\n LogicSig,\n} from '@algorandfoundation/algorand-typescript'\nimport { lazyContext } from '../context-helpers/internal-context'\nimport { ConstructorFor } from '../typescript-helpers'\nimport { ApplicationData } from './application'\n\nexport function compileImpl(\n artefact: ConstructorFor<BaseContract> | ConstructorFor<LogicSig>,\n options?: CompileContractOptions | CompileLogicSigOptions,\n): CompiledLogicSig | CompiledContract {\n let app: ApplicationData | undefined\n let account: Account | undefined\n const compiledApp = lazyContext.value.getCompiledApp(artefact as ConstructorFor<BaseContract>)\n const compiledLogicSig = lazyContext.value.getCompiledLogicSig(artefact as ConstructorFor<LogicSig>)\n if (compiledApp !== undefined) {\n app = lazyContext.ledger.applicationDataMap.get(compiledApp[1])\n }\n if (compiledLogicSig !== undefined) {\n account = compiledLogicSig[1]\n }\n if (options?.templateVars) {\n Object.entries(options.templateVars).forEach(([key, value]) => {\n lazyContext.value.setTemplateVar(key, value, options.templateVarsPrefix)\n })\n }\n return new Proxy({} as CompiledLogicSig | CompiledContract, {\n get: (_target, prop) => {\n switch (prop) {\n case 'approvalProgram':\n return app?.application.approvalProgram ?? [lazyContext.any.bytes(10), lazyContext.any.bytes(10)]\n case 'clearStateProgram':\n return app?.application.clearStateProgram ?? [lazyContext.any.bytes(10), lazyContext.any.bytes(10)]\n case 'extraProgramPages':\n return (options as CompileContractOptions)?.extraProgramPages ?? app?.application.extraProgramPages ?? lazyContext.any.uint64()\n case 'globalUints':\n return (options as CompileContractOptions)?.globalUints ?? app?.application.globalNumUint ?? lazyContext.any.uint64()\n case 'globalBytes':\n return (options as CompileContractOptions)?.globalBytes ?? app?.application.globalNumBytes ?? lazyContext.any.uint64()\n case 'localUints':\n return (options as CompileContractOptions)?.localUints ?? app?.application.localNumUint ?? lazyContext.any.uint64()\n case 'localBytes':\n return (options as CompileContractOptions)?.localBytes ?? app?.application.localNumBytes ?? lazyContext.any.uint64()\n case 'account':\n return account ?? lazyContext.any.account()\n }\n },\n })\n}\n","import { internal } from '@algorandfoundation/algorand-typescript'\nimport { lazyContext } from '../context-helpers/internal-context'\nimport { DeliberateAny } from '../typescript-helpers'\nimport { sha512_256 } from './crypto'\nimport { getArc4Encoded, getArc4TypeName } from './encoded-types'\n\nexport function emitImpl<T>(typeInfoString: string, event: T | string, ...eventProps: unknown[]) {\n let eventData\n let eventName\n if (typeof event === 'string') {\n eventData = getArc4Encoded(eventProps)\n eventName = event\n const argTypes = getArc4TypeName((eventData as DeliberateAny).typeInfo)!\n if (eventName.indexOf('(') === -1) {\n eventName += argTypes\n } else if (event.indexOf(argTypes) === -1) {\n throw internal.errors.codeError(`Event signature ${event} does not match arg types ${argTypes}`)\n }\n } else {\n eventData = getArc4Encoded(event)\n const typeInfo = JSON.parse(typeInfoString)\n const argTypes = getArc4TypeName((eventData as DeliberateAny).typeInfo)!\n eventName = typeInfo.name.replace(/.*</, '').replace(/>.*/, '') + argTypes\n }\n\n const eventHash = sha512_256(eventName)\n lazyContext.value.log(eventHash.slice(0, 4).concat(eventData.bytes))\n}\n","import { OpUpFeeSource, uint64 } from '@algorandfoundation/algorand-typescript'\n\nexport function ensureBudgetImpl(_budget: uint64, _feeSource: OpUpFeeSource = OpUpFeeSource.GroupCredit) {\n // ensureBudget function is emulated to be a no-op\n}\n","import { assert, assertMatch, internal, match } from '@algorandfoundation/algorand-typescript'\nimport { ARC4Encoded } from '@algorandfoundation/algorand-typescript/arc4'\nimport { DeliberateAny } from '../typescript-helpers'\nimport { asBytes, asMaybeBigUintCls } from '../util'\nimport { BytesBackedCls, Uint64BackedCls } from './base'\n\nexport const matchImpl: typeof match = (subject, test): boolean => {\n const bigIntSubjectValue = getBigIntValue(subject)\n if (bigIntSubjectValue !== undefined) {\n const bigIntTestValue = getBigIntValue(test)\n if (bigIntTestValue !== undefined) {\n return bigIntSubjectValue === bigIntTestValue\n } else if (Object.hasOwn(test, 'lessThan')) {\n return bigIntSubjectValue < getBigIntValue((test as DeliberateAny).lessThan)!\n } else if (Object.hasOwn(test, 'greaterThan')) {\n return bigIntSubjectValue > getBigIntValue((test as DeliberateAny).greaterThan)!\n } else if (Object.hasOwn(test, 'lessThanEq')) {\n return bigIntSubjectValue <= getBigIntValue((test as DeliberateAny).lessThanEq)!\n } else if (Object.hasOwn(test, 'greaterThanEq')) {\n return bigIntSubjectValue >= getBigIntValue((test as DeliberateAny).greaterThanEq)!\n } else if (Object.hasOwn(test, 'between')) {\n const [start, end] = (test as DeliberateAny).between\n return bigIntSubjectValue >= getBigIntValue(start)! && bigIntSubjectValue <= getBigIntValue(end)!\n }\n } else if (subject instanceof internal.primitives.BytesCls) {\n return subject.equals(asBytes(test as unknown as internal.primitives.StubBytesCompat))\n } else if (typeof subject === 'string') {\n return subject === test\n } else if (subject instanceof BytesBackedCls) {\n return subject.bytes.equals((test as unknown as BytesBackedCls).bytes)\n } else if (subject instanceof Uint64BackedCls) {\n return (\n getBigIntValue(subject.uint64 as unknown as internal.primitives.Uint64Cls) ===\n getBigIntValue((test as unknown as Uint64BackedCls).uint64 as unknown as internal.primitives.Uint64Cls)\n )\n } else if (test instanceof ARC4Encoded) {\n return (subject as unknown as ARC4Encoded).bytes.equals(test.bytes)\n } else if (Array.isArray(test)) {\n return test.map((x, i) => matchImpl((subject as DeliberateAny)[i], x as DeliberateAny)).every((x) => x)\n } else if (typeof test === 'object') {\n return Object.entries(test!)\n .map(([k, v]) => matchImpl((subject as DeliberateAny)[k], v as DeliberateAny))\n .every((x) => x)\n }\n return false\n}\n\nexport const assertMatchImpl: typeof assertMatch = (subject, test, message): boolean => {\n const isMatching = matchImpl(subject, test)\n assert(isMatching, message)\n return isMatching\n}\n\nconst getBigIntValue = (x: unknown) => {\n return asMaybeBigUintCls(x)?.asBigInt()\n}\n","import { internal } from '@algorandfoundation/algorand-typescript'\nimport { DEFAULT_TEMPLATE_VAR_PREFIX } from '../constants'\nimport { lazyContext } from '../context-helpers/internal-context'\n\nexport function TemplateVarImpl<T>(variableName: string, prefix = DEFAULT_TEMPLATE_VAR_PREFIX): T {\n const key = prefix + variableName\n if (!Object.hasOwn(lazyContext.value.templateVars, key)) {\n throw internal.errors.codeError(`Template variable ${key} not found in test context!`)\n }\n return lazyContext.value.templateVars[prefix + variableName] as T\n}\n","import { internal } from '@algorandfoundation/algorand-typescript'\nimport { asBigInt, asUint64 } from '../util'\n\nexport function* urangeImpl(\n a: internal.primitives.StubUint64Compat,\n b?: internal.primitives.StubUint64Compat,\n c?: internal.primitives.StubUint64Compat,\n) {\n const start = b ? asBigInt(a) : BigInt(0)\n const end = b ? asBigInt(b) : asBigInt(a)\n const step = c ? asBigInt(c) : BigInt(1)\n let iterationCount = 0\n for (let i = start; i < end; i += step) {\n iterationCount++\n yield asUint64(i)\n }\n return iterationCount\n}\n","import { internal } from '@algorandfoundation/algorand-typescript'\nimport { ARC4Encoded } from '@algorandfoundation/algorand-typescript/arc4'\nimport { MAX_UINT64 } from './constants'\nimport type { TypeInfo } from './encoders'\nimport { AccountCls } from './impl/account'\nimport { Uint64BackedCls } from './impl/base'\nimport { DeliberateAny } from './typescript-helpers'\nimport { nameOfType } from './util'\n\nexport { attachAbiMetadata } from './abi-metadata'\nexport { compileImpl } from './impl/compiled'\nexport { emitImpl } from './impl/emit'\nexport * from './impl/encoded-types'\nexport { decodeArc4Impl, encodeArc4Impl } from './impl/encoded-types'\nexport { ensureBudgetImpl } from './impl/ensure-budget'\nexport { assertMatchImpl, matchImpl } from './impl/match'\nexport { TemplateVarImpl } from './impl/template-var'\nexport { urangeImpl } from './impl/urange'\n\nexport function switchableValue(x: unknown): bigint | string | boolean {\n if (typeof x === 'boolean') return x\n if (typeof x === 'bigint') return x\n if (typeof x === 'string') return x\n if (x instanceof internal.primitives.AlgoTsPrimitiveCls) return x.valueOf()\n internal.errors.internalError(`Cannot convert ${nameOfType(x)} to switchable value`)\n}\n// export function wrapLiteral(x: unknown) {\n// if (typeof x === 'boolean') return x\n// if (isBytes(x)) return makeBytes(x)\n// if (isUint64(x)) return makeUint64(x)\n// internalError(`Cannot wrap ${nameOfType(x)}`)\n// }\n\ntype BinaryOps = '+' | '-' | '*' | '**' | '/' | '%' | '>' | '>=' | '<' | '<=' | '===' | '!==' | '<<' | '>>' | '&' | '|' | '^'\ntype UnaryOps = '~'\n\nfunction tryGetBigInt(value: unknown): bigint | undefined {\n if (typeof value == 'bigint') return value\n if (typeof value == 'number' && Number.isInteger(value)) return BigInt(value)\n if (value instanceof internal.primitives.Uint64Cls) return value.valueOf()\n if (value instanceof internal.primitives.BigUintCls) return value.valueOf()\n return undefined\n}\n\nexport function binaryOp(left: unknown, right: unknown, op: BinaryOps) {\n if (left instanceof ARC4Encoded && right instanceof ARC4Encoded) {\n return arc4EncodedOp(left, right, op)\n }\n if (left instanceof AccountCls && right instanceof AccountCls) {\n return accountBinaryOp(left, right, op)\n }\n if (left instanceof Uint64BackedCls && right instanceof Uint64BackedCls) {\n return uint64BackedClsBinaryOp(left, right, op)\n }\n if (left instanceof internal.primitives.BigUintCls || right instanceof internal.primitives.BigUintCls) {\n return bigUintBinaryOp(left, right, op)\n }\n if (left instanceof internal.primitives.Uint64Cls || right instanceof internal.primitives.Uint64Cls) {\n return uint64BinaryOp(left, right, op)\n }\n if (left instanceof internal.primitives.BytesCls || right instanceof internal.primitives.BytesCls) {\n return bytesBinaryOp(left, right, op)\n }\n const lbi = tryGetBigInt(left)\n const rbi = tryGetBigInt(right)\n if (lbi !== undefined && rbi !== undefined) {\n const result = defaultBinaryOp(lbi, rbi, op)\n\n if (typeof result === 'boolean') {\n return result\n }\n\n if (typeof left === 'number' && typeof right === 'number' && result <= Number.MAX_SAFE_INTEGER) {\n return Number(result)\n }\n\n return result\n }\n return defaultBinaryOp(left, right, op)\n}\n\nexport function unaryOp(operand: unknown, op: UnaryOps) {\n if (operand instanceof internal.primitives.Uint64Cls) {\n return uint64UnaryOp(operand, op)\n }\n return defaultUnaryOp(operand, op)\n}\n\nfunction arc4EncodedOp(left: ARC4Encoded, right: ARC4Encoded, op: BinaryOps): DeliberateAny {\n const hasEqualsMethod = (x: ARC4Encoded) => Object.hasOwn(x, 'equals') && typeof (x as DeliberateAny).equals === 'function'\n const compareEquality = (x: ARC4Encoded, y: ARC4Encoded) =>\n hasEqualsMethod(x) ? (x as DeliberateAny).equals(y) : (y as DeliberateAny).equals(x)\n switch (op) {\n case '===':\n return compareEquality(left, right)\n case '!==':\n return !compareEquality(left, right)\n default:\n internal.errors.internalError(`Unsupported operator ${op}`)\n }\n}\n\nfunction accountBinaryOp(left: AccountCls, right: AccountCls, op: BinaryOps): DeliberateAny {\n switch (op) {\n case '===':\n case '!==':\n return bytesBinaryOp(left.bytes, right.bytes, op)\n default:\n internal.errors.internalError(`Unsupported operator ${op}`)\n }\n}\nfunction uint64BackedClsBinaryOp(left: Uint64BackedCls, right: Uint64BackedCls, op: BinaryOps): DeliberateAny {\n switch (op) {\n case '===':\n case '!==':\n return uint64BinaryOp(left.uint64, right.uint64, op)\n default:\n internal.errors.internalError(`Unsupported operator ${op}`)\n }\n}\nfunction uint64BinaryOp(left: DeliberateAny, right: DeliberateAny, op: BinaryOps): DeliberateAny {\n const lbi = internal.primitives.Uint64Cls.fromCompat(left).valueOf()\n const rbi = internal.primitives.Uint64Cls.fromCompat(right).valueOf()\n const result = (function () {\n switch (op) {\n case '+':\n return lbi + rbi\n case '-':\n return lbi - rbi\n case '*':\n return lbi * rbi\n case '**':\n if (lbi === 0n && rbi === 0n) {\n throw internal.errors.codeError('0 ** 0 is undefined')\n }\n return lbi ** rbi\n case '/':\n return lbi / rbi\n case '%':\n return lbi % rbi\n case '>>':\n if (rbi > 63n) {\n throw new internal.errors.CodeError('expected shift <= 63')\n }\n return (lbi >> rbi) & MAX_UINT64\n case '<<':\n if (rbi > 63n) {\n throw new internal.errors.CodeError('expected shift <= 63')\n }\n return (lbi << rbi) & MAX_UINT64\n case '>':\n return lbi > rbi\n case '<':\n return lbi < rbi\n case '>=':\n return lbi >= rbi\n case '<=':\n return lbi <= rbi\n case '===':\n return lbi === rbi\n case '!==':\n return lbi !== rbi\n case '&':\n return lbi & rbi\n case '|':\n return lbi | rbi\n case '^':\n return lbi ^ rbi\n default:\n internal.errors.internalError(`Unsupported operator ${op}`)\n }\n })()\n return typeof result === 'boolean' ? result : new internal.primitives.Uint64Cls(result)\n}\n\nfunction bigUintBinaryOp(left: DeliberateAny, right: DeliberateAny, op: BinaryOps): DeliberateAny {\n const lbi = internal.primitives.checkBigUint(internal.primitives.BigUintCls.fromCompat(left).valueOf())\n const rbi = internal.primitives.checkBigUint(internal.primitives.BigUintCls.fromCompat(right).valueOf())\n const result = (function () {\n switch (op) {\n case '+':\n return lbi + rbi\n case '-':\n return lbi - rbi\n case '*':\n return lbi * rbi\n case '**':\n if (lbi === 0n && rbi === 0n) {\n throw internal.errors.codeError('0 ** 0 is undefined')\n }\n return lbi ** rbi\n case '/':\n return lbi / rbi\n case '%':\n return lbi % rbi\n case '>>':\n throw new internal.errors.CodeError('BigUint does not support >> operator')\n case '<<':\n throw new internal.errors.CodeError('BigUint does not support << operator')\n case '>':\n return lbi > rbi\n case '<':\n return lbi < rbi\n case '>=':\n return lbi >= rbi\n case '<=':\n return lbi <= rbi\n case '===':\n return lbi === rbi\n case '!==':\n return lbi !== rbi\n case '&':\n return lbi & rbi\n case '|':\n return lbi | rbi\n case '^':\n return lbi ^ rbi\n default:\n internal.errors.internalError(`Unsupported operator ${op}`)\n }\n })()\n if (typeof result === 'boolean') {\n return result\n }\n\n if (result < 0) {\n internal.errors.avmError('BigUint underflow')\n }\n return new internal.primitives.BigUintCls(result)\n}\n\nfunction bytesBinaryOp(left: DeliberateAny, right: DeliberateAny, op: BinaryOps): DeliberateAny {\n const lbb = internal.primitives.checkBytes(internal.primitives.BytesCls.fromCompat(left).asUint8Array())\n const rbb = internal.primitives.checkBytes(internal.primitives.BytesCls.fromCompat(right).asUint8Array())\n const lbi = internal.encodingUtil.uint8ArrayToBigInt(lbb)\n const rbi = internal.encodingUtil.uint8ArrayToBigInt(rbb)\n\n const result = (function () {\n switch (op) {\n case '>':\n return lbi > rbi\n case '<':\n return lbi < rbi\n case '>=':\n return lbi >= rbi\n case '<=':\n return lbi <= rbi\n case '===':\n return lbi === rbi\n case '!==':\n return lbi !== rbi\n default:\n internal.errors.internalError(`Unsupported operator ${op}`)\n }\n })()\n return result\n}\n\nfunction defaultBinaryOp(left: DeliberateAny, right: DeliberateAny, op: BinaryOps): DeliberateAny {\n switch (op) {\n case '+':\n return left + right\n case '-':\n return left - right\n case '*':\n return left * right\n case '**':\n if (left === 0n && right === 0n) {\n throw new internal.errors.CodeError('0 ** 0 is undefined')\n }\n return left ** right\n case '/':\n return left / right\n case '%':\n return left % right\n case '>>':\n if (typeof left === 'bigint' && typeof right === 'bigint') {\n if (right > 63n) {\n throw new internal.errors.CodeError('expected shift <= 63')\n }\n return (left >> right) & MAX_UINT64\n }\n return left >> right\n case '<<':\n if (typeof left === 'bigint' && typeof right === 'bigint') {\n if (right > 63n) {\n throw new internal.errors.CodeError('expected shift <= 63')\n }\n return (left << right) & MAX_UINT64\n }\n return left << right\n case '>':\n return left > right\n case '<':\n return left < right\n case '>=':\n return left >= right\n case '<=':\n return left <= right\n case '===':\n return left === right\n case '!==':\n return left !== right\n case '&':\n return left & right\n case '|':\n return left | right\n case '^':\n return left ^ right\n default:\n internal.errors.internalError(`Unsupported operator ${op}`)\n }\n}\n\nfunction uint64UnaryOp(operand: DeliberateAny, op: UnaryOps): DeliberateAny {\n const obi = internal.primitives.Uint64Cls.fromCompat(operand).valueOf()\n switch (op) {\n case '~':\n return ~obi & MAX_UINT64\n default:\n internal.errors.internalError(`Unsupported operator ${op}`)\n }\n}\n\nfunction defaultUnaryOp(_operand: DeliberateAny, op: UnaryOps): DeliberateAny {\n internal.errors.internalError(`Unsupported operator ${op}`)\n}\n\nconst genericTypeMap = new WeakMap<DeliberateAny, TypeInfo>()\nexport function captureGenericTypeInfo(target: DeliberateAny, t: string) {\n genericTypeMap.set(target, JSON.parse(t))\n return target\n}\n\nexport function getGenericTypeInfo(target: DeliberateAny): TypeInfo | undefined {\n return genericTypeMap.get(target)\n}\n"],"names":["js_sha512_256","getArc4TypeName","getArc4TypeNameForARC4Encoded","js_sha256","js_sha3_256","js_keccak256","assert"],"mappings":"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"}