@algorandfoundation/algorand-typescript-testing 1.0.0-alpha.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/abi-metadata.d.ts +16 -0
- package/collections/custom-key-map.d.ts +29 -0
- package/constants.d.ts +27 -0
- package/context-helpers/internal-context.d.ts +26 -0
- package/decode-logs.d.ts +9 -0
- package/encoders.d.ts +9 -0
- package/errors.d.ts +5 -0
- package/impl/account.d.ts +32 -0
- package/impl/acct-params.d.ts +5 -0
- package/impl/app-global.d.ts +2 -0
- package/impl/app-local.d.ts +2 -0
- package/impl/app-params.d.ts +3 -0
- package/impl/application.d.ts +30 -0
- package/impl/asset-holding.d.ts +2 -0
- package/impl/asset-params.d.ts +3 -0
- package/impl/asset.d.ts +24 -0
- package/impl/base.d.ts +18 -0
- package/impl/block.d.ts +2 -0
- package/impl/box.d.ts +2 -0
- package/impl/crypto.d.ts +12 -0
- package/impl/encoded-types.d.ts +165 -0
- package/impl/global.d.ts +18 -0
- package/impl/gtxn.d.ts +2 -0
- package/impl/index.d.ts +15 -0
- package/impl/inner-transactions.d.ts +51 -0
- package/impl/itxn.d.ts +8 -0
- package/impl/pure.d.ts +32 -0
- package/impl/scratch.d.ts +4 -0
- package/impl/state.d.ts +103 -0
- package/impl/transactions.d.ts +140 -0
- package/impl/txn.d.ts +3 -0
- package/index.d.ts +1 -0
- package/index.mjs +4563 -0
- package/index.mjs.map +1 -0
- package/package.json +45 -0
- package/runtime-helpers-DlIX78iw.js +1426 -0
- package/runtime-helpers-DlIX78iw.js.map +1 -0
- package/runtime-helpers.d.ts +11 -0
- package/runtime-helpers.mjs +8 -0
- package/runtime-helpers.mjs.map +1 -0
- package/set-up.d.ts +11 -0
- package/subcontexts/contract-context.d.ts +9 -0
- package/subcontexts/ledger-context.d.ts +45 -0
- package/subcontexts/transaction-context.d.ts +67 -0
- package/test-execution-context.d.ts +53 -0
- package/test-transformer/errors.d.ts +3 -0
- package/test-transformer/helpers.d.ts +3 -0
- package/test-transformer/index.d.ts +6 -0
- package/test-transformer/index.mjs +458 -0
- package/test-transformer/index.mjs.map +1 -0
- package/test-transformer/node-factory.d.ts +14 -0
- package/test-transformer/supported-binary-op-string.d.ts +4 -0
- package/test-transformer/visitors.d.ts +11 -0
- package/typescript-helpers.d.ts +15 -0
- package/util.d.ts +29 -0
- package/value-generators/avm.d.ts +23 -0
- package/value-generators/index.d.ts +6 -0
- package/value-generators/txn.d.ts +10 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-helpers-DlIX78iw.js","sources":["../src/abi-metadata.ts","../src/constants.ts","../src/impl/base.ts","../src/util.ts","../src/impl/encoded-types.ts","../src/runtime-helpers.ts"],"sourcesContent":["import { BaseContract, Contract } from '@algorandfoundation/algorand-typescript'\nimport { AbiMethodConfig, BareMethodConfig, CreateOptions, OnCompleteActionStr } from '@algorandfoundation/algorand-typescript/arc4'\nimport { DeliberateAny } from './typescript-helpers'\n\nexport interface AbiMetadata {\n methodName: string\n methodSelector: string\n argTypes: string[]\n returnType: string\n onCreate?: CreateOptions\n allowActions?: OnCompleteActionStr[]\n}\nconst AbiMetaSymbol = Symbol('AbiMetadata')\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 captureMethodConfig = <T extends Contract>(\n contract: T,\n methodName: string,\n config?: AbiMethodConfig<T> | BareMethodConfig,\n): void => {\n const metadata = ensureMetadata(contract, methodName)\n metadata.onCreate = config?.onCreate ?? 'disallow'\n metadata.allowActions = ([] as OnCompleteActionStr[]).concat(config?.allowActions ?? 'NoOp')\n}\n\nconst ensureMetadata = <T extends Contract>(contract: T, methodName: string): AbiMetadata => {\n if (!hasAbiMetadata(contract)) {\n const contractClass = contract.constructor as { new (): T }\n Object.getOwnPropertyNames(Object.getPrototypeOf(contract)).forEach((name) => {\n attachAbiMetadata(contractClass, name, { methodName: name, methodSelector: name, argTypes: [], returnType: '' })\n })\n }\n return getAbiMetadata(contract, methodName)\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}\n\nexport const getAbiMetadata = <T extends BaseContract>(contract: T, methodName: string): AbiMetadata => {\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[methodName]\n}\n","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_UINT64 = 2n ** 64n - 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_B32 = 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY5HFKQ'\nexport const ZERO_ADDRESS = Bytes.fromBase32(ZERO_ADDRESS_B32)\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'\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 { Bytes, bytes, internal } from '@algorandfoundation/algorand-typescript'\nimport { randomBytes } from 'crypto'\nimport { BITS_IN_BYTE, MAX_BYTES_SIZE, MAX_UINT512, MAX_UINT8, UINT512_SIZE } from './constants'\nimport { BytesBackedCls, Uint64BackedCls } from './impl/base'\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 function extractGenericTypeArgs(t: string): string[] {\n const match = t.match(/<(.*)>/)\n if (!match) return []\n return match[1].split(',').map((x) => x.trim())\n}\n\nexport const asUint64Cls = (val: internal.primitives.StubUint64Compat) => internal.primitives.Uint64Cls.fromCompat(val)\n\nexport const asBigUintCls = (val: internal.primitives.StubBigUintCompat) => internal.primitives.BigUintCls.fromCompat(val)\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) => 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\n//TODO: handle arc4 types, bytes backed types\nexport const toBytes = (val: unknown): bytes => {\n const uint64Val = asMaybeUint64Cls(val)\n if (uint64Val !== undefined) {\n return uint64Val.toBytes().asAlgoTs()\n }\n const bytesVal = asMaybeBytesCls(val)\n if (bytesVal !== undefined) {\n return bytesVal.asAlgoTs()\n }\n const bigUintVal = asMaybeBigUintCls(val)\n if (bigUintVal !== undefined) {\n return bigUintVal.toBytes().asAlgoTs()\n }\n if (val instanceof BytesBackedCls) {\n return val.bytes\n }\n if (val instanceof Uint64BackedCls) {\n return asUint64Cls(val.uint64).toBytes().asAlgoTs()\n }\n if (Array.isArray(val)) {\n // This hack handles tuples/arrays of uint64 only\n return val.reduce((acc: bytes, cur: unknown) => {\n const uint64Val = asMaybeUint64Cls(cur)\n if (!uint64Val) {\n // TODO: support ABI tuple encoding\n // internal.errors.internalError(`ABI tuple encoding not supported: ${nameOfType(val)}`)\n return acc.concat(Bytes())\n }\n return acc.concat(toBytes(cur))\n }, Bytes())\n }\n internal.errors.internalError(`Invalid type for bytes: ${nameOfType(val)}`)\n}\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","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 { decodeAddress } from 'algosdk'\nimport assert from 'assert'\nimport { ABI_RETURN_VALUE_LOG_PREFIX, BITS_IN_BYTE, UINT64_SIZE } from '../constants'\nimport { fromBytes, TypeInfo } from '../encoders'\nimport { DeliberateAny } from '../typescript-helpers'\nimport { asBigUint, asBigUintCls, asBytesCls, asUint64, asUint8Array, conactUint8Arrays, uint8ArrayToNumber } from '../util'\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))\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\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 private 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\nexport class ByteImpl extends Byte {\n private value: UintNImpl<8>\n\n constructor(typeInfo: TypeInfo | string, v?: CompatForArc4Int<8>) {\n super(v)\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 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.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\n constructor(_typeInfo: TypeInfo | string, v?: boolean) {\n super(v)\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 typeInfo: TypeInfo\n private size: number\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 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\nexport class AddressImpl extends Address {\n private 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 = decodeAddress(value).publicKey\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 private 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 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 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 private 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\ntype StructConstraint = Record<string, ARC4Encoded>\nexport class StructImpl<T extends StructConstraint> extends (Struct<StructConstraint> as DeliberateAny) {\n private uint8ArrayValue?: Uint8Array\n private typeInfo: TypeInfo\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 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\nexport class DynamicBytesImpl extends DynamicBytes {\n private 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\nexport class StaticBytesImpl extends StaticBytes {\n private value: StaticArrayImpl<ByteImpl, number>\n private 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\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","import { internal } from '@algorandfoundation/algorand-typescript'\nimport { ARC4Encoded } from '@algorandfoundation/algorand-typescript/arc4'\nimport { MAX_UINT64 } from './constants'\nimport type { TypeInfo } from './encoders'\nimport { DeliberateAny } from './typescript-helpers'\nimport { nameOfType } from './util'\n\nexport { attachAbiMetadata } from './abi-metadata'\nexport * from './impl/encoded-types'\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') 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 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}\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":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { TypeInfo } from './encoders';
|
|
2
|
+
import { DeliberateAny } from './typescript-helpers';
|
|
3
|
+
export { attachAbiMetadata } from './abi-metadata';
|
|
4
|
+
export * from './impl/encoded-types';
|
|
5
|
+
export declare function switchableValue(x: unknown): bigint | string | boolean;
|
|
6
|
+
type BinaryOps = '+' | '-' | '*' | '**' | '/' | '%' | '>' | '>=' | '<' | '<=' | '===' | '!==' | '<<' | '>>' | '&' | '|' | '^';
|
|
7
|
+
type UnaryOps = '~';
|
|
8
|
+
export declare function binaryOp(left: unknown, right: unknown, op: BinaryOps): any;
|
|
9
|
+
export declare function unaryOp(operand: unknown, op: UnaryOps): any;
|
|
10
|
+
export declare function captureGenericTypeInfo(target: DeliberateAny, t: string): any;
|
|
11
|
+
export declare function getGenericTypeInfo(target: DeliberateAny): TypeInfo | undefined;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import '@algorandfoundation/algorand-typescript';
|
|
2
|
+
import '@algorandfoundation/algorand-typescript/arc4';
|
|
3
|
+
export { $ as AddressImpl, Y as BoolImpl, W as ByteImpl, a0 as DynamicArrayImpl, a3 as DynamicBytesImpl, _ as StaticArrayImpl, a4 as StaticBytesImpl, X as StrImpl, a2 as StructImpl, a1 as TupleImpl, V as UFixedNxMImpl, T as UintNImpl, G as arc4Encoders, S as attachAbiMetadata, P as binaryOp, R as captureGenericTypeInfo, F as getArc4Encoder, H as getGenericTypeInfo, a5 as interpretAsArc4Impl, O as switchableValue, Q as unaryOp } from './runtime-helpers-DlIX78iw.js';
|
|
4
|
+
import 'crypto';
|
|
5
|
+
import '@algorandfoundation/puya-ts';
|
|
6
|
+
import 'algosdk';
|
|
7
|
+
import 'assert';
|
|
8
|
+
//# sourceMappingURL=runtime-helpers.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-helpers.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
|
package/set-up.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
type Tester = (this: TesterContext, a: unknown, b: unknown, customTesters: Array<Tester>) => boolean | undefined;
|
|
2
|
+
interface TesterContext {
|
|
3
|
+
equals: (a: unknown, b: unknown, customTesters?: Array<Tester>, strictCheck?: boolean) => boolean;
|
|
4
|
+
}
|
|
5
|
+
interface ExpectObj {
|
|
6
|
+
addEqualityTesters: (testers: Array<Tester>) => void;
|
|
7
|
+
}
|
|
8
|
+
export declare function setUpTests({ expect }: {
|
|
9
|
+
expect: ExpectObj;
|
|
10
|
+
}): void;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { BaseContract } from '@algorandfoundation/algorand-typescript';
|
|
2
|
+
import { Transaction } from '../impl/transactions';
|
|
3
|
+
import { DeliberateAny, IConstructor } from '../typescript-helpers';
|
|
4
|
+
export declare class ContractContext {
|
|
5
|
+
create<T extends BaseContract>(type: IConstructor<T>, ...args: DeliberateAny[]): T;
|
|
6
|
+
static createMethodCallTxns<TParams extends unknown[], TReturn>(contract: BaseContract, method: (...args: TParams) => TReturn, ...args: TParams): Transaction[];
|
|
7
|
+
private isArc4;
|
|
8
|
+
private getContractProxyHandler;
|
|
9
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { Account, Application, Asset, BaseContract, internal, LocalStateForAccount } from '@algorandfoundation/algorand-typescript';
|
|
2
|
+
import { AccountMap, Uint64Map } from '../collections/custom-key-map';
|
|
3
|
+
import { AccountData } from '../impl/account';
|
|
4
|
+
import { ApplicationData } from '../impl/application';
|
|
5
|
+
import { GlobalData } from '../impl/global';
|
|
6
|
+
import { GlobalStateCls } from '../impl/state';
|
|
7
|
+
interface BlockData {
|
|
8
|
+
seed: bigint;
|
|
9
|
+
timestamp: bigint;
|
|
10
|
+
}
|
|
11
|
+
export declare class LedgerContext {
|
|
12
|
+
appIdIter: Generator<bigint, any, any>;
|
|
13
|
+
assetIdIter: Generator<bigint, any, any>;
|
|
14
|
+
applicationDataMap: Uint64Map<ApplicationData>;
|
|
15
|
+
appIdContractMap: Uint64Map<BaseContract>;
|
|
16
|
+
accountDataMap: AccountMap<AccountData>;
|
|
17
|
+
assetDataMap: Uint64Map<import("../typescript-helpers").Mutable<Omit<Asset, "id" | "balance" | "frozen">>>;
|
|
18
|
+
blocks: Uint64Map<BlockData>;
|
|
19
|
+
globalData: GlobalData;
|
|
20
|
+
addAppIdContractMap(appId: internal.primitives.StubUint64Compat, contract: BaseContract): void;
|
|
21
|
+
getAsset(assetId: internal.primitives.StubUint64Compat): Asset;
|
|
22
|
+
getApplication(applicationId: internal.primitives.StubUint64Compat): Application;
|
|
23
|
+
getApplicationForContract(contract: BaseContract): Application;
|
|
24
|
+
/**
|
|
25
|
+
* Update asset holdings for account, only specified values will be updated.
|
|
26
|
+
* Account will also be opted-in to asset
|
|
27
|
+
* @param account
|
|
28
|
+
* @param assetId
|
|
29
|
+
* @param balance
|
|
30
|
+
* @param frozen
|
|
31
|
+
*/
|
|
32
|
+
updateAssetHolding(account: Account, assetId: internal.primitives.StubUint64Compat | Asset, balance?: internal.primitives.StubUint64Compat, frozen?: boolean): void;
|
|
33
|
+
patchGlobalData(data: Partial<GlobalData>): void;
|
|
34
|
+
setBlock(index: internal.primitives.StubUint64Compat, seed: internal.primitives.StubUint64Compat, timestamp: internal.primitives.StubUint64Compat): void;
|
|
35
|
+
getBlockContent(index: internal.primitives.StubUint64Compat): BlockData;
|
|
36
|
+
getGlobalState(app: Application, key: internal.primitives.StubBytesCompat): [GlobalStateCls<unknown>, true] | [undefined, false];
|
|
37
|
+
setGlobalState(app: Application, key: internal.primitives.StubBytesCompat, value: internal.primitives.StubUint64Compat | internal.primitives.StubBytesCompat | undefined): void;
|
|
38
|
+
getLocalState(app: Application, account: Account, key: internal.primitives.StubBytesCompat): [LocalStateForAccount<unknown>, true] | [undefined, false];
|
|
39
|
+
setLocalState(app: Application, account: Account, key: internal.primitives.StubBytesCompat, value: internal.primitives.StubUint64Compat | internal.primitives.StubBytesCompat | undefined): void;
|
|
40
|
+
getBox(app: Application, key: internal.primitives.StubBytesCompat): Uint8Array;
|
|
41
|
+
setBox(app: Application, key: internal.primitives.StubBytesCompat, value: Uint8Array): void;
|
|
42
|
+
deleteBox(app: Application, key: internal.primitives.StubBytesCompat): boolean;
|
|
43
|
+
boxExists(app: Application, key: internal.primitives.StubBytesCompat): boolean;
|
|
44
|
+
}
|
|
45
|
+
export {};
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { bytes, Contract, internal, uint64 } from '@algorandfoundation/algorand-typescript';
|
|
2
|
+
import { DecodedLogs, LogDecoding } from '../decode-logs';
|
|
3
|
+
import { ApplicationInnerTxn, AssetConfigInnerTxn, AssetFreezeInnerTxn, AssetTransferInnerTxn, KeyRegistrationInnerTxn, PaymentInnerTxn } from '../impl/inner-transactions';
|
|
4
|
+
import { InnerTxn, InnerTxnFields } from '../impl/itxn';
|
|
5
|
+
import { AllTransactionFields, ApplicationTransaction, AssetConfigTransaction, AssetFreezeTransaction, AssetTransferTransaction, KeyRegistrationTransaction, PaymentTransaction, Transaction } from '../impl/transactions';
|
|
6
|
+
interface ExecutionScope {
|
|
7
|
+
execute: <TReturn>(body: () => TReturn) => TReturn;
|
|
8
|
+
}
|
|
9
|
+
export declare class DeferredAppCall<TParams extends unknown[], TReturn> {
|
|
10
|
+
private readonly appId;
|
|
11
|
+
readonly txns: Transaction[];
|
|
12
|
+
private readonly method;
|
|
13
|
+
private readonly args;
|
|
14
|
+
constructor(appId: uint64, txns: Transaction[], method: (...args: TParams) => TReturn, args: TParams);
|
|
15
|
+
submit(): TReturn;
|
|
16
|
+
}
|
|
17
|
+
export declare class TransactionContext {
|
|
18
|
+
#private;
|
|
19
|
+
readonly groups: TransactionGroup[];
|
|
20
|
+
createScope(group: Array<Transaction | DeferredAppCall<unknown[], unknown>>, activeTransactionIndex?: number): ExecutionScope;
|
|
21
|
+
ensureScope(group: Transaction[], activeTransactionIndex?: number): ExecutionScope;
|
|
22
|
+
get activeGroup(): TransactionGroup;
|
|
23
|
+
get lastGroup(): TransactionGroup;
|
|
24
|
+
get lastActive(): Transaction;
|
|
25
|
+
appendLog(value: internal.primitives.StubBytesCompat): void;
|
|
26
|
+
deferAppCall<TParams extends unknown[], TReturn>(contract: Contract, method: (...args: TParams) => TReturn, ...args: TParams): DeferredAppCall<TParams, TReturn>;
|
|
27
|
+
exportLogs<const T extends [...LogDecoding[]]>(appId: uint64, ...decoding: T): DecodedLogs<T>;
|
|
28
|
+
}
|
|
29
|
+
export declare class TransactionGroup {
|
|
30
|
+
activeTransactionIndex: number;
|
|
31
|
+
latestTimestamp: number;
|
|
32
|
+
transactions: Transaction[];
|
|
33
|
+
itxnGroups: ItxnGroup[];
|
|
34
|
+
constructingItxnGroup: InnerTxnFields[];
|
|
35
|
+
constructor(transactions: Transaction[], activeTransactionIndex?: number);
|
|
36
|
+
get activeTransaction(): Transaction;
|
|
37
|
+
get activeApplicationId(): uint64;
|
|
38
|
+
get constructingItxn(): InnerTxnFields;
|
|
39
|
+
getScratchSpace(): (uint64 | bytes)[];
|
|
40
|
+
getScratchSlot(index: internal.primitives.StubUint64Compat): bytes | uint64;
|
|
41
|
+
patchActiveTransactionFields(fields: AllTransactionFields): void;
|
|
42
|
+
beginInnerTransactionGroup(): void;
|
|
43
|
+
appendInnerTransactionGroup(): void;
|
|
44
|
+
submitInnerTransactionGroup(): void;
|
|
45
|
+
getItxnGroup(index?: internal.primitives.StubUint64Compat): ItxnGroup;
|
|
46
|
+
getApplicationTransaction(index?: internal.primitives.StubUint64Compat): ApplicationTransaction;
|
|
47
|
+
getAssetConfigTransaction(index?: internal.primitives.StubUint64Compat): AssetConfigTransaction;
|
|
48
|
+
getAssetTransferTransaction(index?: internal.primitives.StubUint64Compat): AssetTransferTransaction;
|
|
49
|
+
getAssetFreezeTransaction(index?: internal.primitives.StubUint64Compat): AssetFreezeTransaction;
|
|
50
|
+
getKeyRegistrationTransaction(index?: internal.primitives.StubUint64Compat): KeyRegistrationTransaction;
|
|
51
|
+
getPaymentTransaction(index?: internal.primitives.StubUint64Compat): PaymentTransaction;
|
|
52
|
+
getTransaction(index?: internal.primitives.StubUint64Compat): Transaction;
|
|
53
|
+
private getTransactionImpl;
|
|
54
|
+
}
|
|
55
|
+
export declare class ItxnGroup {
|
|
56
|
+
itxns: InnerTxn[];
|
|
57
|
+
constructor(itxns: InnerTxn[]);
|
|
58
|
+
getApplicationInnerTxn(index?: internal.primitives.StubUint64Compat): ApplicationInnerTxn;
|
|
59
|
+
getAssetConfigInnerTxn(index?: internal.primitives.StubUint64Compat): AssetConfigInnerTxn;
|
|
60
|
+
getAssetTransferInnerTxn(index?: internal.primitives.StubUint64Compat): AssetTransferInnerTxn;
|
|
61
|
+
getAssetFreezeInnerTxn(index?: internal.primitives.StubUint64Compat): AssetFreezeInnerTxn;
|
|
62
|
+
getKeyRegistrationInnerTxn(index?: internal.primitives.StubUint64Compat): KeyRegistrationInnerTxn;
|
|
63
|
+
getPaymentInnerTxn(index?: internal.primitives.StubUint64Compat): PaymentInnerTxn;
|
|
64
|
+
getInnerTxn(index?: internal.primitives.StubUint64Compat): InnerTxn;
|
|
65
|
+
private getInnerTxnImpl;
|
|
66
|
+
}
|
|
67
|
+
export {};
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { Account, Application, Asset, bytes, internal, uint64 } from '@algorandfoundation/algorand-typescript';
|
|
2
|
+
import { DecodedLogs, LogDecoding } from './decode-logs';
|
|
3
|
+
import * as ops from './impl';
|
|
4
|
+
import { applicationCall as itxnApplicationCall, assetConfig as itxnAssetConfig, assetFreeze as itxnAssetFreeze, assetTransfer as itxnAssetTransfer, keyRegistration as itxnKeyRegistration, payment as itxnPayment, submitGroup as itxnSubmitGroup } from './impl/inner-transactions';
|
|
5
|
+
import { Box, BoxMap, BoxRef, GlobalState, LocalState } from './impl/state';
|
|
6
|
+
import { ContractContext } from './subcontexts/contract-context';
|
|
7
|
+
import { LedgerContext } from './subcontexts/ledger-context';
|
|
8
|
+
import { TransactionContext } from './subcontexts/transaction-context';
|
|
9
|
+
import { ValueGenerator } from './value-generators';
|
|
10
|
+
export declare class TestExecutionContext implements internal.ExecutionContext {
|
|
11
|
+
#private;
|
|
12
|
+
constructor();
|
|
13
|
+
account(address?: bytes): Account;
|
|
14
|
+
application(id?: uint64): Application;
|
|
15
|
+
asset(id?: uint64): Asset;
|
|
16
|
+
log(value: bytes): void;
|
|
17
|
+
exportLogs<const T extends [...LogDecoding[]]>(appId: uint64, ...decoding: T): DecodedLogs<T>;
|
|
18
|
+
get op(): typeof ops;
|
|
19
|
+
get contract(): ContractContext;
|
|
20
|
+
get ledger(): LedgerContext;
|
|
21
|
+
get txn(): TransactionContext;
|
|
22
|
+
get any(): ValueGenerator;
|
|
23
|
+
get defaultSender(): Account;
|
|
24
|
+
get abiMetadata(): {
|
|
25
|
+
captureMethodConfig: <T extends import("@algorandfoundation/algorand-typescript").Contract>(contract: T, methodName: string, config?: import("@algorandfoundation/algorand-typescript/arc4").AbiMethodConfig<T> | import("@algorandfoundation/algorand-typescript/arc4").BareMethodConfig) => void;
|
|
26
|
+
};
|
|
27
|
+
get gtxn(): {
|
|
28
|
+
Transaction: (index: uint64) => import("./impl/transactions").Transaction;
|
|
29
|
+
PaymentTxn: (index: uint64) => import("./impl/transactions").PaymentTransaction;
|
|
30
|
+
KeyRegistrationTxn: (index: uint64) => import("./impl/transactions").KeyRegistrationTransaction;
|
|
31
|
+
AssetConfigTxn: (index: uint64) => import("./impl/transactions").AssetConfigTransaction;
|
|
32
|
+
AssetTransferTxn: (index: uint64) => import("./impl/transactions").AssetTransferTransaction;
|
|
33
|
+
AssetFreezeTxn: (index: uint64) => import("./impl/transactions").AssetFreezeTransaction;
|
|
34
|
+
ApplicationTxn: (index: uint64) => import("./impl/transactions").ApplicationTransaction;
|
|
35
|
+
};
|
|
36
|
+
get itxn(): {
|
|
37
|
+
submitGroup: typeof itxnSubmitGroup;
|
|
38
|
+
payment: typeof itxnPayment;
|
|
39
|
+
keyRegistration: typeof itxnKeyRegistration;
|
|
40
|
+
assetConfig: typeof itxnAssetConfig;
|
|
41
|
+
assetTransfer: typeof itxnAssetTransfer;
|
|
42
|
+
assetFreeze: typeof itxnAssetFreeze;
|
|
43
|
+
applicationCall: typeof itxnApplicationCall;
|
|
44
|
+
};
|
|
45
|
+
get state(): {
|
|
46
|
+
GlobalState: typeof GlobalState;
|
|
47
|
+
LocalState: typeof LocalState;
|
|
48
|
+
Box: typeof Box;
|
|
49
|
+
BoxMap: typeof BoxMap;
|
|
50
|
+
BoxRef: typeof BoxRef;
|
|
51
|
+
};
|
|
52
|
+
reset(): void;
|
|
53
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type ts from 'typescript';
|
|
2
|
+
export interface TransformerConfig {
|
|
3
|
+
includeExt: string[];
|
|
4
|
+
testingPackageName: string;
|
|
5
|
+
}
|
|
6
|
+
export declare const puyaTsTransformer: ts.TransformerFactory<ts.SourceFile> & ((config: Partial<TransformerConfig>) => ts.TransformerFactory<ts.SourceFile>);
|