@algorandfoundation/puya-ts 1.0.0-beta.39 → 1.0.0-beta.40
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/bin/run-cli.mjs +1 -1
- package/cli.mjs +1 -1
- package/index.mjs +2 -2
- package/{options-0rl9SeOR.js → options-CLGfsOVW.js} +245 -245
- package/options-CLGfsOVW.js.map +1 -0
- package/package.json +1 -1
- package/options-0rl9SeOR.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"options-CLGfsOVW.js","sources":["../src/constants.ts","../src/errors.ts","../src/util/base-32.ts","../src/util/index.ts","../src/awst/source-location.ts","../src/logger/index.ts","../src/awst/models.ts","../src/awst/wtypes.ts","../src/awst_build/symbol-name.ts","../src/awst_build/ptypes/base.ts","../src/awst_build/ptypes/transient-type-errors.ts","../src/awst_build/ptypes/intrinsic-enum-type.ts","../src/awst_build/ptypes/op-ptypes.ts","../src/awst_build/ptypes/index.ts","../src/awst_build/ptypes/arc4-types.ts","../src/awst_build/arc4-util.ts","../src/awst/nodes.ts","../src/awst/node-factory.ts","../src/util/arc4-signature-parser.ts","../src/awst_build/type-registry.ts","../src/awst/util.ts","../src/awst_build/eb/index.ts","../src/awst_build/eb/literal-expression-builder.ts","../src/awst_build/eb/folding.ts","../src/awst_build/eb/util/is-valid-literal-for-ptype.ts","../src/awst_build/eb/literal/big-int-literal-expression-builder.ts","../src/awst_build/eb/util/index.ts","../src/awst_build/eb/util/arg-parsing.ts","../src/awst_build/eb/arc28/arc-28-emit-function-builder.ts","../src/awst_build/eb/literal/object-expression-builder.ts","../src/awst_build/eb/literal/object-literal-expression-builder.ts","../src/awst_build/eb/arc4-bare-method-decorator-builder.ts","../src/awst/intrinsic-factory.ts","../src/awst_build/eb/iterable-iterator-expression-builder.ts","../src/awst_build/eb/boolean-expression-builder.ts","../src/awst_build/eb/util/compare-bytes.ts","../src/awst_build/eb/util/compare-uint64.ts","../src/awst_build/eb/reference/base.ts","../src/awst_build/eb/reference/account.ts","../src/awst_build/eb/shared/arc4-copy-function-builder.ts","../src/awst_build/eb/util/get-bigint-or-uint64-expr.ts","../src/awst_build/eb/util/translate-negative-index.ts","../src/awst_build/eb/shared/at-function-builder.ts","../src/awst_build/eb/shared/pop-function-builder.ts","../src/awst_build/eb/shared/push-function-builder.ts","../src/awst_build/eb/shared/slice-function-builder.ts","../src/awst_build/eb/util/string-to-bigint.ts","../src/awst_build/eb/uint64-expression-builder.ts","../src/awst_build/eb/util/array/concat.ts","../src/awst_build/eb/util/array/common.ts","../src/awst_build/eb/util/array/index-access.ts","../src/awst_build/eb/traits/static-iterator.ts","../src/awst_build/eb/util/array/length.ts","../src/awst_build/eb/util/resolve-compat-builder.ts","../src/awst_build/eb/string-expression-builder.ts","../src/awst_build/eb/bytes-expression-builder.ts","../src/awst_build/eb/arc4/base.ts","../src/awst_build/eb/arc4/arrays.ts","../src/awst_build/eb/arc4/bool.ts","../src/awst_build/eb/arc4/string.ts","../src/awst_build/eb/arc4/struct.ts","../src/awst_build/eb/arc4/tuple.ts","../src/awst_build/eb/arc4/ufixed.ts","../src/awst_build/eb/arc4/uintn.ts","../src/awst_build/constant-store.ts","../src/util/custom-key-map.ts","../src/awst_build/models/logic-sig-class-model.ts","../src/polyfill/set.prototype.union.ts","../src/awst_build/models/contract-class-model.ts","../src/visitor/syntax-names.ts","../src/awst_build/type-resolver.ts","../src/awst_build/context/evaluation-context.ts","../src/util/default-map.ts","../src/awst_build/context/switch-loop-context.ts","../src/awst_build/context/unique-name-resolver.ts","../src/awst_build/context/awst-build-context.ts","../src/awst_build/eb/free-subroutine-expression-builder.ts","../src/awst_build/eb/arc4/util.ts","../src/awst_build/eb/void-expression-builder.ts","../src/awst_build/eb/assert-function-builder.ts","../src/awst_build/eb/match-function-builder.ts","../src/awst_build/eb/assert-match-function-builder.ts","../src/awst_build/eb/biguint-expression-builder.ts","../src/awst/txn-fields.ts","../src/awst_build/eb/compiled/compile-function.ts","../src/awst_build/eb/util/avm-version.ts","../src/awst_build/eb/tuple-expression-builder.ts","../src/awst_build/eb/literal/array-literal-expression-builder.ts","../src/awst_build/eb/util/scratch-slots.ts","../src/awst_build/eb/contract-builder.ts","../src/awst_build/eb/ensure-budget.ts","../src/awst_build/eb/intrinsic-enum-builder.ts","../src/awst_build/eb/log-function-builder.ts","../src/awst_build/eb/logic-sig-builder.ts","../src/awst_build/eb/mutable-arrays.ts","../src/awst_build/eb/namespace-builder.ts","../src/awst_build/eb/native-array-expression-builder.ts","../src/awst_build/eb/never-expression-builder.ts","../src/awst_build/op-metadata.ts","../src/awst_build/eb/op-module-builder.ts","../src/awst_build/eb/reference/application.ts","../src/awst_build/eb/reference/asset.ts","../src/awst_build/eb/storage/util.ts","../src/awst_build/models/app-storage-declaration.ts","../src/awst_build/eb/storage/value-proxy.ts","../src/awst_build/eb/storage/box/base.ts","../src/awst_build/eb/storage/box/box.ts","../src/awst_build/eb/storage/box/box-map.ts","../src/awst_build/eb/storage/box/box-ref.ts","../src/awst_build/eb/storage/global-state.ts","../src/awst_build/eb/storage/local-state.ts","../src/util/template-var-cli-parser.ts","../src/awst_build/eb/template-var.ts","../src/awst_build/eb/transactions/txn-fields.ts","../src/awst_build/eb/transactions/util.ts","../src/awst_build/eb/transactions/group-transactions.ts","../src/awst_build/eb/transactions/inner-transactions.ts","../src/awst_build/eb/transactions/inner-transaction-params.ts","../src/awst_build/eb/uint64-enum-type-builder.ts","../src/awst_build/eb/unresolvable-expression-builder.ts","../src/awst_build/eb/urange-function.ts","../src/awst_build/ptypes/register.ts","../src/awst/validation/awst-traverser.ts","../src/awst/validation/arc4-approval-calls-router.ts","../src/awst/validation/index.ts","../src/util/base-85.ts","../src/awst/json-serialize-awst.ts","../src/awst/to-code-visitor.ts","../src/write-artifact.ts","../src/visitor/visitor.ts","../src/awst_build/eb/literal/conditional-expression-builder.ts","../src/awst_build/eb/omitted-expression-builder.ts","../src/awst_build/eb/spread-expression-builder.ts","../src/awst_build/ast-visitors/text-visitor.ts","../src/awst_build/ast-visitors/base-visitor.ts","../src/awst_build/ast-visitors/decorator-visitor.ts","../src/awst_build/ptypes/util.ts","../src/awst_build/ast-visitors/util.ts","../src/awst_build/ast-visitors/function-visitor.ts","../src/awst_build/ast-visitors/contract-method-visitor.ts","../src/awst_build/ast-visitors/constructor-visitor.ts","../src/awst_build/ast-visitors/contract-visitor.ts","../src/awst_build/ast-visitors/logic-sig-program-visitor.ts","../src/awst_build/ast-visitors/logic-sig-visitor.ts","../src/awst_build/ast-visitors/struct-visitor.ts","../src/awst_build/ast-visitors/subroutine-visitor.ts","../src/awst_build/ast-visitors/source-file-visitor.ts","../src/awst_build/lib/index.ts","../src/awst_build/index.ts","../src/parser/resolve-module-name-literals.ts","../src/parser/index.ts","../src/parser/json-serialize-source-files.ts","../src/util/generate-temp-file.ts","../src/puya/build-compilation-set-mapping.ts","../src/util/invoke-cli.ts","../src/puya/run-puya.ts","../src/puya/check-puya-version.ts","../src/puya/ensure-puya-exists.ts","../src/puya/log-deserializer.ts","../src/puya/index.ts","../src/compile.ts","../src/input-paths/determine-out-dir.ts","../src/input-paths/process-input-paths.ts","../src/options.ts"],"sourcesContent":["const algoTsPackage = '@algorandfoundation/algorand-typescript'\n\nexport const Constants = {\n approvalProgramMethodName: 'approvalProgram',\n clearStateProgramMethodName: 'clearStateProgram',\n algoTsPackage,\n arc4ModuleName: `${algoTsPackage}/arc4/index.d.ts`,\n opModuleName: `${algoTsPackage}/op.d.ts`,\n templateVarModuleName: `${algoTsPackage}/template-var.d.ts`,\n logicSigModuleName: `${algoTsPackage}/logic-sig.d.ts`,\n baseContractModuleName: `${algoTsPackage}/base-contract.d.ts`,\n utilModuleName: `${algoTsPackage}/util.d.ts`,\n referenceModuleName: `${algoTsPackage}/reference.d.ts`,\n stateModuleName: `${algoTsPackage}/state.d.ts`,\n boxModuleName: `${algoTsPackage}/box.d.ts`,\n transactionsModuleName: `${algoTsPackage}/transactions.d.ts`,\n gtxnModuleName: `${algoTsPackage}/gtxn.d.ts`,\n itxnModuleName: `${algoTsPackage}/itxn.d.ts`,\n compiledModuleName: `${algoTsPackage}/compiled.d.ts`,\n arc28ModuleName: `${algoTsPackage}/arc-28.d.ts`,\n primitivesModuleName: `${algoTsPackage}/primitives.d.ts`,\n arc4EncodedTypesModuleName: `${algoTsPackage}/arc4/encoded-types.d.ts`,\n mutableArrayModuleName: `${algoTsPackage}/mutable-array.d.ts`,\n polytypeModuleName: 'polytype/lib/polytype-module.d.ts',\n arc4BareDecoratorName: 'arc4.baremethod',\n arc4AbiDecoratorName: 'arc4.abimethod',\n contractOptionsDecoratorName: 'contract',\n logicSigOptionsDecoratorName: 'logicsig',\n constructorMethodName: 'constructor',\n logicSigProgramMethodName: 'program',\n defaultCreateMethodName: '__algots__.defaultCreate',\n\n algo: {\n addressLength: 32,\n encodedAddressLength: 58,\n maxTransactionGroupSize: 16,\n },\n\n zeroAddressEncoded: 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY5HFKQ',\n supportedAvmVersions: [10n, 11n],\n targetedPuyaVersion: '4.4.4',\n} as const\n\nexport type SupportedAvmVersion = (typeof Constants.supportedAvmVersions)[number]\n","import type { SourceLocation } from './awst/source-location'\nimport type { PType, PTypeOrClass } from './awst_build/ptypes'\n\ntype PuyaErrorOptions = {\n cause?: Error\n sourceLocation?: SourceLocation\n}\n\nexport class PuyaError extends Error {\n readonly sourceLocation: SourceLocation | undefined\n constructor(message?: string, options?: PuyaErrorOptions) {\n super(message, options)\n this.sourceLocation = options?.sourceLocation\n }\n}\n\n/**\n * Any error that is 'caused' by a user of Puya\n */\nexport abstract class UserError extends PuyaError {}\n\n/**\n * Thrown when the user's code is invalid, or not supported\n */\nexport class CodeError extends UserError {\n static unexpectedUnhandledArgs({ sourceLocation }: { sourceLocation: SourceLocation }) {\n return new CodeError('Unexpected/unhandled args', {\n sourceLocation,\n })\n }\n static unexpectedTypeArgs({ sourceLocation }: { sourceLocation: SourceLocation }) {\n return new CodeError('Function does not accept type arguments', {\n sourceLocation,\n })\n }\n static expectedCompileTimeConstant({ sourceLocation }: { sourceLocation: SourceLocation }) {\n return new CodeError('Expected compile time constant', {\n sourceLocation,\n })\n }\n static invalidAssignmentTarget({ sourceLocation, name }: { sourceLocation: SourceLocation; name: string }) {\n return new CodeError(`${name} is not a valid assignment target`, {\n sourceLocation,\n })\n }\n static cannotResolveToType({\n sourceType,\n targetType,\n sourceLocation,\n }: {\n sourceLocation: SourceLocation\n sourceType: PType\n targetType: PTypeOrClass\n }) {\n const targetName = targetType instanceof Function ? targetType.name : targetType.fullName\n return new CodeError(`Cannot resolve ${sourceType} to ${targetName}`, { sourceLocation })\n }\n}\n\n/**\n * Thrown when the compiler ends up in an unrecoverable state\n */\nexport class InternalError extends PuyaError {\n static shouldBeUnreachable() {\n return new InternalError('Code should be unreachable')\n }\n}\nexport class NotSupported extends CodeError {\n constructor(featureName: string, options?: PuyaErrorOptions) {\n super(`Not Supported: ${featureName}`, options)\n }\n}\n\n/**\n * Thrown when the user's environment is not set up correctly\n */\nexport class EnvironmentError extends UserError {}\n\nexport const throwError = (error: Error): never => {\n throw error\n}\nexport const wrapInCodeError = <T>(func: () => T, sourceLocation: SourceLocation) => {\n try {\n return func()\n } catch (e) {\n if (e instanceof Error) {\n throw new CodeError(e.message, { sourceLocation, cause: e })\n } else {\n throw new CodeError(String(e), { sourceLocation })\n }\n }\n}\n","const BASE32_ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'.split('')\n\nconst CHAR_TO_NUM = BASE32_ALPHABET.reduce((acc, cur, index) => ((acc[cur] = index), acc), {} as Record<string, number>)\n\nexport const base32ToUint8Array = (value: string): Uint8Array => {\n let allChars = value\n .split('')\n .filter((c) => c !== '=')\n .map((c) => {\n const cUpper = c.toUpperCase()\n if (cUpper in CHAR_TO_NUM) return CHAR_TO_NUM[cUpper]\n throw new Error(`Invalid base32 char ${c}`)\n })\n const bytes = new Array<number>()\n while (allChars.length) {\n const [a, b, c, d, e, f, g, h, ...rest] = allChars\n if (a === undefined || b === undefined) break\n bytes.push(((a << 3) | (b >>> 2)) & 255)\n if (c === undefined || d === undefined) break\n bytes.push(((b << 6) | (c << 1) | (d >>> 4)) & 255)\n if (e === undefined) break\n bytes.push(((d << 4) | (e >>> 1)) & 255)\n if (f === undefined || g === undefined) break\n bytes.push(((e << 7) | (f << 2) | (g >>> 3)) & 255)\n if (h === undefined) break\n bytes.push(((g << 5) | h) & 255)\n allChars = rest\n }\n return new Uint8Array(bytes)\n}\n\nexport const uint8ArrayToBase32 = (value: Uint8Array): string => {\n let allBytes = Array.from(value)\n let base32str = ''\n while (allBytes.length) {\n const [a, b, c, d, e, ...rest] = allBytes ?? [0, 0, 0, 0, 0]\n\n if (allBytes.length < 1) break\n base32str += BASE32_ALPHABET[a >>> 3]\n base32str += BASE32_ALPHABET[((a << 2) | ((b || 0) >>> 6)) & 31]\n if (allBytes.length < 2) break\n base32str += BASE32_ALPHABET[(b >>> 1) & 31]\n base32str += BASE32_ALPHABET[((b << 4) | (c >>> 4)) & 31]\n if (allBytes.length < 3) break\n base32str += BASE32_ALPHABET[((c << 1) | (d >>> 7)) & 31]\n if (allBytes.length < 4) break\n base32str += BASE32_ALPHABET[(d >>> 2) & 31]\n base32str += BASE32_ALPHABET[((d << 3) | (e >>> 5)) & 31]\n if (allBytes.length < 5) break\n base32str += BASE32_ALPHABET[e & 31]\n allBytes = rest\n }\n return base32str\n}\n","import { Buffer } from 'node:buffer'\nimport fs from 'node:fs'\nimport { TextDecoder } from 'node:util'\nimport upath from 'upath'\nimport type { SourceLocation } from '../awst/source-location'\nimport { Constants } from '../constants'\nimport { CodeError, InternalError } from '../errors'\nimport type { DeliberateAny } from '../typescript-helpers'\n\nexport { base32ToUint8Array, uint8ArrayToBase32 } from './base-32'\n\nclass InvariantError extends InternalError {}\nexport function invariant(condition: unknown, message: string, sourceLocation?: SourceLocation): asserts condition {\n if (!condition) {\n throw new InvariantError(message, { sourceLocation })\n }\n}\n\nexport function codeInvariant(condition: unknown, message: string, sourceLocation?: SourceLocation): asserts condition {\n if (!condition) {\n throw new CodeError(message, {\n sourceLocation,\n })\n }\n}\n\nexport const enumFromValue = <TValue, TEnum extends TValue>(\n value: TValue,\n enumType: Record<string, TEnum>,\n message: string = 'Invalid enum value: ',\n) => {\n if (Object.values(enumType).some((v) => v === value)) {\n return value as TEnum\n }\n throw new Error(`${message} ${value}`)\n}\n\nexport const enumKeyFromValue = <TValue, TEnum extends TValue>(\n value: TValue,\n enumType: Record<string, TEnum>,\n message: string = 'Invalid enum value: ',\n) => {\n const key = Object.entries(enumType).find(([_, v]) => v === value)?.[0]\n if (key) {\n return key\n }\n throw new Error(`${message} ${value}`)\n}\n\nexport const convertEnum = <TEnumIn, TEnumOut, TKeys extends string>(\n value: TEnumIn,\n fromEnum: Record<TKeys, TEnumIn>,\n toEnum: Record<TKeys, TEnumOut>,\n): TEnumOut => {\n const keyOfValue = Object.entries(fromEnum).find(([, v]) => v === value)?.[0]\n if (!keyOfValue) {\n // missing value\n throw new Error(`key missing: ${value}`)\n }\n return toEnum[keyOfValue as keyof typeof toEnum]\n}\n\nexport const tryConvertEnum = <TEnumIn, TEnumOut, TKeys extends string>(\n value: TEnumIn,\n fromEnum: Record<TKeys, TEnumIn>,\n toEnum: Record<string, TEnumOut>,\n): TEnumOut | undefined => {\n const keyOfValue = Object.entries(fromEnum).find(([, v]) => v === value)?.[0]\n if (!keyOfValue) {\n return undefined\n }\n return toEnum[keyOfValue as keyof typeof toEnum]\n}\n\nexport const expandMaybeArray = <T>(maybeArray: T | T[]): T[] => {\n return Array.isArray(maybeArray) ? maybeArray : [maybeArray]\n}\n\nexport const uint8ArrayToBase64 = (value: Uint8Array): string => Buffer.from(value).toString('base64')\n\nexport const hexToUint8Array = (value: string): Uint8Array => {\n invariant(value.length % 2 === 0, 'Hex string must have even number of characters')\n return Uint8Array.from(Buffer.from(value, 'hex'))\n}\n\nexport const base64ToUint8Array = (value: string): Uint8Array => {\n return Uint8Array.from(Buffer.from(value, 'base64'))\n}\n\nexport const utf8ToUint8Array = (value: string): Uint8Array => {\n const encoder = new TextEncoder()\n return encoder.encode(value)\n}\n\nexport const uint8ArrayToBigInt = (v: Uint8Array): bigint => {\n // Assume big-endian\n return Array.from(v)\n .toReversed()\n .map((byte_value, i): bigint => BigInt(byte_value) << BigInt(i * 8))\n .reduce((a, b) => a + b, 0n)\n}\n\nexport const uint8ArrayToHex = (value: Uint8Array): string => Buffer.from(value).toString('hex')\n\nexport const uint8ArrayToUtf8 = (value: Uint8Array): string => {\n const decoder = new TextDecoder()\n return decoder.decode(value)\n}\n\nexport const bigIntToUint8Array = (val: bigint, fixedSize: number | 'dynamic' = 'dynamic'): Uint8Array => {\n if (val === 0n && fixedSize === 'dynamic') {\n return new Uint8Array(0)\n }\n const maxBytes = fixedSize === 'dynamic' ? 4096 : fixedSize\n\n let hex = val.toString(16)\n\n // Pad the hex with zeros so it matches the size in bytes\n if (fixedSize !== 'dynamic' && hex.length !== fixedSize * 2) {\n hex = hex.padStart(fixedSize * 2, '0')\n } else if (hex.length % 2 === 1) {\n // Pad to 'whole' byte\n hex = `0${hex}`\n }\n if (hex.length > maxBytes * 2) {\n throw new InternalError(`Cannot encode ${val} as ${maxBytes} bytes as it would overflow`)\n }\n const byteArray = new Uint8Array(hex.length / 2)\n for (let i = 0, j = 0; i < hex.length / 2; i++, j += 2) {\n byteArray[i] = parseInt(hex.slice(j, j + 2), 16)\n }\n return byteArray\n}\n\nexport const hasFlags = <T extends number>(value: T, flags: T): boolean => (value & flags) === flags\nexport const intersectsFlags = <T extends number>(value: T, flags: T): boolean => Boolean(value & flags)\n\nexport function* enumerate<T>(iterable: Iterable<T>): IterableIterator<readonly [number, T]> {\n let i = 0\n for (const item of iterable) {\n yield [i, item]\n i++\n }\n}\n\nexport function toSubScript(num: number) {\n const subNumbers = ['\\u2080', '\\u2081', '\\u2082', '\\u2083', '\\u2084', '\\u2085', '\\u2086', '\\u2087', '\\u2088', '\\u2089']\n return num\n .toFixed(0)\n .split('')\n .map((x) => subNumbers[parseInt(x)])\n .join('')\n}\n\nexport function instanceOfAny<T extends Array<{ new (...args: DeliberateAny[]): DeliberateAny }>>(\n x: unknown,\n ...types: T\n): x is InstanceType<T[number]> {\n return types.some((t) => x instanceof t)\n}\n\n/**\n * Normalise a file path to only include relevant segments.\n *\n * - Anything in /node_modules/ is truncated to <package-name>/path.ext\n * - Anything in workingDirectory is truncated relative to the workingDirectory\n * - Forward slashes are used to segment paths\n * @param filePath\n * @param workingDirectory\n */\nexport function normalisePath(filePath: string, workingDirectory: string): string {\n const localPackageName = /packages\\/algo-ts\\/dist\\/(.*)$/.exec(filePath)\n if (localPackageName) {\n return `${Constants.algoTsPackage}/${localPackageName[1]}`\n }\n const nodeModuleName = /.*\\/node_modules\\/(.*)$/.exec(filePath)\n if (nodeModuleName) {\n return nodeModuleName[1]\n }\n const cwd = upath.normalize(`${workingDirectory}/`)\n const normalizedPath = upath.normalize(filePath)\n const moduleName = normalizedPath.startsWith(cwd) ? normalizedPath.slice(cwd.length) : normalizedPath\n return moduleName.replaceAll('\\\\', '/')\n}\n\ntype SortDir = 'asc' | 'desc'\nexport const sortBy =\n <T, TKey>(keySelector: (item: T) => TKey, dir: SortDir = 'asc') =>\n (a: T, b: T) => {\n const keyA = keySelector(a)\n const keyB = keySelector(b)\n return (dir === 'desc' ? -1 : 1) * (keyA < keyB ? -1 : keyA > keyB ? 1 : 0)\n }\n/**\n * Can be used to filter a collection to a set of distinct items as determined by a specified key.\n * @param keySelector A lambda which when given an item, returns the items unique identifier\n *\n * Usage:\n *\n * ```\n * const distinctItems = nonDistinctItems.filter(distinct(x => x.uniqueId))\n * ```\n */\nexport const distinct = <T>(keySelector?: (item: T) => unknown) => {\n const ks = keySelector || ((x: T) => x)\n const set = new Set()\n return (item: T) => {\n if (set.has(ks(item))) {\n return false\n }\n\n set.add(ks(item))\n return true\n }\n}\n\nexport const distinctByEquality = <T>(areEqual: (a: T, b: T) => boolean) => {\n const set: T[] = []\n return (item: T) => {\n if (set.some((s) => areEqual(s, item))) return false\n set.push(item)\n return true\n }\n}\n\nexport function mkDirIfNotExists(dir: string) {\n if (!fs.existsSync(dir)) {\n fs.mkdirSync(dir, { recursive: true })\n }\n}\n\nexport const zipStrict = <T1, T2>(array1: T1[], array2: T2[]): [T1, T2][] => {\n invariant(array1.length === array2.length, 'Array lengths must match')\n return array1.map((t1, idx) => [t1, array2[idx]])\n}\n\nexport function isIn<TSubject, TItem extends TSubject>(subject: TSubject, items: readonly TItem[]): subject is TItem {\n return items.some((i) => i === subject)\n}\n\nexport function joinUint8Arrays(...arrays: Uint8Array[]): Uint8Array {\n const length = arrays.reduce((acc, cur) => acc + cur.length, 0)\n const result = new Uint8Array(length)\n let offset = 0\n for (const a of arrays) {\n result.set(a, offset)\n offset += a.length\n }\n return result\n}\n","import ts from 'typescript'\nimport { invariant, normalisePath } from '../util'\n\nexport class SourceLocation {\n file: string | null\n line: number\n endLine: number\n column: number\n endColumn: number\n scope: 'file' | 'range'\n\n constructor(props: {\n file?: string | null\n line: number\n endLine: number\n column: number\n endColumn: number\n scope: SourceLocation['scope']\n }) {\n invariant(props.line <= props.endLine, 'Start line must be before end line')\n if (props.line === props.endLine) invariant(props.column <= props.endColumn, 'Start column must be before end column')\n this.file = props.file ?? null\n this.line = props.line\n this.endLine = props.endLine\n this.column = props.column\n this.endColumn = props.endColumn\n this.scope = props.scope\n\n // Exclude scope from enumerable properties so it doesn't end up being serialized\n Object.defineProperty(this, 'scope', {\n enumerable: false,\n })\n }\n\n private static getStartAndEnd(node: ts.Node): { start: number; end: number } {\n if (ts.isClassDeclaration(node)) {\n return fromNodeTillStartOfNode(node, node.members.at(0))\n }\n if (ts.isMethodDeclaration(node) || ts.isFunctionDeclaration(node)) {\n return fromNodeTillStartOfNode(node, node.body)\n }\n if (ts.isForStatement(node) || ts.isForInStatement(node) || ts.isForOfStatement(node)) {\n return fromNodeTillStartOfNode(node, node.statement)\n }\n if (ts.isIfStatement(node)) {\n return fromNodeTillStartOfNode(node, node.thenStatement)\n }\n\n return {\n start: node.getStart(),\n end: node.getEnd(),\n }\n }\n\n static fromNode(node: ts.Node, programDirectory: string): SourceLocation {\n const sourceFile = node.getSourceFile()\n\n const { start, end } = SourceLocation.getStartAndEnd(node)\n\n const startLoc = sourceFile.getLineAndCharacterOfPosition(start)\n const endLoc = sourceFile.getLineAndCharacterOfPosition(end)\n\n return new SourceLocation({\n file: normalisePath(sourceFile.fileName, programDirectory),\n line: startLoc.line + 1,\n endLine: endLoc.line + 1,\n column: startLoc.character,\n endColumn: endLoc.character,\n scope: 'range',\n })\n }\n\n static fromFile(sourceFile: ts.SourceFile, programDirectory: string): SourceLocation {\n const endPos = sourceFile.getEnd()\n const endLoc = sourceFile.getLineAndCharacterOfPosition(endPos)\n return new SourceLocation({\n file: normalisePath(sourceFile.fileName, programDirectory),\n line: 1,\n endLine: endLoc.line + 1,\n column: 1,\n endColumn: endLoc.character,\n scope: 'file',\n })\n }\n\n static fromTextRange(sourceFile: ts.SourceFile, textRange: ts.TextRange, programDirectory: string): SourceLocation {\n const startLoc = sourceFile.getLineAndCharacterOfPosition(textRange.pos)\n const endLoc = sourceFile.getLineAndCharacterOfPosition(textRange.end)\n\n return new SourceLocation({\n file: normalisePath(sourceFile.fileName, programDirectory),\n line: startLoc.line + 1,\n endLine: endLoc.line + 1,\n column: startLoc.character,\n endColumn: endLoc.character,\n scope: 'range',\n })\n }\n\n static fromDiagnostic(diagnostic: ts.DiagnosticWithLocation, programDirectory: string): SourceLocation {\n const startLoc = diagnostic.file.getLineAndCharacterOfPosition(diagnostic.start)\n\n return new SourceLocation({\n file: normalisePath(diagnostic.file.fileName, programDirectory),\n line: startLoc.line + 1,\n endLine: startLoc.line + 1,\n column: startLoc.character,\n endColumn: startLoc.character,\n scope: 'range',\n })\n }\n\n toString() {\n return `${this.file}:${this.line}:${this.column + 1}`\n }\n\n static fromLocations(...sourceLocation: SourceLocation[]): SourceLocation {\n const [first, ...rest] = sourceLocation\n invariant(first && rest.every((r) => r.file === first.file), 'All locations must of the same file')\n if (rest.length === 0) return first\n return sourceLocation.reduce((acc, cur) => {\n return new SourceLocation({\n file: acc.file,\n line: Math.min(acc.line, cur.line),\n endLine: Math.max(acc.endLine, cur.endLine),\n column: acc.line === cur.line ? Math.min(acc.column, cur.column) : acc.line < cur.line ? acc.column : cur.column,\n endColumn:\n acc.endLine === cur.endLine ? Math.max(acc.endColumn, cur.endColumn) : acc.endLine > cur.endLine ? acc.endColumn : cur.endColumn,\n scope: 'range',\n })\n })\n }\n\n static None = new SourceLocation({\n line: 1,\n endLine: 1,\n column: 0,\n endColumn: 1,\n scope: 'file',\n })\n}\n\nfunction fromNodeTillStartOfNode(n1: ts.Node, n2?: ts.Node): { start: number; end: number } {\n return {\n start: n1.getStart(),\n end: n2 ? n2.getStart() - n2.getLeadingTriviaWidth() : n1.getEnd(),\n }\n}\n","import { AsyncLocalStorage } from 'node:async_hooks'\nimport { SourceLocation } from '../awst/source-location'\nimport { PuyaError, UserError } from '../errors'\nimport type { LogSink } from './sinks'\n\ntype NodeOrSourceLocation = SourceLocation | { sourceLocation: SourceLocation }\n\nexport enum LogLevel {\n Error = 'error',\n Info = 'info',\n Warning = 'warning',\n Debug = 'debug',\n Critical = 'critical',\n}\nconst logLevelToInt = {\n [LogLevel.Critical]: 4,\n [LogLevel.Error]: 3,\n [LogLevel.Info]: 1,\n [LogLevel.Warning]: 2,\n [LogLevel.Debug]: 0,\n}\n\nexport const isMinLevel = (logLevel: LogLevel, minLevel: LogLevel): boolean => {\n return logLevelToInt[minLevel] <= logLevelToInt[logLevel]\n}\n\nconst errorOrCritical = new Set([LogLevel.Error, LogLevel.Critical])\n\nexport const isErrorOrCritical = (l: LogLevel) => errorOrCritical.has(l)\n\nexport type LogEvent = {\n level: LogLevel\n message: string\n sourceLocation: SourceLocation | undefined\n}\n\nclass PuyaLogger {\n private logSinks: LogSink[] = []\n public configure(sinks: LogSink[]) {\n this.logSinks = sinks\n }\n\n addLog(level: LogEvent['level'], source: NodeOrSourceLocation | undefined, message: string) {\n const logEvent: LogEvent = {\n sourceLocation: source ? (source instanceof SourceLocation ? source : source.sourceLocation) : undefined,\n message,\n level,\n }\n LoggingContext.current.logEvents.push(logEvent)\n for (const sink of this.logSinks) {\n if (isMinLevel(logEvent.level, sink.minLogLevel)) sink.add(logEvent)\n }\n }\n\n error(error: Error): void\n error(source: NodeOrSourceLocation | undefined, message: string): void\n error(source: NodeOrSourceLocation | undefined | Error, message?: string): void {\n if (source instanceof Error) {\n // Don't include the stack for user errors as the message and source location is what's relevant\n const stack = source instanceof UserError ? '' : `\\n ${source.stack}`\n this.addLog(LogLevel.Error, tryGetSourceLocationFromError(source), `${source.message}${stack}`)\n if (source.cause) {\n this.addLog(LogLevel.Error, tryGetSourceLocationFromError(source.cause), `Caused by: ${source.cause}`)\n }\n } else {\n this.addLog(LogLevel.Error, source, message ?? '')\n }\n }\n info(source: NodeOrSourceLocation | undefined, message: string): void {\n this.addLog(LogLevel.Info, source, message)\n }\n debug(source: NodeOrSourceLocation | undefined, message: string): void {\n this.addLog(LogLevel.Debug, source, message)\n }\n warn(source: NodeOrSourceLocation | undefined, message: string): void {\n this.addLog(LogLevel.Warning, source, message)\n }\n critical(source: NodeOrSourceLocation | undefined, message: string): void {\n this.addLog(LogLevel.Critical, source, message)\n }\n}\n\nconst tryGetSourceLocationFromError = (error: unknown): SourceLocation | undefined => {\n if (error instanceof PuyaError) {\n return error.sourceLocation\n }\n return undefined\n}\n\nexport const logger = new PuyaLogger()\n\nexport const patchErrorLocation = <TArgs extends unknown[], TReturn>(\n action: (...args: TArgs) => TReturn,\n sourceLocation: SourceLocation,\n) => {\n return (...args: TArgs) => {\n try {\n return action(...args)\n } catch (e) {\n if (e instanceof PuyaError && !e.sourceLocation) {\n Object.assign(e, { sourceLocation })\n }\n throw e\n }\n }\n}\n\nexport class LoggingContext {\n logEvents: LogEvent[] = []\n sourcesByPath: Record<string, string[]> = {}\n\n private constructor() {}\n\n hasErrors(): boolean {\n return this.logEvents.some((e) => isErrorOrCritical(e.level))\n }\n\n exitIfErrors(): void {\n if (this.hasErrors()) process.exit(1)\n }\n\n enterContext() {\n LoggingContext.asyncStore.enterWith(this)\n return this\n }\n\n run<R>(cb: () => R) {\n return LoggingContext.asyncStore.run(this, cb)\n }\n private static fallbackContext = new LoggingContext()\n private static asyncStore = new AsyncLocalStorage<LoggingContext>()\n\n static create(): LoggingContext {\n return new LoggingContext()\n }\n static get current() {\n const ctx = this.asyncStore.getStore()\n if (!ctx) {\n return this.fallbackContext\n }\n return ctx\n }\n}\n","import type { ContractClassPType, LogicSigPType } from '../awst_build/ptypes'\n\nexport enum OnCompletionAction {\n NoOp = 0,\n OptIn = 1,\n CloseOut = 2,\n ClearState = 3,\n UpdateApplication = 4,\n DeleteApplication = 5,\n}\n\nclass ModelBase {\n /**\n * This field prevents us from accidentally passing an object literal with structural equality to\n * a model class instead of any instance of the class, which would stuff up the serialization\n * @private\n */\n #isModel = true\n}\n\nexport class ContractReference extends ModelBase {\n constructor({ className, moduleName }: { className: string; moduleName: string }) {\n super()\n this.className = className\n this.moduleName = moduleName\n }\n readonly className: string\n readonly moduleName: string\n\n get id() {\n return `${this.moduleName}::${this.className}`\n }\n\n toString(): string {\n return this.id\n }\n\n static fromPType(contractPType: ContractClassPType): ContractReference {\n return new ContractReference({\n className: contractPType.name,\n moduleName: contractPType.module,\n })\n }\n}\nexport class LogicSigReference extends ModelBase {\n constructor({ name, moduleName }: { name: string; moduleName: string }) {\n super()\n this.name = name\n this.moduleName = moduleName\n }\n readonly name: string\n readonly moduleName: string\n\n get id() {\n return `${this.moduleName}::${this.name}`\n }\n\n toString(): string {\n return this.id\n }\n\n static fromPType(logicSigPType: LogicSigPType): LogicSigReference {\n return new LogicSigReference({\n name: logicSigPType.name,\n moduleName: logicSigPType.module,\n })\n }\n}\n\nexport enum TransactionKind {\n pay = 1,\n keyreg = 2,\n acfg = 3,\n axfer = 4,\n afrz = 5,\n appl = 6,\n}\n","import { invariant } from '../util'\nimport { TransactionKind } from './models'\nimport type { SourceLocation } from './source-location'\n\nexport enum AVMType {\n bytes = 1 << 0,\n uint64 = 1 << 1,\n any = AVMType.bytes | AVMType.uint64,\n}\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace wtypes {\n export class WType {\n constructor(props: { name: string; immutable?: boolean; scalarType: AVMType | null; ephemeral?: boolean }) {\n this.name = props.name\n this.immutable = props.immutable ?? true\n this.scalarType = props.scalarType\n this.ephemeral = props.ephemeral ?? false\n }\n\n readonly name: string\n readonly immutable: boolean\n /**\n * ephemeral types are not suitable for naive storage / persistence,\n * even if their underlying type is a simple stack value\n */\n readonly ephemeral: boolean\n /**\n * The AVM stack type of this type (if any)\n */\n readonly scalarType: AVMType | null\n\n equals(other: WType): boolean {\n return other instanceof this.constructor && other.name === this.name\n }\n\n toString(): string {\n return this.name\n }\n\n get id() {\n return this.name\n }\n }\n\n export const voidWType = new WType({\n name: 'void',\n scalarType: null,\n })\n export const boolWType = new WType({\n name: 'bool',\n scalarType: AVMType.uint64,\n })\n export const uint64WType = new WType({\n name: 'uint64',\n scalarType: AVMType.uint64,\n })\n export const uint64RangeWType = new WType({\n name: 'uint64_range',\n scalarType: null,\n immutable: true,\n })\n export const bytesWType = new WType({\n name: 'bytes',\n scalarType: AVMType.bytes,\n })\n export const stateKeyWType = new WType({\n name: 'state_key',\n scalarType: AVMType.bytes,\n })\n export const boxKeyWType = new WType({\n name: 'box_key',\n scalarType: AVMType.bytes,\n })\n export const stringWType = new WType({\n name: 'string',\n scalarType: AVMType.bytes,\n })\n export const biguintWType = new WType({\n name: 'biguint',\n scalarType: AVMType.bytes,\n })\n export const assetWType = new WType({\n name: 'asset',\n scalarType: AVMType.uint64,\n })\n\n export const accountWType = new WType({\n name: 'account',\n scalarType: AVMType.bytes,\n })\n export const applicationWType = new WType({\n name: 'application',\n scalarType: AVMType.uint64,\n })\n\n export class ARC4Type extends WType {\n readonly nativeType: WType | null\n readonly arc4Name: string\n constructor({\n nativeType,\n arc4Name,\n ...rest\n }: {\n nativeType: WType | null\n arc4Name: string\n name: string\n immutable?: boolean\n scalarType?: AVMType | null\n ephemeral?: boolean\n }) {\n super({ ...rest, scalarType: rest.scalarType ?? AVMType.bytes })\n this.arc4Name = arc4Name\n this.nativeType = nativeType\n }\n }\n\n export class WStructType extends WType {\n fields: Record<string, WType>\n readonly frozen = true\n\n constructor({ fields, name }: { fields: Record<string, WType>; name: string }) {\n super({\n name,\n scalarType: null,\n immutable: true,\n })\n this.fields = fields\n }\n }\n\n export class WTuple extends WType {\n types: WType[]\n names: string[] | undefined\n constructor(props: { names?: string[]; types: WType[]; immutable?: boolean; name?: string }) {\n super({\n name: props.name ?? 'tuple',\n scalarType: null,\n immutable: props.immutable ?? true,\n })\n invariant(props.types.length, 'Tuple length cannot be zero')\n this.types = props.types\n if (props.names) {\n invariant(props.names.length === props.types.length, 'If names is provided, length must match types')\n this.names = props.names\n }\n }\n\n equals(other: WType): boolean {\n if (other instanceof WTuple) {\n return (\n this.name === other.name &&\n this.types.every((t, i) => t.equals(other.types[i])) &&\n (this.names?.every((n, i) => n === other.names?.[i]) ?? this.names === other.names)\n )\n }\n return false\n }\n\n toString(): string {\n const displayName = this.name.split('::').at(-1) ?? this.name\n if (this.names) {\n return `${displayName}{ ${this.names.map((n, i) => `${n}: ${this.types[i]}`).join(', ')} }`\n }\n return `${this.immutable ? 'readonly' : ''}${displayName}[${this.types.join(', ')}]`\n }\n }\n export abstract class NativeArray extends WType {\n readonly elementType: WType\n readonly sourceLocation: SourceLocation | null\n protected constructor(props: { name: string; itemType: WType; sourceLocation?: SourceLocation; scalarType?: AVMType }) {\n super({\n name: props.name,\n scalarType: props.scalarType ?? null,\n })\n this.elementType = props.itemType\n this.sourceLocation = props.sourceLocation ?? null\n }\n }\n\n export class StackArray extends NativeArray {\n readonly immutable = true\n constructor(props: { itemType: WType; immutable: boolean; sourceLocation?: SourceLocation }) {\n super({\n name: `stack_array<${props.itemType.name}>`,\n scalarType: AVMType.bytes,\n ...props,\n })\n }\n }\n export class ReferenceArray extends NativeArray {\n readonly immutable = false\n constructor(props: { itemType: WType; immutable: boolean; sourceLocation?: SourceLocation }) {\n super({\n name: `ref_array<${props.itemType.name}>`,\n ...props,\n })\n }\n }\n\n export class WEnumeration extends WType {\n readonly sequenceType: WType\n constructor(props: { sequenceType: WType }) {\n super({\n name: `enumeration<${props.sequenceType.name}>`,\n scalarType: null,\n immutable: true,\n })\n this.sequenceType = props.sequenceType\n }\n }\n export class WGroupTransaction extends WType {\n transactionType: TransactionKind | null\n constructor({ transactionType }: { transactionType?: TransactionKind }) {\n super({\n scalarType: AVMType.uint64,\n name: transactionType === undefined ? 'group_transaction' : `group_transaction_${TransactionKind[transactionType]}`,\n })\n this.transactionType = transactionType ?? null\n }\n }\n export class WInnerTransaction extends WType {\n transactionType: TransactionKind | null\n constructor({ transactionType }: { transactionType?: TransactionKind }) {\n super({\n scalarType: null,\n name: transactionType === undefined ? 'inner_transaction' : `inner_transaction_${TransactionKind[transactionType]}`,\n })\n this.transactionType = transactionType ?? null\n }\n }\n export class WInnerTransactionFields extends WType {\n transactionType: TransactionKind | null\n constructor({ transactionType }: { transactionType?: TransactionKind }) {\n super({\n scalarType: null,\n name: transactionType === undefined ? 'inner_transaction_fields' : `inner_transaction_fields_${TransactionKind[transactionType]}`,\n })\n this.transactionType = transactionType ?? null\n }\n }\n\n export class ARC4UIntN extends ARC4Type {\n readonly n: bigint\n constructor({ n, arc4Name }: { n: bigint; arc4Name?: string }) {\n super({\n name: arc4Name ? `arc4.${arc4Name}` : `arc4.uint${n}`,\n scalarType: AVMType.bytes,\n nativeType: n <= 64 ? uint64WType : biguintWType,\n arc4Name: arc4Name ?? `uint${n}`,\n })\n invariant(n >= 8n && n <= 512n, 'Invalid uint: n must be between 8 and 512')\n invariant(n % 8n === 0n, 'Invalid uint: n must be multiple of 8')\n this.n = n\n }\n }\n\n export class ARC4UFixedNxM extends ARC4Type {\n readonly n: bigint\n readonly m: bigint\n constructor({ n, m }: { n: bigint; m: bigint }) {\n super({\n name: `arc4.ufixed${n}x${m}`,\n scalarType: AVMType.bytes,\n nativeType: n <= 64 ? uint64WType : biguintWType,\n arc4Name: `ufixed${n}x${m}`,\n })\n\n invariant(n >= 8n && n <= 512n, 'Invalid ufixed: n must be between 8 and 512')\n invariant(n % 8n === 0n, 'Invalid ufixed: n must be multiple of 8')\n invariant(m >= 0n && m <= 160n, 'Invalid ufixed: m must be between 0 and 160')\n this.n = n\n this.m = m\n }\n }\n\n export class ARC4Struct extends ARC4Type {\n fields: Record<string, ARC4Type>\n sourceLocation: SourceLocation | null\n frozen: boolean\n desc: string | null\n\n constructor({\n fields,\n sourceLocation,\n name,\n desc,\n frozen,\n }: {\n frozen: boolean\n name: string\n desc: string | null\n fields: Record<string, ARC4Type>\n sourceLocation?: SourceLocation\n }) {\n super({\n arc4Name: `(${Object.values(fields)\n .map((f) => f.arc4Name)\n .join(',')})`,\n name,\n nativeType: null,\n immutable: frozen && Object.values(fields).every((t) => t.immutable),\n })\n this.sourceLocation = sourceLocation ?? null\n this.fields = fields\n this.frozen = frozen\n this.desc = desc\n }\n\n toString(): string {\n if (!this.name) return this.arc4Name\n return super.toString()\n }\n }\n export class ARC4Tuple extends ARC4Type {\n readonly types: ARC4Type[]\n readonly sourceLocation: SourceLocation | null\n\n constructor({ types, sourceLocation }: { types: ARC4Type[]; sourceLocation?: SourceLocation }) {\n const typesStr = types.map((t) => t.arc4Name).join(',')\n super({\n name: `arc4.tuple<${typesStr}>`,\n arc4Name: `(${typesStr})`,\n nativeType: null,\n })\n this.sourceLocation = sourceLocation ?? null\n this.types = types\n }\n }\n\n export abstract class ARC4Array extends ARC4Type {\n readonly elementType: ARC4Type\n protected constructor(props: {\n arc4Name: string\n otherEncodeableTypes: WType[]\n name: string\n elementType: ARC4Type\n nativeType?: WType\n immutable?: boolean\n }) {\n super({ ...props, scalarType: AVMType.bytes, immutable: props.immutable ?? false, nativeType: props.nativeType ?? null })\n this.elementType = props.elementType\n }\n }\n\n export class ARC4DynamicArray extends ARC4Array {\n readonly sourceLocation: SourceLocation | null\n constructor({\n elementType,\n sourceLocation,\n arc4Name,\n nativeType,\n immutable,\n }: {\n elementType: ARC4Type\n sourceLocation?: SourceLocation\n arc4Name?: string\n nativeType?: WType\n immutable?: boolean\n }) {\n super({\n elementType,\n name: `arc4.dynamic_array<${elementType.name}>`,\n arc4Name: arc4Name ?? `${elementType.arc4Name}[]`,\n otherEncodeableTypes: [],\n nativeType,\n immutable,\n })\n this.sourceLocation = sourceLocation ?? null\n }\n }\n export class ARC4StaticArray extends ARC4Array {\n readonly sourceLocation: SourceLocation | null\n readonly arraySize: bigint\n constructor({\n elementType,\n sourceLocation,\n arraySize,\n arc4Name,\n nativeType,\n immutable,\n }: {\n arraySize: bigint\n elementType: ARC4Type\n sourceLocation?: SourceLocation\n arc4Name?: string\n nativeType?: WType\n immutable?: boolean\n }) {\n super({\n elementType,\n name: `arc4.static_array<${elementType.name}>`,\n arc4Name: arc4Name ?? `${elementType.arc4Name}[${arraySize}]`,\n nativeType: nativeType,\n otherEncodeableTypes: [],\n immutable,\n })\n this.sourceLocation = sourceLocation ?? null\n this.arraySize = arraySize\n }\n }\n\n export const arc4ByteAliasWType = new ARC4UIntN({\n n: 8n,\n arc4Name: 'byte',\n })\n export const arc4AddressAliasWType = new ARC4StaticArray({\n arraySize: 32n,\n immutable: true,\n elementType: arc4ByteAliasWType,\n nativeType: accountWType,\n arc4Name: 'address',\n })\n\n export const arc4BooleanWType = new ARC4Type({\n name: 'arc4.bool',\n arc4Name: 'bool',\n immutable: true,\n nativeType: boolWType,\n })\n\n export const arc4StringAliasWType = new ARC4DynamicArray({\n arc4Name: 'string',\n elementType: arc4ByteAliasWType,\n nativeType: stringWType,\n immutable: true,\n })\n}\n","export class SymbolName {\n public readonly module: string\n public readonly name: string\n\n constructor(props: { module: string; name: string }) {\n this.module = props.module\n this.name = props.name\n }\n\n get fullName() {\n return `${this.module}::${this.name}`\n }\n\n toString() {\n return this.fullName\n }\n}\n","import { wtypes } from '../../awst/wtypes'\nimport { CodeError } from '../../errors'\nimport type { DeliberateAny } from '../../typescript-helpers'\nimport { zipStrict } from '../../util'\n\n/**\n * Represents a public type visible to a developer of AlgoTS\n */\nexport abstract class PType {\n /**\n * Get the associated wtype for this ptype if applicable\n */\n abstract readonly wtype: wtypes.WType | undefined\n\n /**\n * Get the unaliased name of this ptype\n */\n abstract readonly name: string\n\n /**\n * Get the declaring module of this ptype\n */\n abstract readonly module: string\n\n abstract readonly singleton: boolean\n\n get fullName() {\n return `${this.module}::${this.name}`\n }\n\n get wtypeOrThrow(): wtypes.WType {\n if (!this.wtype) {\n throw new CodeError(`${this.fullName} does not have a wtype`)\n }\n return this.wtype\n }\n\n equals(other: PType): boolean {\n return ptypesAreEqual(this, other)\n }\n\n static equals(other: PType): boolean {\n return other instanceof this\n }\n\n equalsOrInstanceOf(other: PTypeOrClass): boolean {\n if (other instanceof Function) {\n return this instanceof other\n }\n return this.equals(other)\n }\n\n toString(): string {\n return this.name\n }\n}\n\nexport class GenericPType<T extends PType = PType> extends PType {\n readonly name: string\n readonly module: string\n readonly singleton = false\n readonly wtype = undefined\n readonly parameterise: (typeArgs: PType[]) => T\n constructor(props: { name: string; module: string; parameterise: (typeArgs: PType[]) => T }) {\n super()\n this.name = props.name\n this.module = props.module\n this.parameterise = props.parameterise\n }\n}\n\nexport type PTypeOrClass = PType | { new (...args: DeliberateAny[]): PType; equals(other: PType): boolean }\n\nfunction ptypesAreEqual(left: PType, right: PType): boolean {\n if (!(right instanceof left.constructor)) {\n return false\n }\n return compareProperties(left, right)\n}\n\nconst ignoredProperties = new Set(['sourceLocation', 'wtype'])\n\nfunction notIgnored(key: string): boolean {\n return !ignoredProperties.has(key)\n}\n\nfunction compareProperties(left: object, right: object) {\n const leftProps = Object.entries(left).filter(([key]) => notIgnored(key))\n const rightProps = Object.entries(right).filter(([key]) => notIgnored(key))\n if (leftProps.length !== rightProps.length) return false\n\n return zipStrict(leftProps, rightProps).every(([[lKey, lValue], [rKey, rValue]]) => {\n if (lKey !== rKey) return false\n return compareValues(lValue, rValue)\n })\n}\n\nfunction compareValues(left: unknown, right: unknown): boolean {\n // Handle primitive comparison\n if (typeof left !== 'object' || left === right) {\n return left === right\n }\n if (left === null) {\n return right === null\n }\n // Recursively compare array items\n if (Array.isArray(left)) {\n return Array.isArray(right) && left.length === right.length && left.every((v, i) => compareValues(v, right[i]))\n }\n // Recursively compare ptypes\n if (left instanceof PType) {\n return right instanceof PType && ptypesAreEqual(left, right)\n }\n if (left instanceof wtypes.WType) {\n return right instanceof wtypes.WType && left.equals(right)\n }\n return typeof right === 'object' && right !== null && compareProperties(left, right)\n}\n","type TransientTypeError = {\n usedAsType: string\n usedInExpression: string\n}\n\nexport const transientTypeErrors = {\n arrays: (typeName) => ({\n usedAsType: `\\`${typeName}\\` is not valid as a variable, parameter, return, or property type. Please define a static tuple type or use an \\`as const\\` expression`,\n usedInExpression: `Expression of type \\`${typeName}\\` cannot be used conditionally`,\n }),\n nativeNumeric: (typeName) => ({\n usedAsType: `\\`${typeName}\\` is not valid as a variable, parameter, return, or property type. Please use an algo-ts type such as \\`biguint\\` or \\`uint64\\``,\n usedInExpression: `Expression of type \\`${typeName}\\` must be explicitly converted to an algo-ts type, for example by wrapping the expression in \\`Uint64(...)\\` or \\`BigUint(...)\\``,\n }),\n unionTypes: (typeName) => ({\n usedAsType: `Union types are not valid as a variable, parameter, return, or property type. Expression type is ${typeName}`,\n usedInExpression: `Union types are only valid in boolean expressions. Expression type is ${typeName}`,\n }),\n intersectionTypes: (typeName) => ({\n usedAsType: `Intersection types are not valid as a variable, parameter, return, or property type. Expression type is ${typeName}`,\n usedInExpression: `Intersection types not valid here. Expression type is ${typeName}`,\n }),\n} satisfies Record<string, (typeName: string) => TransientTypeError>\n","import { PType } from './base'\n\nexport class IntrinsicEnumType extends PType {\n readonly wtype: undefined\n readonly name: string\n readonly factory: undefined\n readonly module: string\n readonly members: Array<[string, string]>\n readonly singleton = true\n\n constructor({ name, module, members }: { name: string; module: string; members: Array<[string, string]> }) {\n super()\n this.members = members\n this.name = name\n this.module = module\n }\n}\n","/* THIS FILE IS GENERATED BY ~/scripts/generate-op-ptypes.ts - DO NOT MODIFY DIRECTLY */\nimport { IntrinsicEnumType } from './intrinsic-enum-type'\nimport { Constants } from '../../constants'\n\nexport const base64PType = new IntrinsicEnumType({\n name: 'Base64',\n module: `${Constants.algoTsPackage}/op.d.ts`,\n members: [\n ['URLEncoding', 'URLEncoding'],\n ['StdEncoding', 'StdEncoding'],\n ],\n})\nexport const ecPType = new IntrinsicEnumType({\n name: 'Ec',\n module: `${Constants.algoTsPackage}/op.d.ts`,\n members: [\n ['BN254g1', 'BN254g1'],\n ['BN254g2', 'BN254g2'],\n ['BLS12_381g1', 'BLS12_381g1'],\n ['BLS12_381g2', 'BLS12_381g2'],\n ],\n})\nexport const ecdsaPType = new IntrinsicEnumType({\n name: 'Ecdsa',\n module: `${Constants.algoTsPackage}/op.d.ts`,\n members: [\n ['Secp256k1', 'Secp256k1'],\n ['Secp256r1', 'Secp256r1'],\n ],\n})\nexport const mimcConfigurationsPType = new IntrinsicEnumType({\n name: 'MimcConfigurations',\n module: `${Constants.algoTsPackage}/op.d.ts`,\n members: [\n ['BN254Mp110', 'BN254Mp110'],\n ['BLS12_381Mp111', 'BLS12_381Mp111'],\n ],\n})\nexport const vrfVerifyPType = new IntrinsicEnumType({\n name: 'VrfVerify',\n module: `${Constants.algoTsPackage}/op.d.ts`,\n members: [['VrfAlgorand', 'VrfAlgorand']],\n})\nexport const ALL_OP_ENUMS = [base64PType, ecPType, ecdsaPType, mimcConfigurationsPType, vrfVerifyPType]\n","import { TransactionKind } from '../../awst/models'\nimport { SourceLocation } from '../../awst/source-location'\nimport { wtypes } from '../../awst/wtypes'\n\nimport { Constants } from '../../constants'\nimport { CodeError, InternalError, NotSupported } from '../../errors'\nimport { codeInvariant, distinctByEquality, sortBy } from '../../util'\nimport { SymbolName } from '../symbol-name'\nimport { GenericPType, PType } from './base'\nimport { transientTypeErrors } from './transient-type-errors'\n\nexport * from './base'\nexport * from './intrinsic-enum-type'\nexport * from './op-ptypes'\n\n/**\n * Transient types can appear in expressions but should not be used as variable or return types\n */\nexport abstract class TransientType extends PType {\n readonly name: string\n readonly module: string\n readonly singleton: boolean\n readonly typeMessage: string\n readonly expressionMessage: string\n\n constructor({\n name,\n module,\n singleton,\n typeMessage,\n expressionMessage,\n }: {\n name: string\n module: string\n singleton: boolean\n typeMessage: string\n expressionMessage: string\n }) {\n super()\n this.name = name\n this.module = module\n this.singleton = singleton\n this.typeMessage = typeMessage\n this.expressionMessage = expressionMessage\n }\n\n get wtype(): wtypes.WType | undefined {\n return undefined\n }\n\n get wtypeOrThrow(): wtypes.WType {\n throw new CodeError(this.typeMessage)\n }\n}\n\nexport class UnsupportedType extends PType {\n readonly wtype: undefined = undefined\n readonly name: string\n readonly module: string\n readonly singleton = false\n #fullName: string | undefined\n\n constructor({ name, module, fullName }: { name: string; module: string; fullName?: string }) {\n super()\n this.name = name\n this.module = module\n this.#fullName = fullName\n }\n\n get fullName() {\n return this.#fullName ?? super.fullName\n }\n\n get wtypeOrThrow(): wtypes.WType {\n throw new NotSupported(`The type ${this.fullName} is not supported`)\n }\n}\n\nexport class LogicSigPType extends PType {\n readonly wtype = undefined\n readonly name: string\n readonly module: string\n readonly singleton = true\n readonly sourceLocation: SourceLocation\n readonly baseType: LogicSigPType | undefined\n constructor(props: { module: string; name: string; baseType?: LogicSigPType; sourceLocation: SourceLocation }) {\n super()\n this.name = props.name\n this.module = props.module\n this.baseType = props.baseType\n this.sourceLocation = props.sourceLocation\n }\n}\n\nexport const logicSigBaseType = new LogicSigPType({\n name: 'LogicSig',\n module: Constants.logicSigModuleName,\n sourceLocation: SourceLocation.None,\n})\n\nexport class ContractClassPType extends PType {\n readonly wtype = undefined\n readonly name: string\n readonly module: string\n readonly properties: Record<string, PType>\n readonly methods: Record<string, FunctionPType>\n readonly singleton = true\n readonly baseTypes: ContractClassPType[]\n readonly sourceLocation: SourceLocation\n\n constructor(props: {\n module: string\n name: string\n properties: Record<string, AppStorageType>\n methods: Record<string, FunctionPType>\n baseTypes: ContractClassPType[]\n sourceLocation: SourceLocation\n }) {\n super()\n this.name = props.name\n this.module = props.module\n this.properties = props.properties\n this.methods = props.methods\n this.baseTypes = props.baseTypes\n this.sourceLocation = props.sourceLocation\n }\n\n get isARC4(): boolean {\n return this.baseTypes.some((b) => b.isARC4)\n }\n\n *allBases(): IterableIterator<ContractClassPType> {\n for (const b of this.baseTypes) {\n yield b\n yield* b.allBases()\n }\n }\n}\n\nexport class ClusteredContractClassType extends ContractClassPType {\n constructor(props: { methods: Record<string, FunctionPType>; baseTypes: ContractClassPType[]; sourceLocation: SourceLocation }) {\n super({\n ...props,\n name: `ClusteredContract<${props.baseTypes.map((t) => t.fullName).join(',')}>`,\n module: Constants.polytypeModuleName,\n methods: Object.assign({}, ...props.baseTypes.toReversed().map((t) => t.methods)),\n properties: Object.assign({}, ...props.baseTypes.toReversed().map((t) => t.properties)),\n })\n }\n}\n\nexport class BaseContractClassType extends ContractClassPType {\n readonly _isArc4: boolean\n get isARC4(): boolean {\n return this._isArc4\n }\n\n constructor({\n isArc4,\n ...rest\n }: {\n isArc4: boolean\n module: string\n name: string\n properties: Record<string, AppStorageType>\n methods: Record<string, FunctionPType>\n baseTypes: ContractClassPType[]\n sourceLocation: SourceLocation\n }) {\n super(rest)\n this._isArc4 = isArc4\n }\n}\n\nexport class IntersectionPType extends TransientType {\n get fullName() {\n return this.types.map((t) => t).join(' & ')\n }\n readonly singleton = false\n readonly types: PType[]\n\n private constructor({ types }: { types: PType[] }) {\n const name = types.map((t) => t).join(' & ')\n super({\n name,\n module: 'lib.d.ts',\n singleton: false,\n typeMessage: transientTypeErrors.intersectionTypes(name).usedAsType,\n expressionMessage: transientTypeErrors.unionTypes(name).usedInExpression,\n })\n this.types = types\n }\n\n static fromTypes(types: PType[]) {\n if (types.length === 0) {\n throw new InternalError('Cannot create intersection of zero types')\n }\n const distinctTypes = types.filter(distinctByEquality((a, b) => a.equals(b))).toSorted(sortBy((t) => t.fullName))\n if (distinctTypes.length === 1) {\n return distinctTypes[0]\n }\n return new IntersectionPType({\n types: distinctTypes,\n })\n }\n}\n\nexport class UnionPType extends TransientType {\n get fullName() {\n return this.types.map((t) => t).join(' | ')\n }\n readonly singleton = false\n readonly types: PType[]\n\n private constructor({ types }: { types: PType[] }) {\n let typeMessage: string\n let expressionMessage: string\n const name = types.map((t) => t).join(' | ')\n const transientType = types.find((t) => t instanceof TransientType)\n if (transientType) {\n if (transientType instanceof NativeNumericType) {\n typeMessage = transientTypeErrors.nativeNumeric(name).usedAsType\n expressionMessage = transientTypeErrors.nativeNumeric(name).usedInExpression\n } else {\n typeMessage = transientType.typeMessage\n expressionMessage = transientType.expressionMessage\n }\n } else {\n typeMessage = transientTypeErrors.unionTypes(name).usedAsType\n expressionMessage = transientTypeErrors.unionTypes(name).usedInExpression\n }\n super({\n name,\n module: 'lib.d.ts',\n singleton: false,\n typeMessage,\n expressionMessage,\n })\n this.types = types\n }\n\n static fromTypes(types: PType[]) {\n if (types.length === 0) {\n throw new InternalError('Cannot create union of zero types')\n }\n const distinctTypes = types.filter(distinctByEquality((a, b) => a.equals(b))).toSorted(sortBy((t) => t.fullName))\n if (distinctTypes.length === 1) {\n return distinctTypes[0]\n }\n return new UnionPType({\n types: distinctTypes,\n })\n }\n}\n\nexport abstract class StorageProxyPType extends PType {\n readonly wtype: wtypes.WType\n readonly contentType: PType\n readonly singleton = false\n\n protected constructor(props: { content: PType; keyWType: wtypes.WType }) {\n super()\n this.wtype = props.keyWType\n this.contentType = props.content\n }\n}\nexport const GlobalStateGeneric = new GenericPType({\n name: 'GlobalState',\n module: Constants.stateModuleName,\n parameterise(typeArgs: PType[]): GlobalStateType {\n codeInvariant(typeArgs.length === 1, 'GlobalState type expects exactly one type parameter')\n return new GlobalStateType({\n content: typeArgs[0],\n })\n },\n})\nexport class GlobalStateType extends StorageProxyPType {\n static readonly baseName = 'GlobalState'\n static readonly baseFullName = `${Constants.stateModuleName}::${GlobalStateType.baseName}`\n readonly module: string = Constants.stateModuleName\n get name() {\n return `${GlobalStateType.baseName}<${this.contentType.name}>`\n }\n get fullName() {\n return `${GlobalStateType.baseFullName}<${this.contentType.fullName}>`\n }\n constructor(props: { content: PType }) {\n super({ ...props, keyWType: wtypes.stateKeyWType })\n }\n}\nexport const LocalStateGeneric = new GenericPType({\n name: 'LocalState',\n module: Constants.stateModuleName,\n parameterise(typeArgs: PType[]): LocalStateType {\n codeInvariant(typeArgs.length === 1, 'LocalState type expects exactly one type parameter')\n return new LocalStateType({\n content: typeArgs[0],\n })\n },\n})\nexport class LocalStateType extends StorageProxyPType {\n static readonly baseName = 'LocalState'\n static readonly baseFullName = `${Constants.stateModuleName}::${LocalStateType.baseName}`\n readonly module: string = Constants.stateModuleName\n get name() {\n return `${LocalStateType.baseName}<${this.contentType.name}>`\n }\n get fullName() {\n return `${LocalStateType.baseFullName}<${this.contentType.fullName}>`\n }\n constructor(props: { content: PType }) {\n super({ ...props, keyWType: wtypes.stateKeyWType })\n }\n static parameterise(typeArgs: PType[]): LocalStateType {\n codeInvariant(typeArgs.length === 1, 'LocalState type expects exactly one type parameter')\n return new LocalStateType({\n content: typeArgs[0],\n })\n }\n}\nexport const BoxGeneric = new GenericPType({\n name: 'Box',\n module: Constants.boxModuleName,\n parameterise(typeArgs: PType[]): BoxPType {\n codeInvariant(typeArgs.length === 1, `${this.name} type expects exactly one type parameter`)\n return new BoxPType({\n content: typeArgs[0],\n })\n },\n})\nexport class BoxPType extends StorageProxyPType {\n readonly module: string = Constants.boxModuleName\n get name() {\n return `Box<${this.contentType.name}>`\n }\n get fullName() {\n return `${this.module}::${this.name}<${this.contentType.fullName}>`\n }\n constructor(props: { content: PType }) {\n super({ ...props, keyWType: wtypes.boxKeyWType })\n }\n}\nexport const BoxMapGeneric = new GenericPType({\n name: 'BoxMap',\n module: Constants.boxModuleName,\n parameterise(typeArgs: PType[]): BoxMapPType {\n codeInvariant(typeArgs.length === 2, `${this.name} type expects exactly two type parameters`)\n return new BoxMapPType({\n keyType: typeArgs[0],\n content: typeArgs[1],\n })\n },\n})\nexport class BoxMapPType extends StorageProxyPType {\n readonly module: string = Constants.boxModuleName\n get name() {\n return `BoxMap<${this.keyType.name}, ${this.contentType.name}>`\n }\n get fullName() {\n return `${this.module}::${this.name}<${this.keyType.name}, ${this.contentType.fullName}>`\n }\n readonly keyType: PType\n constructor(props: { content: PType; keyType: PType }) {\n super({ ...props, keyWType: wtypes.boxKeyWType })\n this.keyType = props.keyType\n }\n}\nexport class BoxRefPType extends StorageProxyPType {\n readonly module = Constants.boxModuleName\n get name() {\n return 'BoxRef'\n }\n constructor() {\n super({ keyWType: wtypes.boxKeyWType, content: bytesPType })\n }\n}\nexport type AppStorageType = GlobalStateType | LocalStateType\n\nexport function isAppStorageType(ptype: PType): ptype is AppStorageType {\n return ptype instanceof GlobalStateType || ptype instanceof LocalStateType\n}\n\n/**\n * An open generic type parameter\n */\nexport class TypeParameterType extends PType {\n readonly name: string\n readonly module: string\n readonly singleton = false\n readonly wtype = undefined\n constructor({ name, module }: { name: string; module: string }) {\n super()\n this.name = name\n this.module = module\n }\n}\n\n/**\n * A type from the typescript libs which might pop up in type reflection\n * but is not relevant to the output of the compiler\n */\nexport class InternalType extends PType {\n readonly name: string\n readonly module: string\n readonly singleton = false\n readonly wtype = undefined\n constructor({ name, module }: { name: string; module: string }) {\n super()\n this.name = name\n this.module = module\n }\n}\nexport const ClassMethodDecoratorContext = new InternalType({\n module: 'typescript/lib/lib.decorators.d.ts',\n name: 'ClassMethodDecoratorContext',\n})\n\nexport class AnyPType extends PType {\n get wtype(): never {\n throw new CodeError('`any` is not valid as a variable, parameter, return, or property type.')\n }\n readonly name = 'any'\n readonly module = 'lib.d.ts'\n readonly singleton = false\n}\n\nexport class InstanceType extends PType {\n readonly wtype: wtypes.WType\n readonly name: string\n readonly module: string\n readonly singleton = false\n\n constructor({ name, module, wtype }: { name: string; module: string; wtype: wtypes.WType }) {\n super()\n this.name = name\n this.wtype = wtype\n this.module = module\n }\n}\n\nexport class LibFunctionType extends PType {\n readonly wtype: undefined\n readonly name: string\n readonly module: string\n readonly singleton = true\n\n constructor({ name, module }: { name: string; module: string }) {\n super()\n this.name = name\n this.module = module\n }\n}\nexport class LibClassType extends PType {\n readonly wtype: undefined\n readonly name: string\n readonly module: string\n readonly singleton = true\n\n constructor({ name, module }: { name: string; module: string }) {\n super()\n this.name = name\n this.module = module\n }\n}\n\nexport class IntrinsicFunctionGroupType extends PType {\n readonly wtype: undefined\n readonly name: string\n readonly module: string = Constants.opModuleName\n readonly singleton = true\n\n constructor({ name }: { name: string }) {\n super()\n this.name = name\n }\n}\nexport class IntrinsicFunctionGroupTypeType extends PType {\n readonly wtype: undefined\n readonly name: string\n readonly module: string = Constants.opModuleName\n readonly singleton = false\n\n constructor({ name }: { name: string }) {\n super()\n this.name = name\n }\n}\nexport class IntrinsicFunctionType extends PType {\n readonly wtype: undefined\n readonly name: string\n readonly module: string = Constants.opModuleName\n readonly singleton = true\n\n constructor({ name }: { name: string }) {\n super()\n this.name = name\n }\n}\nexport class IntrinsicFunctionTypeType extends PType {\n readonly wtype: undefined\n readonly name: string\n readonly module: string = Constants.opModuleName\n readonly singleton = false\n\n constructor({ name }: { name: string }) {\n super()\n this.name = name\n }\n}\n\nexport class NamespacePType extends PType {\n readonly wtype: undefined\n readonly name: string\n readonly factory: undefined\n readonly module: string\n readonly singleton = true\n\n constructor({ name, module }: { name: string; module: string }) {\n super()\n this.name = name\n this.module = module\n }\n\n get fullName() {\n return `${this.module}::*`\n }\n\n toString(): string {\n return this.module\n }\n}\n\nexport class FunctionPType extends PType {\n readonly wtype: undefined\n readonly name: string\n readonly module: string\n readonly returnType: PType\n readonly parameters: Array<readonly [string, PType]>\n readonly singleton = true\n readonly sourceLocation: SourceLocation | undefined\n\n constructor(props: {\n name: string\n module: string\n returnType: PType\n parameters: Array<readonly [string, PType]>\n sourceLocation: SourceLocation | undefined\n }) {\n super()\n this.name = props.name\n this.module = props.module\n this.sourceLocation = props.sourceLocation\n if (props.returnType instanceof ObjectPType && !props.returnType.alias) {\n this.returnType = new ObjectPType({\n alias: new SymbolName({ name: `${props.name}Result`, module: this.module }),\n properties: props.returnType.properties,\n description: props.returnType.description,\n })\n } else {\n this.returnType = props.returnType\n }\n this.parameters = props.parameters\n }\n}\nexport class ArrayLiteralPType extends TransientType {\n get fullName() {\n return `${this.module}::[${this.items.map((i) => i).join(', ')}]`\n }\n\n get elementType() {\n return this.items.length ? UnionPType.fromTypes(this.items) : neverPType\n }\n\n readonly items: PType[]\n readonly immutable = true\n constructor(props: { items: PType[] }) {\n const name = `[${props.items.map((i) => i.name).join(', ')}]`\n super({\n module: 'lib.d.ts',\n name,\n typeMessage: transientTypeErrors.arrays(name).usedAsType,\n expressionMessage: transientTypeErrors.arrays(name).usedInExpression,\n singleton: false,\n })\n this.items = props.items\n }\n\n getArrayType(): ArrayPType {\n return new ArrayPType({\n elementType: this.elementType,\n })\n }\n\n getTupleType(): TuplePType {\n return new TuplePType({\n items: this.items,\n })\n }\n}\n\nexport class TuplePType extends PType {\n readonly module: string = 'lib.d.ts'\n get name() {\n return `Tuple<${this.items.map((i) => i.name).join(', ')}>`\n }\n get fullName() {\n return `${this.module}::Tuple<${this.items.map((i) => i.fullName).join(', ')}>`\n }\n\n readonly items: PType[]\n readonly singleton = false\n readonly immutable: boolean\n constructor(props: { items: PType[] }) {\n super()\n this.items = props.items\n this.immutable = true\n }\n\n get wtype(): wtypes.WTuple {\n return new wtypes.WTuple({\n types: this.items.map((i) => i.wtypeOrThrow),\n immutable: this.immutable,\n })\n }\n}\nexport class ArrayPType extends PType {\n readonly elementType: PType\n readonly immutable = true\n readonly singleton = false\n readonly name: string\n readonly module: string = 'lib.d.ts'\n get fullName() {\n return `${this.module}::Array<${this.elementType.fullName}>`\n }\n constructor(props: { elementType: PType }) {\n super()\n this.name = `Array<${props.elementType.name}>`\n this.elementType = props.elementType\n }\n\n get wtype() {\n return new wtypes.StackArray({\n itemType: this.elementType.wtypeOrThrow,\n immutable: this.immutable,\n })\n }\n}\n\nexport class ObjectPType extends PType {\n readonly name: string = 'object'\n readonly module: string = 'lib.d.ts'\n readonly alias: SymbolName | null\n readonly description: string | undefined\n readonly properties: Record<string, PType>\n readonly singleton = false\n\n constructor(props: { alias?: SymbolName | null; properties: Record<string, PType>; description?: string }) {\n super()\n this.properties = props.properties\n this.description = props.description\n this.alias = props.alias ?? null\n }\n\n static anonymous(props: Record<string, PType> | Array<[string, PType]>) {\n const properties = Array.isArray(props) ? Object.fromEntries(props) : props\n return new ObjectPType({\n properties,\n })\n }\n\n get wtype(): wtypes.WTuple {\n const tupleTypes: wtypes.WType[] = []\n const tupleNames: string[] = []\n for (const [propName, propType] of this.orderedProperties()) {\n if (propType instanceof TransientType) {\n throw new CodeError(`Property '${propName}' of ${this.name} has an unsupported type: ${propType.typeMessage}`)\n }\n tupleTypes.push(propType.wtypeOrThrow)\n tupleNames.push(propName)\n }\n return new wtypes.WTuple({\n name: this.alias?.fullName ?? this.fullName,\n names: tupleNames,\n types: tupleTypes,\n immutable: true,\n })\n }\n\n orderedProperties() {\n return Object.entries(this.properties)\n }\n\n getPropertyType(name: string): PType {\n if (Object.hasOwn(this.properties, name)) {\n return this.properties[name]\n }\n throw new CodeError(`${this} does not have property ${name}`)\n }\n\n hasProperty(name: string): boolean {\n return Object.hasOwn(this.properties, name)\n }\n\n hasPropertyOfType(name: string, type: PType) {\n return this.hasProperty(name) && this.properties[name].equals(type)\n }\n\n toString(): string {\n return `{${this.orderedProperties()\n .map((p) => `${p[0]}:${p[1].name}`)\n .join(',')}}`\n }\n}\n\nexport const voidPType = new InstanceType({\n name: 'void',\n module: 'lib.d.ts',\n wtype: wtypes.voidWType,\n})\nexport const neverPType = new InstanceType({\n name: 'never',\n module: 'lib.d.ts',\n wtype: wtypes.voidWType,\n})\nexport const unknownPType = new UnsupportedType({\n name: 'unknown',\n module: 'lib.d.ts',\n fullName: 'unknown',\n})\n\nexport const nullPType = new UnsupportedType({\n name: 'null',\n module: 'lib.d.ts',\n fullName: 'null',\n})\nexport const undefinedPType = new UnsupportedType({\n name: 'undefined',\n module: 'lib.d.ts',\n fullName: 'undefined',\n})\nexport const PromiseGeneric = new GenericPType({\n name: 'Promise',\n module: 'typescript/lib/lib.es5.d.ts',\n parameterise(ptypes: PType[]) {\n codeInvariant(ptypes.length === 1, 'Promise expects exactly 1 generic parameter')\n return new PromiseType({ resolveType: ptypes[0] })\n },\n})\nexport class PromiseType extends UnsupportedType {\n readonly resolveType: PType\n constructor({ resolveType }: { resolveType: PType }) {\n super({\n name: 'Promise',\n module: 'typescript/lib/lib.es5.d.ts',\n })\n this.resolveType = resolveType\n }\n}\nexport const anyPType = new AnyPType()\n\nexport const boolPType = new InstanceType({\n name: 'boolean',\n module: 'lib.d.ts',\n wtype: wtypes.boolWType,\n})\n\nexport const BooleanFunction = new LibFunctionType({\n name: 'Boolean',\n module: 'typescript/lib/lib.es5.d.ts',\n})\n\nexport class NativeNumericType extends TransientType {}\n\nexport const bigIntPType = new NativeNumericType({\n name: 'bigint',\n module: 'lib.d.ts',\n singleton: false,\n typeMessage: transientTypeErrors.nativeNumeric('bigint').usedAsType,\n expressionMessage: transientTypeErrors.nativeNumeric('bigint').usedInExpression,\n})\n\nexport const stringPType = new InstanceType({\n name: 'string',\n module: 'lib.d.ts',\n wtype: wtypes.stringWType,\n})\nexport const StringFunction = new LibFunctionType({\n name: 'String',\n module: 'typescript/lib/lib.es5.d.ts',\n})\n\nexport const uint64PType = new InstanceType({\n name: 'uint64',\n module: Constants.primitivesModuleName,\n wtype: wtypes.uint64WType,\n})\nexport const biguintPType = new InstanceType({\n name: 'biguint',\n module: Constants.primitivesModuleName,\n wtype: wtypes.biguintWType,\n})\nexport class NumericLiteralPType extends NativeNumericType {\n readonly literalValue: bigint\n constructor({ literalValue }: { literalValue: bigint }) {\n super({\n name: `${literalValue}`,\n module: 'lib.d.ts',\n singleton: false,\n typeMessage: transientTypeErrors.nativeNumeric(literalValue.toString()).usedAsType,\n expressionMessage: transientTypeErrors.nativeNumeric(literalValue.toString()).usedInExpression,\n })\n this.literalValue = literalValue\n }\n}\nexport class BigIntLiteralPType extends NativeNumericType {\n readonly literalValue: bigint\n constructor({ literalValue }: { literalValue: bigint }) {\n super({\n name: `${literalValue}n`,\n module: 'lib.d.ts',\n singleton: false,\n typeMessage: transientTypeErrors.nativeNumeric(`${literalValue}n`).usedAsType,\n expressionMessage: transientTypeErrors.nativeNumeric(`${literalValue}n`).usedInExpression,\n })\n this.literalValue = literalValue\n }\n}\nexport const numberPType = new NativeNumericType({\n name: 'number',\n module: 'lib.d.ts',\n singleton: false,\n typeMessage: transientTypeErrors.nativeNumeric('number').usedAsType,\n expressionMessage: transientTypeErrors.nativeNumeric('number').usedInExpression,\n})\nexport const Uint64Function = new LibFunctionType({\n name: 'Uint64',\n module: Constants.primitivesModuleName,\n})\n\nexport const BigUintFunction = new LibFunctionType({\n name: 'BigUint',\n module: Constants.primitivesModuleName,\n})\nexport const bytesPType = new InstanceType({\n name: 'bytes',\n module: Constants.primitivesModuleName,\n wtype: wtypes.bytesWType,\n})\nexport const BytesFunction = new LibFunctionType({\n name: 'Bytes',\n module: Constants.primitivesModuleName,\n})\n\nexport const logFunction = new LibFunctionType({\n name: 'log',\n module: Constants.utilModuleName,\n})\nexport const assertFunction = new LibFunctionType({\n name: 'assert',\n module: Constants.utilModuleName,\n})\n\nexport const errFunction = new LibFunctionType({\n name: 'err',\n module: Constants.utilModuleName,\n})\n\nexport const assetPType = new InstanceType({\n name: 'Asset',\n wtype: wtypes.assetWType,\n module: Constants.referenceModuleName,\n})\nexport const AssetFunction = new LibFunctionType({\n name: 'Asset',\n module: Constants.referenceModuleName,\n})\nexport const accountPType = new InstanceType({\n name: 'Account',\n wtype: wtypes.accountWType,\n module: Constants.referenceModuleName,\n})\nexport const AccountFunction = new LibFunctionType({\n name: 'Account',\n module: Constants.referenceModuleName,\n})\nexport const applicationPType = new InstanceType({\n name: 'Application',\n wtype: wtypes.applicationWType,\n module: Constants.referenceModuleName,\n})\nexport const ApplicationFunctionType = new LibFunctionType({\n name: 'Application',\n module: Constants.referenceModuleName,\n})\nexport const GlobalStateFunction = new LibFunctionType({\n name: 'GlobalState',\n module: Constants.stateModuleName,\n})\nexport const LocalStateFunction = new LibFunctionType({\n name: 'LocalState',\n module: Constants.stateModuleName,\n})\nexport const BoxFunction = new LibFunctionType({\n name: BoxGeneric.name,\n module: Constants.boxModuleName,\n})\nexport const BoxMapFunction = new LibFunctionType({\n name: BoxMapGeneric.name,\n module: Constants.boxModuleName,\n})\nexport const BoxRefFunction = new LibFunctionType({\n name: 'BoxRef',\n module: Constants.boxModuleName,\n})\nexport const boxRefType = new BoxRefPType()\n\nexport const ClearStateProgram = new FunctionPType({\n name: Constants.clearStateProgramMethodName,\n module: Constants.baseContractModuleName,\n returnType: uint64PType,\n parameters: [],\n sourceLocation: undefined,\n})\n\nexport const ApprovalProgram = new FunctionPType({\n name: Constants.approvalProgramMethodName,\n module: Constants.arc4ModuleName,\n returnType: boolPType,\n parameters: [],\n sourceLocation: undefined,\n})\n\nexport const baseContractType = new BaseContractClassType({\n module: Constants.baseContractModuleName,\n name: 'BaseContract',\n methods: {\n clearStateProgram: ClearStateProgram,\n },\n properties: {},\n baseTypes: [],\n isArc4: false,\n sourceLocation: SourceLocation.None,\n})\nexport const arc4BaseContractType = new BaseContractClassType({\n module: Constants.arc4ModuleName,\n name: 'Contract',\n methods: {\n approvalProgram: ApprovalProgram,\n clearStateProgram: ClearStateProgram,\n },\n properties: {},\n baseTypes: [baseContractType],\n isArc4: true,\n sourceLocation: SourceLocation.None,\n})\n\nexport const arc4BareMethodDecorator = new LibFunctionType({\n module: Constants.arc4ModuleName,\n name: 'baremethod',\n})\nexport const arc4AbiMethodDecorator = new LibFunctionType({\n module: Constants.arc4ModuleName,\n name: 'abimethod',\n})\n\nexport const contractOptionsDecorator = new LibFunctionType({\n module: Constants.baseContractModuleName,\n name: 'contract',\n})\n\nexport const logicSigOptionsDecorator = new LibFunctionType({\n module: Constants.logicSigModuleName,\n name: 'logicsig',\n})\n\nexport class GroupTransactionPType extends PType {\n get wtype() {\n return new wtypes.WGroupTransaction({\n transactionType: this.kind,\n })\n }\n readonly name: string\n readonly kind: TransactionKind | undefined\n readonly module = Constants.gtxnModuleName\n readonly singleton = false\n\n constructor({ kind, name }: { kind?: TransactionKind; name: string }) {\n super()\n this.name = name\n this.kind = kind\n }\n}\n\nexport class TransactionFunctionType extends LibFunctionType {\n readonly kind: TransactionKind | undefined\n\n constructor({ name, module, kind }: { name: string; module: string; kind: TransactionKind | undefined }) {\n super({ name, module })\n this.kind = kind\n }\n}\n\nexport const paymentGtxnType = new GroupTransactionPType({\n name: 'PaymentTxn',\n kind: TransactionKind.pay,\n})\nexport const PaymentTxnFunction = new TransactionFunctionType({\n name: 'PaymentTxn',\n module: Constants.gtxnModuleName,\n kind: TransactionKind.pay,\n})\nexport const keyRegistrationGtxnType = new GroupTransactionPType({\n name: 'KeyRegistrationTxn',\n kind: TransactionKind.keyreg,\n})\nexport const KeyRegistrationTxnFunction = new TransactionFunctionType({\n name: 'KeyRegistrationTxn',\n module: Constants.gtxnModuleName,\n kind: TransactionKind.keyreg,\n})\nexport const assetConfigGtxnType = new GroupTransactionPType({\n name: 'AssetConfigTxn',\n kind: TransactionKind.acfg,\n})\nexport const AssetConfigTxnFunction = new TransactionFunctionType({\n name: 'AssetConfigTxn',\n module: Constants.gtxnModuleName,\n kind: TransactionKind.acfg,\n})\nexport const assetTransferGtxnType = new GroupTransactionPType({\n name: 'AssetTransferTxn',\n kind: TransactionKind.axfer,\n})\nexport const AssetTransferTxnFunction = new TransactionFunctionType({\n name: 'AssetTransferTxn',\n module: Constants.gtxnModuleName,\n kind: TransactionKind.axfer,\n})\nexport const assetFreezeGtxnType = new GroupTransactionPType({\n name: 'AssetFreezeTxn',\n kind: TransactionKind.afrz,\n})\nexport const AssetFreezeTxnFunction = new TransactionFunctionType({\n name: 'AssetFreezeTxn',\n module: Constants.gtxnModuleName,\n kind: TransactionKind.afrz,\n})\nexport const applicationCallGtxnType = new GroupTransactionPType({\n name: 'ApplicationTxn',\n kind: TransactionKind.appl,\n})\nexport const ApplicationTxnFunction = new TransactionFunctionType({\n name: 'ApplicationTxn',\n module: Constants.gtxnModuleName,\n kind: TransactionKind.appl,\n})\nexport const gtxnUnion = UnionPType.fromTypes([\n paymentGtxnType,\n keyRegistrationGtxnType,\n assetConfigGtxnType,\n assetTransferGtxnType,\n assetFreezeGtxnType,\n applicationCallGtxnType,\n])\nexport const anyGtxnType = new GroupTransactionPType({\n name: 'Transaction',\n kind: undefined,\n})\nexport const TransactionFunction = new TransactionFunctionType({\n name: 'Transaction',\n module: Constants.gtxnModuleName,\n kind: undefined,\n})\n\nexport const assertMatchFunction = new LibFunctionType({\n name: 'assertMatch',\n module: Constants.utilModuleName,\n})\nexport const matchFunction = new LibFunctionType({\n name: 'match',\n module: Constants.utilModuleName,\n})\n\nexport class Uint64EnumMemberType extends PType {\n readonly wtype = wtypes.uint64WType\n readonly name: string\n readonly module: string\n readonly singleton = false\n readonly enumType: Uint64EnumType\n\n constructor(enumType: Uint64EnumType) {\n super()\n this.name = enumType.name\n this.module = enumType.module\n this.enumType = enumType\n }\n}\n\nexport class Uint64EnumType extends PType {\n get memberType(): Uint64EnumMemberType {\n return new Uint64EnumMemberType(this)\n }\n readonly wtype = wtypes.uint64WType\n readonly name: string\n readonly module: string\n readonly singleton = true\n readonly members: Record<string, bigint>\n\n constructor(props: { name: string; module: string; members: Record<string, bigint> }) {\n super()\n this.name = props.name\n this.module = props.module\n this.members = props.members\n }\n}\n\nexport const transactionTypeType = new Uint64EnumType({\n module: Constants.transactionsModuleName,\n name: 'TransactionType',\n members: {\n Payment: 1n,\n KeyRegistration: 2n,\n AssetConfig: 3n,\n AssetTransfer: 4n,\n AssetFreeze: 5n,\n ApplicationCall: 6n,\n },\n})\nexport const onCompleteActionType = new Uint64EnumType({\n module: Constants.arc4ModuleName,\n name: 'OnCompleteAction',\n members: {\n NoOp: 0n,\n OptIn: 1n,\n CloseOut: 2n,\n ClearState: 3n,\n UpdateApplication: 4n,\n DeleteApplication: 5n,\n },\n})\nexport const ensureBudgetFunction = new LibFunctionType({\n name: 'ensureBudget',\n module: Constants.utilModuleName,\n})\nexport const opUpFeeSourceType = new Uint64EnumType({\n module: Constants.utilModuleName,\n name: 'OpUpFeeSource',\n members: {\n GroupCredit: 0n,\n AppAccount: 1n,\n Any: 2n,\n },\n})\n\nexport const urangeFunction = new LibFunctionType({\n name: 'urange',\n module: Constants.utilModuleName,\n})\nexport const IterableIteratorGeneric = new GenericPType({\n name: 'IterableIterator',\n module: 'typescript/lib/lib.es2015.iterable.d.ts',\n parameterise(typeArgs: PType[]): IterableIteratorType {\n codeInvariant(typeArgs.length >= 1 && typeArgs.length <= 3, 'IterableIterator type expects 1-3 type parameters')\n // Currently ignoring return and next types\n const [yieldType, _returnType, _nextType] = typeArgs\n return new IterableIteratorType({\n itemType: yieldType,\n })\n },\n})\nexport class IterableIteratorType extends TransientType {\n readonly itemType: PType\n constructor({ itemType }: { itemType: PType }) {\n super({\n name: `IterableIterator<${itemType.name}>`,\n module: 'typescript/lib/lib.es2015.iterable.d.ts',\n typeMessage: '`IterableIterator` is not valid as a variable, parameter, return, or property type. ',\n expressionMessage: 'IterableIterator expressions can only be used in for loops',\n singleton: false,\n })\n this.itemType = itemType\n }\n\n get wtype(): wtypes.WEnumeration {\n return new wtypes.WEnumeration({ sequenceType: this.itemType.wtypeOrThrow })\n }\n}\n\nexport const GeneratorGeneric = new GenericPType({\n name: 'Generator',\n module: 'typescript/lib/lib.es2015.generator.d.ts',\n parameterise(ptypes) {\n codeInvariant(ptypes.length === 3, 'Generator type expects exactly 3 type params')\n\n const [itemType, returnType, nextType] = ptypes\n return new GeneratorType({\n itemType,\n nextType,\n returnType,\n })\n },\n})\n\nexport class GeneratorType extends UnsupportedType {\n readonly itemType: PType\n readonly returnType: PType\n readonly nextType: PType\n constructor({ itemType, returnType, nextType }: { itemType: PType; returnType: PType; nextType: PType }) {\n super({\n name: 'Generator',\n module: 'typescript/lib/lib.es2015.generator.d.ts',\n })\n this.itemType = itemType\n this.returnType = returnType\n this.nextType = nextType\n }\n}\n\nexport const paymentItxnFn = new TransactionFunctionType({\n name: 'payment',\n module: Constants.itxnModuleName,\n kind: TransactionKind.pay,\n})\nexport const keyRegistrationItxnFn = new TransactionFunctionType({\n name: 'keyRegistration',\n module: Constants.itxnModuleName,\n kind: TransactionKind.keyreg,\n})\nexport const assetConfigItxnFn = new TransactionFunctionType({\n name: 'assetConfig',\n module: Constants.itxnModuleName,\n kind: TransactionKind.acfg,\n})\nexport const assetTransferItxnFn = new TransactionFunctionType({\n name: 'assetTransfer',\n module: Constants.itxnModuleName,\n kind: TransactionKind.axfer,\n})\nexport const assetFreezeItxnFn = new TransactionFunctionType({\n name: 'assetFreeze',\n module: Constants.itxnModuleName,\n kind: TransactionKind.afrz,\n})\nexport const applicationCallItxnFn = new TransactionFunctionType({\n name: 'applicationCall',\n module: Constants.itxnModuleName,\n kind: TransactionKind.appl,\n})\n\nexport class InnerTransactionPType extends PType {\n get wtype() {\n return new wtypes.WInnerTransaction({\n transactionType: this.kind,\n })\n }\n readonly name: string\n readonly kind: TransactionKind | undefined\n readonly module = Constants.itxnModuleName\n readonly singleton = false\n\n constructor({ kind, name }: { kind?: TransactionKind; name: string }) {\n super()\n this.name = name\n this.kind = kind\n }\n}\nexport class ItxnParamsPType extends PType {\n get wtype() {\n return new wtypes.WInnerTransactionFields({\n transactionType: this.kind,\n })\n }\n readonly name: string\n readonly kind: TransactionKind | undefined\n readonly module = Constants.itxnModuleName\n readonly singleton = false\n\n constructor({ kind, name }: { kind?: TransactionKind; name: string }) {\n super()\n this.name = name\n this.kind = kind\n }\n}\nexport const paymentItxnParamsType = new ItxnParamsPType({\n name: 'PaymentItxnParams',\n kind: TransactionKind.pay,\n})\nexport const paymentItxnType = new InnerTransactionPType({\n name: 'PaymentInnerTxn',\n kind: TransactionKind.pay,\n})\nexport const keyRegistrationItxnParamsType = new ItxnParamsPType({\n name: 'KeyRegistrationItxnParams',\n kind: TransactionKind.keyreg,\n})\nexport const keyRegistrationItxnType = new InnerTransactionPType({\n name: 'KeyRegistrationInnerTxn',\n kind: TransactionKind.keyreg,\n})\nexport const assetConfigItxnParamsType = new ItxnParamsPType({\n name: 'AssetConfigItxnParams',\n kind: TransactionKind.acfg,\n})\nexport const assetConfigItxnType = new InnerTransactionPType({\n name: 'AssetConfigInnerTxn',\n kind: TransactionKind.acfg,\n})\nexport const assetTransferItxnParamsType = new ItxnParamsPType({\n name: 'AssetTransferItxnParams',\n kind: TransactionKind.axfer,\n})\nexport const assetTransferItxnType = new InnerTransactionPType({\n name: 'AssetTransferInnerTxn',\n kind: TransactionKind.axfer,\n})\nexport const assetFreezeItxnParamsType = new ItxnParamsPType({\n name: 'AssetFreezeItxnParams',\n kind: TransactionKind.afrz,\n})\nexport const assetFreezeItxnType = new InnerTransactionPType({\n name: 'AssetFreezeInnerTxn',\n kind: TransactionKind.afrz,\n})\nexport const applicationCallItxnParamsType = new ItxnParamsPType({\n name: 'ApplicationCallItxnParams',\n kind: TransactionKind.appl,\n})\nexport const applicationItxnType = new InnerTransactionPType({\n name: 'ApplicationInnerTxn',\n kind: TransactionKind.appl,\n})\n\nexport const submitGroupItxnFunction = new LibFunctionType({\n name: 'submitGroup',\n module: Constants.itxnModuleName,\n})\n\nexport const TemplateVarFunction = new LibFunctionType({\n name: 'TemplateVar',\n module: Constants.templateVarModuleName,\n})\n\nexport const compileFunctionType = new LibFunctionType({\n name: 'compile',\n module: Constants.compiledModuleName,\n})\n\nexport const compiledContractType = new ObjectPType({\n alias: new SymbolName({\n name: 'CompiledContract',\n module: Constants.compiledModuleName,\n }),\n description: 'Provides compiled programs and state allocation values for a Contract. Created by calling `compile(ExampleContractType)`',\n properties: {\n approvalProgram: new TuplePType({ items: [bytesPType, bytesPType] }),\n clearStateProgram: new TuplePType({ items: [bytesPType, bytesPType] }),\n extraProgramPages: uint64PType,\n globalUints: uint64PType,\n globalBytes: uint64PType,\n localUints: uint64PType,\n localBytes: uint64PType,\n },\n})\nexport const compiledLogicSigType = new ObjectPType({\n alias: new SymbolName({\n name: 'CompiledLogicSig',\n module: Constants.compiledModuleName,\n }),\n description: 'Provides account for a Logic Signature. Created by calling `compile(LogicSigType)``',\n properties: {\n account: accountPType,\n },\n})\n\nexport const arc28EmitFunction = new LibFunctionType({\n name: 'emit',\n module: Constants.arc28ModuleName,\n})\n\nexport const SuperPrototypeSelectorGeneric = new GenericPType({\n name: 'SuperPrototypeSelector',\n module: Constants.polytypeModuleName,\n parameterise(ptypes: PType[]) {\n return new SuperPrototypeSelector({ bases: ptypes })\n },\n})\nexport class SuperPrototypeSelector extends InternalType {\n constructor({ bases }: { bases: PType[] }) {\n super({\n name: 'SuperPrototypeSelector',\n module: Constants.polytypeModuleName,\n })\n }\n}\nexport const ClusteredPrototype = new InternalType({\n name: 'ClusteredPrototype',\n module: Constants.polytypeModuleName,\n})\nexport const PolytypeClassMethodHelper = new LibFunctionType({\n name: 'class',\n module: Constants.polytypeModuleName,\n})\n\nexport const MutableArrayConstructor = new LibClassType({\n name: 'MutableArray',\n module: Constants.mutableArrayModuleName,\n})\nexport const MutableArrayGeneric = new GenericPType({\n name: 'MutableArray',\n module: Constants.mutableArrayModuleName,\n parameterise: (typeArgs: PType[]): MutableArrayType => {\n codeInvariant(typeArgs.length === 1, 'MutableArray type expects exactly one type parameter')\n const [elementType] = typeArgs\n\n return new MutableArrayType({ elementType: elementType })\n },\n})\nexport class MutableArrayType extends PType {\n readonly module = Constants.mutableArrayModuleName\n readonly immutable = false as const\n readonly name: string\n readonly singleton = false\n readonly sourceLocation: SourceLocation | undefined\n readonly elementType: PType\n\n constructor({\n elementType,\n sourceLocation,\n name,\n }: {\n elementType: PType\n sourceLocation?: SourceLocation\n name?: string\n immutable?: boolean\n }) {\n super()\n this.name = name ?? `MutableArray<${elementType}>`\n this.sourceLocation = sourceLocation\n this.elementType = elementType\n }\n\n get wtype() {\n return new wtypes.ReferenceArray({\n itemType: this.elementType.wtypeOrThrow,\n sourceLocation: this.sourceLocation,\n immutable: false,\n })\n }\n}\n","import type { SourceLocation } from '../../awst/source-location'\nimport { wtypes } from '../../awst/wtypes'\nimport { Constants } from '../../constants'\nimport { codeInvariant } from '../../util'\nimport { GenericPType, PType } from './base'\nimport {\n biguintPType,\n boolPType,\n bytesPType,\n LibClassType,\n LibFunctionType,\n NumericLiteralPType,\n ObjectPType,\n stringPType,\n TuplePType,\n uint64PType,\n} from './index'\nimport ARC4StaticArray = wtypes.ARC4StaticArray\n\nexport const UintNClass = new LibClassType({\n name: 'UintN',\n module: Constants.arc4EncodedTypesModuleName,\n})\n\nexport const ByteClass = new LibClassType({\n name: 'Byte',\n module: Constants.arc4EncodedTypesModuleName,\n})\nexport const UintN8Class = new LibClassType({\n name: 'UintN8',\n module: Constants.arc4EncodedTypesModuleName,\n})\nexport const UintN16Class = new LibClassType({\n name: 'UintN16',\n module: Constants.arc4EncodedTypesModuleName,\n})\nexport const UintN32Class = new LibClassType({\n name: 'UintN32',\n module: Constants.arc4EncodedTypesModuleName,\n})\nexport const UintN64Class = new LibClassType({\n name: 'UintN64',\n module: Constants.arc4EncodedTypesModuleName,\n})\nexport const UintN128Class = new LibClassType({\n name: 'UintN128',\n module: Constants.arc4EncodedTypesModuleName,\n})\nexport const UintN256Class = new LibClassType({\n name: 'UintN256',\n module: Constants.arc4EncodedTypesModuleName,\n})\nexport abstract class ARC4EncodedType extends PType {\n abstract readonly wtype: wtypes.ARC4Type\n abstract readonly nativeType: PType | undefined\n abstract readonly encodedBitSize: bigint | null\n\n /**\n * Calculate the number of bits required to store a sequence of ARC4 types using ARC4's bit-packing technique for consecutive booleans.\n *\n * Returns `null` if the sequence contains a dynamically sized type\n * @param types The sequence of types being encoded\n */\n protected static calculateFixedBitSize(types: ARC4EncodedType[]): bigint | null {\n return types.reduce((acc: bigint | null, cur) => {\n if (acc === null || cur.encodedBitSize === null) return null\n\n if (cur.encodedBitSize < 8n) {\n return acc + cur.encodedBitSize\n } else {\n return this.bitsToBytes(acc) * 8n + cur.encodedBitSize\n }\n }, 0n)\n }\n\n /**\n * Get the number of bytes required to represent n bits\n * @param n The number of bits which need representing\n */\n static bitsToBytes(n: bigint): bigint {\n return (n + 7n) / 8n\n }\n}\n\nexport abstract class ARC4ArrayType extends ARC4EncodedType {\n readonly elementType: ARC4EncodedType\n constructor({ elementType }: { elementType: ARC4EncodedType }) {\n super()\n this.elementType = elementType\n }\n}\n\nexport class ARC4InstanceType extends ARC4EncodedType {\n readonly wtype: wtypes.ARC4Type\n readonly name: string\n readonly module = Constants.arc4EncodedTypesModuleName\n readonly singleton = false\n readonly nativeType: PType\n readonly encodedBitSize: bigint | null\n constructor({\n wtype,\n nativeType,\n name,\n encodedBitSize,\n }: {\n wtype: wtypes.ARC4Type\n name: string\n nativeType: PType\n encodedBitSize: bigint | null\n }) {\n super()\n this.wtype = wtype\n this.name = name\n this.nativeType = nativeType\n this.encodedBitSize = encodedBitSize\n }\n}\n\nexport const ARC4BoolClass = new LibClassType({\n name: 'Bool',\n module: Constants.arc4EncodedTypesModuleName,\n})\n\nexport const ARC4StrClass = new LibClassType({\n name: 'Str',\n module: Constants.arc4EncodedTypesModuleName,\n})\n\nexport const arc4BooleanType = new ARC4InstanceType({\n name: 'Bool',\n wtype: wtypes.arc4BooleanWType,\n nativeType: boolPType,\n encodedBitSize: 1n,\n})\n\nexport const arc4StringType = new ARC4InstanceType({\n name: 'Str',\n wtype: wtypes.arc4StringAliasWType,\n nativeType: stringPType,\n encodedBitSize: null,\n})\n\nexport class ARC4StructClass extends PType {\n readonly name: string\n readonly module: string\n readonly singleton = true\n readonly instanceType: ARC4StructType\n readonly sourceLocation: SourceLocation | undefined\n readonly wtype = undefined\n constructor({\n name,\n module,\n instanceType,\n sourceLocation,\n }: {\n name: string\n module: string\n instanceType: ARC4StructType\n sourceLocation?: SourceLocation\n }) {\n super()\n this.name = name\n this.module = module\n this.sourceLocation = sourceLocation\n this.instanceType = instanceType\n }\n\n static fromStructType(ptype: ARC4StructType) {\n return new ARC4StructClass({\n ...ptype,\n instanceType: ptype,\n })\n }\n}\n\nexport class ARC4StructType extends ARC4EncodedType {\n readonly name: string\n readonly module: string\n readonly description: string | undefined\n readonly singleton = false\n readonly fields: Record<string, ARC4EncodedType>\n readonly sourceLocation: SourceLocation | undefined\n readonly frozen: boolean\n readonly encodedBitSize: bigint | null\n constructor({\n name,\n frozen,\n module,\n fields,\n description,\n sourceLocation,\n }: {\n name: string\n module: string\n frozen: boolean\n description: string | undefined\n fields: Record<string, ARC4EncodedType>\n sourceLocation?: SourceLocation\n }) {\n super()\n this.name = name\n this.module = module\n this.frozen = frozen\n this.fields = fields\n this.description = description\n this.sourceLocation = sourceLocation\n this.encodedBitSize = ARC4EncodedType.calculateFixedBitSize(Object.values(fields))\n }\n\n get nativeType(): ObjectPType {\n return ObjectPType.anonymous(this.fields)\n }\n\n get wtype(): wtypes.ARC4Struct {\n return new wtypes.ARC4Struct({\n name: this.name,\n fields: Object.fromEntries(Object.entries(this.fields).map(([f, t]) => [f, t.wtype])),\n sourceLocation: this.sourceLocation,\n desc: this.description ?? null,\n frozen: this.frozen,\n })\n }\n\n get signature(): string {\n return `${this.name}${this.wtype.arc4Name}`\n }\n}\n\nexport const arc4StructBaseType = new ARC4StructType({\n name: 'StructBase',\n module: Constants.arc4EncodedTypesModuleName,\n fields: {},\n description: undefined,\n frozen: false,\n})\n\nexport const Arc4TupleClass = new LibClassType({\n name: 'Tuple',\n module: Constants.arc4EncodedTypesModuleName,\n})\n\nexport const Arc4TupleGeneric = new GenericPType({\n name: 'Tuple',\n module: Constants.arc4EncodedTypesModuleName,\n parameterise(ptypes: PType[]) {\n codeInvariant(ptypes.length, `${this.name} expects 1 generic parameter`)\n codeInvariant(ptypes[0] instanceof TuplePType, `${this.name} generic parameter must be a native tuple type`)\n const encodedTypes = ptypes[0].items.map((itemType, index) => {\n codeInvariant(itemType instanceof ARC4EncodedType, `Item ${index} of ARC4 Tuple must be an ARC4 encoded type`)\n return itemType\n })\n return new ARC4TupleType({\n types: encodedTypes,\n })\n },\n})\n\nexport class ARC4TupleType extends ARC4EncodedType {\n readonly name = 'Tuple'\n readonly module = Constants.arc4EncodedTypesModuleName\n readonly singleton = false\n readonly items: ARC4EncodedType[]\n readonly sourceLocation: SourceLocation | undefined\n readonly encodedBitSize: bigint | null\n readonly nativeType: TuplePType\n\n constructor({ types, sourceLocation }: { types: ARC4EncodedType[]; sourceLocation?: SourceLocation }) {\n super()\n this.items = types\n this.sourceLocation = sourceLocation\n this.nativeType = new TuplePType({ items: this.items })\n this.encodedBitSize = ARC4EncodedType.calculateFixedBitSize(types)\n }\n\n get wtype(): wtypes.ARC4Tuple {\n return new wtypes.ARC4Tuple({\n types: this.items.map((t) => t.wtype),\n sourceLocation: this.sourceLocation,\n })\n }\n}\nexport const UintNGeneric = new GenericPType({\n name: 'UintN',\n module: Constants.arc4EncodedTypesModuleName,\n parameterise(typeArgs: PType[]): UintNType {\n codeInvariant(typeArgs.length === 1, 'UintNType type expects exactly one type parameter')\n const [size] = typeArgs\n codeInvariant(\n size instanceof NumericLiteralPType && size.literalValue,\n `Generic type param for UintNType must be a literal number. Inferred type is ${size.name}`,\n )\n\n return new UintNType({ n: size.literalValue })\n },\n})\nexport class UintNType extends ARC4EncodedType {\n readonly module = Constants.arc4EncodedTypesModuleName\n readonly n: bigint\n readonly name: string\n readonly singleton = false\n readonly wtype: wtypes.ARC4UIntN\n\n get encodedBitSize() {\n return this.n\n }\n\n get nativeType() {\n return this.n <= 64n ? uint64PType : biguintPType\n }\n\n constructor({ n, wtype, name }: { n: bigint; wtype?: wtypes.ARC4UIntN; name?: string }) {\n super()\n codeInvariant(n >= 8n && n <= 512n && n % 8n === 0n, 'n must be between 8 and 512, and a multiple of 8')\n this.n = n\n this.name = name ?? `UintN<${n}>`\n this.wtype = wtype ?? new wtypes.ARC4UIntN({ n: this.n })\n }\n}\nexport const UFixedNxMClass = new LibClassType({\n name: 'UFixedNxM',\n module: Constants.arc4EncodedTypesModuleName,\n})\nexport const UFixedNxMGeneric = new GenericPType({\n name: UFixedNxMClass.name,\n module: UFixedNxMClass.module,\n parameterise(typeArgs: PType[]) {\n codeInvariant(typeArgs.length === 2, `${this.name} expects exactly 2 generic type parameters`)\n const [n, m] = typeArgs\n codeInvariant(\n n instanceof NumericLiteralPType && n.literalValue,\n `Generic type param 'N' for ${this.name} must be a literal number. Inferred type is ${n.name}`,\n )\n codeInvariant(\n m instanceof NumericLiteralPType && m.literalValue,\n `Generic type param 'M' for UintNType must be a literal number. Inferred type is ${m.name}`,\n )\n return new UFixedNxMType({\n n: n.literalValue,\n m: m.literalValue,\n })\n },\n})\nexport class UFixedNxMType extends ARC4EncodedType {\n readonly module = Constants.arc4EncodedTypesModuleName\n readonly n: bigint\n readonly m: bigint\n readonly name: string\n readonly singleton = false\n readonly wtype: wtypes.ARC4UFixedNxM\n\n get encodedBitSize() {\n return this.n\n }\n\n get nativeType() {\n return this.n <= 64n ? uint64PType : biguintPType\n }\n\n constructor({ n, m }: { n: bigint; m: bigint }) {\n super()\n codeInvariant(n >= 8n && n <= 512n && n % 8n === 0n, 'n must be between 8 and 512, and a multiple of 8')\n codeInvariant(m >= 1n && m <= 160n, 'm must be between 1 and 160')\n this.n = n\n this.m = m\n this.name = `${UFixedNxMClass.name}<${n}, ${m}>`\n this.wtype = new wtypes.ARC4UFixedNxM({ n: this.n, m: this.m })\n }\n}\n\nexport const arc4ByteAlias = new UintNType({ n: 8n, wtype: wtypes.arc4ByteAliasWType, name: 'Byte' })\n\nexport const DynamicArrayConstructor = new LibClassType({\n name: 'DynamicArray',\n module: Constants.arc4EncodedTypesModuleName,\n})\nexport const DynamicArrayGeneric = new GenericPType({\n name: 'DynamicArray',\n module: Constants.arc4EncodedTypesModuleName,\n parameterise: (typeArgs: PType[]): DynamicArrayType => {\n codeInvariant(typeArgs.length === 1, 'DynamicArray type expects exactly one type parameter')\n const [elementType] = typeArgs\n codeInvariant(\n elementType instanceof ARC4EncodedType,\n `Generic type param for DynamicArray must be an ARC4 encoded type. Inferred type is ${elementType.name}`,\n )\n\n return new DynamicArrayType({ elementType: elementType })\n },\n})\nexport class DynamicArrayType extends ARC4ArrayType {\n readonly module = Constants.arc4EncodedTypesModuleName\n\n readonly immutable: boolean\n readonly name: string\n readonly singleton = false\n readonly sourceLocation: SourceLocation | undefined\n readonly nativeType: PType | undefined = undefined\n readonly wtype: wtypes.ARC4DynamicArray\n readonly encodedBitSize = null\n\n constructor({\n elementType,\n nativeType,\n sourceLocation,\n name,\n immutable,\n }: {\n elementType: ARC4EncodedType\n sourceLocation?: SourceLocation\n name?: string\n immutable?: boolean\n nativeType?: PType\n }) {\n super({\n elementType,\n })\n this.immutable = immutable ?? false\n this.nativeType = nativeType\n this.name = name ?? `DynamicArray<${elementType}>`\n this.sourceLocation = sourceLocation\n this.wtype = new wtypes.ARC4DynamicArray({\n elementType: this.elementType.wtype,\n sourceLocation: this.sourceLocation,\n immutable: this.immutable,\n nativeType: this.nativeType?.wtype,\n })\n }\n}\nexport const StaticArrayConstructor = new LibClassType({\n name: 'StaticArray',\n module: Constants.arc4EncodedTypesModuleName,\n})\nexport const StaticArrayGeneric = new GenericPType({\n name: 'StaticArray',\n module: Constants.arc4EncodedTypesModuleName,\n parameterise: (typeArgs: PType[]): StaticArrayType => {\n codeInvariant(typeArgs.length === 2, 'StaticArray type expects exactly one type parameters')\n const [elementType, arraySize] = typeArgs\n codeInvariant(\n elementType instanceof ARC4EncodedType,\n `Element type generic type param for StaticArray must be an ARC4 encoded type. Inferred type is ${elementType.name}`,\n )\n codeInvariant(\n arraySize instanceof NumericLiteralPType,\n `Array size generic type param for StaticArray must be a literal number. Inferred type is ${arraySize.name}`,\n )\n\n return new StaticArrayType({ arraySize: arraySize.literalValue, elementType })\n },\n})\nexport class StaticArrayType extends ARC4ArrayType {\n readonly module = Constants.arc4EncodedTypesModuleName\n readonly arraySize: bigint\n readonly immutable: boolean\n readonly name: string\n readonly singleton = false\n readonly sourceLocation: SourceLocation | undefined\n readonly wtype: wtypes.ARC4StaticArray\n readonly nativeType: PType | undefined\n readonly encodedBitSize: bigint | null\n constructor({\n elementType,\n arraySize,\n sourceLocation,\n wtype,\n name,\n immutable,\n nativeType,\n }: {\n immutable?: boolean\n elementType: ARC4EncodedType\n arraySize: bigint\n sourceLocation?: SourceLocation\n wtype?: ARC4StaticArray\n name?: string\n nativeType?: PType\n }) {\n codeInvariant(arraySize >= 0, 'StaticArray length must be greater than or equal to 0')\n super({ elementType })\n this.immutable = immutable ?? false\n this.arraySize = arraySize\n this.name = name ?? `StaticArray<${elementType}, ${arraySize}>`\n this.sourceLocation = sourceLocation\n this.nativeType = nativeType\n this.wtype =\n wtype ??\n new wtypes.ARC4StaticArray({\n elementType: this.elementType.wtype,\n arraySize: this.arraySize,\n immutable: this.immutable,\n nativeType: nativeType?.wtype,\n })\n this.encodedBitSize = ARC4EncodedType.calculateFixedBitSize(new Array(Number(arraySize)).fill(elementType))\n }\n}\nexport const arc4AddressAlias = new StaticArrayType({\n arraySize: BigInt(Constants.algo.addressLength),\n elementType: arc4ByteAlias,\n wtype: wtypes.arc4AddressAliasWType,\n immutable: true,\n name: 'Address',\n})\n\nexport const AddressClass = new LibClassType({\n name: 'Address',\n module: Constants.arc4EncodedTypesModuleName,\n})\n\nexport const StaticBytesGeneric = new GenericPType({\n name: 'StaticBytes',\n module: Constants.arc4EncodedTypesModuleName,\n parameterise: (typeArgs: PType[]): StaticBytesType => {\n codeInvariant(typeArgs.length === 1, 'StaticBytes type expects exactly one type parameter')\n const [length] = typeArgs\n\n codeInvariant(\n length instanceof NumericLiteralPType,\n `Length generic type param for StaticBytes must be a literal number. Inferred type is ${length.name}`,\n )\n return new StaticBytesType({\n length: length.literalValue,\n })\n },\n})\nexport const StaticBytesConstructor = new LibClassType({\n name: 'StaticBytes',\n module: Constants.arc4EncodedTypesModuleName,\n})\nexport class StaticBytesType extends StaticArrayType {\n constructor({ length }: { length: bigint }) {\n codeInvariant(length >= 0, 'StaticBytes length must be greater than or equal to 0')\n super({\n name: `StaticBytes<${length}>`,\n immutable: true,\n elementType: arc4ByteAlias,\n arraySize: length,\n nativeType: bytesPType,\n })\n }\n}\nexport const DynamicBytesConstructor = new LibClassType({\n name: 'DynamicBytes',\n module: Constants.arc4EncodedTypesModuleName,\n})\nexport const DynamicBytesType = new DynamicArrayType({\n name: `DynamicBytes`,\n immutable: true,\n elementType: arc4ByteAlias,\n nativeType: bytesPType,\n})\n\nexport const interpretAsArc4Function = new LibFunctionType({\n name: 'interpretAsArc4',\n module: Constants.arc4EncodedTypesModuleName,\n})\n\nexport const encodeArc4Function = new LibFunctionType({\n name: 'encodeArc4',\n module: Constants.arc4EncodedTypesModuleName,\n})\nexport const arc4EncodedLengthFunction = new LibFunctionType({\n name: 'arc4EncodedLength',\n module: Constants.arc4EncodedTypesModuleName,\n})\n\nexport const decodeArc4Function = new LibFunctionType({\n name: 'decodeArc4',\n module: Constants.arc4EncodedTypesModuleName,\n})\n\nexport const methodSelectorFunction = new LibFunctionType({\n name: 'methodSelector',\n module: Constants.arc4ModuleName,\n})\n","import type { SourceLocation } from '../awst/source-location'\nimport { CodeError } from '../errors'\nimport { logger } from '../logger'\nimport type { PType } from './ptypes'\nimport {\n accountPType,\n applicationPType,\n ArrayPType,\n assetPType,\n biguintPType,\n boolPType,\n bytesPType,\n GroupTransactionPType,\n NativeNumericType,\n numberPType,\n ObjectPType,\n stringPType,\n TuplePType,\n uint64PType,\n voidPType,\n} from './ptypes'\nimport {\n arc4BooleanType,\n ARC4EncodedType,\n arc4StringType,\n ARC4StructType,\n ARC4TupleType,\n DynamicArrayType,\n DynamicBytesType,\n UintNType,\n} from './ptypes/arc4-types'\n\nexport function ptypeToArc4PType(ptype: PType, sourceLocation: SourceLocation): PType {\n if (ptype instanceof ARC4EncodedType) return ptype\n if (ptype instanceof GroupTransactionPType) return ptype\n if (ptype.equals(applicationPType) || ptype.equals(accountPType) || ptype.equals(assetPType)) return ptype\n if (ptype.equals(voidPType)) return voidPType\n if (isArc4EncodableType(ptype)) {\n return ptypeToArc4EncodedType(ptype, sourceLocation)\n }\n logger.error(sourceLocation, `Unsupported type used in ABI method: ${ptype}`)\n return ptype\n}\n\nexport function isArc4EncodableType(ptype: PType): boolean {\n if (ptype instanceof ARC4EncodedType) return true\n if (ptype.equals(boolPType)) return true\n if (ptype.equals(uint64PType)) return true\n if (ptype.equals(biguintPType)) return true\n if (ptype.equals(bytesPType)) return true\n if (ptype.equals(stringPType)) return true\n if (ptype instanceof TuplePType) return ptype.items.every((i) => isArc4EncodableType(i))\n if (ptype instanceof ObjectPType) return ptype.orderedProperties().every(([, pt]) => isArc4EncodableType(pt))\n if (ptype instanceof ArrayPType) return isArc4EncodableType(ptype.elementType)\n return false\n}\nexport function ptypeToArc4EncodedType(ptype: TuplePType, sourceLocation: SourceLocation): ARC4TupleType\nexport function ptypeToArc4EncodedType(ptype: ObjectPType, sourceLocation: SourceLocation): ARC4StructType\nexport function ptypeToArc4EncodedType(ptype: ArrayPType, sourceLocation: SourceLocation): DynamicArrayType\nexport function ptypeToArc4EncodedType(ptype: PType, sourceLocation: SourceLocation): ARC4EncodedType\nexport function ptypeToArc4EncodedType(ptype: PType, sourceLocation: SourceLocation): ARC4EncodedType {\n if (ptype instanceof ARC4EncodedType) return ptype\n if (ptype.equals(boolPType)) return arc4BooleanType\n if (ptype.equals(uint64PType)) return new UintNType({ n: 64n })\n if (ptype.equals(biguintPType)) return new UintNType({ n: 512n })\n if (ptype.equals(bytesPType)) return DynamicBytesType\n if (ptype.equals(stringPType)) return arc4StringType\n if (ptype instanceof NativeNumericType) {\n throw new CodeError(numberPType.expressionMessage, { sourceLocation })\n }\n if (ptype instanceof ArrayPType)\n return new DynamicArrayType({\n elementType: ptypeToArc4EncodedType(ptype.elementType, sourceLocation),\n immutable: true,\n })\n\n if (ptype instanceof TuplePType) return new ARC4TupleType({ types: ptype.items.map((i) => ptypeToArc4EncodedType(i, sourceLocation)) })\n\n if (ptype instanceof ObjectPType)\n return new ARC4StructType({\n name: ptype.alias?.name ?? ptype.name,\n module: ptype.module,\n description: ptype.description,\n fields: Object.fromEntries(ptype.orderedProperties().map(([p, pt]) => [p, ptypeToArc4EncodedType(pt, sourceLocation)])),\n frozen: true,\n })\n\n throw new CodeError(`${ptype} cannot be encoded to an ARC4 type`, { sourceLocation })\n}\n","/* AUTOGENERATED FILE - DO NOT EDIT (see puya/scripts/generate_ts_nodes.py) */\nimport { classes } from 'polytype'\nimport type { Props } from '../typescript-helpers'\nimport type { ContractReference, LogicSigReference, OnCompletionAction } from './models'\nimport type { SourceLocation } from './source-location'\nimport type { TxnField } from './txn-fields'\nimport type { wtypes } from './wtypes'\n\nexport abstract class Node {\n constructor(props: Props<Node>) {\n this.sourceLocation = props.sourceLocation\n }\n readonly sourceLocation: SourceLocation\n}\nexport abstract class Statement extends Node {\n constructor(props: Props<Statement>) {\n super(props)\n }\n abstract accept<T>(visitor: StatementVisitor<T>): T\n}\nexport abstract class Expression extends Node {\n constructor(props: Props<Expression>) {\n super(props)\n this.wtype = props.wtype\n }\n readonly wtype: wtypes.WType\n abstract accept<T>(visitor: ExpressionVisitor<T>): T\n}\nexport class ExpressionStatement extends Statement {\n constructor(props: Props<ExpressionStatement>) {\n super(props)\n this.expr = props.expr\n this.sourceLocation = props.sourceLocation\n }\n readonly expr: Expression\n readonly sourceLocation: SourceLocation\n accept<T>(visitor: StatementVisitor<T>): T {\n return visitor.visitExpressionStatement(this)\n }\n}\nexport class Block extends Statement {\n constructor(props: Props<Block>) {\n super(props)\n this.body = props.body\n this.label = props.label\n this.comment = props.comment\n }\n readonly body: Array<Statement>\n readonly label: string | null\n readonly comment: string | null\n accept<T>(visitor: StatementVisitor<T>): T {\n return visitor.visitBlock(this)\n }\n}\nexport class Goto extends Statement {\n constructor(props: Props<Goto>) {\n super(props)\n this.target = props.target\n }\n readonly target: string\n accept<T>(visitor: StatementVisitor<T>): T {\n return visitor.visitGoto(this)\n }\n}\nexport class IfElse extends Statement {\n constructor(props: Props<IfElse>) {\n super(props)\n this.condition = props.condition\n this.ifBranch = props.ifBranch\n this.elseBranch = props.elseBranch\n }\n readonly condition: Expression\n readonly ifBranch: Block\n readonly elseBranch: Block | null\n accept<T>(visitor: StatementVisitor<T>): T {\n return visitor.visitIfElse(this)\n }\n}\nexport class Switch extends Statement {\n constructor(props: Props<Switch>) {\n super(props)\n this.value = props.value\n this.cases = props.cases\n this.defaultCase = props.defaultCase\n }\n readonly value: Expression\n readonly cases: Map<Expression, Block>\n readonly defaultCase: Block | null\n accept<T>(visitor: StatementVisitor<T>): T {\n return visitor.visitSwitch(this)\n }\n}\nexport class WhileLoop extends Statement {\n constructor(props: Props<WhileLoop>) {\n super(props)\n this.condition = props.condition\n this.loopBody = props.loopBody\n }\n readonly condition: Expression\n readonly loopBody: Block\n accept<T>(visitor: StatementVisitor<T>): T {\n return visitor.visitWhileLoop(this)\n }\n}\nexport class LoopExit extends Statement {\n constructor(props: Props<LoopExit>) {\n super(props)\n }\n accept<T>(visitor: StatementVisitor<T>): T {\n return visitor.visitLoopExit(this)\n }\n}\nexport class LoopContinue extends Statement {\n constructor(props: Props<LoopContinue>) {\n super(props)\n }\n accept<T>(visitor: StatementVisitor<T>): T {\n return visitor.visitLoopContinue(this)\n }\n}\nexport class ReturnStatement extends Statement {\n constructor(props: Props<ReturnStatement>) {\n super(props)\n this.value = props.value\n }\n readonly value: Expression | null\n accept<T>(visitor: StatementVisitor<T>): T {\n return visitor.visitReturnStatement(this)\n }\n}\nexport class AssertExpression extends Expression {\n constructor(props: Props<AssertExpression>) {\n super(props)\n this.condition = props.condition\n this.errorMessage = props.errorMessage\n this.wtype = props.wtype\n }\n readonly condition: Expression | null\n readonly errorMessage: string | null\n readonly wtype: wtypes.WType\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitAssertExpression(this)\n }\n}\nexport class IntegerConstant extends Expression {\n constructor(props: Props<IntegerConstant>) {\n super(props)\n this.wtype = props.wtype\n this.value = props.value\n this.tealAlias = props.tealAlias\n }\n readonly wtype: wtypes.WType\n readonly value: bigint\n readonly tealAlias: string | null\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitIntegerConstant(this)\n }\n}\nexport class DecimalConstant extends Expression {\n constructor(props: Props<DecimalConstant>) {\n super(props)\n this.wtype = props.wtype\n this.value = props.value\n }\n readonly wtype: wtypes.ARC4UFixedNxM\n readonly value: string\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitDecimalConstant(this)\n }\n}\nexport class BoolConstant extends Expression {\n constructor(props: Props<BoolConstant>) {\n super(props)\n this.value = props.value\n this.wtype = props.wtype\n }\n readonly value: boolean\n readonly wtype: wtypes.WType\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitBoolConstant(this)\n }\n}\nexport enum BytesEncoding {\n unknown = 'unknown',\n base16 = 'base16',\n base32 = 'base32',\n base64 = 'base64',\n utf8 = 'utf8',\n}\nexport class BytesConstant extends Expression {\n constructor(props: Props<BytesConstant>) {\n super(props)\n this.wtype = props.wtype\n this.value = props.value\n this.encoding = props.encoding\n }\n readonly wtype: wtypes.WType\n readonly value: Uint8Array\n readonly encoding: BytesEncoding\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitBytesConstant(this)\n }\n}\nexport class StringConstant extends Expression {\n constructor(props: Props<StringConstant>) {\n super(props)\n this.value = props.value\n this.wtype = props.wtype\n }\n readonly value: string\n readonly wtype: wtypes.WType\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitStringConstant(this)\n }\n}\nexport class VoidConstant extends Expression {\n constructor(props: Props<VoidConstant>) {\n super(props)\n this.wtype = props.wtype\n }\n readonly wtype: wtypes.WType\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitVoidConstant(this)\n }\n}\nexport class TemplateVar extends Expression {\n constructor(props: Props<TemplateVar>) {\n super(props)\n this.wtype = props.wtype\n this.name = props.name\n }\n readonly wtype: wtypes.WType\n readonly name: string\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitTemplateVar(this)\n }\n}\nexport class MethodConstant extends Expression {\n constructor(props: Props<MethodConstant>) {\n super(props)\n this.wtype = props.wtype\n this.value = props.value\n }\n readonly wtype: wtypes.WType\n readonly value: string\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitMethodConstant(this)\n }\n}\nexport class AddressConstant extends Expression {\n constructor(props: Props<AddressConstant>) {\n super(props)\n this.wtype = props.wtype\n this.value = props.value\n }\n readonly wtype: wtypes.WType\n readonly value: string\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitAddressConstant(this)\n }\n}\nexport class ARC4Encode extends Expression {\n constructor(props: Props<ARC4Encode>) {\n super(props)\n this.value = props.value\n this.wtype = props.wtype\n }\n readonly value: Expression\n readonly wtype: wtypes.ARC4Type\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitARC4Encode(this)\n }\n}\nexport class Copy extends Expression {\n constructor(props: Props<Copy>) {\n super(props)\n this.value = props.value\n this.wtype = props.wtype\n }\n readonly value: Expression\n readonly wtype: wtypes.WType\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitCopy(this)\n }\n}\nexport class ArrayConcat extends Expression {\n constructor(props: Props<ArrayConcat>) {\n super(props)\n this.left = props.left\n this.right = props.right\n this.wtype = props.wtype\n }\n readonly left: Expression\n readonly right: Expression\n readonly wtype: wtypes.ARC4DynamicArray | wtypes.StackArray\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitArrayConcat(this)\n }\n}\nexport class ArrayExtend extends Expression {\n constructor(props: Props<ArrayExtend>) {\n super(props)\n this.base = props.base\n this.other = props.other\n this.wtype = props.wtype\n }\n readonly base: Expression\n readonly other: Expression\n readonly wtype: wtypes.WType\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitArrayExtend(this)\n }\n}\nexport class ArrayPop extends Expression {\n constructor(props: Props<ArrayPop>) {\n super(props)\n this.base = props.base\n this.wtype = props.wtype\n }\n readonly base: Expression\n readonly wtype: wtypes.WType\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitArrayPop(this)\n }\n}\nexport class ArrayReplace extends Expression {\n constructor(props: Props<ArrayReplace>) {\n super(props)\n this.base = props.base\n this.index = props.index\n this.value = props.value\n this.wtype = props.wtype\n }\n readonly base: Expression\n readonly index: Expression\n readonly value: Expression\n readonly wtype: wtypes.StackArray\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitArrayReplace(this)\n }\n}\nexport class ARC4Decode extends Expression {\n constructor(props: Props<ARC4Decode>) {\n super(props)\n this.value = props.value\n }\n readonly value: Expression\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitARC4Decode(this)\n }\n}\nexport class IntrinsicCall extends Expression {\n constructor(props: Props<IntrinsicCall>) {\n super(props)\n this.opCode = props.opCode\n this.immediates = props.immediates\n this.stackArgs = props.stackArgs\n }\n readonly opCode: string\n readonly immediates: Array<string | bigint>\n readonly stackArgs: Array<Expression>\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitIntrinsicCall(this)\n }\n}\nexport class CreateInnerTransaction extends Expression {\n constructor(props: Props<CreateInnerTransaction>) {\n super(props)\n this.wtype = props.wtype\n this.fields = props.fields\n }\n readonly wtype: wtypes.WInnerTransactionFields\n readonly fields: Map<TxnField, Expression>\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitCreateInnerTransaction(this)\n }\n}\nexport class UpdateInnerTransaction extends Expression {\n constructor(props: Props<UpdateInnerTransaction>) {\n super(props)\n this.itxn = props.itxn\n this.fields = props.fields\n this.wtype = props.wtype\n }\n readonly itxn: Expression\n readonly fields: Map<TxnField, Expression>\n readonly wtype: wtypes.WType\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitUpdateInnerTransaction(this)\n }\n}\nexport class GroupTransactionReference extends Expression {\n constructor(props: Props<GroupTransactionReference>) {\n super(props)\n this.index = props.index\n this.wtype = props.wtype\n }\n readonly index: Expression\n readonly wtype: wtypes.WGroupTransaction\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitGroupTransactionReference(this)\n }\n}\nexport class CheckedMaybe extends Expression {\n constructor(props: Props<CheckedMaybe>) {\n super(props)\n this.expr = props.expr\n this.comment = props.comment\n this.wtype = props.wtype\n this.sourceLocation = props.sourceLocation\n }\n readonly expr: Expression\n readonly comment: string\n readonly wtype: wtypes.WType\n readonly sourceLocation: SourceLocation\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitCheckedMaybe(this)\n }\n}\nexport class TupleExpression extends Expression {\n constructor(props: Props<TupleExpression>) {\n super(props)\n this.items = props.items\n this.wtype = props.wtype\n }\n readonly items: Array<Expression>\n readonly wtype: wtypes.WTuple\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitTupleExpression(this)\n }\n}\nexport class TupleItemExpression extends Expression {\n constructor(props: Props<TupleItemExpression>) {\n super(props)\n this.base = props.base\n this.index = props.index\n this.wtype = props.wtype\n }\n readonly base: Expression\n readonly index: bigint\n readonly wtype: wtypes.WType\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitTupleItemExpression(this)\n }\n}\nexport class VarExpression extends Expression {\n constructor(props: Props<VarExpression>) {\n super(props)\n this.name = props.name\n }\n readonly name: string\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitVarExpression(this)\n }\n}\nexport class InnerTransactionField extends Expression {\n constructor(props: Props<InnerTransactionField>) {\n super(props)\n this.itxn = props.itxn\n this.field = props.field\n this.arrayIndex = props.arrayIndex\n }\n readonly itxn: Expression\n readonly field: TxnField\n readonly arrayIndex: Expression | null\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitInnerTransactionField(this)\n }\n}\nexport class SubmitInnerTransaction extends Expression {\n constructor(props: Props<SubmitInnerTransaction>) {\n super(props)\n this.itxns = props.itxns\n this.wtype = props.wtype\n }\n readonly itxns: Array<Expression>\n readonly wtype: wtypes.WType\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitSubmitInnerTransaction(this)\n }\n}\nexport class FieldExpression extends Expression {\n constructor(props: Props<FieldExpression>) {\n super(props)\n this.base = props.base\n this.name = props.name\n this.wtype = props.wtype\n }\n readonly base: Expression\n readonly name: string\n readonly wtype: wtypes.WType\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitFieldExpression(this)\n }\n}\nexport class IndexExpression extends Expression {\n constructor(props: Props<IndexExpression>) {\n super(props)\n this.base = props.base\n this.index = props.index\n }\n readonly base: Expression\n readonly index: Expression\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitIndexExpression(this)\n }\n}\nexport class SliceExpression extends Expression {\n constructor(props: Props<SliceExpression>) {\n super(props)\n this.base = props.base\n this.beginIndex = props.beginIndex\n this.endIndex = props.endIndex\n }\n readonly base: Expression\n readonly beginIndex: Expression | null\n readonly endIndex: Expression | null\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitSliceExpression(this)\n }\n}\nexport class IntersectionSliceExpression extends Expression {\n constructor(props: Props<IntersectionSliceExpression>) {\n super(props)\n this.base = props.base\n this.beginIndex = props.beginIndex\n this.endIndex = props.endIndex\n }\n readonly base: Expression\n readonly beginIndex: Expression | bigint | null\n readonly endIndex: Expression | bigint | null\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitIntersectionSliceExpression(this)\n }\n}\nexport class AppStateExpression extends Expression {\n constructor(props: Props<AppStateExpression>) {\n super(props)\n this.key = props.key\n this.existsAssertionMessage = props.existsAssertionMessage\n }\n readonly key: Expression\n readonly existsAssertionMessage: string | null\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitAppStateExpression(this)\n }\n}\nexport class AppAccountStateExpression extends Expression {\n constructor(props: Props<AppAccountStateExpression>) {\n super(props)\n this.key = props.key\n this.existsAssertionMessage = props.existsAssertionMessage\n this.account = props.account\n }\n readonly key: Expression\n readonly existsAssertionMessage: string | null\n readonly account: Expression\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitAppAccountStateExpression(this)\n }\n}\nexport class BoxValueExpression extends Expression {\n constructor(props: Props<BoxValueExpression>) {\n super(props)\n this.key = props.key\n this.existsAssertionMessage = props.existsAssertionMessage\n }\n readonly key: Expression\n readonly existsAssertionMessage: string | null\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitBoxValueExpression(this)\n }\n}\nexport class SingleEvaluation extends Expression {\n constructor(props: Props<SingleEvaluation>) {\n super(props)\n this.source = props.source\n this.id = props.id\n this.wtype = props.wtype\n this.sourceLocation = props.sourceLocation\n }\n readonly source: Expression\n readonly id: symbol\n readonly wtype: wtypes.WType\n readonly sourceLocation: SourceLocation\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitSingleEvaluation(this)\n }\n}\nexport class ReinterpretCast extends Expression {\n constructor(props: Props<ReinterpretCast>) {\n super(props)\n this.expr = props.expr\n }\n readonly expr: Expression\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitReinterpretCast(this)\n }\n}\nexport class NewArray extends Expression {\n constructor(props: Props<NewArray>) {\n super(props)\n this.wtype = props.wtype\n this.values = props.values\n }\n readonly wtype: wtypes.ARC4DynamicArray | wtypes.ARC4StaticArray | wtypes.ReferenceArray | wtypes.StackArray\n readonly values: Array<Expression>\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitNewArray(this)\n }\n}\nexport class ArrayLength extends Expression {\n constructor(props: Props<ArrayLength>) {\n super(props)\n this.array = props.array\n this.wtype = props.wtype\n }\n readonly array: Expression\n readonly wtype: wtypes.WType\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitArrayLength(this)\n }\n}\nexport class ConditionalExpression extends Expression {\n constructor(props: Props<ConditionalExpression>) {\n super(props)\n this.condition = props.condition\n this.trueExpr = props.trueExpr\n this.falseExpr = props.falseExpr\n this.wtype = props.wtype\n }\n readonly condition: Expression\n readonly trueExpr: Expression\n readonly falseExpr: Expression\n readonly wtype: wtypes.WType\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitConditionalExpression(this)\n }\n}\nexport class AssignmentStatement extends Statement {\n constructor(props: Props<AssignmentStatement>) {\n super(props)\n this.target = props.target\n this.value = props.value\n }\n readonly target:\n | VarExpression\n | FieldExpression\n | IndexExpression\n | TupleExpression\n | AppStateExpression\n | AppAccountStateExpression\n | BoxValueExpression\n readonly value: Expression\n accept<T>(visitor: StatementVisitor<T>): T {\n return visitor.visitAssignmentStatement(this)\n }\n}\nexport class AssignmentExpression extends Expression {\n constructor(props: Props<AssignmentExpression>) {\n super(props)\n this.target = props.target\n this.value = props.value\n this.wtype = props.wtype\n }\n readonly target:\n | VarExpression\n | FieldExpression\n | IndexExpression\n | TupleExpression\n | AppStateExpression\n | AppAccountStateExpression\n | BoxValueExpression\n readonly value: Expression\n readonly wtype: wtypes.WType\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitAssignmentExpression(this)\n }\n}\nexport enum EqualityComparison {\n eq = '==',\n ne = '!=',\n}\nexport enum NumericComparison {\n eq = '==',\n ne = '!=',\n lt = '<',\n lte = '<=',\n gt = '>',\n gte = '>=',\n}\nexport class NumericComparisonExpression extends Expression {\n constructor(props: Props<NumericComparisonExpression>) {\n super(props)\n this.wtype = props.wtype\n this.lhs = props.lhs\n this.operator = props.operator\n this.rhs = props.rhs\n }\n readonly wtype: wtypes.WType\n readonly lhs: Expression\n readonly operator: NumericComparison\n readonly rhs: Expression\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitNumericComparisonExpression(this)\n }\n}\nexport class BytesComparisonExpression extends Expression {\n constructor(props: Props<BytesComparisonExpression>) {\n super(props)\n this.wtype = props.wtype\n this.lhs = props.lhs\n this.operator = props.operator\n this.rhs = props.rhs\n }\n readonly wtype: wtypes.WType\n readonly lhs: Expression\n readonly operator: EqualityComparison\n readonly rhs: Expression\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitBytesComparisonExpression(this)\n }\n}\nexport class SubroutineID {\n constructor(props: Props<SubroutineID>) {\n this.target = props.target\n }\n readonly target: string\n}\nexport class InstanceMethodTarget {\n constructor(props: Props<InstanceMethodTarget>) {\n this.memberName = props.memberName\n }\n readonly memberName: string\n}\nexport class InstanceSuperMethodTarget {\n constructor(props: Props<InstanceSuperMethodTarget>) {\n this.memberName = props.memberName\n }\n readonly memberName: string\n}\nexport class ContractMethodTarget {\n constructor(props: Props<ContractMethodTarget>) {\n this.cref = props.cref\n this.memberName = props.memberName\n }\n readonly cref: ContractReference\n readonly memberName: string\n}\nexport class CallArg {\n constructor(props: Props<CallArg>) {\n this.name = props.name\n this.value = props.value\n }\n readonly name: string | null\n readonly value: Expression\n}\nexport class SubroutineCallExpression extends Expression {\n constructor(props: Props<SubroutineCallExpression>) {\n super(props)\n this.target = props.target\n this.args = props.args\n }\n readonly target: SubroutineID | InstanceMethodTarget | InstanceSuperMethodTarget | ContractMethodTarget\n readonly args: Array<CallArg>\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitSubroutineCallExpression(this)\n }\n}\nexport class PuyaLibData {\n constructor(props: Props<PuyaLibData>) {\n this.id = props.id\n this.params = props.params\n this.wtype = props.wtype\n }\n readonly id: string\n readonly params: Map<string, wtypes.WType>\n readonly wtype: wtypes.WType\n}\nexport enum PuyaLibFunction {\n ensureBudget = 'ensure_budget',\n isSubstring = 'is_substring',\n}\nexport class PuyaLibCall extends Expression {\n constructor(props: Props<PuyaLibCall>) {\n super(props)\n this.func = props.func\n this.args = props.args\n this.wtype = props.wtype\n }\n readonly func: PuyaLibFunction\n readonly args: Array<CallArg>\n readonly wtype: wtypes.WType\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitPuyaLibCall(this)\n }\n}\nexport enum UInt64BinaryOperator {\n add = '+',\n sub = '-',\n mult = '*',\n floorDiv = '//',\n mod = '%',\n pow = '**',\n lshift = '<<',\n rshift = '>>',\n bitOr = '|',\n bitXor = '^',\n bitAnd = '&',\n}\nexport enum BigUIntBinaryOperator {\n add = '+',\n sub = '-',\n mult = '*',\n floorDiv = '//',\n mod = '%',\n bitOr = '|',\n bitXor = '^',\n bitAnd = '&',\n}\nexport enum BytesBinaryOperator {\n add = '+',\n bitOr = '|',\n bitXor = '^',\n bitAnd = '&',\n}\nexport enum BytesUnaryOperator {\n bitInvert = '~',\n}\nexport enum UInt64UnaryOperator {\n bitInvert = '~',\n}\nexport enum UInt64PostfixUnaryOperator {\n increment = '++',\n decrement = '--',\n}\nexport class UInt64UnaryOperation extends Expression {\n constructor(props: Props<UInt64UnaryOperation>) {\n super(props)\n this.op = props.op\n this.expr = props.expr\n this.wtype = props.wtype\n }\n readonly op: UInt64UnaryOperator\n readonly expr: Expression\n readonly wtype: wtypes.WType\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitUInt64UnaryOperation(this)\n }\n}\nexport class UInt64PostfixUnaryOperation extends Expression {\n constructor(props: Props<UInt64PostfixUnaryOperation>) {\n super(props)\n this.op = props.op\n this.target = props.target\n this.wtype = props.wtype\n }\n readonly op: UInt64PostfixUnaryOperator\n readonly target:\n | VarExpression\n | FieldExpression\n | IndexExpression\n | TupleExpression\n | AppStateExpression\n | AppAccountStateExpression\n | BoxValueExpression\n readonly wtype: wtypes.WType\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitUInt64PostfixUnaryOperation(this)\n }\n}\nexport enum BigUIntPostfixUnaryOperator {\n increment = '++',\n decrement = '--',\n}\nexport class BigUIntPostfixUnaryOperation extends Expression {\n constructor(props: Props<BigUIntPostfixUnaryOperation>) {\n super(props)\n this.op = props.op\n this.target = props.target\n this.wtype = props.wtype\n }\n readonly op: BigUIntPostfixUnaryOperator\n readonly target: Expression\n readonly wtype: wtypes.WType\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitBigUIntPostfixUnaryOperation(this)\n }\n}\nexport class BytesUnaryOperation extends Expression {\n constructor(props: Props<BytesUnaryOperation>) {\n super(props)\n this.op = props.op\n this.expr = props.expr\n this.wtype = props.wtype\n }\n readonly op: BytesUnaryOperator\n readonly expr: Expression\n readonly wtype: wtypes.WType\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitBytesUnaryOperation(this)\n }\n}\nexport class UInt64BinaryOperation extends Expression {\n constructor(props: Props<UInt64BinaryOperation>) {\n super(props)\n this.left = props.left\n this.op = props.op\n this.right = props.right\n this.wtype = props.wtype\n }\n readonly left: Expression\n readonly op: UInt64BinaryOperator\n readonly right: Expression\n readonly wtype: wtypes.WType\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitUInt64BinaryOperation(this)\n }\n}\nexport class BigUIntBinaryOperation extends Expression {\n constructor(props: Props<BigUIntBinaryOperation>) {\n super(props)\n this.left = props.left\n this.op = props.op\n this.right = props.right\n this.wtype = props.wtype\n }\n readonly left: Expression\n readonly op: BigUIntBinaryOperator\n readonly right: Expression\n readonly wtype: wtypes.WType\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitBigUIntBinaryOperation(this)\n }\n}\nexport class BytesBinaryOperation extends Expression {\n constructor(props: Props<BytesBinaryOperation>) {\n super(props)\n this.left = props.left\n this.op = props.op\n this.right = props.right\n this.wtype = props.wtype\n }\n readonly left: Expression\n readonly op: BytesBinaryOperator\n readonly right: Expression\n readonly wtype: wtypes.WType\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitBytesBinaryOperation(this)\n }\n}\nexport enum BinaryBooleanOperator {\n and = 'and',\n or = 'or',\n}\nexport class BooleanBinaryOperation extends Expression {\n constructor(props: Props<BooleanBinaryOperation>) {\n super(props)\n this.left = props.left\n this.op = props.op\n this.right = props.right\n this.wtype = props.wtype\n }\n readonly left: Expression\n readonly op: BinaryBooleanOperator\n readonly right: Expression\n readonly wtype: wtypes.WType\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitBooleanBinaryOperation(this)\n }\n}\nexport class Not extends Expression {\n constructor(props: Props<Not>) {\n super(props)\n this.expr = props.expr\n this.wtype = props.wtype\n }\n readonly expr: Expression\n readonly wtype: wtypes.WType\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitNot(this)\n }\n}\nexport class UInt64AugmentedAssignment extends Statement {\n constructor(props: Props<UInt64AugmentedAssignment>) {\n super(props)\n this.target = props.target\n this.op = props.op\n this.value = props.value\n }\n readonly target:\n | VarExpression\n | FieldExpression\n | IndexExpression\n | TupleExpression\n | AppStateExpression\n | AppAccountStateExpression\n | BoxValueExpression\n readonly op: UInt64BinaryOperator\n readonly value: Expression\n accept<T>(visitor: StatementVisitor<T>): T {\n return visitor.visitUInt64AugmentedAssignment(this)\n }\n}\nexport class BigUIntAugmentedAssignment extends Statement {\n constructor(props: Props<BigUIntAugmentedAssignment>) {\n super(props)\n this.target = props.target\n this.op = props.op\n this.value = props.value\n }\n readonly target:\n | VarExpression\n | FieldExpression\n | IndexExpression\n | TupleExpression\n | AppStateExpression\n | AppAccountStateExpression\n | BoxValueExpression\n readonly op: BigUIntBinaryOperator\n readonly value: Expression\n accept<T>(visitor: StatementVisitor<T>): T {\n return visitor.visitBigUIntAugmentedAssignment(this)\n }\n}\nexport class BytesAugmentedAssignment extends Statement {\n constructor(props: Props<BytesAugmentedAssignment>) {\n super(props)\n this.target = props.target\n this.op = props.op\n this.value = props.value\n }\n readonly target:\n | VarExpression\n | FieldExpression\n | IndexExpression\n | TupleExpression\n | AppStateExpression\n | AppAccountStateExpression\n | BoxValueExpression\n readonly op: BytesBinaryOperator\n readonly value: Expression\n accept<T>(visitor: StatementVisitor<T>): T {\n return visitor.visitBytesAugmentedAssignment(this)\n }\n}\nexport class Emit extends Expression {\n constructor(props: Props<Emit>) {\n super(props)\n this.signature = props.signature\n this.value = props.value\n this.wtype = props.wtype\n }\n readonly signature: string\n readonly value: Expression\n readonly wtype: wtypes.WType\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitEmit(this)\n }\n}\nexport class Range extends Expression {\n constructor(props: Props<Range>) {\n super(props)\n this.wtype = props.wtype\n this.start = props.start\n this.stop = props.stop\n this.step = props.step\n }\n readonly wtype: wtypes.WType\n readonly start: Expression\n readonly stop: Expression\n readonly step: Expression\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitRange(this)\n }\n}\nexport class Enumeration extends Expression {\n constructor(props: Props<Enumeration>) {\n super(props)\n this.expr = props.expr\n this.wtype = props.wtype\n }\n readonly expr: Expression\n readonly wtype: wtypes.WEnumeration\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitEnumeration(this)\n }\n}\nexport class Reversed extends Expression {\n constructor(props: Props<Reversed>) {\n super(props)\n this.expr = props.expr\n this.wtype = props.wtype\n }\n readonly expr: Expression\n readonly wtype: wtypes.WType\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitReversed(this)\n }\n}\nexport class ForInLoop extends Statement {\n constructor(props: Props<ForInLoop>) {\n super(props)\n this.sequence = props.sequence\n this.items = props.items\n this.loopBody = props.loopBody\n }\n readonly sequence: Expression\n readonly items:\n | VarExpression\n | FieldExpression\n | IndexExpression\n | TupleExpression\n | AppStateExpression\n | AppAccountStateExpression\n | BoxValueExpression\n readonly loopBody: Block\n accept<T>(visitor: StatementVisitor<T>): T {\n return visitor.visitForInLoop(this)\n }\n}\nexport class StateGet extends Expression {\n constructor(props: Props<StateGet>) {\n super(props)\n this.field = props.field\n this.default = props.default\n this.wtype = props.wtype\n }\n readonly field: AppStateExpression | AppAccountStateExpression | BoxValueExpression\n readonly default: Expression\n readonly wtype: wtypes.WType\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitStateGet(this)\n }\n}\nexport class StateGetEx extends Expression {\n constructor(props: Props<StateGetEx>) {\n super(props)\n this.field = props.field\n this.wtype = props.wtype\n }\n readonly field: AppStateExpression | AppAccountStateExpression | BoxValueExpression\n readonly wtype: wtypes.WTuple\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitStateGetEx(this)\n }\n}\nexport class StateExists extends Expression {\n constructor(props: Props<StateExists>) {\n super(props)\n this.field = props.field\n this.wtype = props.wtype\n }\n readonly field: AppStateExpression | AppAccountStateExpression | BoxValueExpression\n readonly wtype: wtypes.WType\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitStateExists(this)\n }\n}\nexport class StateDelete extends Expression {\n constructor(props: Props<StateDelete>) {\n super(props)\n this.field = props.field\n this.wtype = props.wtype\n }\n readonly field: AppStateExpression | AppAccountStateExpression | BoxValueExpression\n readonly wtype: wtypes.WType\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitStateDelete(this)\n }\n}\nexport class NewStruct extends Expression {\n constructor(props: Props<NewStruct>) {\n super(props)\n this.wtype = props.wtype\n this.values = props.values\n }\n readonly wtype: wtypes.WStructType | wtypes.ARC4Struct\n readonly values: Map<string, Expression>\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitNewStruct(this)\n }\n}\nexport abstract class RootNode extends Node {\n constructor(props: Props<RootNode>) {\n super(props)\n }\n abstract accept<T>(visitor: RootNodeVisitor<T>): T\n}\nexport class SubroutineArgument {\n constructor(props: Props<SubroutineArgument>) {\n this.name = props.name\n this.sourceLocation = props.sourceLocation\n this.wtype = props.wtype\n }\n readonly name: string\n readonly sourceLocation: SourceLocation\n readonly wtype: wtypes.WType\n}\nexport class MethodDocumentation {\n constructor(props: Props<MethodDocumentation>) {\n this.description = props.description\n this.args = props.args\n this.returns = props.returns\n }\n readonly description: string | null\n readonly args: Map<string, string>\n readonly returns: string | null\n}\nexport abstract class _Function extends Node {\n constructor(props: Props<_Function>) {\n super(props)\n this.args = props.args\n this.returnType = props.returnType\n this.body = props.body\n this.documentation = props.documentation\n this.inline = props.inline\n }\n readonly args: Array<SubroutineArgument>\n readonly returnType: wtypes.WType\n readonly body: Block\n readonly documentation: MethodDocumentation\n readonly inline: boolean | null\n}\nexport class Subroutine extends classes(_Function, RootNode) {\n constructor(props: Props<Subroutine>) {\n super([props], [props])\n this.id = props.id\n this.name = props.name\n }\n readonly id: string\n readonly name: string\n accept<T>(visitor: RootNodeVisitor<T>): T {\n return visitor.visitSubroutine(this)\n }\n}\nexport abstract class ContractMemberNode extends Node {\n constructor(props: Props<ContractMemberNode>) {\n super(props)\n }\n abstract accept<T>(visitor: ContractMemberNodeVisitor<T>): T\n}\nexport class ContractMethod extends classes(_Function, ContractMemberNode) {\n constructor(props: Props<ContractMethod>) {\n super([props], [props])\n this.cref = props.cref\n this.memberName = props.memberName\n this.arc4MethodConfig = props.arc4MethodConfig\n }\n readonly cref: ContractReference\n readonly memberName: string\n readonly arc4MethodConfig: ARC4BareMethodConfig | ARC4ABIMethodConfig | null\n accept<T>(visitor: ContractMemberNodeVisitor<T>): T {\n return visitor.visitContractMethod(this)\n }\n}\nexport enum AppStorageKind {\n appGlobal = 1,\n accountLocal = 2,\n box = 3,\n}\nexport class AppStorageDefinition extends ContractMemberNode {\n constructor(props: Props<AppStorageDefinition>) {\n super(props)\n this.memberName = props.memberName\n this.kind = props.kind\n this.storageWtype = props.storageWtype\n this.keyWtype = props.keyWtype\n this.key = props.key\n this.description = props.description\n }\n readonly memberName: string\n readonly kind: AppStorageKind\n readonly storageWtype: wtypes.WType\n readonly keyWtype: wtypes.WType | null\n readonly key: BytesConstant\n readonly description: string | null\n accept<T>(visitor: ContractMemberNodeVisitor<T>): T {\n return visitor.visitAppStorageDefinition(this)\n }\n}\nexport class LogicSignature extends RootNode {\n constructor(props: Props<LogicSignature>) {\n super(props)\n this.id = props.id\n this.shortName = props.shortName\n this.program = props.program\n this.docstring = props.docstring\n this.reservedScratchSpace = props.reservedScratchSpace\n this.avmVersion = props.avmVersion\n }\n readonly id: LogicSigReference\n readonly shortName: string\n readonly program: Subroutine\n readonly docstring: string | null\n readonly reservedScratchSpace: Set<bigint>\n readonly avmVersion: bigint | null\n accept<T>(visitor: RootNodeVisitor<T>): T {\n return visitor.visitLogicSignature(this)\n }\n}\nexport class CompiledContract extends Expression {\n constructor(props: Props<CompiledContract>) {\n super(props)\n this.contract = props.contract\n this.allocationOverrides = props.allocationOverrides\n this.prefix = props.prefix\n this.templateVariables = props.templateVariables\n }\n readonly contract: ContractReference\n readonly allocationOverrides: Map<TxnField, Expression>\n readonly prefix: string | null\n readonly templateVariables: Map<string, Expression>\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitCompiledContract(this)\n }\n}\nexport class CompiledLogicSig extends Expression {\n constructor(props: Props<CompiledLogicSig>) {\n super(props)\n this.logicSig = props.logicSig\n this.prefix = props.prefix\n this.templateVariables = props.templateVariables\n }\n readonly logicSig: LogicSigReference\n readonly prefix: string | null\n readonly templateVariables: Map<string, Expression>\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitCompiledLogicSig(this)\n }\n}\nexport class StateTotals {\n constructor(props: Props<StateTotals>) {\n this.globalUints = props.globalUints\n this.localUints = props.localUints\n this.globalBytes = props.globalBytes\n this.localBytes = props.localBytes\n }\n readonly globalUints: bigint | null\n readonly localUints: bigint | null\n readonly globalBytes: bigint | null\n readonly localBytes: bigint | null\n}\nexport class ARC4Router extends Expression {\n constructor(props: Props<ARC4Router>) {\n super(props)\n this.wtype = props.wtype\n }\n readonly wtype: wtypes.WType\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitARC4Router(this)\n }\n}\nexport class Contract extends RootNode {\n constructor(props: Props<Contract>) {\n super(props)\n this.id = props.id\n this.name = props.name\n this.description = props.description\n this.methodResolutionOrder = props.methodResolutionOrder\n this.approvalProgram = props.approvalProgram\n this.clearProgram = props.clearProgram\n this.methods = props.methods\n this.appState = props.appState\n this.stateTotals = props.stateTotals\n this.reservedScratchSpace = props.reservedScratchSpace\n this.avmVersion = props.avmVersion\n }\n readonly id: ContractReference\n readonly name: string\n readonly description: string | null\n readonly methodResolutionOrder: Array<ContractReference>\n readonly approvalProgram: ContractMethod\n readonly clearProgram: ContractMethod\n readonly methods: Array<ContractMethod>\n readonly appState: Array<AppStorageDefinition>\n readonly stateTotals: StateTotals | null\n readonly reservedScratchSpace: Set<bigint>\n readonly avmVersion: bigint | null\n accept<T>(visitor: RootNodeVisitor<T>): T {\n return visitor.visitContract(this)\n }\n}\nexport enum ARC4CreateOption {\n allow = 1,\n require = 2,\n disallow = 3,\n}\nexport class ARC4BareMethodConfig {\n constructor(props: Props<ARC4BareMethodConfig>) {\n this.sourceLocation = props.sourceLocation\n this.allowedCompletionTypes = props.allowedCompletionTypes\n this.create = props.create\n }\n readonly sourceLocation: SourceLocation\n readonly allowedCompletionTypes: Array<OnCompletionAction>\n readonly create: ARC4CreateOption\n}\nexport class ABIMethodArgConstantDefault {\n constructor(props: Props<ABIMethodArgConstantDefault>) {\n this.value = props.value\n }\n readonly value: Expression\n}\nexport class ABIMethodArgMemberDefault {\n constructor(props: Props<ABIMethodArgMemberDefault>) {\n this.name = props.name\n }\n readonly name: string\n}\nexport class ARC4ABIMethodConfig {\n constructor(props: Props<ARC4ABIMethodConfig>) {\n this.sourceLocation = props.sourceLocation\n this.allowedCompletionTypes = props.allowedCompletionTypes\n this.create = props.create\n this.name = props.name\n this.readonly = props.readonly\n this.defaultArgs = props.defaultArgs\n }\n readonly sourceLocation: SourceLocation\n readonly allowedCompletionTypes: Array<OnCompletionAction>\n readonly create: ARC4CreateOption\n readonly name: string\n readonly readonly: boolean\n readonly defaultArgs: Map<string, ABIMethodArgMemberDefault | ABIMethodArgConstantDefault>\n}\nexport type LValue = VarExpression | FieldExpression | IndexExpression | TupleExpression | AppStateExpression | AppAccountStateExpression\nexport type Constant = IntegerConstant | BoolConstant | BytesConstant | StringConstant\nexport type AWST = Contract | LogicSignature | Subroutine\nexport type ARC4MethodConfig = ARC4BareMethodConfig | ARC4ABIMethodConfig\nexport const concreteNodes = {\n expressionStatement: ExpressionStatement,\n block: Block,\n goto: Goto,\n ifElse: IfElse,\n switch: Switch,\n whileLoop: WhileLoop,\n loopExit: LoopExit,\n loopContinue: LoopContinue,\n returnStatement: ReturnStatement,\n assertExpression: AssertExpression,\n integerConstant: IntegerConstant,\n decimalConstant: DecimalConstant,\n boolConstant: BoolConstant,\n bytesConstant: BytesConstant,\n stringConstant: StringConstant,\n voidConstant: VoidConstant,\n templateVar: TemplateVar,\n methodConstant: MethodConstant,\n addressConstant: AddressConstant,\n aRC4Encode: ARC4Encode,\n copy: Copy,\n arrayConcat: ArrayConcat,\n arrayExtend: ArrayExtend,\n arrayPop: ArrayPop,\n arrayReplace: ArrayReplace,\n aRC4Decode: ARC4Decode,\n intrinsicCall: IntrinsicCall,\n createInnerTransaction: CreateInnerTransaction,\n updateInnerTransaction: UpdateInnerTransaction,\n groupTransactionReference: GroupTransactionReference,\n checkedMaybe: CheckedMaybe,\n tupleExpression: TupleExpression,\n tupleItemExpression: TupleItemExpression,\n varExpression: VarExpression,\n innerTransactionField: InnerTransactionField,\n submitInnerTransaction: SubmitInnerTransaction,\n fieldExpression: FieldExpression,\n indexExpression: IndexExpression,\n sliceExpression: SliceExpression,\n intersectionSliceExpression: IntersectionSliceExpression,\n appStateExpression: AppStateExpression,\n appAccountStateExpression: AppAccountStateExpression,\n boxValueExpression: BoxValueExpression,\n singleEvaluation: SingleEvaluation,\n reinterpretCast: ReinterpretCast,\n newArray: NewArray,\n arrayLength: ArrayLength,\n conditionalExpression: ConditionalExpression,\n assignmentStatement: AssignmentStatement,\n assignmentExpression: AssignmentExpression,\n numericComparisonExpression: NumericComparisonExpression,\n bytesComparisonExpression: BytesComparisonExpression,\n subroutineID: SubroutineID,\n instanceMethodTarget: InstanceMethodTarget,\n instanceSuperMethodTarget: InstanceSuperMethodTarget,\n contractMethodTarget: ContractMethodTarget,\n callArg: CallArg,\n subroutineCallExpression: SubroutineCallExpression,\n puyaLibData: PuyaLibData,\n puyaLibCall: PuyaLibCall,\n uInt64UnaryOperation: UInt64UnaryOperation,\n uInt64PostfixUnaryOperation: UInt64PostfixUnaryOperation,\n bigUIntPostfixUnaryOperation: BigUIntPostfixUnaryOperation,\n bytesUnaryOperation: BytesUnaryOperation,\n uInt64BinaryOperation: UInt64BinaryOperation,\n bigUIntBinaryOperation: BigUIntBinaryOperation,\n bytesBinaryOperation: BytesBinaryOperation,\n booleanBinaryOperation: BooleanBinaryOperation,\n not: Not,\n uInt64AugmentedAssignment: UInt64AugmentedAssignment,\n bigUIntAugmentedAssignment: BigUIntAugmentedAssignment,\n bytesAugmentedAssignment: BytesAugmentedAssignment,\n emit: Emit,\n range: Range,\n enumeration: Enumeration,\n reversed: Reversed,\n forInLoop: ForInLoop,\n stateGet: StateGet,\n stateGetEx: StateGetEx,\n stateExists: StateExists,\n stateDelete: StateDelete,\n newStruct: NewStruct,\n subroutineArgument: SubroutineArgument,\n methodDocumentation: MethodDocumentation,\n subroutine: Subroutine,\n contractMethod: ContractMethod,\n appStorageDefinition: AppStorageDefinition,\n logicSignature: LogicSignature,\n compiledContract: CompiledContract,\n compiledLogicSig: CompiledLogicSig,\n stateTotals: StateTotals,\n aRC4Router: ARC4Router,\n contract: Contract,\n aRC4BareMethodConfig: ARC4BareMethodConfig,\n aBIMethodArgConstantDefault: ABIMethodArgConstantDefault,\n aBIMethodArgMemberDefault: ABIMethodArgMemberDefault,\n aRC4ABIMethodConfig: ARC4ABIMethodConfig,\n uInt64Constant: IntegerConstant,\n bigUIntConstant: IntegerConstant,\n} as const\nexport interface ExpressionVisitor<T> {\n visitAssertExpression(expression: AssertExpression): T\n visitIntegerConstant(expression: IntegerConstant): T\n visitDecimalConstant(expression: DecimalConstant): T\n visitBoolConstant(expression: BoolConstant): T\n visitBytesConstant(expression: BytesConstant): T\n visitStringConstant(expression: StringConstant): T\n visitVoidConstant(expression: VoidConstant): T\n visitTemplateVar(expression: TemplateVar): T\n visitMethodConstant(expression: MethodConstant): T\n visitAddressConstant(expression: AddressConstant): T\n visitARC4Encode(expression: ARC4Encode): T\n visitCopy(expression: Copy): T\n visitArrayConcat(expression: ArrayConcat): T\n visitArrayExtend(expression: ArrayExtend): T\n visitArrayPop(expression: ArrayPop): T\n visitArrayReplace(expression: ArrayReplace): T\n visitARC4Decode(expression: ARC4Decode): T\n visitIntrinsicCall(expression: IntrinsicCall): T\n visitCreateInnerTransaction(expression: CreateInnerTransaction): T\n visitUpdateInnerTransaction(expression: UpdateInnerTransaction): T\n visitGroupTransactionReference(expression: GroupTransactionReference): T\n visitCheckedMaybe(expression: CheckedMaybe): T\n visitTupleExpression(expression: TupleExpression): T\n visitTupleItemExpression(expression: TupleItemExpression): T\n visitVarExpression(expression: VarExpression): T\n visitInnerTransactionField(expression: InnerTransactionField): T\n visitSubmitInnerTransaction(expression: SubmitInnerTransaction): T\n visitFieldExpression(expression: FieldExpression): T\n visitIndexExpression(expression: IndexExpression): T\n visitSliceExpression(expression: SliceExpression): T\n visitIntersectionSliceExpression(expression: IntersectionSliceExpression): T\n visitAppStateExpression(expression: AppStateExpression): T\n visitAppAccountStateExpression(expression: AppAccountStateExpression): T\n visitBoxValueExpression(expression: BoxValueExpression): T\n visitSingleEvaluation(expression: SingleEvaluation): T\n visitReinterpretCast(expression: ReinterpretCast): T\n visitNewArray(expression: NewArray): T\n visitArrayLength(expression: ArrayLength): T\n visitConditionalExpression(expression: ConditionalExpression): T\n visitAssignmentExpression(expression: AssignmentExpression): T\n visitNumericComparisonExpression(expression: NumericComparisonExpression): T\n visitBytesComparisonExpression(expression: BytesComparisonExpression): T\n visitSubroutineCallExpression(expression: SubroutineCallExpression): T\n visitPuyaLibCall(expression: PuyaLibCall): T\n visitUInt64UnaryOperation(expression: UInt64UnaryOperation): T\n visitUInt64PostfixUnaryOperation(expression: UInt64PostfixUnaryOperation): T\n visitBigUIntPostfixUnaryOperation(expression: BigUIntPostfixUnaryOperation): T\n visitBytesUnaryOperation(expression: BytesUnaryOperation): T\n visitUInt64BinaryOperation(expression: UInt64BinaryOperation): T\n visitBigUIntBinaryOperation(expression: BigUIntBinaryOperation): T\n visitBytesBinaryOperation(expression: BytesBinaryOperation): T\n visitBooleanBinaryOperation(expression: BooleanBinaryOperation): T\n visitNot(expression: Not): T\n visitEmit(expression: Emit): T\n visitRange(expression: Range): T\n visitEnumeration(expression: Enumeration): T\n visitReversed(expression: Reversed): T\n visitStateGet(expression: StateGet): T\n visitStateGetEx(expression: StateGetEx): T\n visitStateExists(expression: StateExists): T\n visitStateDelete(expression: StateDelete): T\n visitNewStruct(expression: NewStruct): T\n visitCompiledContract(expression: CompiledContract): T\n visitCompiledLogicSig(expression: CompiledLogicSig): T\n visitARC4Router(expression: ARC4Router): T\n}\nexport interface StatementVisitor<T> {\n visitExpressionStatement(statement: ExpressionStatement): T\n visitBlock(statement: Block): T\n visitGoto(statement: Goto): T\n visitIfElse(statement: IfElse): T\n visitSwitch(statement: Switch): T\n visitWhileLoop(statement: WhileLoop): T\n visitLoopExit(statement: LoopExit): T\n visitLoopContinue(statement: LoopContinue): T\n visitReturnStatement(statement: ReturnStatement): T\n visitAssignmentStatement(statement: AssignmentStatement): T\n visitUInt64AugmentedAssignment(statement: UInt64AugmentedAssignment): T\n visitBigUIntAugmentedAssignment(statement: BigUIntAugmentedAssignment): T\n visitBytesAugmentedAssignment(statement: BytesAugmentedAssignment): T\n visitForInLoop(statement: ForInLoop): T\n}\nexport interface ContractMemberNodeVisitor<T> {\n visitContractMethod(contractMemberNode: ContractMethod): T\n visitAppStorageDefinition(contractMemberNode: AppStorageDefinition): T\n}\nexport interface RootNodeVisitor<T> {\n visitSubroutine(rootNode: Subroutine): T\n visitLogicSignature(rootNode: LogicSignature): T\n visitContract(rootNode: Contract): T\n}\n","import { CodeError } from '../errors'\nimport type { DeliberateAny, Props } from '../typescript-helpers'\nimport { codeInvariant, instanceOfAny, invariant } from '../util'\nimport type { Expression, Statement } from './nodes'\nimport {\n ArrayLength,\n ArrayReplace,\n AssignmentExpression,\n AssignmentStatement,\n BigUIntBinaryOperation,\n Block,\n BoolConstant,\n BooleanBinaryOperation,\n BytesComparisonExpression,\n BytesConstant,\n BytesEncoding,\n CheckedMaybe,\n concreteNodes,\n Copy,\n ExpressionStatement,\n IntegerConstant,\n MethodDocumentation,\n Not,\n NumericComparisonExpression,\n ReinterpretCast,\n SingleEvaluation,\n StringConstant,\n TupleExpression,\n TupleItemExpression,\n UInt64BinaryOperation,\n VoidConstant,\n} from './nodes'\nimport type { SourceLocation } from './source-location'\nimport { wtypes } from './wtypes'\n\ntype ConcreteNodes = typeof concreteNodes\n\nconst explicitNodeFactory = {\n voidConstant(props: { sourceLocation: SourceLocation }): VoidConstant {\n return new VoidConstant({\n ...props,\n wtype: wtypes.voidWType,\n })\n },\n bytesConstant(props: {\n value: Uint8Array\n encoding?: BytesEncoding\n sourceLocation: SourceLocation\n wtype?: wtypes.WType\n }): BytesConstant {\n return new BytesConstant({\n encoding: BytesEncoding.unknown,\n wtype: wtypes.bytesWType,\n ...props,\n })\n },\n stringConstant(props: { value: string; sourceLocation: SourceLocation; wtype?: wtypes.WType }): StringConstant {\n return new StringConstant({\n ...props,\n wtype: props.wtype ?? wtypes.stringWType,\n })\n },\n uInt64Constant({\n value,\n tealAlias,\n sourceLocation,\n }: {\n value: bigint\n tealAlias?: string\n sourceLocation: SourceLocation\n }): IntegerConstant {\n if (value < 0n || value >= 2n ** 64n) {\n throw new CodeError(`uint64 overflow or underflow: ${value}`, { sourceLocation })\n }\n return new IntegerConstant({\n value,\n sourceLocation,\n wtype: wtypes.uint64WType,\n tealAlias: tealAlias ?? null,\n })\n },\n bigUIntConstant({ value, sourceLocation }: { value: bigint; sourceLocation: SourceLocation }): IntegerConstant {\n if (value < 0n || value >= 2n ** 512n) {\n throw new CodeError(`biguint overflow or underflow: ${value}`, { sourceLocation })\n }\n return new IntegerConstant({\n value,\n sourceLocation,\n wtype: wtypes.biguintWType,\n tealAlias: null,\n })\n },\n not(props: { expr: Expression; sourceLocation: SourceLocation }): Not {\n return new Not({\n ...props,\n wtype: wtypes.boolWType,\n })\n },\n uInt64BinaryOperation(props: Omit<Props<UInt64BinaryOperation>, 'wtype'>): UInt64BinaryOperation {\n return new UInt64BinaryOperation({\n ...props,\n wtype: wtypes.uint64WType,\n })\n },\n bigUIntBinaryOperation(props: Omit<Props<BigUIntBinaryOperation>, 'wtype'>): BigUIntBinaryOperation {\n return new BigUIntBinaryOperation({\n ...props,\n wtype: wtypes.biguintWType,\n })\n },\n numericComparisonExpression(props: Omit<Props<NumericComparisonExpression>, 'wtype'>): NumericComparisonExpression {\n return new NumericComparisonExpression({\n ...props,\n wtype: wtypes.boolWType,\n })\n },\n bytesComparisonExpression(props: Omit<Props<BytesComparisonExpression>, 'wtype'>): BytesComparisonExpression {\n codeInvariant(\n props.lhs.wtype.equals(props.rhs.wtype),\n `Operands type mismatch. lhs is ${props.lhs.wtype}, rhs is ${props.rhs.wtype}`,\n props.sourceLocation,\n )\n return new BytesComparisonExpression({\n ...props,\n wtype: wtypes.boolWType,\n })\n },\n boolConstant(props: { value: boolean; sourceLocation: SourceLocation; wtype?: wtypes.WType }): BoolConstant {\n return new BoolConstant({\n ...props,\n wtype: props.wtype ?? wtypes.boolWType,\n })\n },\n singleEvaluation({ source }: { source: Expression }) {\n return new SingleEvaluation({\n id: Symbol(),\n sourceLocation: source.sourceLocation,\n wtype: source.wtype,\n source,\n })\n },\n expressionStatement({ expr }: { expr: Expression }) {\n if (expr instanceof AssignmentExpression) {\n return new AssignmentStatement({\n ...expr,\n })\n }\n\n return new ExpressionStatement({\n expr,\n sourceLocation: expr.sourceLocation,\n })\n },\n block(\n { sourceLocation, comment, label }: { sourceLocation: SourceLocation; comment?: string; label?: string },\n ...statements: Array<Statement | Statement[]>\n ) {\n return new Block({\n body: statements.flat(),\n sourceLocation,\n comment: comment ?? null,\n label: label ?? null,\n })\n },\n booleanBinaryOperation(props: Omit<Props<BooleanBinaryOperation>, 'wtype'>) {\n return new BooleanBinaryOperation({\n ...props,\n wtype: wtypes.boolWType,\n })\n },\n assignmentExpression({\n target,\n value,\n sourceLocation,\n }: {\n target: AssignmentExpression['target']\n value: Expression\n sourceLocation: SourceLocation\n }) {\n codeInvariant(target.wtype.equals(value.wtype), `Assignment target type ${target.wtype} must match assigned value type ${value.wtype}`)\n return new AssignmentExpression({\n target,\n value,\n wtype: value.wtype,\n sourceLocation,\n })\n },\n assignmentStatement({\n target,\n value,\n sourceLocation,\n }: {\n target: AssignmentStatement['target']\n value: Expression\n sourceLocation: SourceLocation\n }) {\n codeInvariant(target.wtype.equals(value.wtype), `Assignment target type ${target.wtype} must match assigned value type ${value.wtype}`)\n return new AssignmentStatement({\n target,\n value,\n sourceLocation,\n })\n },\n tupleExpression(props: Omit<Props<TupleExpression>, 'wtype'> & { wtype?: wtypes.WTuple }) {\n return new TupleExpression({\n ...props,\n wtype: props.wtype ?? new wtypes.WTuple({ types: props.items.map((i) => i.wtype), immutable: true }),\n })\n },\n methodDocumentation(props?: { description?: string | null; args?: Map<string, string>; returns?: string | null }) {\n return new MethodDocumentation({\n args: props?.args ?? new Map(),\n description: props?.description ?? null,\n returns: props?.returns ?? null,\n })\n },\n copy({ value, sourceLocation }: { value: Expression; sourceLocation: SourceLocation }) {\n return new Copy({\n value,\n sourceLocation,\n wtype: value.wtype,\n })\n },\n checkedMaybe({ expr, comment }: { expr: Expression; comment: string }) {\n invariant(expr.wtype instanceof wtypes.WTuple && expr.wtype.types.length === 2, 'expr WType must be WTuple of 2')\n invariant(expr.wtype.types[1].equals(wtypes.boolWType), '2nd tuple item type must be bool')\n return new CheckedMaybe({\n expr,\n comment,\n sourceLocation: expr.sourceLocation,\n wtype: expr.wtype.types[0],\n })\n },\n tupleItemExpression(props: Omit<Props<TupleItemExpression>, 'wtype'>) {\n invariant(\n instanceOfAny(props.base.wtype, wtypes.WTuple, wtypes.ARC4Tuple) && props.base.wtype.types.length > Number(props.index),\n 'expr.base must be tuple type with length greater than index',\n )\n return new TupleItemExpression({\n ...props,\n wtype: props.base.wtype.types[Number(props.index)],\n })\n },\n reinterpretCast({ expr, wtype, sourceLocation }: { expr: Expression; wtype: wtypes.WType; sourceLocation: SourceLocation }) {\n if (expr instanceof BytesConstant) {\n return new BytesConstant({\n ...expr,\n wtype,\n sourceLocation,\n })\n }\n\n return new ReinterpretCast({\n expr,\n wtype,\n sourceLocation,\n })\n },\n arrayLength({ array, sourceLocation }: { array: Expression; sourceLocation: SourceLocation }) {\n return new ArrayLength({\n array,\n sourceLocation,\n wtype: wtypes.uint64WType,\n })\n },\n arrayReplace({\n base,\n index,\n value,\n sourceLocation,\n }: {\n base: Expression\n index: Expression\n value: Expression\n sourceLocation: SourceLocation\n }) {\n invariant(base.wtype instanceof wtypes.StackArray, 'base must have wtype of StackArray', base.sourceLocation)\n return new ArrayReplace({\n base,\n index,\n value,\n sourceLocation,\n wtype: base.wtype,\n })\n },\n} satisfies { [key in keyof ConcreteNodes]?: (...args: DeliberateAny[]) => DeliberateAny }\n\ntype ExplicitNodeFactory = typeof explicitNodeFactory\n\ntype DefaultNodeFactory<TKey extends keyof ConcreteNodes> = (\n ...args: ConstructorParameters<ConcreteNodes[TKey]>\n) => InstanceType<ConcreteNodes[TKey]>\n\nexport type NodeFactory = {\n [key in keyof ConcreteNodes]: FactoryMethod<key>\n}\n\ntype FactoryMethod<TKey extends keyof ConcreteNodes> = TKey extends keyof ExplicitNodeFactory\n ? ExplicitNodeFactory[TKey]\n : DefaultNodeFactory<TKey>\n\nfunction isNodeName(value: string | symbol): value is keyof ConcreteNodes {\n return typeof value === 'string' && Object.hasOwn(concreteNodes, value)\n}\n\nfunction hasExplicitFactory(value: string): value is keyof typeof explicitNodeFactory {\n return Object.hasOwn(explicitNodeFactory, value)\n}\n\nexport const nodeFactory: NodeFactory = new Proxy({} as unknown as NodeFactory, {\n get(_, property) {\n invariant(isNodeName(property), 'Property must be the name of a concrete node')\n\n if (hasExplicitFactory(property)) {\n return explicitNodeFactory[property]\n }\n return (props: DeliberateAny) => new concreteNodes[property](props)\n },\n})\n","import * as A from 'arcsecond'\nimport * as arc4Types from '../awst_build/ptypes/arc4-types'\n\nconst peek = A.lookAhead(A.regex(/^./))\n\nconst integer = A.regex(/^\\d+/).map((x) => BigInt(x))\n\nconst uint = A.sequenceOf([A.str('uint'), integer]).map(([_, n]) => new arc4Types.UintNType({ n: n }))\nconst ufixed = A.sequenceOf([A.str('ufixed'), integer, A.char('x'), integer]).map(([_, n, __, m]) => new arc4Types.UFixedNxMType({ n, m }))\n\nconst simpleType = (name: string, ptype: arc4Types.ARC4EncodedType) => A.str(name).map(() => ptype)\n\nconst scalarType = A.choice([\n uint,\n ufixed,\n simpleType('byte', arc4Types.arc4ByteAlias),\n simpleType('string', arc4Types.arc4StringType),\n simpleType('bool', arc4Types.arc4BooleanType),\n simpleType('address', arc4Types.arc4AddressAlias),\n simpleType('account', new arc4Types.UintNType({ n: 8n })),\n simpleType('asset', new arc4Types.UintNType({ n: 8n })),\n simpleType('application', new arc4Types.UintNType({ n: 8n })),\n])\n\nclass TypeBuilder {\n #stack: arc4Types.ARC4EncodedType[][] = [[]]\n\n private get workingSet() {\n return this.#stack[this.#stack.length - 1]\n }\n\n get hasOpenTuple() {\n return this.#stack.length > 1\n }\n\n enterTuple() {\n this.#stack.push([])\n }\n exitTuple() {\n if (this.#stack.length === 1) {\n throw new Error('Invalid operation, no tuple has been entered')\n }\n const tupleType = new arc4Types.ARC4TupleType({ types: this.workingSet })\n this.#stack.pop()\n this.workingSet.push(tupleType)\n }\n\n get result() {\n if (this.#stack.length > 1) {\n throw new Error(`Tuple has not been closed`)\n }\n return this.workingSet\n }\n\n push(ptype: arc4Types.ARC4EncodedType) {\n this.workingSet.push(ptype)\n }\n\n replaceLast(replacer: (lastType: arc4Types.ARC4EncodedType) => arc4Types.ARC4EncodedType) {\n if (this.workingSet.length === 0) {\n throw new Error('Invalid operation, no type to replace')\n }\n const latest = this.workingSet.pop()!\n this.workingSet.push(replacer(latest))\n }\n}\n\nconst arc4Type = A.coroutine((parse) => {\n try {\n enum States {\n BeginTuple,\n EndTuple,\n ArrayBrackets,\n TypeOrBeginTuple,\n AfterType,\n }\n let state = States.TypeOrBeginTuple\n\n const typeBuilder = new TypeBuilder()\n while (true) {\n const next = parse(A.possibly(peek))\n if (next === null) {\n return typeBuilder.result\n }\n\n switch (state) {\n case States.TypeOrBeginTuple: {\n if (next === '(') {\n state = States.BeginTuple\n } else {\n const type = parse(scalarType)\n typeBuilder.push(type)\n state = States.AfterType\n }\n break\n }\n case States.BeginTuple: {\n parse(A.char('('))\n typeBuilder.enterTuple()\n state = States.TypeOrBeginTuple\n break\n }\n case States.EndTuple: {\n parse(A.char(')'))\n if (!typeBuilder.hasOpenTuple) {\n return parse(A.fail(\"Char ')' has no matching opening '('\"))\n }\n typeBuilder.exitTuple()\n state = States.AfterType\n break\n }\n case States.ArrayBrackets: {\n parse(A.char('['))\n const size = parse(A.possibly(integer))\n parse(A.char(']'))\n\n typeBuilder.replaceLast((previous) =>\n size === null\n ? new arc4Types.DynamicArrayType({ elementType: previous })\n : new arc4Types.StaticArrayType({ elementType: previous, arraySize: size }),\n )\n state = States.AfterType\n break\n }\n case States.AfterType: {\n switch (next) {\n case ',':\n parse(A.char(','))\n state = States.TypeOrBeginTuple\n continue\n case '[':\n state = States.ArrayBrackets\n continue\n case ')':\n state = States.EndTuple\n continue\n default:\n // Parse the next char rather than just peeking at it so the fail below happens at the right position\n parse(A.anyChar)\n parse(A.fail(`Expecting ',', '[', or ')', but got ${next}`))\n }\n }\n }\n }\n } catch (e) {\n if (e instanceof Error) {\n return parse(A.fail(e.message))\n } else {\n throw e\n }\n }\n})\n\nexport class Arc4ParseError extends Error {\n constructor(\n message: string,\n public index: number,\n ) {\n super(message)\n }\n}\nexport const parseArc4Type = (signature: string): arc4Types.ARC4EncodedType => {\n const parseResult = arc4Type.run(signature)\n if (parseResult.isError) {\n const maybeErrorMessage = /^ParseError \\(position \\d+\\): (.*)/.exec(parseResult.error)\n const message = maybeErrorMessage ? maybeErrorMessage[1] : parseResult.error\n throw new Arc4ParseError(message, parseResult.index)\n } else {\n if (parseResult.result.length === 0) {\n throw new Arc4ParseError('Signature contained no types', 0)\n } else if (parseResult.result.length > 1) {\n throw new Arc4ParseError('Signature contained more than one type. Wrap multiple types in parentheses to declare a tuple type', 0)\n }\n return parseResult.result[0]\n }\n}\n","import type { awst } from '../awst'\nimport type { SourceLocation } from '../awst/source-location'\nimport { CodeError, InternalError, throwError } from '../errors'\nimport type { DeliberateAny } from '../typescript-helpers'\nimport type { InstanceBuilder, InstanceExpressionBuilder, NodeBuilder } from './eb'\n\nimport type { GenericPType } from './ptypes'\nimport { PType } from './ptypes'\nimport type { SymbolName } from './symbol-name'\n\ntype ValueExpressionBuilderCtor<TPType extends PType> = { new (expr: awst.Expression, ptype: PType): InstanceExpressionBuilder<TPType> }\ntype SingletonExpressionBuilderCtor = { new (sourceLocation: SourceLocation, ptype: PType): NodeBuilder }\n\ntype PTypeClass<T extends PType = PType> = { new (...args: DeliberateAny): T }\n\nexport class TypeRegistry {\n get hasRegistrations() {\n return this.types.size > 0 || this.genericTypes.size > 0\n }\n\n private readonly singletonEbs: Map<PType | PTypeClass, SingletonExpressionBuilderCtor> = new Map()\n private readonly instanceEbs: Map<PType | PTypeClass, ValueExpressionBuilderCtor<PType>> = new Map()\n private readonly types: Set<PType | PTypeClass> = new Set()\n private readonly genericTypes: Set<GenericPType<PType>> = new Set()\n\n register({\n ptype,\n singletonEb,\n instanceEb,\n }:\n | {\n ptype: PType | PTypeClass\n singletonEb: SingletonExpressionBuilderCtor\n instanceEb?: undefined\n }\n | {\n ptype: PType | PTypeClass\n singletonEb?: undefined\n instanceEb: ValueExpressionBuilderCtor<PType>\n }) {\n if (this.types.has(ptype) || this.genericTypes.has(ptype as GenericPType))\n throw new InternalError(`${ptype} has already been registered`)\n this.types.add(ptype)\n if (singletonEb) {\n this.singletonEbs.set(ptype, singletonEb)\n }\n if (instanceEb) {\n this.instanceEbs.set(ptype, instanceEb)\n }\n }\n registerGeneric<T extends PType>({\n generic,\n ptype,\n instanceEb,\n }: {\n generic: GenericPType<T>\n ptype: PTypeClass<T>\n instanceEb: ValueExpressionBuilderCtor<PType>\n }) {\n if (this.genericTypes.has(generic) || this.types.has(ptype)) throw new InternalError(`${ptype} has already been registered`)\n this.genericTypes.add(generic)\n this.instanceEbs.set(ptype, instanceEb)\n }\n\n /**\n * Try to resolve a symbol name to a singleton ptype\n * @param symbolName The name of the symbol\n */\n tryResolveSingletonName(symbolName: SymbolName): PType | undefined {\n for (const v of this.singletonEbs.keys()) if (v instanceof PType && v.fullName === symbolName.fullName) return v\n return undefined\n }\n\n /**\n * Try to resolve a symbol name to an instance ptype\n * @param symbolName The name of the symbol\n */\n tryResolveInstancePType(symbolName: SymbolName): PType | undefined {\n for (const v of this.instanceEbs.keys()) {\n if (v instanceof PType && v.fullName === symbolName.fullName) return v\n }\n return undefined\n }\n\n resolveInstancePType(symbolName: SymbolName, sourceLocation: SourceLocation): PType {\n const ptype = this.tryResolveInstancePType(symbolName)\n if (!ptype) {\n if (symbolName.module.startsWith('typescript/lib')) {\n throw new CodeError(`${symbolName} type is not supported`, { sourceLocation })\n }\n throw new InternalError(`Cannot resolve ptype for symbol ${symbolName}`, {\n sourceLocation,\n })\n }\n return ptype\n }\n\n tryGetSingletonEb(ptype: PType, sourceLocation: SourceLocation): NodeBuilder | undefined {\n const eb = this.singletonEbs.get(ptype)\n if (eb) {\n return new eb(sourceLocation, ptype)\n }\n for (const [pt, eb] of this.singletonEbs.entries()) {\n if (typeof pt === 'function' && ptype instanceof pt) {\n return new eb(sourceLocation, ptype)\n }\n }\n\n return undefined\n }\n\n getSingletonEb(ptype: PType, sourceLocation: SourceLocation): NodeBuilder {\n return (\n this.tryGetSingletonEb(ptype, sourceLocation) ??\n throwError(\n new InternalError(`No singleton eb registered for ${ptype}`, {\n sourceLocation,\n }),\n )\n )\n }\n getInstanceEb(expression: awst.Expression, ptype: PType): InstanceBuilder {\n return (\n this.tryGetInstanceEb(expression, ptype) ??\n throwError(\n new InternalError(`No InstanceBuilder registered for ${ptype}`, {\n sourceLocation: expression.sourceLocation,\n }),\n )\n )\n }\n tryGetInstanceEb(expression: awst.Expression, ptype: PType): InstanceBuilder | undefined {\n const eb = this.instanceEbs.get(ptype)\n if (eb) {\n return new eb(expression, ptype)\n }\n for (const [pt, eb] of this.instanceEbs.entries()) {\n if (typeof pt === 'function' && ptype instanceof pt) {\n return new eb(expression, ptype)\n }\n }\n return undefined\n }\n\n resolveGenericPType(symbolName: SymbolName, typeArgs: PType[], sourceLocation: SourceLocation) {\n const genericType = this.tryResolveGenericPType(symbolName, typeArgs)\n if (genericType) return genericType\n throw new CodeError(`${symbolName} could not be resolved to a generic type`, { sourceLocation })\n }\n tryResolveGenericPType(symbolName: SymbolName, typeArgs: PType[]): PType | undefined {\n for (const pt of this.genericTypes.values()) {\n if (pt.fullName === symbolName.fullName) {\n return pt.parameterise(typeArgs)\n }\n }\n return undefined\n }\n}\nexport const typeRegistry = new TypeRegistry()\n\nexport function instanceEb(expr: awst.Expression, ptype: PType) {\n return typeRegistry.getInstanceEb(expr, ptype)\n}\n","import type { Constant, Expression } from './nodes'\nimport { BoolConstant, BytesConstant, IntegerConstant, StringConstant } from './nodes'\n\nexport function isConstant(expr: Expression): expr is Constant {\n return expr instanceof StringConstant || expr instanceof BytesConstant || expr instanceof IntegerConstant || expr instanceof BoolConstant\n}\n\nexport class SymbolToNumber {\n #symbols = new Map<symbol, number>()\n\n forSymbol(sym: symbol): [number, boolean] {\n let val = this.#symbols.get(sym)\n if (val !== undefined) {\n return [val, false]\n }\n val = this.#symbols.size\n this.#symbols.set(sym, val)\n return [val, true]\n }\n}\n","import { awst } from '../../awst'\nimport { nodeFactory } from '../../awst/node-factory'\nimport type { Expression } from '../../awst/nodes'\nimport { TupleItemExpression } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { CodeError, NotSupported } from '../../errors'\nimport { logger } from '../../logger'\nimport type { DecoratorData } from '../models/decorator-data'\nimport type { LibClassType, PType, PTypeOrClass } from '../ptypes'\nimport { instanceEb } from '../type-registry'\n\nexport enum BuilderComparisonOp {\n eq = '===',\n ne = '!==',\n lt = '<',\n lte = '<=',\n gt = '>',\n gte = '>=',\n}\nexport enum BuilderUnaryOp {\n inc = '++',\n dec = '--',\n bit_inv = '~',\n neg = '-',\n pos = '+',\n}\n\nexport enum BuilderBinaryOp {\n add = '+',\n sub = '-',\n mult = '*',\n div = '/',\n mod = '%',\n pow = '**',\n matMult = '@',\n lshift = '<<',\n rshift = '>>',\n bitOr = '|',\n bitXor = '^',\n bitAnd = '&',\n /**\n * Eval left, return right\n * let y = 2\n * // x == 4\n * const x = (y * 3, y - 2)\n */\n comma = ',',\n}\n\nexport abstract class NodeBuilder {\n constructor(public readonly sourceLocation: SourceLocation) {}\n\n abstract readonly ptype: PType | undefined\n\n public get typeDescription(): string {\n if (this.ptype) {\n return this.ptype.name\n }\n return this.constructor.name\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n throw new NotSupported(`Calling ${this.typeDescription}`, {\n sourceLocation,\n })\n }\n\n newCall(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): InstanceBuilder {\n throw new NotSupported(`Calling ${this.typeDescription} with the new keyword`, { sourceLocation })\n }\n\n taggedTemplate(head: string, spans: ReadonlyArray<readonly [InstanceBuilder, string]>, sourceLocation: SourceLocation): InstanceBuilder {\n throw new NotSupported(`Tagged templates on ${this.typeDescription}`, {\n sourceLocation,\n })\n }\n\n hasProperty(_name: string): boolean {\n return false\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n throw new NotSupported(`Accessing member ${name} on ${this.typeDescription}`, {\n sourceLocation,\n })\n }\n\n indexAccess(index: InstanceBuilder, sourceLocation: SourceLocation): NodeBuilder {\n throw new NotSupported(`Indexing ${this.typeDescription}`, {\n sourceLocation,\n })\n }\n\n boolEval(sourceLocation: SourceLocation, negate = false): awst.Expression {\n throw new NotSupported(`Boolean evaluation of ${this.typeDescription}`, {\n sourceLocation,\n })\n }\n}\n\nexport abstract class InstanceBuilder<TPType extends PType = PType> extends NodeBuilder {\n constructor(sourceLocation: SourceLocation) {\n super(sourceLocation)\n }\n abstract get ptype(): TPType\n abstract resolve(): awst.Expression\n abstract resolveLValue(): awst.LValue\n\n /**\n * Returns a boolean indicating if the current builder can be resolved to the target type.\n * Resolvable meaning it may have a different type, but would be assignable to the target type in TypeScript\n * without a cast.\n * @param ptype\n */\n resolvableToPType(ptype: PTypeOrClass): boolean {\n return this.ptype.equalsOrInstanceOf(ptype)\n }\n\n /**\n * Attempts to resolve the value held by this builder to the target type.\n * @param ptype\n */\n resolveToPType(ptype: PTypeOrClass): InstanceBuilder {\n if (this.ptype.equalsOrInstanceOf(ptype)) {\n return this\n }\n throw CodeError.cannotResolveToType({ sourceType: this.ptype, targetType: ptype, sourceLocation: this.sourceLocation })\n }\n\n singleEvaluation(): InstanceBuilder {\n const expr = this.resolve()\n if (expr instanceof awst.VarExpression) {\n return this\n }\n return instanceEb(\n nodeFactory.singleEvaluation({\n source: this.resolve(),\n }),\n this.ptype,\n )\n }\n\n toBytes(sourceLocation: SourceLocation): awst.Expression {\n throw new NotSupported(`Serializing ${this.typeDescription} to bytes`, {\n sourceLocation,\n })\n }\n\n toString(sourceLocation: SourceLocation): awst.Expression {\n throw new NotSupported(`Converting ${this.typeDescription} to string`, {\n sourceLocation,\n })\n }\n\n prefixUnaryOp(op: BuilderUnaryOp, sourceLocation: SourceLocation): InstanceBuilder {\n throw new NotSupported(`Prefix Unary ${op} op on ${this.typeDescription}`, {\n sourceLocation,\n })\n }\n\n postfixUnaryOp(op: BuilderUnaryOp, sourceLocation: SourceLocation): InstanceBuilder {\n throw new NotSupported(`Postfix Unary ${op} op on ${this.typeDescription}`, {\n sourceLocation,\n })\n }\n\n compare(other: InstanceBuilder, op: BuilderComparisonOp, sourceLocation: SourceLocation): InstanceBuilder {\n throw new NotSupported(`${op} on ${this.typeDescription}`, {\n sourceLocation,\n })\n }\n\n binaryOp(other: InstanceBuilder, op: BuilderBinaryOp, sourceLocation: SourceLocation): InstanceBuilder {\n throw new NotSupported(`${op} on ${this.typeDescription}`, {\n sourceLocation,\n })\n }\n\n iterate(sourceLocation: SourceLocation): awst.Expression {\n throw new NotSupported(`Iteration on ${this.typeDescription}`, {\n sourceLocation,\n })\n }\n\n augmentedAssignment(other: InstanceBuilder, op: BuilderBinaryOp, sourceLocation: SourceLocation): InstanceBuilder {\n throw new NotSupported(`Augmented assignment to ${this.typeDescription} with ${op}`, {\n sourceLocation,\n })\n }\n\n reinterpretCast(target: PType, sourceLocation?: SourceLocation) {\n return instanceEb(\n nodeFactory.reinterpretCast({\n expr: this.resolve(),\n sourceLocation: sourceLocation ?? this.sourceLocation,\n wtype: target.wtypeOrThrow,\n }),\n target,\n )\n }\n}\n\nexport abstract class ClassBuilder extends NodeBuilder {\n abstract readonly ptype: LibClassType\n\n abstract newCall(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): InstanceBuilder\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n throw new CodeError(`${this.typeDescription} should be called with the \\`new\\` keyword`, { sourceLocation })\n }\n}\n\nexport abstract class FunctionBuilder extends NodeBuilder {\n readonly ptype: PType | undefined = undefined\n\n constructor(location: SourceLocation) {\n super(location)\n }\n\n abstract call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder\n}\n\nexport abstract class ParameterlessFunctionBuilder extends FunctionBuilder {\n constructor(\n private readonly expression: Expression,\n private readonly definition: (expr: Expression, sourceLocation: SourceLocation) => NodeBuilder,\n ) {\n super(expression.sourceLocation)\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n if (args.length) logger.error(sourceLocation, 'Function expects no arguments')\n if (typeArgs.length) logger.error(sourceLocation, 'Function expects type arguments')\n return this.definition(this.expression, sourceLocation)\n }\n}\n\nexport abstract class InstanceExpressionBuilder<TPType extends PType> extends InstanceBuilder<PType> {\n #ptype: TPType\n\n get ptype(): TPType {\n return this.#ptype\n }\n\n constructor(\n protected _expr: awst.Expression,\n ptype: TPType,\n ) {\n super(_expr.sourceLocation)\n this.#ptype = ptype\n }\n\n resolve() {\n return this._expr\n }\n\n resolveLValue() {\n return requireLValue(this.resolve())\n }\n}\n\nexport function requireLValue(expr: awst.Expression): awst.LValue {\n const lValueNodes = [\n awst.VarExpression,\n awst.FieldExpression,\n awst.IndexExpression,\n awst.TupleExpression,\n awst.AppStateExpression,\n awst.AppAccountStateExpression,\n awst.BoxValueExpression,\n ]\n if (expr instanceof TupleItemExpression) {\n throw new CodeError('Expression is not a valid assignment target - object is immutable', { sourceLocation: expr.sourceLocation })\n }\n if (!lValueNodes.some((l) => expr instanceof l)) {\n throw new CodeError(`Expression is not a valid assignment target`, {\n sourceLocation: expr.sourceLocation,\n })\n }\n if (expr instanceof awst.IndexExpression || expr instanceof awst.FieldExpression) {\n if (expr.base.wtype.immutable) {\n throw new CodeError(`Expression is not a valid assignment target - object is immutable`, {\n sourceLocation: expr.sourceLocation,\n })\n }\n }\n if (expr instanceof awst.ReinterpretCast) {\n requireLValue(expr.expr)\n }\n if (expr instanceof awst.TupleExpression) {\n for (const item of expr.items) {\n requireLValue(item)\n }\n }\n return expr as awst.LValue\n}\n\nexport class DecoratorDataBuilder extends NodeBuilder {\n get ptype(): PType | undefined {\n return undefined\n }\n constructor(\n sourceLocation: SourceLocation,\n private readonly data: DecoratorData,\n ) {\n super(sourceLocation)\n }\n\n resolveDecoratorData(): DecoratorData {\n return this.data\n }\n}\n","import type { awst } from '../../awst'\nimport type { Expression, LValue } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { CodeError } from '../../errors'\nimport type { PType, PTypeOrClass } from '../ptypes'\nimport { TransientType } from '../ptypes'\nimport type { BuilderBinaryOp, BuilderComparisonOp, BuilderUnaryOp, NodeBuilder } from './index'\nimport { InstanceBuilder } from './index'\n\nexport abstract class LiteralExpressionBuilder extends InstanceBuilder {\n resolve(): Expression {\n this.throwInvalidExpression()\n }\n\n resolveLValue(): LValue {\n throw new CodeError('A literal value is not a valid assignment target', { sourceLocation: this.sourceLocation })\n }\n\n abstract resolvableToPType(ptype: PTypeOrClass): boolean\n\n abstract resolveToPType(ptype: PTypeOrClass): InstanceBuilder\n\n private throwInvalidExpression(): never {\n if (this.ptype instanceof TransientType) throw new CodeError(this.ptype.expressionMessage, { sourceLocation: this.sourceLocation })\n throw new CodeError(`Invalid expression type ${this.ptype}`, { sourceLocation: this.sourceLocation })\n }\n\n compare(other: InstanceBuilder, op: BuilderComparisonOp, sourceLocation: SourceLocation): InstanceBuilder {\n this.throwInvalidExpression()\n }\n\n binaryOp(other: InstanceBuilder, op: BuilderBinaryOp, sourceLocation: SourceLocation): InstanceBuilder {\n this.throwInvalidExpression()\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n this.throwInvalidExpression()\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n this.throwInvalidExpression()\n }\n\n taggedTemplate(head: string, spans: ReadonlyArray<readonly [InstanceBuilder, string]>, sourceLocation: SourceLocation): InstanceBuilder {\n this.throwInvalidExpression()\n }\n\n indexAccess(index: InstanceBuilder, sourceLocation: SourceLocation): NodeBuilder {\n this.throwInvalidExpression()\n }\n\n singleEvaluation(): InstanceBuilder {\n this.throwInvalidExpression()\n }\n\n toBytes(sourceLocation: SourceLocation): awst.Expression {\n this.throwInvalidExpression()\n }\n\n prefixUnaryOp(op: BuilderUnaryOp, sourceLocation: SourceLocation): InstanceBuilder {\n this.throwInvalidExpression()\n }\n\n postfixUnaryOp(op: BuilderUnaryOp, sourceLocation: SourceLocation): InstanceBuilder {\n this.throwInvalidExpression()\n }\n\n iterate(sourceLocation: SourceLocation): awst.Expression {\n this.throwInvalidExpression()\n }\n\n augmentedAssignment(other: InstanceBuilder, op: BuilderBinaryOp, sourceLocation: SourceLocation): InstanceBuilder {\n this.throwInvalidExpression()\n }\n\n hasProperty(_name: string): boolean {\n return false\n }\n}\n","import { nodeFactory } from '../../awst/node-factory'\nimport type { Expression } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { CodeError } from '../../errors'\nimport { BuilderBinaryOp, BuilderComparisonOp } from './index'\n\nconst binaryOpFolding: Record<BuilderBinaryOp, undefined | ((left: bigint, right: bigint) => bigint)> = {\n [BuilderBinaryOp.div]: (l, r) => l / r,\n [BuilderBinaryOp.add]: (l, r) => l + r,\n [BuilderBinaryOp.sub]: (l, r) => l - r,\n [BuilderBinaryOp.mult]: (l, r) => l * r,\n [BuilderBinaryOp.mod]: (l, r) => l % r,\n [BuilderBinaryOp.pow]: (l, r) => l ** r,\n [BuilderBinaryOp.matMult]: undefined,\n [BuilderBinaryOp.lshift]: (l, r) => {\n return l << r\n },\n [BuilderBinaryOp.rshift]: (l, r) => l >> r,\n [BuilderBinaryOp.bitOr]: (l, r) => l | r,\n [BuilderBinaryOp.bitXor]: (l, r) => l ^ r,\n [BuilderBinaryOp.bitAnd]: (l, r) => l & r,\n [BuilderBinaryOp.comma]: (l, r) => r,\n}\n\nconst comparisonOpFolding: Record<BuilderComparisonOp, undefined | ((left: bigint, right: bigint) => boolean)> = {\n [BuilderComparisonOp.eq]: (l, r) => l === r,\n [BuilderComparisonOp.ne]: (l, r) => l !== r,\n [BuilderComparisonOp.lt]: (l, r) => l < r,\n [BuilderComparisonOp.lte]: (l, r) => l <= r,\n [BuilderComparisonOp.gt]: (l, r) => l > r,\n [BuilderComparisonOp.gte]: (l, r) => l >= r,\n}\n\nexport function foldBinaryOp(left: bigint, right: bigint, op: BuilderBinaryOp, sourceLocation: SourceLocation): bigint {\n const result = binaryOpFolding[op]?.(left, right)\n switch (typeof result) {\n case 'bigint':\n return result\n default:\n throw new CodeError(`${op} is not supported`, { sourceLocation })\n }\n}\n\nexport function foldComparisonOp(left: bigint, right: bigint, op: BuilderComparisonOp, sourceLocation: SourceLocation): Expression {\n const result = comparisonOpFolding[op]?.(left, right)\n switch (typeof result) {\n case 'boolean':\n return nodeFactory.boolConstant({\n value: result,\n sourceLocation: sourceLocation,\n })\n default:\n throw new CodeError(`${op} is not supported`, { sourceLocation })\n }\n}\n","import type { ConstantValue } from '../../../awst'\nimport type { PTypeOrClass } from '../../ptypes'\nimport { bigIntPType, biguintPType, boolPType, bytesPType, numberPType, stringPType, uint64PType } from '../../ptypes'\nimport { UFixedNxMType, UintNType } from '../../ptypes/arc4-types'\n\nexport function isValidLiteralForPType(literalValue: ConstantValue, ptype: PTypeOrClass): boolean {\n if (ptype.equals(stringPType)) {\n return typeof literalValue === 'string'\n }\n if (ptype.equals(numberPType)) {\n return (\n typeof literalValue === 'bigint' && BigInt(Number.MIN_SAFE_INTEGER) <= literalValue && literalValue <= BigInt(Number.MAX_SAFE_INTEGER)\n )\n }\n if (ptype.equals(bigIntPType)) {\n return typeof literalValue === 'bigint'\n }\n if (ptype.equals(uint64PType)) {\n return typeof literalValue === 'bigint' && 0 <= literalValue && literalValue < 2n ** 64n\n }\n if (ptype.equals(biguintPType)) {\n return typeof literalValue === 'bigint' && 0 <= literalValue && literalValue < 2n ** 512n\n }\n if (ptype instanceof UintNType || ptype instanceof UFixedNxMType) {\n return typeof literalValue === 'bigint' && 0 <= literalValue && literalValue < 2n ** ptype.n\n }\n if (ptype.equals(boolPType)) {\n return typeof literalValue === 'boolean'\n }\n if (ptype.equals(bytesPType)) {\n return literalValue instanceof Uint8Array\n }\n return false\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { Expression } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport { CodeError } from '../../../errors'\nimport { codeInvariant } from '../../../util'\nimport type { PTypeOrClass } from '../../ptypes'\nimport {\n BigIntLiteralPType,\n bigIntPType,\n biguintPType,\n boolPType,\n numberPType,\n NumericLiteralPType,\n TransientType,\n uint64PType,\n} from '../../ptypes'\nimport { instanceEb, typeRegistry } from '../../type-registry'\nimport { foldBinaryOp, foldComparisonOp } from '../folding'\nimport type { BuilderBinaryOp, BuilderComparisonOp, InstanceBuilder } from '../index'\nimport { BuilderUnaryOp } from '../index'\nimport { LiteralExpressionBuilder } from '../literal-expression-builder'\nimport { isValidLiteralForPType } from '../util/is-valid-literal-for-ptype'\n\nexport class BigIntLiteralExpressionBuilder extends LiteralExpressionBuilder {\n singleEvaluation(): InstanceBuilder {\n return this\n }\n\n constructor(\n public readonly value: bigint,\n public readonly ptype: TransientType,\n location: SourceLocation,\n ) {\n super(location)\n }\n\n resolvableToPType(ptype: PTypeOrClass): boolean {\n const isUnsigned = ptype.equals(biguintPType) || ptype.equals(uint64PType)\n if (this.ptype instanceof NumericLiteralPType || this.ptype.equals(numberPType)) {\n if (isUnsigned) {\n return this.value >= 0n\n }\n return ptype.equals(numberPType) || ptype.equals(this.ptype)\n } else if (this.ptype instanceof BigIntLiteralPType || this.ptype.equals(bigIntPType)) {\n if (isUnsigned) {\n return this.value >= 0n\n }\n return ptype.equals(bigIntPType) || ptype.equals(this.ptype)\n }\n return false\n }\n boolEval(sourceLocation: SourceLocation, negate: boolean = false): Expression {\n const value = negate ? !this.value : Boolean(this.value)\n\n return nodeFactory.boolConstant({\n value,\n sourceLocation,\n })\n }\n\n resolveToPType(ptype: PTypeOrClass): InstanceBuilder {\n codeInvariant(this.resolvableToPType(ptype), `${this.value} cannot be converted to type ${ptype.name}`, this.sourceLocation)\n\n if (ptype.equals(this.ptype)) return this\n if (ptype instanceof TransientType && (ptype.equals(numberPType) || ptype.equals(bigIntPType))) {\n return new BigIntLiteralExpressionBuilder(this.value, ptype, this.sourceLocation)\n }\n\n codeInvariant(isValidLiteralForPType(this.value, ptype), `${ptype.name} overflow or underflow: ${this.value}`, this.sourceLocation)\n if (ptype.equals(uint64PType)) {\n return instanceEb(nodeFactory.uInt64Constant({ value: this.value, sourceLocation: this.sourceLocation }), uint64PType)\n } else if (ptype.equals(biguintPType)) {\n return instanceEb(nodeFactory.bigUIntConstant({ value: this.value, sourceLocation: this.sourceLocation }), biguintPType)\n }\n throw new CodeError(`${this.value} cannot be converted to type ${ptype.name}`, { sourceLocation: this.sourceLocation })\n }\n\n binaryOp(other: InstanceBuilder, op: BuilderBinaryOp, sourceLocation: SourceLocation): InstanceBuilder {\n if (other.ptype.wtype) {\n return this.resolveToPType(other.ptype).binaryOp(other, op, sourceLocation)\n }\n if (other instanceof BigIntLiteralExpressionBuilder) {\n const folded = foldBinaryOp(this.value, other.value, op, sourceLocation)\n return new BigIntLiteralExpressionBuilder(folded, this.getUpdatedPType(folded), sourceLocation)\n }\n return super.binaryOp(other, op, sourceLocation)\n }\n compare(other: InstanceBuilder, op: BuilderComparisonOp, sourceLocation: SourceLocation): InstanceBuilder {\n if (other.ptype.wtype) {\n return this.resolveToPType(other.ptype).compare(other, op, sourceLocation)\n }\n if (other instanceof BigIntLiteralExpressionBuilder) {\n return typeRegistry.getInstanceEb(foldComparisonOp(this.value, other.value, op, sourceLocation), boolPType)\n }\n return super.compare(other, op, sourceLocation)\n }\n prefixUnaryOp(op: BuilderUnaryOp, sourceLocation: SourceLocation): InstanceBuilder {\n switch (op) {\n case BuilderUnaryOp.neg:\n return new BigIntLiteralExpressionBuilder(-this.value, this.getUpdatedPType(-this.value), sourceLocation)\n case BuilderUnaryOp.pos:\n return new BigIntLiteralExpressionBuilder(this.value, this.ptype, sourceLocation)\n }\n return super.prefixUnaryOp(op, sourceLocation)\n }\n\n private getUpdatedPType(value: bigint) {\n if (this.ptype instanceof BigIntLiteralPType) {\n return new BigIntLiteralPType({ literalValue: value })\n }\n if (this.ptype instanceof NumericLiteralPType) {\n return new NumericLiteralPType({ literalValue: value })\n }\n return this.ptype\n }\n}\n","import type { awst } from '../../../awst'\nimport { isConstant } from '../../../awst'\nimport type { Expression } from '../../../awst/nodes'\nimport { BoolConstant, IntegerConstant, StringConstant } from '../../../awst/nodes'\nimport { CodeError } from '../../../errors'\nimport { codeInvariant } from '../../../util'\nimport type { PType, PTypeOrClass } from '../../ptypes'\nimport { biguintPType, boolPType, stringPType, uint64PType } from '../../ptypes'\nimport type { NodeBuilder } from '../index'\nimport { InstanceBuilder } from '../index'\nimport { LiteralExpressionBuilder } from '../literal-expression-builder'\nimport { BigIntLiteralExpressionBuilder } from '../literal/big-int-literal-expression-builder'\n\nexport function requireExpressionOfType(builder: NodeBuilder, ptype: PTypeOrClass): Expression {\n if (builder instanceof InstanceBuilder) {\n if (builder.resolvableToPType(ptype)) {\n return builder.resolveToPType(ptype).resolve()\n }\n }\n throw new CodeError(`Expected expression of type ${ptype}, got ${builder.typeDescription}`, {\n sourceLocation: builder.sourceLocation,\n })\n}\nexport function requireBuilderOfType(builder: NodeBuilder, ptype: PTypeOrClass): InstanceBuilder {\n if (builder instanceof InstanceBuilder) {\n if (builder.resolvableToPType(ptype)) {\n return builder.resolveToPType(ptype)\n }\n }\n throw new CodeError(`Expected expression of type ${ptype}, got ${builder.typeDescription}`, {\n sourceLocation: builder.sourceLocation,\n })\n}\n\nexport function resolvableToType(builder: NodeBuilder, ptype: PTypeOrClass): builder is InstanceBuilder {\n if (builder instanceof InstanceBuilder) {\n return builder.resolvableToPType(ptype)\n }\n return false\n}\n\nexport function requestExpressionOfType(builder: NodeBuilder, ptype: PTypeOrClass): Expression | undefined {\n if (builder instanceof InstanceBuilder) {\n if (builder.resolvableToPType(ptype)) {\n return builder.resolveToPType(ptype).resolve()\n }\n return undefined\n }\n return undefined\n}\nexport function requestBuilderOfType(builder: NodeBuilder, ptype: PTypeOrClass): InstanceBuilder | undefined {\n if (builder instanceof InstanceBuilder) {\n if (builder.resolvableToPType(ptype)) {\n return builder.resolveToPType(ptype)\n }\n return undefined\n }\n return undefined\n}\n\nexport function requireInstanceBuilder(builder: NodeBuilder): InstanceBuilder {\n if (builder instanceof InstanceBuilder) return builder\n throw new CodeError(`Expected instance of a type, got ${builder.typeDescription}`, { sourceLocation: builder.sourceLocation })\n}\n\nexport function requireStringConstant(builder: NodeBuilder): awst.StringConstant {\n const constant = requireConstantOfType(builder, stringPType)\n codeInvariant(constant instanceof StringConstant, 'Expected string literal', builder.sourceLocation)\n return constant\n}\nexport function requireIntegerConstant(builder: NodeBuilder): awst.IntegerConstant {\n const constant = requestConstantOfType(builder, uint64PType) ?? requestConstantOfType(builder, biguintPType)\n codeInvariant(constant instanceof IntegerConstant, 'Expected integer literal')\n return constant\n}\nexport function requireBooleanConstant(builder: NodeBuilder): awst.BoolConstant {\n const constant = requireConstantOfType(builder, boolPType)\n codeInvariant(constant instanceof BoolConstant, 'Expected boolean literal')\n return constant\n}\n\nexport function requestConstantOfType(builder: NodeBuilder, ptype: PType): awst.Constant | undefined {\n if (builder instanceof LiteralExpressionBuilder) {\n if (builder.resolvableToPType(ptype)) {\n const expr = builder.resolveToPType(ptype).resolve()\n if (isConstant(expr)) return expr\n }\n return undefined\n }\n if (builder instanceof InstanceBuilder && builder.ptype?.equals(ptype)) {\n const expr = builder.resolve()\n if (isConstant(expr)) return expr\n }\n return undefined\n}\n\nexport function requireConstantOfType(builder: NodeBuilder, ptype: PType, messageOverride?: string): awst.Constant {\n const constExpr = requestConstantOfType(builder, ptype)\n if (constExpr) return constExpr\n throw new CodeError(messageOverride ?? `Expected constant of type ${ptype}`, { sourceLocation: builder.sourceLocation })\n}\n\nexport function requireLiteralNumber(builder: NodeBuilder) {\n codeInvariant(builder instanceof BigIntLiteralExpressionBuilder, 'Expected numeric literal', builder.sourceLocation)\n return builder.value\n}\n","import type { SourceLocation } from '../../../awst/source-location'\nimport { CodeError } from '../../../errors'\nimport { logger } from '../../../logger'\nimport type { DeliberateAny, Tuple } from '../../../typescript-helpers'\nimport type { PType, PTypeOrClass } from '../../ptypes'\nimport type { InstanceBuilder, NodeBuilder } from '../index'\nimport { requestBuilderOfType, requireInstanceBuilder } from './index'\n\nfunction parseTypeArgs<T extends number>(\n typeArgs: ReadonlyArray<PType>,\n sourceLocation: SourceLocation,\n funcName: string,\n expectedCount: T,\n): Tuple<PType, T> {\n if (typeArgs.length !== expectedCount) {\n const err = new CodeError(`${funcName} expects exactly ${expectedCount} type argument${expectedCount === 1 ? '' : 's'}`, {\n sourceLocation,\n })\n if (typeArgs.length > expectedCount) {\n logger.error(err)\n return typeArgs.slice(0, expectedCount) as Tuple<PType, T>\n }\n throw err\n }\n return typeArgs as Tuple<PType, T>\n}\n\nconst ArgSpecDiscriminator = Symbol('_specType')\n\n/**\n * Optional arg spec\n * Will be mapped to `InstanceBuilder | undefined`\n */\ntype OptionalArg = { t: PTypeOrClass[]; [ArgSpecDiscriminator]: 'arg'; type: 'optional' }\n/**\n * Required arg spec\n * Will be mapped to `InstanceBuilder`\n */\ntype RequiredArg = { t: PTypeOrClass[]; type: 'required'; [ArgSpecDiscriminator]: 'arg' }\n\n/**\n * Passthrough arg spec\n * Will be mapped to NodeBuilder | undefined\n */\ntype PassthroughArg = { type: 'passthrough'; [ArgSpecDiscriminator]: 'arg' }\ntype ArgSpec = OptionalArg | RequiredArg | PassthroughArg\n\n/**\n * Object arg spec\n * Will be mapped to an object with the same keys where each property\n * is mapped to a Required or Optional spec\n */\ntype ObjArgSpec = Record<string, ArgSpec> & { [ArgSpecDiscriminator]: 'obj' }\n\n/**\n * Maps an ObjArgSpec to its output type\n */\ntype ArgsForObjSpec<T extends ObjArgSpec> = {\n [key in keyof T]: ArgFor<T[key]>\n}\n/**\n * Defines the expected shape of a single argument.\n * Either an ArgSpec indicting a single value, or an ObjArgSpec indicating an\n * object literal with several properties\n */\ntype ArgMap = ArgSpec | ObjArgSpec\n\n/**\n * Maps an arg spec to its output type\n */\ntype ArgFor<T extends ObjArgSpec | ArgSpec> = T extends ObjArgSpec\n ? ArgsForObjSpec<T>\n : T extends PassthroughArg\n ? NodeBuilder | undefined\n : T extends OptionalArg\n ? InstanceBuilder | undefined\n : T extends RequiredArg\n ? InstanceBuilder\n : never\n/**\n * Maps each arg to an expected output type\n */\ntype ParsedArgs<T extends [...DeliberateAny[]]> = T extends [infer T1 extends ArgMap, ...infer TRest]\n ? [ArgFor<T1>, ...ParsedArgs<TRest>]\n : T extends []\n ? []\n : T extends Array<infer TItem extends ArgMap>\n ? Array<ArgFor<TItem>>\n : never\n\nfunction parseObjArg<T extends ObjArgSpec>(\n arg: NodeBuilder | undefined,\n sourceLocation: SourceLocation,\n subject: string,\n argMap: T,\n): ArgsForObjSpec<T> {\n return Object.entries(argMap).reduce(\n (acc, [property, spec]) => {\n if (arg?.hasProperty(property)) {\n const builder = arg.memberAccess(property, sourceLocation)\n if (spec.type === 'passthrough') {\n acc[property] = builder\n return acc\n }\n if (spec.t.length === 0) {\n acc[property] = requireInstanceBuilder(builder)\n } else {\n for (const t of spec.t) {\n const typedBuilder = requestBuilderOfType(builder, t)\n if (typedBuilder) {\n acc[property] = typedBuilder\n return acc\n }\n }\n throw new CodeError(\n `${subject} has an incorrect type for property '${property}' of ${builder.ptype}. Expected ${spec.t.join(' or ')}`,\n {\n sourceLocation: arg?.sourceLocation ?? sourceLocation,\n },\n )\n }\n return acc\n }\n if (spec.type === 'required') {\n throw new CodeError(`${subject} is missing required property ${property}`, {\n sourceLocation: arg?.sourceLocation ?? sourceLocation,\n })\n }\n return acc\n },\n {} as Record<string, InstanceBuilder | NodeBuilder>,\n ) as ArgsForObjSpec<T>\n}\n\nconst argSpecFactory = {\n /**\n * A required arg with one of the specified types\n * @param ptypes\n */\n required(...ptypes: PTypeOrClass[]): RequiredArg {\n return { t: ptypes, type: 'required', [ArgSpecDiscriminator]: 'arg' }\n },\n /**\n * An optional arg with one of the specified types\n * @param ptypes\n */\n optional(...ptypes: PTypeOrClass[]): OptionalArg {\n return { t: ptypes, type: 'optional', [ArgSpecDiscriminator]: 'arg' }\n },\n /**\n * An object map arg, if all properties are optional - the arg itself becomes optional\n * @param props A mapping of expected properties to expected ptypes\n */\n obj<T extends Omit<ObjArgSpec, typeof ArgSpecDiscriminator>>(props: T): T & { [ArgSpecDiscriminator]: 'obj' } {\n return {\n ...props,\n [ArgSpecDiscriminator]: 'obj',\n }\n },\n passthrough(): PassthroughArg {\n return {\n type: 'passthrough',\n [ArgSpecDiscriminator]: 'arg',\n }\n },\n}\n\nexport type ArgSpecFactory = typeof argSpecFactory\n\nexport function parseFunctionArgs<const TGenericCount extends number, const TArgMap extends [...ArgMap[]]>({\n args,\n typeArgs,\n funcName,\n callLocation,\n genericTypeArgs,\n argSpec,\n}: {\n /**\n * Raw args array passed to call function\n */\n args: ReadonlyArray<NodeBuilder>\n /**\n * Raw typeArgs array passed to call function\n */\n typeArgs: ReadonlyArray<PType>\n /**\n * The name of the function being called\n * (Used for error context)\n */\n funcName: string\n /**\n * The location of the call expression in the application source code\n */\n callLocation: SourceLocation\n /**\n * The expected number of generic type arguments\n */\n genericTypeArgs: TGenericCount\n /**\n * A mapping of expected argument types\n */\n argSpec: (a: ArgSpecFactory) => TArgMap\n}): {\n /**\n * A tuple of generic type args with a length of `TGenericCount`\n */\n ptypes: Tuple<PType, TGenericCount>\n args: ParsedArgs<TArgMap>\n} {\n const argMap = argSpec(argSpecFactory)\n if (args.length > argMap.length) {\n throw new CodeError(`${funcName} has ${args.length - argMap.length} too many args`, { sourceLocation: callLocation })\n }\n return {\n ptypes: parseTypeArgs(typeArgs, callLocation, funcName, genericTypeArgs),\n args: argMap.map((a, i) => {\n const source: NodeBuilder | undefined = args[i]\n if (a[ArgSpecDiscriminator] === 'arg') {\n if (a.type === 'passthrough') {\n return source\n }\n if (source) {\n if (a.t.length === 0) {\n return requireInstanceBuilder(source)\n } else {\n for (const t of a.t) {\n const builder = requestBuilderOfType(source, t)\n if (builder) {\n return builder\n }\n }\n throw new CodeError(`Arg ${i} of ${funcName} has an incorrect type of ${source.ptype}. Expected ${a.t.join(' | ')}`, {\n sourceLocation: source.sourceLocation,\n })\n }\n }\n if (a.type === 'required') {\n throw new CodeError(`Arg ${i} of ${funcName} is missing`, { sourceLocation: callLocation })\n }\n } else {\n return parseObjArg(source, callLocation, `Arg ${i} for ${funcName}`, a)\n }\n }) as ParsedArgs<TArgMap>,\n }\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { Expression, StringConstant } from '../../../awst/nodes'\nimport { SourceLocation } from '../../../awst/source-location'\nimport { CodeError, InternalError } from '../../../errors'\nimport { logger } from '../../../logger'\nimport { codeInvariant } from '../../../util'\nimport { Arc4ParseError, parseArc4Type } from '../../../util/arc4-signature-parser'\nimport { ptypeToArc4EncodedType } from '../../arc4-util'\nimport type { PType } from '../../ptypes'\nimport { arc28EmitFunction, ObjectPType, stringPType, voidPType } from '../../ptypes'\nimport { ARC4EncodedType, ARC4StructType, ARC4TupleType } from '../../ptypes/arc4-types'\nimport { instanceEb } from '../../type-registry'\nimport type { InstanceBuilder, NodeBuilder } from '../index'\nimport { FunctionBuilder } from '../index'\nimport { requireStringConstant } from '../util'\nimport { parseFunctionArgs } from '../util/arg-parsing'\n\nexport class Arc28EmitFunctionBuilder extends FunctionBuilder {\n readonly ptype = arc28EmitFunction\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [nameOrObj, ...props],\n ptypes: [genericArg],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 1,\n callLocation: sourceLocation,\n funcName: this.typeDescription,\n argSpec: (a) => [a.required(), ...args.slice(1).map(() => a.required())],\n })\n\n if (nameOrObj.ptype.equals(stringPType)) {\n const thisModule = nameOrObj.sourceLocation.file ?? ''\n\n const fields: Record<string, ARC4EncodedType> = {}\n const values = new Map<string, Expression>()\n\n const { name, propTypes } = parseEventName(nameOrObj)\n\n for (const [index, prop] of props.entries()) {\n const arc4Type = ptypeToArc4EncodedType(prop.ptype, prop.sourceLocation)\n\n const expectedType = propTypes?.[index]\n if (expectedType) {\n codeInvariant(\n expectedType.wtype.equals(arc4Type.wtype),\n `Expected type ${expectedType} does not match actual type ${arc4Type}`,\n prop.sourceLocation,\n )\n }\n\n fields[index] = arc4Type\n values.set(\n index.toString(),\n prop.ptype instanceof ARC4EncodedType\n ? prop.resolve()\n : nodeFactory.aRC4Encode({\n value: prop.resolve(),\n wtype: arc4Type.wtype,\n sourceLocation: prop.sourceLocation,\n }),\n )\n }\n if (propTypes && propTypes.length !== values.size) {\n throw new CodeError(`Event signature length (${propTypes.length}) does not match number of provided values (${values.size}).`, {\n sourceLocation: sourceLocation,\n })\n }\n\n const structType = new ARC4StructType({\n name: name.value,\n module: thisModule,\n fields,\n description: undefined,\n sourceLocation,\n frozen: true,\n })\n const structExpression = nodeFactory.newStruct({\n wtype: structType.wtype,\n values,\n sourceLocation,\n })\n\n return emitStruct(structType, structExpression, sourceLocation)\n }\n codeInvariant(props.length === 0, 'Unexpected args', props[0]?.sourceLocation)\n\n const eventBuilder = nameOrObj.resolveToPType(genericArg)\n\n const eventType = eventBuilder.ptype\n if (eventType instanceof ARC4StructType) {\n return emitStruct(eventType, nameOrObj.resolve(), sourceLocation)\n } else if (eventType instanceof ObjectPType) {\n if (!eventType.alias) {\n logger.error(\n eventBuilder.sourceLocation,\n 'Event cannot be an anonymous type. If a named type exists, try specifying it explicitly via the generic parameter. Eg. `emit<YourType>({...})`',\n )\n }\n const arc4Equivalent = ptypeToArc4EncodedType(eventType, sourceLocation)\n return emitStruct(\n arc4Equivalent,\n nodeFactory.aRC4Encode({\n wtype: arc4Equivalent.wtype,\n sourceLocation: nameOrObj.sourceLocation,\n value: nameOrObj.resolve(),\n }),\n sourceLocation,\n )\n }\n throw new InternalError('Unexpected type for arg 0 of emit', { sourceLocation })\n }\n}\n\nfunction emitStruct(ptype: ARC4StructType, expression: Expression, sourceLocation: SourceLocation) {\n return instanceEb(\n nodeFactory.emit({\n signature: ptype.signature,\n value: expression,\n wtype: voidPType.wtype,\n sourceLocation,\n }),\n voidPType,\n )\n}\n\nfunction parseEventName(nameBuilder: InstanceBuilder): {\n name: StringConstant\n propTypes?: ARC4EncodedType[]\n} {\n const name = requireStringConstant(nameBuilder)\n const parenthesisIndex = name.value.indexOf('(')\n if (parenthesisIndex === -1) {\n return {\n name,\n }\n }\n const signature = name.value.substring(parenthesisIndex)\n\n try {\n const signatureType = parseArc4Type(signature)\n codeInvariant(signatureType instanceof ARC4TupleType, 'Event signature must be a tuple type', name.sourceLocation)\n return {\n name: nodeFactory.stringConstant({\n value: name.value.substring(0, parenthesisIndex),\n sourceLocation: name.sourceLocation,\n }),\n propTypes: signatureType.items,\n }\n } catch (e) {\n if (e instanceof Arc4ParseError) {\n // Source location adjustment assumes StringConstant is all on one line\n throw new CodeError(`Invalid signature: ${e.message}`, {\n sourceLocation: new SourceLocation({\n ...name.sourceLocation,\n column: name.sourceLocation.column + parenthesisIndex + e.index,\n }),\n })\n } else {\n throw e\n }\n }\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { Expression } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport { CodeError } from '../../../errors'\nimport { invariant } from '../../../util'\nimport type { PTypeOrClass } from '../../ptypes'\nimport { ObjectPType, type PType } from '../../ptypes'\nimport { instanceEb } from '../../type-registry'\nimport type { InstanceBuilder } from '../index'\nimport { InstanceExpressionBuilder, type NodeBuilder } from '../index'\nimport { requireExpressionOfType } from '../util'\n\nexport class ObjectExpressionBuilder extends InstanceExpressionBuilder<ObjectPType> {\n constructor(expr: Expression, ptype: PType) {\n invariant(ptype instanceof ObjectPType, `ObjectExpressionBuilder must be instantiated with ptype of ObjectPType`)\n super(expr, ptype)\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n const propertyIndex = this.ptype.orderedProperties().findIndex(([prop]) => prop === name)\n if (propertyIndex === -1) {\n return super.memberAccess(name, sourceLocation)\n }\n const propertyPtype = this.ptype.getPropertyType(name)\n return instanceEb(\n nodeFactory.fieldExpression({\n name,\n sourceLocation,\n base: this._expr,\n wtype: propertyPtype.wtypeOrThrow,\n }),\n propertyPtype,\n )\n }\n\n hasProperty(name: string): boolean {\n return this.ptype.orderedProperties().some(([prop]) => prop === name)\n }\n\n resolvableToPType(ptype: PTypeOrClass): ptype is ObjectPType {\n if (ptype instanceof ObjectPType) {\n return ptype.orderedProperties().every(([prop, propType]) => this.ptype.hasPropertyOfType(prop, propType))\n }\n return false\n }\n\n resolveToPType(ptype: PTypeOrClass): InstanceBuilder {\n if (ptype.equals(this.ptype)) {\n return this\n }\n if (this.resolvableToPType(ptype)) {\n const base = this.singleEvaluation()\n return instanceEb(\n nodeFactory.tupleExpression({\n sourceLocation: this.sourceLocation,\n items: ptype\n .orderedProperties()\n .map(([prop, propType]) => requireExpressionOfType(base.memberAccess(prop, this.sourceLocation), propType)),\n wtype: ptype.wtype,\n }),\n ptype,\n )\n }\n throw CodeError.cannotResolveToType({ sourceType: this.ptype, targetType: ptype, sourceLocation: this.sourceLocation })\n }\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { Expression, LValue } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport { CodeError } from '../../../errors'\nimport type { PTypeOrClass } from '../../ptypes'\nimport { ObjectPType } from '../../ptypes'\nimport type { InstanceBuilder, NodeBuilder } from '../index'\nimport { LiteralExpressionBuilder } from '../literal-expression-builder'\nimport { requestExpressionOfType, requireExpressionOfType, requireInstanceBuilder } from '../util'\nimport { ObjectExpressionBuilder } from './object-expression-builder'\n\nexport type ObjectLiteralParts =\n | {\n type: 'properties'\n properties: Record<string, InstanceBuilder>\n }\n | {\n type: 'spread-object'\n obj: InstanceBuilder\n }\n\nexport class ObjectLiteralExpressionBuilder extends LiteralExpressionBuilder {\n readonly _ptype: ObjectPType\n get ptype(): ObjectPType {\n return this._ptype\n }\n\n constructor(\n sourceLocation: SourceLocation,\n ptype: ObjectPType,\n private readonly parts: ObjectLiteralParts[],\n ) {\n super(sourceLocation)\n this._ptype = ptype\n }\n\n resolve(): Expression {\n // Resolve object to a tuple using its own inferred types\n return this.toTuple(this.ptype)\n }\n resolveLValue(): LValue {\n return nodeFactory.tupleExpression({\n items: this.ptype\n .orderedProperties()\n .map(([p, propPType]) => requireInstanceBuilder(this.memberAccess(p, this.sourceLocation)).resolveLValue()),\n sourceLocation: this.sourceLocation,\n wtype: this.ptype.wtype,\n })\n }\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n for (const part of this.parts.toReversed()) {\n if (part.type === 'properties') {\n if (Object.hasOwn(part.properties, name)) {\n return part.properties[name]\n }\n } else {\n if (part.obj.hasProperty(name)) {\n return part.obj.memberAccess(name, sourceLocation)\n }\n }\n }\n throw new CodeError(`${name} does not exist on ${this.typeDescription}`, { sourceLocation })\n }\n\n hasProperty(name: string): boolean {\n return this.parts.some((part) => (part.type === 'properties' ? Object.hasOwn(part.properties, name) : part.obj.hasProperty(name)))\n }\n\n private toTuple(ptype: ObjectPType): Expression {\n let base: InstanceBuilder\n if (this.ptype.equals(ptype)) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n base = this\n } else {\n // Resolve this object to a tuple using declared order but using the target property types.\n // This will resolve numeric literals to algo-ts types if available\n const tempType = new ObjectPType({\n properties: Object.fromEntries(this.ptype.orderedProperties().map(([p]) => [p, ptype.getPropertyType(p)] as const)),\n })\n\n base = new ObjectExpressionBuilder(\n nodeFactory.tupleExpression({\n items: tempType\n .orderedProperties()\n .map(([p, propType]) => requireExpressionOfType(this.memberAccess(p, this.sourceLocation), propType)),\n sourceLocation: this.sourceLocation,\n wtype: tempType.wtype,\n }),\n tempType,\n ).singleEvaluation()\n }\n // Reorder properties to the target type\n return nodeFactory.tupleExpression({\n items: ptype\n .orderedProperties()\n .map(([p, propPType]) => requireExpressionOfType(base.memberAccess(p, this.sourceLocation), propPType)),\n sourceLocation: this.sourceLocation,\n wtype: ptype.wtype,\n })\n }\n\n resolvableToPType(ptype: PTypeOrClass): ptype is ObjectPType {\n if (!(ptype instanceof ObjectPType)) return false\n for (const [prop, propPType] of ptype.orderedProperties()) {\n if (!this.hasProperty(prop)) return false\n const propValue = requestExpressionOfType(this.memberAccess(prop, this.sourceLocation), propPType)\n if (propValue === undefined) return false\n }\n return true\n }\n\n resolveToPType(ptype: PTypeOrClass): InstanceBuilder {\n if (!this.resolvableToPType(ptype))\n throw new CodeError(`${this.typeDescription} cannot be resolved to ${ptype}`, { sourceLocation: this.sourceLocation })\n return new ObjectExpressionBuilder(this.toTuple(ptype), ptype)\n }\n}\n","import { OnCompletionAction } from '../../awst/models'\nimport type { Expression } from '../../awst/nodes'\nimport { ARC4CreateOption, NewArray, StringConstant, TupleExpression } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { Constants } from '../../constants'\nimport { CodeError } from '../../errors'\nimport { logger } from '../../logger'\nimport { codeInvariant } from '../../util'\nimport type { Arc4AbiDecoratorData } from '../models/decorator-data'\nimport type { PType } from '../ptypes'\nimport { arc4AbiMethodDecorator, arc4BareMethodDecorator, ArrayPType, boolPType, stringPType } from '../ptypes'\nimport type { InstanceBuilder } from './index'\nimport { DecoratorDataBuilder, NodeBuilder } from './index'\nimport { ObjectLiteralExpressionBuilder } from './literal/object-literal-expression-builder'\nimport { requireBooleanConstant, requireInstanceBuilder, requireStringConstant } from './util'\nimport { parseFunctionArgs } from './util/arg-parsing'\n\nconst ocaMap: Record<string, OnCompletionAction> = {\n NoOp: OnCompletionAction.NoOp,\n OptIn: OnCompletionAction.OptIn,\n CloseOut: OnCompletionAction.CloseOut,\n ClearState: OnCompletionAction.ClearState,\n UpdateApplication: OnCompletionAction.UpdateApplication,\n DeleteApplication: OnCompletionAction.DeleteApplication,\n}\n\nconst createMap: Record<string, ARC4CreateOption> = {\n allow: ARC4CreateOption.allow,\n require: ARC4CreateOption.require,\n disallow: ARC4CreateOption.disallow,\n}\n\nexport class Arc4BareMethodDecoratorBuilder extends NodeBuilder {\n get ptype(): PType {\n return arc4BareMethodDecorator\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [{ allowActions, onCreate }],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 1,\n callLocation: sourceLocation,\n funcName: 'arc4.baremethod',\n argSpec: (a) => [\n a.obj({\n allowActions: a.optional(stringPType, new ArrayPType({ elementType: stringPType })),\n onCreate: a.optional(stringPType),\n }),\n ],\n })\n return new DecoratorDataBuilder(sourceLocation, {\n type: Constants.arc4BareDecoratorName,\n ocas: resolveOnCompletionActions(allowActions),\n create: onCreate ? mapStringConstant(createMap, onCreate?.resolve()) : ARC4CreateOption.disallow,\n sourceLocation: sourceLocation,\n })\n }\n}\n\nexport class Arc4AbiMethodDecoratorBuilder extends NodeBuilder {\n get ptype(): PType {\n return arc4AbiMethodDecorator\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [{ allowActions, onCreate, readonly, name, defaultArguments }],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 1,\n callLocation: sourceLocation,\n funcName: 'arc4.abimethod',\n argSpec: (a) => [\n a.obj({\n allowActions: a.optional(stringPType, new ArrayPType({ elementType: stringPType })),\n onCreate: a.optional(stringPType),\n readonly: a.optional(boolPType),\n name: a.optional(stringPType),\n defaultArguments: a.optional(),\n }),\n ],\n })\n\n return new DecoratorDataBuilder(sourceLocation, {\n type: Constants.arc4AbiDecoratorName,\n ocas: resolveOnCompletionActions(allowActions),\n create: onCreate ? mapStringConstant(createMap, onCreate?.resolve()) : ARC4CreateOption.disallow,\n sourceLocation: sourceLocation,\n nameOverride: name ? requireStringConstant(name).value : undefined,\n readonly: readonly ? requireBooleanConstant(readonly).value : false,\n\n defaultArguments: resolveDefaultArguments(defaultArguments, sourceLocation),\n })\n }\n}\n\nfunction mapStringConstant<T>(map: Record<string, T>, expr: Expression) {\n codeInvariant(expr instanceof StringConstant, 'Expected string literal', expr.sourceLocation)\n const strValue = expr.value\n if (Object.hasOwn(map, strValue)) return map[strValue]\n throw new CodeError(`${strValue} is not valid at this location`, { sourceLocation: expr.sourceLocation })\n}\n\nfunction resolveOnCompletionActions(oca: InstanceBuilder | undefined): OnCompletionAction[] {\n if (!oca) return [OnCompletionAction.NoOp]\n const value = oca.resolve()\n let ocaRawExpr: Expression[]\n if (value instanceof StringConstant) {\n ocaRawExpr = [value]\n } else if (value instanceof TupleExpression) {\n ocaRawExpr = value.items\n } else if (value instanceof NewArray) {\n ocaRawExpr = value.values\n } else {\n throw new CodeError('Unexpected value for onComplete', { sourceLocation: oca.sourceLocation })\n }\n\n const ocas = ocaRawExpr.map((item) => mapStringConstant(ocaMap, item))\n const distinctOcas = Array.from(new Set(ocas))\n if (distinctOcas.length !== ocas.length) {\n logger.warn(oca.sourceLocation, 'Duplicate on completion actions')\n }\n return ocas\n}\n\nfunction resolveDefaultArguments(\n defaultArguments: NodeBuilder | undefined,\n sourceLocation: SourceLocation,\n): Arc4AbiDecoratorData['defaultArguments'] {\n const result: Arc4AbiDecoratorData['defaultArguments'] = {}\n if (!defaultArguments) return result\n codeInvariant(defaultArguments instanceof ObjectLiteralExpressionBuilder, `Default argument specification should be an object literal`)\n for (const [parameterName] of defaultArguments.ptype.orderedProperties()) {\n const paramConfig = defaultArguments.memberAccess(parameterName, sourceLocation)\n codeInvariant(paramConfig instanceof ObjectLiteralExpressionBuilder, 'Default argument specification should be an object literal')\n\n if (paramConfig.hasProperty('constant')) {\n result[parameterName] = {\n type: 'constant',\n value: requireInstanceBuilder(paramConfig.memberAccess('constant', sourceLocation)),\n }\n } else if (paramConfig.hasProperty('from')) {\n result[parameterName] = {\n type: 'member',\n name: requireStringConstant(paramConfig.memberAccess('from', sourceLocation)).value,\n }\n } else {\n logger.error(sourceLocation, 'Default argument specifications should specify fromConstant or fromMember')\n }\n }\n\n return result\n}\n","import type { DeliberateAny } from '../typescript-helpers'\nimport { bigIntToUint8Array } from '../util'\nimport { nodeFactory } from './node-factory'\nimport type { Expression } from './nodes'\nimport * as awst from './nodes'\nimport { BytesConstant, BytesEncoding, StringConstant } from './nodes'\nimport { SourceLocation } from './source-location'\nimport { wtypes } from './wtypes'\n\nexport const intrinsicFactory = {\n bytesConcat({ left, right, sourceLocation }: { left: awst.Expression; right: awst.Expression; sourceLocation: SourceLocation }) {\n if (left.wtype.equals(right.wtype)) {\n if (left instanceof BytesConstant && right instanceof BytesConstant) {\n const concatValue = new Uint8Array(left.value.length + right.value.length)\n concatValue.set(left.value, 0)\n concatValue.set(right.value, left.value.length)\n return nodeFactory.bytesConstant({\n value: concatValue,\n wtype: left.wtype,\n encoding: left.encoding,\n sourceLocation: SourceLocation.fromLocations(left.sourceLocation, right.sourceLocation),\n })\n } else if (left instanceof StringConstant && right instanceof StringConstant) {\n return nodeFactory.stringConstant({\n value: left.value + right.value,\n sourceLocation: SourceLocation.fromLocations(left.sourceLocation, right.sourceLocation),\n })\n }\n }\n\n return nodeFactory.intrinsicCall({\n sourceLocation,\n stackArgs: [left, right],\n immediates: [],\n wtype: left.wtype,\n opCode: 'concat',\n })\n },\n err({ sourceLocation, comment }: { sourceLocation: SourceLocation; comment: string | null }) {\n return nodeFactory.assertExpression({\n condition: null,\n sourceLocation,\n wtype: wtypes.voidWType,\n errorMessage: comment,\n })\n },\n assert({ sourceLocation, comment, condition }: { sourceLocation: SourceLocation; comment: string | null; condition: Expression }) {\n return nodeFactory.assertExpression({\n sourceLocation,\n condition,\n wtype: wtypes.voidWType,\n errorMessage: comment,\n })\n },\n bytesLen({ value, sourceLocation }: { value: awst.Expression; sourceLocation: SourceLocation }) {\n return nodeFactory.intrinsicCall({\n opCode: 'len',\n stackArgs: [value],\n sourceLocation: sourceLocation,\n immediates: [],\n wtype: wtypes.uint64WType,\n })\n },\n bitLen({ value, sourceLocation }: { value: awst.Expression; sourceLocation: SourceLocation }) {\n return nodeFactory.intrinsicCall({\n opCode: 'bitlen',\n stackArgs: [value],\n sourceLocation: sourceLocation,\n immediates: [],\n wtype: wtypes.uint64WType,\n })\n },\n itob({ value, sourceLocation }: { value: awst.Expression; sourceLocation: SourceLocation }): awst.Expression {\n if (value instanceof awst.IntegerConstant) {\n return nodeFactory.bytesConstant({\n sourceLocation,\n value: bigIntToUint8Array(value.value, value.wtype.equals(wtypes.uint64WType) ? 8 : 'dynamic'),\n encoding: BytesEncoding.base16,\n })\n }\n return nodeFactory.intrinsicCall({\n sourceLocation,\n stackArgs: [value],\n immediates: [],\n wtype: wtypes.bytesWType,\n opCode: 'itob',\n })\n },\n btoi({ value, sourceLocation }: { value: awst.Expression; sourceLocation: SourceLocation }): awst.IntrinsicCall {\n return nodeFactory.intrinsicCall({\n sourceLocation,\n stackArgs: [value],\n immediates: [],\n wtype: wtypes.uint64WType,\n opCode: 'btoi',\n })\n },\n} satisfies Record<string, (args: DeliberateAny) => awst.Expression>\n","import type { awst } from '../../awst'\nimport type { Expression } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { CodeError } from '../../errors'\nimport { invariant } from '../../util'\nimport { IterableIteratorType, type PType } from '../ptypes'\nimport { InstanceExpressionBuilder } from './index'\n\nexport class IterableIteratorExpressionBuilder extends InstanceExpressionBuilder<IterableIteratorType> {\n resolve(): awst.Expression {\n throw new CodeError(`${this.typeDescription} can only be used in for loops`, { sourceLocation: this.sourceLocation })\n }\n\n constructor(expr: Expression, ptype: PType) {\n invariant(ptype instanceof IterableIteratorType, 'ptype must be instance of IterableIteratorType')\n super(expr, ptype)\n }\n\n iterate(sourceLocation: SourceLocation): Expression {\n return this._expr\n }\n}\n","import type { awst } from '../../awst'\nimport { intrinsicFactory } from '../../awst/intrinsic-factory'\nimport { nodeFactory } from '../../awst/node-factory'\nimport type { Expression } from '../../awst/nodes'\nimport { EqualityComparison, NumericComparison } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { codeInvariant, tryConvertEnum } from '../../util'\nimport type { InstanceType, PType } from '../ptypes'\nimport { boolPType, bytesPType, stringPType } from '../ptypes'\nimport type { InstanceBuilder, NodeBuilder } from './index'\nimport { BuilderComparisonOp, FunctionBuilder, InstanceExpressionBuilder } from './index'\nimport { parseFunctionArgs } from './util/arg-parsing'\n\nexport class BooleanFunctionBuilder extends FunctionBuilder {\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [value],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 1,\n callLocation: sourceLocation,\n funcName: 'Boolean',\n argSpec: (a) => [a.optional()],\n })\n if (!value) {\n return new BooleanExpressionBuilder(nodeFactory.boolConstant({ value: false, sourceLocation }))\n }\n\n if (value.ptype.equals(boolPType)) {\n return value\n }\n if (value.ptype.equals(bytesPType)) {\n return new BooleanExpressionBuilder(\n nodeFactory.bytesComparisonExpression({\n sourceLocation,\n operator: EqualityComparison.ne,\n lhs: value.resolve(),\n rhs: nodeFactory.bytesConstant({ value: new Uint8Array(), sourceLocation }),\n }),\n )\n } else if (value.ptype.equals(stringPType)) {\n return new BooleanExpressionBuilder(\n nodeFactory.bytesComparisonExpression({\n sourceLocation,\n operator: EqualityComparison.ne,\n lhs: value.toBytes(sourceLocation),\n rhs: nodeFactory.bytesConstant({ value: new Uint8Array(), sourceLocation }),\n }),\n )\n } else {\n return new BooleanExpressionBuilder(\n nodeFactory.not({\n sourceLocation,\n expr: nodeFactory.not({\n sourceLocation,\n expr: value.boolEval(sourceLocation),\n }),\n }),\n )\n }\n }\n}\n\nexport class BooleanExpressionBuilder extends InstanceExpressionBuilder<InstanceType> {\n constructor(expr: Expression) {\n super(expr, boolPType)\n }\n\n boolEval(sourceLocation: SourceLocation, negate: boolean): awst.Expression {\n if (negate) {\n return nodeFactory.not({ sourceLocation, expr: this._expr })\n }\n return this._expr\n }\n\n toBytes(sourceLocation: SourceLocation): Expression {\n return intrinsicFactory.itob({\n value: this._expr,\n sourceLocation,\n })\n }\n\n compare(other: InstanceBuilder, op: BuilderComparisonOp, sourceLocation: SourceLocation): InstanceBuilder {\n const operator = tryConvertEnum(op, BuilderComparisonOp, NumericComparison)\n codeInvariant(operator, `${op} is not supported on ${this.typeDescription}`, sourceLocation)\n return new BooleanExpressionBuilder(\n nodeFactory.numericComparisonExpression({\n operator,\n lhs: this.resolve(),\n rhs: other.resolveToPType(boolPType).resolve(),\n sourceLocation,\n }),\n )\n }\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { Expression } from '../../../awst/nodes'\nimport { EqualityComparison } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport { logger } from '../../../logger'\nimport { BooleanExpressionBuilder } from '../boolean-expression-builder'\nimport { BuilderComparisonOp } from '../index'\n\nconst builderCompareToBytesCompare: Record<BuilderComparisonOp, EqualityComparison | undefined> = {\n [BuilderComparisonOp.ne]: EqualityComparison.ne,\n [BuilderComparisonOp.eq]: EqualityComparison.eq,\n [BuilderComparisonOp.lt]: undefined,\n [BuilderComparisonOp.lte]: undefined,\n [BuilderComparisonOp.gt]: undefined,\n [BuilderComparisonOp.gte]: undefined,\n}\n\nexport function compareBytes(\n left: Expression,\n right: Expression,\n op: BuilderComparisonOp,\n sourceLocation: SourceLocation,\n typeDescription: string,\n) {\n const equalityOp = builderCompareToBytesCompare[op]\n if (equalityOp === undefined) {\n logger.error(sourceLocation, `${typeDescription} does not support the '${op}' operator`)\n }\n return new BooleanExpressionBuilder(\n nodeFactory.bytesComparisonExpression({\n sourceLocation,\n operator: equalityOp ?? EqualityComparison.eq,\n lhs: left,\n rhs: right,\n }),\n )\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { Expression } from '../../../awst/nodes'\nimport { NumericComparison } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport { logger } from '../../../logger'\nimport { tryConvertEnum } from '../../../util'\nimport { BooleanExpressionBuilder } from '../boolean-expression-builder'\nimport { BuilderComparisonOp } from '../index'\n\nexport function compareUint64(\n left: Expression,\n right: Expression,\n op: BuilderComparisonOp,\n sourceLocation: SourceLocation,\n typeDescription: string,\n) {\n const numComOp = tryConvertEnum(op, BuilderComparisonOp, NumericComparison)\n if (numComOp === undefined) {\n logger.error(sourceLocation, `${typeDescription} does not support the '${op}' operator`)\n }\n return new BooleanExpressionBuilder(\n nodeFactory.numericComparisonExpression({\n sourceLocation,\n operator: numComOp ?? NumericComparison.eq,\n lhs: left,\n rhs: right,\n }),\n )\n}\n","import { intrinsicFactory } from '../../../awst/intrinsic-factory'\nimport { nodeFactory } from '../../../awst/node-factory'\nimport type { Expression } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport { wtypes } from '../../../awst/wtypes'\nimport type { PType } from '../../ptypes'\nimport { uint64PType } from '../../ptypes'\nimport { instanceEb } from '../../type-registry'\nimport type { BuilderComparisonOp, InstanceBuilder, NodeBuilder } from '../index'\nimport { InstanceExpressionBuilder } from '../index'\nimport { requireExpressionOfType } from '../util'\nimport { compareUint64 } from '../util/compare-uint64'\n\nexport type FieldMapping = Record<string, [string, PType]>\n\nexport abstract class ReferenceTypeExpressionBuilder extends InstanceExpressionBuilder<PType> {\n constructor(\n expr: Expression,\n protected options: {\n ptype: PType\n backingType: PType\n backingMember: string\n fieldMapping: FieldMapping\n fieldOpCode: string\n fieldBoolComment: string\n },\n ) {\n super(expr, options.ptype)\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n if (name === this.options.backingMember) {\n return instanceEb(\n nodeFactory.reinterpretCast({\n expr: this.resolve(),\n wtype: this.options.backingType.wtypeOrThrow,\n sourceLocation,\n }),\n this.options.backingType,\n )\n }\n if (name in this.options.fieldMapping) {\n const [immediate, resultType] = this.options.fieldMapping[name]\n const op = nodeFactory.intrinsicCall({\n opCode: this.options.fieldOpCode,\n immediates: [immediate],\n stackArgs: [this.resolve()],\n wtype: new wtypes.WTuple({ types: [resultType.wtypeOrThrow, wtypes.boolWType], immutable: true }),\n sourceLocation,\n })\n return instanceEb(nodeFactory.checkedMaybe({ expr: op, comment: this.options.fieldBoolComment }), resultType)\n }\n return super.memberAccess(name, sourceLocation)\n }\n}\n\nexport abstract class Uint64BackedReferenceTypeExpressionBuilder extends ReferenceTypeExpressionBuilder {\n constructor(\n expr: Expression,\n options: {\n ptype: PType\n backingMember: string\n fieldMapping: FieldMapping\n fieldOpCode: string\n fieldBoolComment: string\n },\n ) {\n super(expr, {\n backingType: uint64PType,\n ...options,\n })\n }\n\n toBytes(sourceLocation: SourceLocation): Expression {\n return intrinsicFactory.itob({ value: this.resolve(), sourceLocation })\n }\n boolEval(sourceLocation: SourceLocation, negate: boolean = false): Expression {\n if (negate) {\n return nodeFactory.not({\n expr: this.resolve(),\n sourceLocation,\n })\n }\n return nodeFactory.reinterpretCast({\n sourceLocation,\n expr: this.resolve(),\n wtype: wtypes.boolWType,\n })\n }\n\n compare(other: InstanceBuilder, op: BuilderComparisonOp, sourceLocation: SourceLocation): InstanceBuilder {\n const otherExpr = requireExpressionOfType(other, this.ptype)\n return compareUint64(this.resolve(), otherExpr, op, sourceLocation, this.typeDescription)\n }\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { Expression } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport { wtypes } from '../../../awst/wtypes'\nimport type { PType } from '../../ptypes'\nimport { accountPType, applicationPType, assetPType, bytesPType, stringPType, uint64PType } from '../../ptypes'\nimport { BooleanExpressionBuilder } from '../boolean-expression-builder'\nimport type { BuilderComparisonOp, InstanceBuilder, NodeBuilder } from '../index'\nimport { FunctionBuilder } from '../index'\nimport { requireExpressionOfType, requireStringConstant } from '../util'\nimport { parseFunctionArgs } from '../util/arg-parsing'\nimport { compareBytes } from '../util/compare-bytes'\nimport { ReferenceTypeExpressionBuilder } from './base'\n\nexport class AccountFunctionBuilder extends FunctionBuilder {\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [addressOrKey],\n } = parseFunctionArgs({\n args,\n typeArgs,\n callLocation: sourceLocation,\n funcName: 'Account function',\n genericTypeArgs: 0,\n argSpec: (a) => [a.optional(stringPType, bytesPType)],\n })\n\n if (!addressOrKey) {\n return new AccountExpressionBuilder(\n nodeFactory.intrinsicCall({\n opCode: 'global',\n immediates: ['ZeroAddress'],\n stackArgs: [],\n sourceLocation,\n wtype: accountPType.wtype,\n }),\n )\n }\n if (addressOrKey.ptype.equals(stringPType)) {\n const address = requireStringConstant(addressOrKey)\n return new AccountExpressionBuilder(\n nodeFactory.addressConstant({\n value: address.value,\n sourceLocation: address.sourceLocation,\n wtype: accountPType.wtype,\n }),\n )\n }\n\n return new AccountExpressionBuilder(\n nodeFactory.reinterpretCast({\n expr: requireExpressionOfType(addressOrKey, bytesPType),\n wtype: accountPType.wtype,\n sourceLocation,\n }),\n )\n }\n}\nexport class AccountExpressionBuilder extends ReferenceTypeExpressionBuilder {\n constructor(expr: Expression) {\n super(expr, {\n backingType: bytesPType,\n backingMember: 'bytes',\n fieldMapping: {\n balance: ['AcctBalance', uint64PType],\n minBalance: ['AcctMinBalance', uint64PType],\n authAddress: ['AcctAuthAddr', accountPType],\n totalNumUint: ['AcctTotalNumUint', uint64PType],\n totalNumByteSlice: ['AcctTotalNumByteSlice', uint64PType],\n totalExtraAppPages: ['AcctTotalExtraAppPages', uint64PType],\n totalAppsCreated: ['AcctTotalAppsCreated', uint64PType],\n totalAppsOptedIn: ['AcctTotalAppsOptedIn', uint64PType],\n totalAssetsCreated: ['AcctTotalAssetsCreated', uint64PType],\n totalAssets: ['AcctTotalAssets', uint64PType],\n totalBoxes: ['AcctTotalBoxes', uint64PType],\n totalBoxBytes: ['AcctTotalBoxBytes', uint64PType],\n },\n fieldOpCode: 'acct_params_get',\n ptype: accountPType,\n fieldBoolComment: 'account funded',\n })\n }\n\n compare(other: InstanceBuilder, op: BuilderComparisonOp, sourceLocation: SourceLocation): InstanceBuilder {\n return compareBytes(this._expr, requireExpressionOfType(other, accountPType), op, sourceLocation, this.typeDescription)\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n switch (name) {\n case 'isOptedIn':\n return new IsOptedInFunctionBuilder(this._expr, sourceLocation)\n }\n return super.memberAccess(name, sourceLocation)\n }\n\n toBytes(sourceLocation: SourceLocation): Expression {\n return nodeFactory.reinterpretCast({\n expr: this._expr,\n wtype: wtypes.bytesWType,\n sourceLocation,\n })\n }\n}\n\nclass IsOptedInFunctionBuilder extends FunctionBuilder {\n constructor(\n private expr: Expression,\n sourceLocation: SourceLocation,\n ) {\n super(sourceLocation)\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [applicationOrAsset],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n callLocation: sourceLocation,\n funcName: 'isOptedIn',\n argSpec: (a) => [a.required(applicationPType, assetPType)],\n })\n\n if (applicationOrAsset.ptype.equals(assetPType)) {\n return new BooleanExpressionBuilder(\n nodeFactory.tupleItemExpression({\n base: nodeFactory.intrinsicCall({\n opCode: 'asset_holding_get',\n immediates: ['AssetBalance'],\n stackArgs: [this.expr, applicationOrAsset.resolve()],\n wtype: new wtypes.WTuple({ types: [wtypes.uint64WType, wtypes.boolWType], immutable: true }),\n sourceLocation,\n }),\n index: 1n,\n sourceLocation,\n }),\n )\n } else {\n return new BooleanExpressionBuilder(\n nodeFactory.intrinsicCall({\n opCode: 'app_opted_in',\n stackArgs: [this.expr, applicationOrAsset.resolve()],\n sourceLocation,\n wtype: wtypes.boolWType,\n immediates: [],\n }),\n )\n }\n }\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport type { PType } from '../../ptypes'\nimport { instanceEb } from '../../type-registry'\nimport type { InstanceBuilder } from '../index'\nimport { FunctionBuilder, type NodeBuilder } from '../index'\nimport { parseFunctionArgs } from '../util/arg-parsing'\n\nexport class Arc4CopyFunctionBuilder extends FunctionBuilder {\n constructor(private baseBuilder: InstanceBuilder) {\n super(baseBuilder.sourceLocation)\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n parseFunctionArgs({ args, typeArgs, genericTypeArgs: 0, argSpec: (a) => [], funcName: 'copy', callLocation: sourceLocation })\n return instanceEb(\n nodeFactory.copy({\n value: this.baseBuilder.resolve(),\n sourceLocation,\n }),\n this.baseBuilder.ptype,\n )\n }\n}\n","import { invariant } from '../../../util'\nimport { numberPType, uint64PType } from '../../ptypes'\nimport type { InstanceBuilder } from '../index'\nimport { BigIntLiteralExpressionBuilder } from '../literal/big-int-literal-expression-builder'\n\nexport function getBigIntOrUint64Expr(builder: InstanceBuilder) {\n if (builder.ptype.equals(numberPType)) {\n invariant(builder instanceof BigIntLiteralExpressionBuilder, 'Builder for number type must be BigIntLiteral', builder.sourceLocation)\n return builder.value\n } else {\n invariant(builder.ptype.equals(uint64PType), 'Builder must be uint64 if not number', builder.sourceLocation)\n return builder.resolve()\n }\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { Expression } from '../../../awst/nodes'\nimport { UInt64BinaryOperator } from '../../../awst/nodes'\nimport { logger } from '../../../logger'\nimport type { InstanceBuilder } from '../index'\nimport { getBigIntOrUint64Expr } from './get-bigint-or-uint64-expr'\n\nexport function translateNegativeIndex(arrayLength: Expression | bigint, index: InstanceBuilder) {\n const indexParam = getBigIntOrUint64Expr(index)\n\n if (typeof indexParam === 'bigint') {\n if (typeof arrayLength === 'bigint') {\n let indexValue = indexParam < 0 ? arrayLength + indexParam : indexParam\n if (indexValue < 0n || indexValue >= arrayLength) {\n logger.error(index.sourceLocation, 'Index access out of bounds')\n indexValue = 0n\n }\n return nodeFactory.uInt64Constant({\n value: indexValue,\n sourceLocation: index.sourceLocation,\n })\n } else {\n return nodeFactory.uInt64BinaryOperation({\n op: UInt64BinaryOperator.sub,\n left: arrayLength,\n right: nodeFactory.uInt64Constant({\n value: indexParam * -1n,\n sourceLocation: index.sourceLocation,\n }),\n sourceLocation: index.sourceLocation,\n })\n }\n } else {\n return indexParam\n }\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { Expression } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport type { wtypes } from '../../../awst/wtypes'\nimport type { PType } from '../../ptypes'\nimport { numberPType, uint64PType } from '../../ptypes'\nimport { instanceEb } from '../../type-registry'\nimport type { NodeBuilder } from '../index'\nimport { FunctionBuilder } from '../index'\nimport { parseFunctionArgs } from '../util/arg-parsing'\nimport { translateNegativeIndex } from '../util/translate-negative-index'\n\nexport class AtFunctionBuilder extends FunctionBuilder {\n constructor(\n private expr: Expression,\n private itemPType: PType & { wtype: wtypes.WType },\n private exprLength: Expression | bigint,\n ) {\n super(expr.sourceLocation)\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [index],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n callLocation: sourceLocation,\n funcName: 'at',\n argSpec: (a) => [a.required(uint64PType, numberPType)],\n })\n\n return instanceEb(\n nodeFactory.indexExpression({\n base: this.expr,\n sourceLocation: sourceLocation,\n index: translateNegativeIndex(this.exprLength, index),\n wtype: this.itemPType.wtype,\n }),\n this.itemPType,\n )\n }\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport type { PType } from '../../ptypes'\nimport { instanceEb } from '../../type-registry'\nimport type { InstanceBuilder } from '../index'\nimport { FunctionBuilder, type NodeBuilder } from '../index'\nimport { parseFunctionArgs } from '../util/arg-parsing'\n\nexport class ArrayPopFunctionBuilder extends FunctionBuilder {\n constructor(private arrayBuilder: InstanceBuilder<{ elementType: PType } & PType>) {\n super(arrayBuilder.sourceLocation)\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const elementType = this.arrayBuilder.ptype.elementType\n parseFunctionArgs({\n args,\n typeArgs,\n funcName: 'pop',\n callLocation: sourceLocation,\n genericTypeArgs: 0,\n argSpec: () => [],\n })\n\n return instanceEb(\n nodeFactory.arrayPop({\n base: this.arrayBuilder.resolve(),\n sourceLocation,\n wtype: elementType.wtypeOrThrow,\n }),\n elementType,\n )\n }\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport { wtypes } from '../../../awst/wtypes'\nimport type { PType } from '../../ptypes'\nimport { voidPType } from '../../ptypes'\nimport { instanceEb } from '../../type-registry'\nimport type { InstanceBuilder } from '../index'\nimport { FunctionBuilder, type NodeBuilder } from '../index'\nimport { parseFunctionArgs } from '../util/arg-parsing'\n\nexport class ArrayPushFunctionBuilder extends FunctionBuilder {\n constructor(private arrayBuilder: InstanceBuilder<{ elementType: PType } & PType>) {\n super(arrayBuilder.sourceLocation)\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const elementType = this.arrayBuilder.ptype.elementType\n const {\n args: [...items],\n } = parseFunctionArgs({\n args,\n typeArgs,\n funcName: 'push',\n callLocation: sourceLocation,\n genericTypeArgs: 0,\n argSpec: (a) => [a.required(elementType), ...args.slice(1).map(() => a.required(elementType))],\n })\n\n return instanceEb(\n nodeFactory.arrayExtend({\n base: this.arrayBuilder.resolve(),\n other: nodeFactory.tupleExpression({\n items: items.map((i) => i.resolve()),\n sourceLocation,\n }),\n sourceLocation,\n wtype: wtypes.voidWType,\n }),\n voidPType,\n )\n }\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { Expression } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport type { wtypes } from '../../../awst/wtypes'\n\nimport type { PType } from '../../ptypes'\nimport { numberPType, uint64PType } from '../../ptypes'\nimport { instanceEb } from '../../type-registry'\nimport type { NodeBuilder } from '../index'\nimport { FunctionBuilder } from '../index'\nimport { parseFunctionArgs } from '../util/arg-parsing'\nimport { getBigIntOrUint64Expr } from '../util/get-bigint-or-uint64-expr'\n\nexport class SliceFunctionBuilder extends FunctionBuilder {\n constructor(\n private base: Expression,\n private resultPType: PType & { wtype: wtypes.WType },\n ) {\n super(base.sourceLocation)\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [start, stop],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n callLocation: sourceLocation,\n funcName: 'slice',\n argSpec: (a) => [a.optional(uint64PType, numberPType), a.optional(uint64PType, numberPType)],\n })\n return instanceEb(\n nodeFactory.intersectionSliceExpression({\n base: this.base,\n sourceLocation: sourceLocation,\n beginIndex: start ? getBigIntOrUint64Expr(start) : null,\n endIndex: stop ? getBigIntOrUint64Expr(stop) : null,\n wtype: this.resultPType.wtype,\n }),\n this.resultPType,\n )\n }\n}\n","import type { SourceLocation } from '../../../awst/source-location'\nimport { CodeError } from '../../../errors'\n\nexport function stringToBigint({ value, sourceLocation }: { value: string; sourceLocation: SourceLocation }): bigint {\n try {\n return BigInt(value)\n } catch (e) {\n if (e instanceof SyntaxError) {\n throw new CodeError(`Cannot convert ${value} to an integer`, { sourceLocation })\n }\n throw e\n }\n}\n","import type { awst } from '../../awst'\nimport { intrinsicFactory } from '../../awst/intrinsic-factory'\nimport { nodeFactory } from '../../awst/node-factory'\nimport type { Expression } from '../../awst/nodes'\nimport { BoolConstant, UInt64BinaryOperator, UInt64PostfixUnaryOperator, UInt64UnaryOperator } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { wtypes } from '../../awst/wtypes'\n\nimport { NotSupported } from '../../errors'\nimport { tryConvertEnum } from '../../util'\nimport type { InstanceType, PType } from '../ptypes'\nimport { boolPType, stringPType, Uint64Function, uint64PType } from '../ptypes'\nimport type { BuilderComparisonOp, InstanceBuilder, NodeBuilder } from './index'\nimport { BuilderBinaryOp, BuilderUnaryOp, FunctionBuilder, InstanceExpressionBuilder } from './index'\nimport { requireExpressionOfType, requireStringConstant } from './util'\nimport { parseFunctionArgs } from './util/arg-parsing'\nimport { compareUint64 } from './util/compare-uint64'\nimport { stringToBigint } from './util/string-to-bigint'\n\nexport class UInt64FunctionBuilder extends FunctionBuilder {\n readonly ptype = Uint64Function\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [value],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n callLocation: sourceLocation,\n funcName: 'Uint64',\n argSpec: (a) => [a.optional(uint64PType, boolPType, stringPType)],\n })\n\n if (!value) {\n return new UInt64ExpressionBuilder(\n nodeFactory.uInt64Constant({\n sourceLocation,\n value: 0n,\n }),\n )\n }\n if (value.ptype.equals(boolPType)) {\n const expr = value.resolve()\n if (expr instanceof BoolConstant) {\n return new UInt64ExpressionBuilder(\n nodeFactory.uInt64Constant({\n sourceLocation,\n value: expr.value ? 1n : 0n,\n }),\n )\n } else {\n return new UInt64ExpressionBuilder(\n nodeFactory.reinterpretCast({\n expr,\n wtype: wtypes.uint64WType,\n sourceLocation,\n }),\n )\n }\n } else if (value.ptype.equals(stringPType)) {\n const valueStr = requireStringConstant(value)\n return new UInt64ExpressionBuilder(\n nodeFactory.uInt64Constant({\n value: stringToBigint(valueStr),\n sourceLocation,\n }),\n )\n }\n return value\n }\n}\n\nexport class UInt64ExpressionBuilder extends InstanceExpressionBuilder<InstanceType> {\n constructor(expr: Expression) {\n super(expr, uint64PType)\n }\n boolEval(sourceLocation: SourceLocation, negate: boolean): Expression {\n const asBool = nodeFactory.reinterpretCast({\n sourceLocation,\n expr: this.resolve(),\n wtype: wtypes.boolWType,\n })\n if (negate) {\n return nodeFactory.not({\n expr: asBool,\n sourceLocation,\n })\n }\n return asBool\n }\n\n compare(other: InstanceBuilder, op: BuilderComparisonOp, sourceLocation: SourceLocation): InstanceBuilder {\n const otherExpr = requireExpressionOfType(other, uint64PType)\n return compareUint64(this._expr, otherExpr, op, sourceLocation, this.typeDescription)\n }\n\n prefixUnaryOp(op: BuilderUnaryOp, sourceLocation: SourceLocation): InstanceBuilder {\n let binaryOp: UInt64BinaryOperator\n\n switch (op) {\n case BuilderUnaryOp.inc:\n binaryOp = UInt64BinaryOperator.add\n break\n case BuilderUnaryOp.dec:\n binaryOp = UInt64BinaryOperator.sub\n break\n case BuilderUnaryOp.bit_inv:\n return new UInt64ExpressionBuilder(\n nodeFactory.uInt64UnaryOperation({\n op: UInt64UnaryOperator.bitInvert,\n sourceLocation,\n expr: this.resolve(),\n wtype: this.ptype.wtype,\n }),\n )\n case BuilderUnaryOp.pos:\n return this\n default:\n return super.prefixUnaryOp(op, sourceLocation)\n }\n return new UInt64ExpressionBuilder(\n nodeFactory.assignmentExpression({\n target: this.resolveLValue(),\n sourceLocation,\n value: nodeFactory.uInt64BinaryOperation({\n left: this.resolve(),\n right: nodeFactory.uInt64Constant({ value: 1n, sourceLocation }),\n op: binaryOp,\n sourceLocation,\n }),\n }),\n )\n }\n\n postfixUnaryOp(op: BuilderUnaryOp, sourceLocation: SourceLocation): InstanceBuilder {\n let unaryOp: UInt64PostfixUnaryOperator\n switch (op) {\n case BuilderUnaryOp.inc:\n unaryOp = UInt64PostfixUnaryOperator.increment\n break\n case BuilderUnaryOp.dec:\n unaryOp = UInt64PostfixUnaryOperator.decrement\n break\n default:\n return super.postfixUnaryOp(op, sourceLocation)\n }\n return new UInt64ExpressionBuilder(\n nodeFactory.uInt64PostfixUnaryOperation({\n sourceLocation,\n target: this.resolveLValue(),\n wtype: this.ptype.wtype,\n op: unaryOp,\n }),\n )\n }\n\n binaryOp(other: InstanceBuilder, op: BuilderBinaryOp, sourceLocation: SourceLocation): InstanceBuilder {\n const otherExpr = requireExpressionOfType(other, uint64PType)\n\n const uintOp = op === BuilderBinaryOp.div ? UInt64BinaryOperator.floorDiv : tryConvertEnum(op, BuilderBinaryOp, UInt64BinaryOperator)\n if (uintOp === undefined) {\n throw new NotSupported(`UInt64 binary operator ${op}`, {\n sourceLocation,\n })\n }\n return new UInt64ExpressionBuilder(\n nodeFactory.uInt64BinaryOperation({\n left: this._expr,\n right: otherExpr,\n op: uintOp,\n sourceLocation,\n }),\n )\n }\n\n augmentedAssignment(other: InstanceBuilder, op: BuilderBinaryOp, sourceLocation: SourceLocation): InstanceBuilder {\n return new UInt64ExpressionBuilder(\n nodeFactory.assignmentExpression({\n target: this.resolveLValue(),\n value: this.binaryOp(other, op, sourceLocation).resolve(),\n sourceLocation,\n }),\n )\n }\n\n toBytes(sourceLocation: SourceLocation): awst.Expression {\n return intrinsicFactory.itob({ value: this.resolve(), sourceLocation })\n }\n}\n","import { intrinsicFactory } from '../../../../awst/intrinsic-factory'\nimport { nodeFactory } from '../../../../awst/node-factory'\nimport type { Expression } from '../../../../awst/nodes'\nimport type { SourceLocation } from '../../../../awst/source-location'\nimport { wtypes } from '../../../../awst/wtypes'\nimport { CodeError } from '../../../../errors'\nimport { bigIntToUint8Array, codeInvariant } from '../../../../util'\nimport type { PType } from '../../../ptypes'\nimport { ArrayLiteralPType, ArrayPType, TuplePType } from '../../../ptypes'\nimport { ARC4ArrayType, DynamicArrayType, DynamicBytesType, StaticArrayType, StaticBytesType } from '../../../ptypes/arc4-types'\nimport { instanceEb } from '../../../type-registry'\nimport type { InstanceBuilder } from '../../index'\n\nexport function concatArrays(left: InstanceBuilder, right: InstanceBuilder, sourceLocation: SourceLocation): InstanceBuilder {\n if (left.ptype instanceof StaticBytesType || left.ptype instanceof StaticArrayType) {\n /*\n TODO: This is only required because puya doesn't support staticarray + other => dynamic array\n To work around this, we convert arc4 static bytes and static array to dynamic bytes and dynamic array\n */\n const dynamicType = left.ptype instanceof StaticBytesType ? DynamicBytesType : new DynamicArrayType({ ...left.ptype })\n return concatArrays(toArc4Dynamic(left.ptype.arraySize, left.resolve(), dynamicType), right, sourceLocation)\n }\n\n const returnType = getArrayConcatType(left.ptype, right.ptype, sourceLocation)\n return instanceEb(\n nodeFactory.arrayConcat({\n left: left.resolve(),\n right: right.resolve(),\n wtype: returnType.wtype,\n sourceLocation,\n }),\n returnType,\n )\n}\n\nfunction getArrayConcatType(left: PType, right: PType, sourceLocation: SourceLocation) {\n if (left instanceof ARC4ArrayType) {\n if (right instanceof ARC4ArrayType) {\n sameElementType(left.elementType, right.elementType, sourceLocation)\n if (left.equals(DynamicBytesType) || left instanceof StaticBytesType) {\n return DynamicBytesType\n }\n return new DynamicArrayType({\n elementType: left.elementType,\n })\n }\n } else if (left instanceof ArrayPType || left instanceof ArrayLiteralPType) {\n if (right instanceof ArrayPType || right instanceof ArrayLiteralPType || right instanceof ARC4ArrayType) {\n sameElementType(left.elementType, right.elementType, sourceLocation)\n return new ArrayPType({\n elementType: left.elementType,\n })\n }\n if (right instanceof TuplePType) {\n right.items.forEach((i) => sameElementType(left.elementType, i, sourceLocation))\n return new ArrayPType({\n elementType: left.elementType,\n })\n }\n }\n cannotConcat(left, right, sourceLocation)\n}\n\nfunction cannotConcat(left: PType, right: PType, sourceLocation: SourceLocation): never {\n throw new CodeError(`Cannot concat ${left} with ${right}`, { sourceLocation })\n}\n\nfunction sameElementType(left: PType, right: PType, sourceLocation: SourceLocation) {\n codeInvariant(left.equals(right), `Cannot concat array of type ${left} with iterable of type ${right}`, sourceLocation)\n}\n\nfunction toArc4Dynamic(staticSize: bigint, staticBytes: Expression, dynamicType: DynamicArrayType) {\n return instanceEb(\n nodeFactory.reinterpretCast({\n expr: intrinsicFactory.bytesConcat({\n left: nodeFactory.bytesConstant({\n value: bigIntToUint8Array(staticSize, 2),\n sourceLocation: staticBytes.sourceLocation,\n }),\n right: nodeFactory.reinterpretCast({\n expr: staticBytes,\n wtype: wtypes.bytesWType,\n sourceLocation: staticBytes.sourceLocation,\n }),\n sourceLocation: staticBytes.sourceLocation,\n }),\n wtype: dynamicType.wtype,\n sourceLocation: staticBytes.sourceLocation,\n }),\n dynamicType,\n )\n}\n","import type { SourceLocation } from '../../../../awst/source-location'\nimport { CodeError } from '../../../../errors'\nimport type { PType } from '../../../ptypes'\nimport { ArrayLiteralPType, ArrayPType } from '../../../ptypes'\nimport { ARC4ArrayType } from '../../../ptypes/arc4-types'\n\nexport function arrayElementType(arrayType: PType, sourceLocation: SourceLocation) {\n if (arrayType instanceof ARC4ArrayType) return arrayType.elementType\n if (arrayType instanceof ArrayPType) return arrayType.elementType\n if (arrayType instanceof ArrayLiteralPType) return arrayType.elementType\n throw new CodeError(`${arrayType} does not appear to be an array type`, { sourceLocation })\n}\n","import { nodeFactory } from '../../../../awst/node-factory'\nimport { IntegerConstant } from '../../../../awst/nodes'\nimport type { SourceLocation } from '../../../../awst/source-location'\nimport { logger } from '../../../../logger'\nimport { uint64PType } from '../../../ptypes'\nimport { StaticArrayType } from '../../../ptypes/arc4-types'\nimport { instanceEb } from '../../../type-registry'\nimport type { InstanceBuilder } from '../../index'\nimport { type NodeBuilder } from '../../index'\nimport { requireExpressionOfType } from '../index'\nimport { arrayElementType } from './common'\n\nexport function indexAccess(target: InstanceBuilder, index: InstanceBuilder, sourceLocation: SourceLocation): NodeBuilder {\n const indexExpr = requireExpressionOfType(index, uint64PType)\n if (indexExpr instanceof IntegerConstant && target.ptype instanceof StaticArrayType && indexExpr.value >= target.ptype.arraySize) {\n logger.error(index.sourceLocation, 'Index access out of bounds')\n }\n\n const elementType = arrayElementType(target.ptype, sourceLocation)\n return instanceEb(\n nodeFactory.indexExpression({\n base: target.resolve(),\n sourceLocation: sourceLocation,\n index: indexExpr,\n wtype: elementType.wtypeOrThrow,\n }),\n elementType,\n )\n}\n","import type { InstanceBuilder, NodeBuilder } from '../index'\n\nexport const StaticIterator = Symbol('StaticIterator')\n\nexport interface StaticallyIterable {\n [StaticIterator](): InstanceBuilder[]\n}\n\nexport function isStaticallyIterable<T extends NodeBuilder>(builder: T): builder is T & StaticallyIterable {\n return StaticIterator in builder\n}\n","import { nodeFactory } from '../../../../awst/node-factory'\nimport type { SourceLocation } from '../../../../awst/source-location'\nimport { uint64PType } from '../../../ptypes'\nimport { instanceEb } from '../../../type-registry'\nimport type { InstanceBuilder } from '../../index'\nimport { isStaticallyIterable, StaticIterator } from '../../traits/static-iterator'\n\nexport function arrayLength(array: InstanceBuilder, sourceLocation: SourceLocation) {\n if (isStaticallyIterable(array)) {\n return instanceEb(\n nodeFactory.uInt64Constant({\n value: BigInt(array[StaticIterator]().length),\n sourceLocation,\n }),\n uint64PType,\n )\n }\n\n return instanceEb(\n nodeFactory.arrayLength({\n array: array.resolve(),\n sourceLocation,\n }),\n uint64PType,\n )\n}\n","import { CodeError } from '../../../errors'\nimport { codeInvariant } from '../../../util'\nimport type { PType } from '../../ptypes'\nimport { accountPType, applicationPType, assetPType, bytesPType, onCompleteActionType, stringPType, uint64PType } from '../../ptypes'\nimport { instanceEb } from '../../type-registry'\nimport type { NodeBuilder } from '../index'\nimport { InstanceBuilder } from '../index'\n\n/**\n * Given a builder, attempt to resolve it to the target type converting compatible types as possible\n *\n * @param builder\n * @param targetType\n */\nexport function resolveCompatBuilder(builder: NodeBuilder, targetType: PType) {\n codeInvariant(builder instanceof InstanceBuilder, `Cannot resolve ${builder.typeDescription} to a value`, builder.sourceLocation)\n\n if (builder.resolvableToPType(targetType)) {\n return builder.resolveToPType(targetType)\n }\n\n if (targetType.equals(accountPType)) {\n if (builder.resolvableToPType(bytesPType)) {\n // Account bytes should just be cast\n return builder.resolveToPType(bytesPType).reinterpretCast(accountPType)\n }\n } else if (targetType.equals(applicationPType) || targetType.equals(assetPType) || targetType.equals(onCompleteActionType)) {\n if (builder.resolvableToPType(uint64PType)) {\n return builder.resolveToPType(uint64PType).reinterpretCast(targetType)\n }\n } else if (targetType.equals(bytesPType)) {\n if (builder.resolvableToPType(stringPType)) {\n return instanceEb(builder.resolveToPType(stringPType).toBytes(builder.sourceLocation), bytesPType)\n }\n }\n\n throw new CodeError(`Cannot resolve ${builder.ptype} to ${targetType}`, { sourceLocation: builder.sourceLocation })\n}\n\nexport function resolveCompatExpression(builder: NodeBuilder, targetType: PType) {\n return resolveCompatBuilder(builder, targetType).resolve()\n}\n","import { awst } from '../../awst'\nimport { intrinsicFactory } from '../../awst/intrinsic-factory'\nimport { nodeFactory } from '../../awst/node-factory'\nimport type { Expression } from '../../awst/nodes'\nimport { BytesBinaryOperator, BytesEncoding, EqualityComparison } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { wtypes } from '../../awst/wtypes'\nimport { NotSupported } from '../../errors'\nimport { tryConvertEnum, utf8ToUint8Array } from '../../util'\nimport type { InstanceType, PType, PTypeOrClass } from '../ptypes'\nimport { boolPType, bytesPType, stringPType } from '../ptypes'\nimport { instanceEb } from '../type-registry'\nimport type { InstanceBuilder, NodeBuilder } from './index'\nimport { BuilderBinaryOp, BuilderComparisonOp, FunctionBuilder, InstanceExpressionBuilder } from './index'\nimport { UInt64ExpressionBuilder } from './uint64-expression-builder'\nimport { requireExpressionOfType } from './util'\nimport { parseFunctionArgs } from './util/arg-parsing'\n\nexport class StringFunctionBuilder extends FunctionBuilder {\n taggedTemplate(head: string, spans: ReadonlyArray<readonly [InstanceBuilder, string]>, sourceLocation: SourceLocation): InstanceBuilder {\n let result: awst.Expression = nodeFactory.stringConstant({\n sourceLocation,\n value: head,\n })\n for (const [value, joiningText] of spans) {\n const valueStr = value.toString(sourceLocation)\n result = nodeFactory.bytesBinaryOperation({\n left: result,\n right: valueStr,\n op: BytesBinaryOperator.add,\n sourceLocation,\n wtype: wtypes.stringWType,\n })\n if (joiningText) {\n result = nodeFactory.bytesBinaryOperation({\n left: result,\n right: nodeFactory.stringConstant({\n sourceLocation,\n value: joiningText,\n }),\n op: BytesBinaryOperator.add,\n sourceLocation,\n wtype: wtypes.stringWType,\n })\n }\n }\n return new StringExpressionBuilder(result)\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [value],\n } = parseFunctionArgs({\n args,\n typeArgs,\n callLocation: sourceLocation,\n funcName: 'String',\n genericTypeArgs: 0,\n argSpec: (a) => [a.optional(bytesPType)],\n })\n\n if (!value) {\n return new StringExpressionBuilder(\n nodeFactory.stringConstant({\n sourceLocation,\n value: '',\n }),\n )\n }\n\n return new StringExpressionBuilder(\n nodeFactory.reinterpretCast({\n expr: value.resolve(),\n sourceLocation,\n wtype: wtypes.stringWType,\n }),\n )\n }\n}\n\nexport class StringExpressionBuilder extends InstanceExpressionBuilder<InstanceType> {\n constructor(expr: Expression) {\n super(expr, stringPType)\n }\n\n resolvableToPType(ptype: PTypeOrClass): boolean {\n return super.resolvableToPType(ptype)\n }\n\n resolveToPType(ptype: PTypeOrClass): InstanceBuilder {\n return super.resolveToPType(ptype)\n }\n\n boolEval(sourceLocation: SourceLocation, negate = false): Expression {\n return new UInt64ExpressionBuilder(\n intrinsicFactory.bytesLen({\n value: this._expr,\n sourceLocation,\n }),\n ).boolEval(sourceLocation, negate)\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n switch (name) {\n case 'concat':\n return new ConcatExpressionBuilder(this._expr)\n }\n return super.memberAccess(name, sourceLocation)\n }\n\n compare(other: InstanceBuilder, op: BuilderComparisonOp, sourceLocation: SourceLocation): InstanceBuilder {\n const otherExpr = requireExpressionOfType(other, stringPType)\n const numComOp = tryConvertEnum(op, BuilderComparisonOp, EqualityComparison)\n if (numComOp === undefined) {\n throw new NotSupported(`Numeric comparison operator ${op}`, {\n sourceLocation,\n })\n }\n return instanceEb(\n nodeFactory.bytesComparisonExpression({\n lhs: this._expr,\n rhs: otherExpr,\n operator: numComOp,\n sourceLocation,\n }),\n boolPType,\n )\n }\n\n binaryOp(other: InstanceBuilder, op: BuilderBinaryOp, sourceLocation: SourceLocation): InstanceBuilder {\n switch (op) {\n case BuilderBinaryOp.add:\n return new StringExpressionBuilder(\n intrinsicFactory.bytesConcat({\n left: this.resolve(),\n right: requireExpressionOfType(other, stringPType),\n sourceLocation,\n }),\n )\n }\n return super.binaryOp(other, op, sourceLocation)\n }\n\n augmentedAssignment(other: InstanceBuilder, op: BuilderBinaryOp, sourceLocation: SourceLocation): InstanceBuilder {\n const newValue = this.binaryOp(other, op, sourceLocation)\n return new StringExpressionBuilder(\n nodeFactory.assignmentExpression({\n target: this.resolveLValue(),\n sourceLocation,\n value: newValue.resolve(),\n }),\n )\n }\n\n toBytes(sourceLocation: SourceLocation): awst.Expression {\n if (this._expr instanceof awst.StringConstant) {\n return nodeFactory.bytesConstant({\n value: utf8ToUint8Array(this._expr.value),\n encoding: BytesEncoding.utf8,\n sourceLocation: this._expr.sourceLocation,\n })\n }\n return nodeFactory.reinterpretCast({\n expr: this._expr,\n sourceLocation,\n wtype: wtypes.bytesWType,\n })\n }\n\n toString(): Expression {\n return this.resolve()\n }\n}\n\nexport class ConcatExpressionBuilder extends FunctionBuilder {\n constructor(private expr: awst.Expression) {\n super(expr.sourceLocation)\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const { args: others } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n callLocation: sourceLocation,\n funcName: 'concat',\n argSpec: (a) => args.map((_) => a.required(stringPType)),\n })\n\n return new StringExpressionBuilder(\n others.reduce(\n (acc, cur) =>\n intrinsicFactory.bytesConcat({\n left: acc,\n right: cur.resolve(),\n sourceLocation: sourceLocation,\n }),\n this.expr,\n ),\n )\n }\n}\n","import type { awst } from '../../awst'\n\nimport { intrinsicFactory } from '../../awst/intrinsic-factory'\nimport { nodeFactory } from '../../awst/node-factory'\nimport type { Expression } from '../../awst/nodes'\nimport {\n BytesBinaryOperator,\n BytesConstant,\n BytesEncoding,\n BytesUnaryOperator,\n EqualityComparison,\n IntegerConstant,\n} from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { wtypes } from '../../awst/wtypes'\nimport { wrapInCodeError } from '../../errors'\nimport { logger } from '../../logger'\nimport { base32ToUint8Array, base64ToUint8Array, enumKeyFromValue, hexToUint8Array, uint8ArrayToUtf8, utf8ToUint8Array } from '../../util'\nimport type { InstanceType, PType } from '../ptypes'\nimport {\n ArrayPType,\n bigIntPType,\n biguintPType,\n BytesFunction,\n bytesPType,\n numberPType,\n NumericLiteralPType,\n stringPType,\n uint64PType,\n} from '../ptypes'\nimport { BooleanExpressionBuilder } from './boolean-expression-builder'\nimport type { BuilderComparisonOp, InstanceBuilder, NodeBuilder } from './index'\nimport { BuilderUnaryOp, FunctionBuilder, InstanceExpressionBuilder, ParameterlessFunctionBuilder } from './index'\nimport { BigIntLiteralExpressionBuilder } from './literal/big-int-literal-expression-builder'\nimport { AtFunctionBuilder } from './shared/at-function-builder'\nimport { SliceFunctionBuilder } from './shared/slice-function-builder'\nimport { StringExpressionBuilder } from './string-expression-builder'\nimport { isStaticallyIterable, StaticIterator } from './traits/static-iterator'\nimport { UInt64ExpressionBuilder } from './uint64-expression-builder'\nimport { requireExpressionOfType, requireStringConstant } from './util'\nimport { parseFunctionArgs } from './util/arg-parsing'\nimport { compareBytes } from './util/compare-bytes'\n\nexport class BytesFunctionBuilder extends FunctionBuilder {\n readonly ptype = BytesFunction\n\n taggedTemplate(head: string, spans: ReadonlyArray<readonly [InstanceBuilder, string]>, sourceLocation: SourceLocation): InstanceBuilder {\n let result: awst.Expression = nodeFactory.bytesConstant({\n sourceLocation,\n encoding: BytesEncoding.utf8,\n value: utf8ToUint8Array(head),\n })\n for (const [value, joiningText] of spans) {\n const valueBytes = value.ptype?.equals(stringPType) ? value.resolve() : value.toBytes(sourceLocation)\n result = nodeFactory.bytesBinaryOperation({\n left: result,\n right: valueBytes,\n op: BytesBinaryOperator.add,\n sourceLocation,\n wtype: wtypes.bytesWType,\n })\n if (joiningText) {\n result = nodeFactory.bytesBinaryOperation({\n left: result,\n right: nodeFactory.bytesConstant({\n sourceLocation,\n value: utf8ToUint8Array(joiningText),\n encoding: BytesEncoding.utf8,\n }),\n op: BytesBinaryOperator.add,\n sourceLocation,\n wtype: wtypes.bytesWType,\n })\n }\n }\n\n return new BytesExpressionBuilder(result)\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [initialValue],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n callLocation: sourceLocation,\n funcName: 'Bytes',\n argSpec: (a) => [\n a.optional(\n numberPType,\n bigIntPType,\n uint64PType,\n biguintPType,\n stringPType,\n bytesPType,\n new ArrayPType({ elementType: uint64PType }),\n ),\n ],\n })\n const empty = nodeFactory.bytesConstant({\n sourceLocation,\n value: new Uint8Array(),\n })\n\n let bytesExpr\n\n if (!initialValue) {\n bytesExpr = empty\n } else if (initialValue instanceof BigIntLiteralExpressionBuilder) {\n logger.error(initialValue.sourceLocation, initialValue.ptype.expressionMessage)\n bytesExpr = empty\n } else if (initialValue.ptype.equals(uint64PType)) {\n bytesExpr = initialValue.toBytes(sourceLocation)\n } else if (initialValue.ptype.equals(biguintPType)) {\n bytesExpr = initialValue.toBytes(sourceLocation)\n } else if (initialValue.ptype.equals(stringPType)) {\n bytesExpr = initialValue.toBytes(sourceLocation)\n } else if (initialValue.ptype.equals(bytesPType)) {\n return initialValue\n } else {\n if (isStaticallyIterable(initialValue)) {\n const bytes: number[] = []\n for (const item of initialValue[StaticIterator]()) {\n const byte = item.resolve()\n if (byte instanceof IntegerConstant && byte.value < 256n) {\n bytes.push(Number(byte.value))\n } else {\n logger.error(item.sourceLocation, 'A compile time constant value between 0 and 255 is expected here')\n break\n }\n }\n bytesExpr = nodeFactory.bytesConstant({\n value: Uint8Array.from(bytes),\n sourceLocation: initialValue.sourceLocation,\n })\n } else {\n logger.error(initialValue.sourceLocation, 'Only array literals or tuples are supported here')\n bytesExpr = empty\n }\n }\n return new BytesExpressionBuilder(bytesExpr)\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n switch (name) {\n case 'fromHex':\n return new FromEncodingBuilder(sourceLocation, hexToUint8Array, BytesEncoding.base16, 'fromHex')\n case 'fromBase32':\n return new FromEncodingBuilder(sourceLocation, base32ToUint8Array, BytesEncoding.base32, 'fromBase32')\n case 'fromBase64':\n return new FromEncodingBuilder(sourceLocation, base64ToUint8Array, BytesEncoding.base64, 'fromBase64')\n }\n return super.memberAccess(name, sourceLocation)\n }\n}\n\nclass FromEncodingBuilder extends FunctionBuilder {\n constructor(\n sourceLocation: SourceLocation,\n private decodeLiteral: (value: string) => Uint8Array,\n private encoding: BytesEncoding,\n private functionName: string,\n ) {\n super(sourceLocation)\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [valueBuilder],\n } = parseFunctionArgs({\n args,\n typeArgs,\n callLocation: sourceLocation,\n genericTypeArgs: 0,\n funcName: this.functionName,\n argSpec: (a) => [a.required(stringPType)],\n })\n\n const value = requireStringConstant(valueBuilder)\n\n return new BytesExpressionBuilder(\n nodeFactory.bytesConstant({\n value: wrapInCodeError(() => this.decodeLiteral(value.value), value.sourceLocation),\n encoding: this.encoding,\n sourceLocation,\n }),\n )\n }\n}\n\nexport class BytesExpressionBuilder extends InstanceExpressionBuilder<InstanceType> {\n constructor(expr: Expression) {\n super(expr, bytesPType)\n }\n prefixUnaryOp(op: BuilderUnaryOp, sourceLocation: SourceLocation): InstanceBuilder {\n switch (op) {\n case BuilderUnaryOp.bit_inv:\n logger.error(\n sourceLocation,\n `The '~' ${this.typeDescription} operator coerces the target value to a number type. Use {bytes expression}.bitwiseInvert() instead`,\n )\n return new BigIntLiteralExpressionBuilder(0n, new NumericLiteralPType({ literalValue: 0n }), sourceLocation)\n }\n return super.prefixUnaryOp(op, sourceLocation)\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n switch (name) {\n case 'length':\n return new UInt64ExpressionBuilder(\n intrinsicFactory.bytesLen({\n value: this._expr,\n sourceLocation,\n }),\n )\n case 'bitwiseInvert':\n return new BytesInvertBuilder(this._expr)\n case 'bitwiseAnd':\n return new BitwiseOpFunctionBuilder(this._expr, BytesBinaryOperator.bitAnd)\n case 'bitwiseOr':\n return new BitwiseOpFunctionBuilder(this._expr, BytesBinaryOperator.bitOr)\n case 'bitwiseXor':\n return new BitwiseOpFunctionBuilder(this._expr, BytesBinaryOperator.bitXor)\n case 'toString':\n return new ToStringBuilder(this._expr)\n case 'concat':\n return new ConcatExpressionBuilder(this._expr)\n case 'at':\n return new AtFunctionBuilder(\n this._expr,\n bytesPType,\n requireExpressionOfType(this.memberAccess('length', sourceLocation), uint64PType),\n )\n case 'slice':\n return new SliceFunctionBuilder(this._expr, bytesPType)\n case 'equals':\n return new EqualsFunctionBuilder(this._expr)\n }\n return super.memberAccess(name, sourceLocation)\n }\n compare(other: InstanceBuilder, op: BuilderComparisonOp, sourceLocation: SourceLocation): InstanceBuilder {\n return compareBytes(this._expr, requireExpressionOfType(other, bytesPType), op, sourceLocation, this.typeDescription)\n }\n boolEval(sourceLocation: SourceLocation, negate: boolean): awst.Expression {\n return new UInt64ExpressionBuilder(\n intrinsicFactory.bytesLen({\n value: this._expr,\n sourceLocation,\n }),\n ).boolEval(sourceLocation, negate)\n }\n\n toBytes(): awst.Expression {\n return this.resolve()\n }\n\n toString(sourceLocation: SourceLocation): Expression {\n if (this._expr instanceof BytesConstant) {\n return nodeFactory.stringConstant({\n value: uint8ArrayToUtf8(this._expr.value),\n sourceLocation: this._expr.sourceLocation,\n })\n }\n return nodeFactory.reinterpretCast({\n expr: this._expr,\n sourceLocation,\n wtype: wtypes.stringWType,\n })\n }\n}\n\nexport class ConcatExpressionBuilder extends FunctionBuilder {\n constructor(private expr: awst.Expression) {\n super(expr.sourceLocation)\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [other],\n } = parseFunctionArgs({\n args,\n typeArgs,\n callLocation: sourceLocation,\n funcName: 'concat',\n genericTypeArgs: 0,\n argSpec: (a) => [a.required(bytesPType)],\n })\n return new BytesExpressionBuilder(\n intrinsicFactory.bytesConcat({\n left: this.expr,\n right: other.resolve(),\n sourceLocation: sourceLocation,\n }),\n )\n }\n}\n\nexport class BytesInvertBuilder extends ParameterlessFunctionBuilder {\n constructor(private expr: awst.Expression) {\n super(\n expr,\n (expr, sourceLocation) =>\n new BytesExpressionBuilder(\n nodeFactory.bytesUnaryOperation({\n wtype: wtypes.bytesWType,\n expr: this.expr,\n op: BytesUnaryOperator.bitInvert,\n sourceLocation,\n }),\n ),\n )\n }\n}\n\nexport class BitwiseOpFunctionBuilder extends FunctionBuilder {\n constructor(\n private expr: awst.Expression,\n private op: BytesBinaryOperator,\n ) {\n super(expr.sourceLocation)\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [other],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n callLocation: sourceLocation,\n funcName: enumKeyFromValue(this.op, BytesBinaryOperator),\n argSpec: (a) => [a.required(bytesPType)],\n })\n return new BytesExpressionBuilder(\n nodeFactory.bytesBinaryOperation({\n wtype: wtypes.bytesWType,\n left: this.expr,\n right: other.resolve(),\n op: this.op,\n sourceLocation,\n }),\n )\n }\n}\n\nexport class ToStringBuilder extends ParameterlessFunctionBuilder {\n constructor(private expr: awst.Expression) {\n super(\n expr,\n (expr, sourceLocation) =>\n new StringExpressionBuilder(\n nodeFactory.reinterpretCast({\n wtype: wtypes.stringWType,\n expr: this.expr,\n sourceLocation,\n }),\n ),\n )\n }\n}\n\nclass EqualsFunctionBuilder extends FunctionBuilder {\n constructor(private expr: awst.Expression) {\n super(expr.sourceLocation)\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [right],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n callLocation: sourceLocation,\n funcName: 'equals',\n argSpec: (a) => [a.required(bytesPType)],\n })\n return new BooleanExpressionBuilder(\n nodeFactory.bytesComparisonExpression({\n operator: EqualityComparison.eq,\n lhs: this.expr,\n rhs: right.resolve(),\n sourceLocation,\n }),\n )\n }\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { Expression } from '../../../awst/nodes'\nimport { EqualityComparison } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport { wtypes } from '../../../awst/wtypes'\nimport { tryConvertEnum } from '../../../util'\nimport { type PType } from '../../ptypes'\nimport type { ARC4EncodedType } from '../../ptypes/arc4-types'\nimport { instanceEb } from '../../type-registry'\nimport { BooleanExpressionBuilder } from '../boolean-expression-builder'\nimport { BytesExpressionBuilder } from '../bytes-expression-builder'\nimport type { InstanceBuilder, NodeBuilder } from '../index'\nimport { BuilderComparisonOp, FunctionBuilder, InstanceExpressionBuilder } from '../index'\nimport { requireBuilderOfType } from '../util'\nimport { parseFunctionArgs } from '../util/arg-parsing'\n\nexport class Arc4EncodedBaseExpressionBuilder<T extends ARC4EncodedType> extends InstanceExpressionBuilder<T> {\n constructor(expr: Expression, ptype: T) {\n super(expr, ptype)\n }\n\n compare(other: InstanceBuilder, op: BuilderComparisonOp, sourceLocation: SourceLocation): InstanceBuilder {\n const equalityOp = tryConvertEnum(op, BuilderComparisonOp, EqualityComparison)\n\n switch (equalityOp) {\n case EqualityComparison.eq:\n case EqualityComparison.ne:\n return new BooleanExpressionBuilder(\n nodeFactory.bytesComparisonExpression({\n operator: equalityOp,\n lhs: this.toBytes(sourceLocation),\n rhs: requireBuilderOfType(other, this.ptype).toBytes(sourceLocation),\n sourceLocation,\n }),\n )\n }\n return super.compare(other, op, sourceLocation)\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n switch (name) {\n case 'bytes':\n return new BytesExpressionBuilder(this.toBytes(sourceLocation))\n case 'equals':\n return new Arc4EqualsFunctionBuilder(this, sourceLocation)\n case 'native':\n if (this.ptype.nativeType === undefined) break\n return instanceEb(\n nodeFactory.aRC4Decode({\n value: this.resolve(),\n sourceLocation,\n wtype: this.ptype.nativeType.wtypeOrThrow,\n }),\n this.ptype.nativeType,\n )\n }\n return super.memberAccess(name, sourceLocation)\n }\n\n toBytes(sourceLocation: SourceLocation): Expression {\n return nodeFactory.reinterpretCast({\n expr: this.resolve(),\n wtype: wtypes.bytesWType,\n sourceLocation,\n })\n }\n}\n\nclass Arc4EqualsFunctionBuilder extends FunctionBuilder {\n constructor(\n private left: Arc4EncodedBaseExpressionBuilder<ARC4EncodedType>,\n sourceLocation: SourceLocation,\n ) {\n super(sourceLocation)\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [right],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n callLocation: sourceLocation,\n funcName: 'equals',\n argSpec: (a) => [a.required(this.left.ptype)],\n })\n return new BooleanExpressionBuilder(\n nodeFactory.bytesComparisonExpression({\n operator: EqualityComparison.eq,\n lhs: this.left.toBytes(sourceLocation),\n rhs: right.toBytes(sourceLocation),\n sourceLocation,\n }),\n )\n }\n}\n","import { intrinsicFactory } from '../../../awst/intrinsic-factory'\nimport { nodeFactory } from '../../../awst/node-factory'\nimport type { Expression } from '../../../awst/nodes'\nimport { BytesConstant, NumericComparison, StringConstant } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport { wtypes } from '../../../awst/wtypes'\nimport { Constants } from '../../../constants'\nimport { wrapInCodeError } from '../../../errors'\nimport { logger } from '../../../logger'\n\nimport { base32ToUint8Array, bigIntToUint8Array, codeInvariant, invariant } from '../../../util'\nimport type { PType } from '../../ptypes'\nimport { accountPType, bytesPType, IterableIteratorGeneric, NumericLiteralPType, stringPType, TuplePType, uint64PType } from '../../ptypes'\nimport {\n AddressClass,\n arc4AddressAlias,\n ARC4EncodedType,\n DynamicArrayConstructor,\n DynamicArrayType,\n DynamicBytesConstructor,\n DynamicBytesType,\n StaticArrayConstructor,\n StaticArrayType,\n StaticBytesConstructor,\n StaticBytesGeneric,\n} from '../../ptypes/arc4-types'\nimport { instanceEb } from '../../type-registry'\nimport type { InstanceBuilder, NodeBuilder } from '../index'\nimport { ClassBuilder, FunctionBuilder } from '../index'\nimport { IterableIteratorExpressionBuilder } from '../iterable-iterator-expression-builder'\nimport { AccountExpressionBuilder } from '../reference/account'\nimport { Arc4CopyFunctionBuilder } from '../shared/arc4-copy-function-builder'\nimport { AtFunctionBuilder } from '../shared/at-function-builder'\nimport { ArrayPopFunctionBuilder } from '../shared/pop-function-builder'\nimport { ArrayPushFunctionBuilder } from '../shared/push-function-builder'\nimport { SliceFunctionBuilder } from '../shared/slice-function-builder'\nimport { UInt64ExpressionBuilder } from '../uint64-expression-builder'\nimport { requireExpressionOfType } from '../util'\nimport { parseFunctionArgs } from '../util/arg-parsing'\nimport { concatArrays } from '../util/array/concat'\nimport { indexAccess } from '../util/array/index-access'\nimport { arrayLength } from '../util/array/length'\nimport { resolveCompatExpression } from '../util/resolve-compat-builder'\nimport { Arc4EncodedBaseExpressionBuilder } from './base'\n\nexport class DynamicArrayClassBuilder extends ClassBuilder {\n readonly ptype = DynamicArrayConstructor\n\n newCall(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): InstanceBuilder {\n const {\n args: [...initialItems],\n ptypes: [elementType],\n } = parseFunctionArgs({\n args,\n typeArgs,\n callLocation: sourceLocation,\n funcName: 'DynamicArray constructor',\n genericTypeArgs: 1,\n argSpec: (a) => args.map((_) => a.required()),\n })\n codeInvariant(elementType instanceof ARC4EncodedType, 'Element type must be an ARC4 encoded type', sourceLocation)\n const initialItemExprs = initialItems.map((i) => requireExpressionOfType(i, elementType))\n const ptype = new DynamicArrayType({ elementType, sourceLocation })\n return new DynamicArrayExpressionBuilder(\n nodeFactory.newArray({\n values: initialItemExprs,\n wtype: ptype.wtype,\n sourceLocation,\n }),\n ptype,\n )\n }\n}\nexport class StaticArrayClassBuilder extends ClassBuilder {\n readonly ptype = StaticArrayConstructor\n\n newCall(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): InstanceBuilder {\n const {\n args: [...initialItems],\n ptypes: [elementType, arraySize],\n } = parseFunctionArgs({\n args,\n typeArgs,\n callLocation: sourceLocation,\n funcName: 'StaticArray constructor',\n genericTypeArgs: 2,\n argSpec: (a) => args.map((_) => a.required()),\n })\n codeInvariant(elementType instanceof ARC4EncodedType, 'Element type must be an ARC4 encoded type', sourceLocation)\n codeInvariant(\n arraySize instanceof NumericLiteralPType,\n `Array size type parameter of ${this.typeDescription} must be a literal number. Inferred type is ${arraySize.name}`,\n sourceLocation,\n )\n const initialItemExprs = initialItems.map((i) => requireExpressionOfType(i, elementType))\n const ptype = new StaticArrayType({ elementType, arraySize: arraySize.literalValue, sourceLocation })\n\n // TODO: We should support passing no args in which case the array should be initialized with 'default' values where\n // default is specific to the element type.\n codeInvariant(\n BigInt(initialItemExprs.length) === arraySize.literalValue,\n `Static array of size ${arraySize.literalValue} must be initialized with ${arraySize.literalValue} values`,\n sourceLocation,\n )\n\n return new StaticArrayExpressionBuilder(\n nodeFactory.newArray({\n values: initialItemExprs,\n wtype: ptype.wtype,\n sourceLocation,\n }),\n ptype,\n )\n }\n}\nexport class AddressClassBuilder extends ClassBuilder {\n readonly ptype = AddressClass\n\n newCall(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): InstanceBuilder {\n const {\n args: [accountOrAddressOrBytes],\n } = parseFunctionArgs({\n args,\n typeArgs,\n callLocation: sourceLocation,\n funcName: 'Address constructor',\n genericTypeArgs: 0,\n argSpec: (a) => [a.optional(accountPType, stringPType, bytesPType)],\n })\n if (!accountOrAddressOrBytes) {\n return new AddressExpressionBuilder(\n nodeFactory.addressConstant({\n value: Constants.zeroAddressEncoded,\n sourceLocation,\n wtype: arc4AddressAlias.wtype,\n }),\n arc4AddressAlias,\n )\n }\n\n if (accountOrAddressOrBytes.ptype.equals(accountPType)) {\n return new AddressExpressionBuilder(\n nodeFactory.reinterpretCast({\n expr: accountOrAddressOrBytes.resolve(),\n sourceLocation,\n wtype: arc4AddressAlias.wtype,\n }),\n arc4AddressAlias,\n )\n } else if (accountOrAddressOrBytes.ptype.equals(stringPType)) {\n const value = accountOrAddressOrBytes.resolve()\n if (value instanceof StringConstant) {\n wrapInCodeError(() => base32ToUint8Array(value.value), value.sourceLocation)\n return new AddressExpressionBuilder(\n nodeFactory.addressConstant({\n value: value.value,\n sourceLocation,\n wtype: arc4AddressAlias.wtype,\n }),\n arc4AddressAlias,\n )\n }\n logger.error(\n value.sourceLocation,\n `Invalid address literal. Addresses should be ${Constants.algo.encodedAddressLength} characters and not include base32 padding`,\n )\n }\n return new AddressExpressionBuilder(\n nodeFactory.reinterpretCast({\n expr: accountOrAddressOrBytes.resolve(),\n sourceLocation,\n wtype: arc4AddressAlias.wtype,\n }),\n arc4AddressAlias,\n )\n }\n}\nexport class StaticBytesClassBuilder extends ClassBuilder {\n readonly ptype = StaticBytesConstructor\n\n newCall(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): InstanceBuilder {\n const {\n ptypes: [length],\n args: [initialValue],\n } = parseFunctionArgs({\n args,\n typeArgs,\n callLocation: sourceLocation,\n funcName: `${this.ptype.name} constructor`,\n genericTypeArgs: 1,\n argSpec: (a) => [a.optional(bytesPType, stringPType)],\n })\n const resultPType = StaticBytesGeneric.parameterise([length])\n\n codeInvariant(length instanceof NumericLiteralPType, 'length must be numeric literal', sourceLocation)\n const byteLength = Number(length.literalValue)\n if (!initialValue) {\n return instanceEb(\n nodeFactory.bytesConstant({\n value: new Uint8Array(byteLength),\n sourceLocation,\n wtype: resultPType.wtype,\n }),\n resultPType,\n )\n }\n const value = resolveCompatExpression(initialValue, bytesPType)\n if (value instanceof BytesConstant) {\n codeInvariant(value.value.length === byteLength, `Value should have byte length of ${byteLength}`, sourceLocation)\n return instanceEb(\n nodeFactory.bytesConstant({\n value: value.value,\n wtype: resultPType.wtype,\n sourceLocation,\n }),\n resultPType,\n )\n } else {\n // TODO: puya should support encoding bytes to static bytes but currently doesn't\n // return instanceEb(\n // nodeFactory.aRC4Encode({\n // value: initialValue.resolve(),\n // sourceLocation,\n // wtype: resultPType.wtype,\n // }),\n // resultPType,\n // )\n\n const value = initialValue.singleEvaluation().resolve()\n\n return instanceEb(\n nodeFactory.checkedMaybe({\n comment: `Length is ${resultPType.arraySize}`,\n expr: nodeFactory.tupleExpression({\n items: [\n nodeFactory.reinterpretCast({\n expr: value,\n wtype: resultPType.wtype,\n sourceLocation,\n }),\n nodeFactory.numericComparisonExpression({\n operator: NumericComparison.eq,\n lhs: nodeFactory.uInt64Constant({\n value: resultPType.arraySize,\n sourceLocation,\n }),\n rhs: intrinsicFactory.bytesLen({\n value,\n sourceLocation,\n }),\n sourceLocation,\n }),\n ],\n sourceLocation,\n }),\n }),\n resultPType,\n )\n }\n }\n}\nexport class DynamicBytesClassBuilder extends ClassBuilder {\n readonly ptype = DynamicBytesConstructor\n\n newCall(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): InstanceBuilder {\n const {\n args: [initialValue],\n } = parseFunctionArgs({\n args,\n typeArgs,\n callLocation: sourceLocation,\n funcName: `${this.ptype.name} constructor`,\n genericTypeArgs: 0,\n argSpec: (a) => [a.optional(bytesPType, stringPType)],\n })\n const resultPType = DynamicBytesType\n\n if (!initialValue) {\n return instanceEb(\n nodeFactory.bytesConstant({\n value: new Uint8Array([0, 0]),\n sourceLocation,\n wtype: resultPType.wtype,\n }),\n resultPType,\n )\n }\n\n const value = resolveCompatExpression(initialValue, bytesPType)\n if (value instanceof BytesConstant) {\n return instanceEb(\n nodeFactory.bytesConstant({\n value: new Uint8Array([...bigIntToUint8Array(BigInt(value.value.length), 2), ...value.value]),\n sourceLocation,\n wtype: resultPType.wtype,\n }),\n resultPType,\n )\n } else {\n return instanceEb(\n nodeFactory.aRC4Encode({\n value,\n sourceLocation,\n wtype: resultPType.wtype,\n }),\n resultPType,\n )\n }\n }\n}\n\nexport abstract class ArrayExpressionBuilder<\n TArrayType extends DynamicArrayType | StaticArrayType,\n> extends Arc4EncodedBaseExpressionBuilder<TArrayType> {\n iterate(): Expression {\n return this.resolve()\n }\n\n indexAccess(index: InstanceBuilder, sourceLocation: SourceLocation): NodeBuilder {\n return indexAccess(this, index, sourceLocation)\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n switch (name) {\n case 'length':\n return arrayLength(this, sourceLocation)\n case 'at':\n return new AtFunctionBuilder(\n this.resolve(),\n this.ptype.elementType,\n this.ptype instanceof StaticArrayType\n ? this.ptype.arraySize\n : requireExpressionOfType(this.memberAccess('length', sourceLocation), uint64PType),\n )\n case 'entries':\n return new EntriesFunctionBuilder(this)\n case 'copy':\n return new Arc4CopyFunctionBuilder(this)\n case 'concat':\n return new ConcatFunctionBuilder(this)\n case 'slice': {\n const sliceResult =\n this.ptype instanceof StaticArrayType ? new DynamicArrayType({ elementType: this.ptype.elementType }) : this.ptype\n return new SliceFunctionBuilder(this.resolve(), sliceResult)\n }\n }\n return super.memberAccess(name, sourceLocation)\n }\n}\n\nclass ConcatFunctionBuilder extends FunctionBuilder {\n constructor(private arrayBuilder: ArrayExpressionBuilder<DynamicArrayType | StaticArrayType>) {\n super(arrayBuilder.sourceLocation)\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [other],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n argSpec: (a) => [a.required()],\n funcName: 'concat',\n callLocation: sourceLocation,\n })\n return concatArrays(this.arrayBuilder, other, sourceLocation)\n }\n}\nclass EntriesFunctionBuilder extends FunctionBuilder {\n constructor(private arrayBuilder: ArrayExpressionBuilder<DynamicArrayType | StaticArrayType>) {\n super(arrayBuilder.sourceLocation)\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n parseFunctionArgs({ args, typeArgs, callLocation: sourceLocation, argSpec: (_) => [], genericTypeArgs: 0, funcName: 'entries' })\n const iteratorType = IterableIteratorGeneric.parameterise([\n new TuplePType({ items: [uint64PType, this.arrayBuilder.ptype.elementType] }),\n ])\n return new IterableIteratorExpressionBuilder(\n nodeFactory.enumeration({\n expr: this.arrayBuilder.iterate(),\n sourceLocation,\n wtype: iteratorType.wtype,\n }),\n iteratorType,\n )\n }\n}\n\nexport class DynamicArrayExpressionBuilder extends ArrayExpressionBuilder<DynamicArrayType> {\n constructor(expr: Expression, ptype: PType) {\n invariant(ptype instanceof DynamicArrayType, 'ptype must be instance of DynamicArrayType')\n super(expr, ptype)\n }\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n switch (name) {\n case 'push':\n return new ArrayPushFunctionBuilder(this)\n case 'pop':\n return new ArrayPopFunctionBuilder(this)\n }\n return super.memberAccess(name, sourceLocation)\n }\n}\n\nexport class StaticArrayExpressionBuilder extends ArrayExpressionBuilder<StaticArrayType> {\n constructor(expr: Expression, ptype: PType) {\n invariant(ptype instanceof StaticArrayType, 'ptype must be instance of StaticArrayType')\n super(expr, ptype)\n }\n}\n\nexport class DynamicBytesExpressionBuilder extends DynamicArrayExpressionBuilder {\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n switch (name) {\n case 'native':\n return instanceEb(\n nodeFactory.aRC4Decode({\n wtype: bytesPType.wtype,\n value: this.resolve(),\n sourceLocation,\n }),\n bytesPType,\n )\n }\n return super.memberAccess(name, sourceLocation)\n }\n}\nexport class StaticBytesExpressionBuilder extends StaticArrayExpressionBuilder {\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n switch (name) {\n case 'native':\n return instanceEb(this.toBytes(sourceLocation), bytesPType)\n }\n return super.memberAccess(name, sourceLocation)\n }\n}\n\nexport class AddressExpressionBuilder extends ArrayExpressionBuilder<StaticArrayType> {\n constructor(expr: Expression, ptype: PType) {\n invariant(ptype instanceof StaticArrayType, 'ptype must be instance of StaticArrayType')\n invariant(ptype.equals(arc4AddressAlias), 'ptype must be arc4AddressAlias')\n super(expr, ptype)\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n switch (name) {\n case 'length':\n return new UInt64ExpressionBuilder(nodeFactory.uInt64Constant({ value: this.ptype.arraySize, sourceLocation }))\n case 'native':\n return new AccountExpressionBuilder(\n nodeFactory.reinterpretCast({ expr: this.toBytes(sourceLocation), sourceLocation, wtype: wtypes.accountWType }),\n )\n }\n return super.memberAccess(name, sourceLocation)\n }\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { Expression } from '../../../awst/nodes'\nimport { BoolConstant } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport { wtypes } from '../../../awst/wtypes'\nimport type { PType } from '../../ptypes'\nimport { boolPType } from '../../ptypes'\nimport { ARC4BoolClass, arc4BooleanType, type ARC4EncodedType } from '../../ptypes/arc4-types'\nimport type { InstanceBuilder, NodeBuilder } from '../index'\nimport { ClassBuilder } from '../index'\nimport { parseFunctionArgs } from '../util/arg-parsing'\nimport { Arc4EncodedBaseExpressionBuilder } from './base'\n\nexport class BoolClassBuilder extends ClassBuilder {\n readonly ptype = ARC4BoolClass\n\n newCall(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): InstanceBuilder {\n const {\n args: [initialValue],\n } = parseFunctionArgs({\n args,\n typeArgs,\n callLocation: sourceLocation,\n funcName: `${this.typeDescription} constructor}`,\n genericTypeArgs: 0,\n argSpec: (a) => [a.optional(boolPType)],\n })\n let expr: Expression\n if (!initialValue) {\n expr = nodeFactory.boolConstant({\n value: false,\n sourceLocation,\n wtype: wtypes.arc4BooleanWType,\n })\n } else {\n const value = initialValue.resolve()\n if (value instanceof BoolConstant) {\n expr = nodeFactory.boolConstant({\n value: value.value,\n sourceLocation,\n wtype: wtypes.arc4BooleanWType,\n })\n } else {\n expr = nodeFactory.aRC4Encode({\n value: value,\n wtype: wtypes.arc4BooleanWType,\n sourceLocation,\n })\n }\n }\n\n return new BoolExpressionBuilder(expr)\n }\n}\n\nexport class BoolExpressionBuilder extends Arc4EncodedBaseExpressionBuilder<ARC4EncodedType> {\n constructor(expression: Expression) {\n super(expression, arc4BooleanType)\n }\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { Expression } from '../../../awst/nodes'\nimport { StringConstant } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport { wtypes } from '../../../awst/wtypes'\nimport type { PType } from '../../ptypes'\nimport { stringPType } from '../../ptypes'\nimport type { ARC4EncodedType } from '../../ptypes/arc4-types'\nimport { ARC4StrClass, arc4StringType } from '../../ptypes/arc4-types'\nimport type { InstanceBuilder, NodeBuilder } from '../index'\nimport { ClassBuilder } from '../index'\nimport { parseFunctionArgs } from '../util/arg-parsing'\nimport { Arc4EncodedBaseExpressionBuilder } from './base'\n\nexport class StrClassBuilder extends ClassBuilder {\n readonly ptype = ARC4StrClass\n\n newCall(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): InstanceBuilder {\n const {\n args: [initialValue],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n funcName: this.typeDescription,\n callLocation: sourceLocation,\n argSpec: (a) => [a.optional(stringPType)],\n })\n\n if (!initialValue) {\n return new StrExpressionBuilder(\n nodeFactory.stringConstant({\n value: '',\n sourceLocation: sourceLocation,\n wtype: wtypes.arc4StringAliasWType,\n }),\n )\n }\n const expr = initialValue.resolve()\n if (expr instanceof StringConstant) {\n return new StrExpressionBuilder(\n nodeFactory.stringConstant({\n value: expr.value,\n sourceLocation: sourceLocation,\n wtype: wtypes.arc4StringAliasWType,\n }),\n )\n } else {\n return new StrExpressionBuilder(\n nodeFactory.aRC4Encode({\n value: expr,\n wtype: wtypes.arc4StringAliasWType,\n sourceLocation,\n }),\n )\n }\n }\n}\n\nexport class StrExpressionBuilder extends Arc4EncodedBaseExpressionBuilder<ARC4EncodedType> {\n constructor(expression: Expression) {\n super(expression, arc4StringType)\n }\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { Expression } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport { invariant } from '../../../util'\nimport type { PType, PTypeOrClass } from '../../ptypes'\nimport { ObjectPType } from '../../ptypes'\nimport { ARC4StructClass, ARC4StructType } from '../../ptypes/arc4-types'\nimport { instanceEb } from '../../type-registry'\nimport type { NodeBuilder } from '../index'\nimport { ClassBuilder, InstanceBuilder } from '../index'\nimport { Arc4CopyFunctionBuilder } from '../shared/arc4-copy-function-builder'\nimport { requireExpressionOfType } from '../util'\nimport { parseFunctionArgs } from '../util/arg-parsing'\nimport { Arc4EncodedBaseExpressionBuilder } from './base'\n\nexport class StructClassBuilder extends ClassBuilder {\n readonly ptype: ARC4StructClass\n\n constructor(sourceLocation: SourceLocation, ptype: PType) {\n super(sourceLocation)\n invariant(ptype instanceof ARC4StructClass, 'ptype must be ARC4StructClass')\n this.ptype = ptype\n }\n\n newCall(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): InstanceBuilder {\n const {\n args: [initialValues],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 1,\n callLocation: sourceLocation,\n funcName: this.typeDescription,\n argSpec: (a) => [a.required(this.ptype.instanceType.nativeType)],\n })\n const initialSingle = initialValues.singleEvaluation()\n\n const structFields = Object.entries(this.ptype.instanceType.fields).map(\n ([p, t]) => [p, requireExpressionOfType(initialSingle.memberAccess(p, sourceLocation), t)] as const,\n )\n return new StructExpressionBuilder(\n nodeFactory.newStruct({\n wtype: this.ptype.instanceType.wtype,\n values: new Map(structFields),\n sourceLocation,\n }),\n this.ptype.instanceType,\n )\n }\n}\n\nexport class StructExpressionBuilder extends Arc4EncodedBaseExpressionBuilder<ARC4StructType> {\n constructor(expr: Expression, ptype: PType) {\n invariant(ptype instanceof ARC4StructType, 'ptype must be ARC4StructType')\n super(expr, ptype)\n }\n\n hasProperty(name: string): boolean {\n return name in this.ptype.fields || super.hasProperty(name)\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n switch (name) {\n case 'copy':\n return new Arc4CopyFunctionBuilder(this)\n }\n if (name in this.ptype.fields) {\n const fieldType = this.ptype.fields[name]\n return instanceEb(\n nodeFactory.fieldExpression({\n name,\n sourceLocation,\n wtype: fieldType.wtype,\n base: this._expr,\n }),\n fieldType,\n )\n }\n return super.memberAccess(name, sourceLocation)\n }\n\n resolvableToPType(ptype: PTypeOrClass): boolean {\n if (ptype.equals(this.ptype)) return true\n\n if (ptype instanceof ObjectPType) {\n const native = this.memberAccess('native', this.sourceLocation)\n if (native instanceof InstanceBuilder) {\n return native.resolvableToPType(ptype)\n }\n }\n return false\n }\n\n resolveToPType(ptype: PTypeOrClass): InstanceBuilder {\n if (ptype.equals(this.ptype)) return this\n\n if (ptype instanceof ObjectPType) {\n const native = this.memberAccess('native', this.sourceLocation)\n if (native instanceof InstanceBuilder) {\n return native.resolveToPType(ptype)\n }\n }\n return super.resolveToPType(ptype)\n }\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { Expression } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport { logger } from '../../../logger'\nimport { codeInvariant, invariant } from '../../../util'\nimport type { PType } from '../../ptypes'\nimport { numberPType, TuplePType, uint64PType } from '../../ptypes'\nimport { ARC4EncodedType, Arc4TupleClass, ARC4TupleType } from '../../ptypes/arc4-types'\nimport { instanceEb } from '../../type-registry'\nimport type { InstanceBuilder, NodeBuilder } from '../index'\nimport { ClassBuilder, FunctionBuilder } from '../index'\nimport { requireIntegerConstant } from '../util'\nimport { parseFunctionArgs } from '../util/arg-parsing'\nimport { Arc4EncodedBaseExpressionBuilder } from './base'\n\nexport class Arc4TupleClassBuilder extends ClassBuilder {\n readonly ptype = Arc4TupleClass\n\n newCall(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): InstanceBuilder {\n const { args: tupleItems } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 1,\n funcName: this.typeDescription,\n callLocation: sourceLocation,\n argSpec: (a) => [a.required(), ...args.slice(1).map(() => a.required())],\n })\n\n const expressions: Expression[] = []\n const types: ARC4EncodedType[] = []\n for (const item of tupleItems) {\n if (item.ptype instanceof ARC4EncodedType) {\n expressions.push(item.resolve())\n types.push(item.ptype)\n } else {\n logger.error(item.sourceLocation, 'ARC4 tuple items must be ARC4 encoded types')\n }\n }\n const tupleType = new TuplePType({\n items: types,\n })\n const arc4TupleType = new ARC4TupleType({\n types,\n sourceLocation,\n })\n return new Arc4TupleExpressionBuilder(\n nodeFactory.aRC4Encode({\n value: nodeFactory.tupleExpression({\n items: expressions,\n wtype: tupleType.wtype,\n sourceLocation,\n }),\n wtype: arc4TupleType.wtype,\n sourceLocation,\n }),\n arc4TupleType,\n )\n }\n}\n\nexport class Arc4TupleExpressionBuilder extends Arc4EncodedBaseExpressionBuilder<ARC4TupleType> {\n constructor(expr: Expression, ptype: PType) {\n invariant(ptype instanceof ARC4TupleType, 'ptype must be ARC4TupleType')\n super(expr, ptype)\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n switch (name) {\n case 'at':\n return new Arc4TupleAtFunctionBuilder(this, sourceLocation)\n case 'length':\n return instanceEb(\n nodeFactory.uInt64Constant({\n value: BigInt(this.ptype.items.length),\n sourceLocation,\n }),\n uint64PType,\n )\n }\n return super.memberAccess(name, sourceLocation)\n }\n}\n\nclass Arc4TupleAtFunctionBuilder extends FunctionBuilder {\n constructor(\n private builder: Arc4TupleExpressionBuilder,\n sourceLocation: SourceLocation,\n ) {\n super(sourceLocation)\n }\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [index],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 1,\n callLocation: sourceLocation,\n funcName: 'at',\n argSpec: (a) => [a.required(numberPType)],\n })\n\n const indexNum = requireIntegerConstant(index).value\n codeInvariant(\n indexNum < this.builder.ptype.items.length && indexNum >= 0,\n \"Index arg must be a numeric literal between 0 and the tuple's length\",\n )\n\n const itemType = this.builder.ptype.items[Number(indexNum)]\n\n return instanceEb(\n nodeFactory.tupleItemExpression({\n index: indexNum,\n sourceLocation,\n base: this.builder.resolve(),\n }),\n itemType,\n )\n }\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { Expression, StringConstant } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport { CodeError } from '../../../errors'\nimport { codeInvariant, invariant } from '../../../util'\nimport type { PType } from '../../ptypes'\nimport { NumericLiteralPType, stringPType } from '../../ptypes'\nimport { UFixedNxMClass, UFixedNxMType } from '../../ptypes/arc4-types'\nimport { ClassBuilder, type InstanceBuilder, type NodeBuilder } from '../index'\nimport { requireStringConstant } from '../util'\nimport { parseFunctionArgs } from '../util/arg-parsing'\nimport { isValidLiteralForPType } from '../util/is-valid-literal-for-ptype'\nimport { Arc4EncodedBaseExpressionBuilder } from './base'\n\nexport class UFixedNxMClassBuilder extends ClassBuilder {\n readonly ptype = UFixedNxMClass\n\n newCall(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): InstanceBuilder {\n const {\n ptypes: [size, decimals],\n args: [initialValueBuilder],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 2,\n funcName: this.typeDescription,\n argSpec: (a) => [a.optional(stringPType)],\n callLocation: sourceLocation,\n })\n codeInvariant(\n size instanceof NumericLiteralPType,\n `Generic type N of ${this.typeDescription} must be a literal number. Inferred type is ${size.name}`,\n sourceLocation,\n )\n codeInvariant(\n decimals instanceof NumericLiteralPType,\n `Generic type M of ${this.typeDescription} must be a literal number. Inferred type is ${decimals.name}`,\n sourceLocation,\n )\n const ptype = new UFixedNxMType({ n: size.literalValue, m: decimals.literalValue })\n\n return newUFixedNxM(initialValueBuilder, ptype, sourceLocation)\n }\n}\n\nfunction newUFixedNxM(initialValue: InstanceBuilder | undefined, ptype: UFixedNxMType, sourceLocation: SourceLocation) {\n let expr: Expression\n if (initialValue === undefined) {\n expr = nodeFactory.decimalConstant({\n wtype: ptype.wtype,\n value: '0',\n sourceLocation,\n })\n } else if (initialValue.ptype.equals(stringPType)) {\n const strConstant = requireStringConstant(initialValue)\n expr = fromDecimalString(strConstant, ptype)\n } else {\n throw new CodeError(`Unsupported expression of type ${initialValue.ptype}`, { sourceLocation: initialValue.sourceLocation })\n }\n\n return new UFixedNxMExpressionBuilder(expr, ptype)\n}\n\nfunction fromDecimalString(strConst: StringConstant, ptype: UFixedNxMType) {\n const [integer, decimal, ...rest] = strConst.value.split('.') as [string, string | undefined, ...string[]]\n codeInvariant(rest.length === 0, 'Decimals should have at most 1 decimal point', strConst.sourceLocation)\n codeInvariant(decimal === undefined || decimal.length <= ptype.m, 'Number of decimal places cannot exceed M', strConst.sourceLocation)\n\n const d = decimal === undefined ? 0n : BigInt(decimal.padEnd(Number(ptype.m), '0'))\n const i = BigInt(integer)\n const val = i * 10n ** ptype.m + d\n codeInvariant(isValidLiteralForPType(val, ptype), `${strConst} is not a valid literal for ${ptype.name}`, strConst.sourceLocation)\n return nodeFactory.decimalConstant({\n wtype: ptype.wtype,\n value: strConst.value,\n sourceLocation: strConst.sourceLocation,\n })\n}\n\nexport class UFixedNxMExpressionBuilder extends Arc4EncodedBaseExpressionBuilder<UFixedNxMType> {\n constructor(expr: Expression, ptype: PType) {\n invariant(ptype instanceof UFixedNxMType, 'ptype must be UFixedNxMType')\n super(expr, ptype)\n }\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { Expression } from '../../../awst/nodes'\nimport { IntegerConstant } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport { CodeError } from '../../../errors'\nimport { codeInvariant, invariant } from '../../../util'\nimport type { LibClassType, PType } from '../../ptypes'\nimport { biguintPType, NumericLiteralPType, uint64PType } from '../../ptypes'\nimport { UintNClass, UintNType } from '../../ptypes/arc4-types'\nimport type { InstanceBuilder, NodeBuilder } from '../index'\nimport { ClassBuilder } from '../index'\nimport { parseFunctionArgs } from '../util/arg-parsing'\nimport { isValidLiteralForPType } from '../util/is-valid-literal-for-ptype'\nimport { Arc4EncodedBaseExpressionBuilder } from './base'\n\nexport class UintNClassBuilder extends ClassBuilder {\n readonly ptype = UintNClass\n\n newCall(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): InstanceBuilder {\n const {\n ptypes: [size],\n args: [initialValueBuilder],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 1,\n funcName: this.typeDescription,\n argSpec: (a) => [a.optional()],\n callLocation: sourceLocation,\n })\n codeInvariant(\n size instanceof NumericLiteralPType,\n `Generic type of ${this.typeDescription} must be a literal number. Inferred type is ${size.name}`,\n sourceLocation,\n )\n const ptype = new UintNType({ n: size.literalValue })\n\n return newUintN(initialValueBuilder, ptype, sourceLocation)\n }\n}\nexport const classBuilderForUintNAlias = (aliasClass: LibClassType, aliasInstance: UintNType) => {\n return class extends ClassBuilder {\n readonly ptype = aliasClass\n\n newCall(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): InstanceBuilder {\n const {\n args: [initialValueBuilder],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 1,\n funcName: `${this.typeDescription} constructor`,\n argSpec: (a) => [a.optional()],\n callLocation: sourceLocation,\n })\n\n return newUintN(initialValueBuilder, aliasInstance, sourceLocation)\n }\n }\n}\n\nfunction newUintN(initialValueBuilder: InstanceBuilder | undefined, ptype: UintNType, sourceLocation: SourceLocation) {\n if (initialValueBuilder === undefined) {\n return new UintNExpressionBuilder(\n nodeFactory.integerConstant({\n value: 0n,\n tealAlias: null,\n wtype: ptype.wtype,\n sourceLocation: sourceLocation,\n }),\n ptype,\n )\n }\n if (ptype.n <= 64 && initialValueBuilder.resolvableToPType(uint64PType)) {\n const initialValue = initialValueBuilder.resolveToPType(uint64PType).resolve()\n if (initialValue instanceof IntegerConstant) {\n codeInvariant(isValidLiteralForPType(initialValue.value, ptype), `${initialValue.value} cannot be converted to ${ptype}`)\n return new UintNExpressionBuilder(\n nodeFactory.integerConstant({\n value: initialValue.value,\n wtype: ptype.wtype,\n tealAlias: null,\n sourceLocation: sourceLocation,\n }),\n ptype,\n )\n } else {\n return new UintNExpressionBuilder(\n nodeFactory.aRC4Encode({\n wtype: ptype.wtype,\n sourceLocation,\n value: initialValue,\n }),\n ptype,\n )\n }\n }\n\n if (initialValueBuilder.resolvableToPType(biguintPType)) {\n const initialValue = initialValueBuilder.resolveToPType(biguintPType).resolve()\n if (initialValue instanceof IntegerConstant) {\n codeInvariant(isValidLiteralForPType(initialValue.value, ptype), `${initialValue.value} cannot be converted to ${ptype}`)\n return new UintNExpressionBuilder(\n nodeFactory.integerConstant({\n value: initialValue.value,\n wtype: ptype.wtypeOrThrow,\n sourceLocation: sourceLocation,\n tealAlias: null,\n }),\n ptype,\n )\n } else {\n return new UintNExpressionBuilder(\n nodeFactory.aRC4Encode({\n wtype: ptype.wtype,\n sourceLocation,\n value: initialValue,\n }),\n ptype,\n )\n }\n }\n throw CodeError.unexpectedUnhandledArgs({ sourceLocation })\n}\n\nexport class UintNExpressionBuilder extends Arc4EncodedBaseExpressionBuilder<UintNType> {\n constructor(expr: Expression, ptype: PType) {\n invariant(ptype instanceof UintNType, 'ptype must be instance of UIntNType')\n super(expr, ptype)\n }\n}\n","import ts, { SymbolFlags } from 'typescript'\nimport type { Constant, TemplateVar } from '../awst/nodes'\nimport type { SourceLocation } from '../awst/source-location'\nimport { CodeError } from '../errors'\nimport { logger } from '../logger'\nimport { hasFlags, invariant } from '../util'\n\nexport class ConstantStore {\n #constants = new Map<ts.Symbol, Constant | TemplateVar>()\n #typeChecker: ts.TypeChecker\n constructor(program: ts.Program) {\n this.#typeChecker = program.getTypeChecker()\n }\n\n tryResolveConstant(node: ts.Identifier) {\n let symbol = this.#typeChecker.resolveName(node.text, node, SymbolFlags.All, true)\n if (!symbol) return undefined\n if (hasFlags(symbol.flags, ts.SymbolFlags.Alias)) {\n symbol = this.#typeChecker.getAliasedSymbol(symbol)\n }\n return this.#constants.get(symbol)\n }\n\n addConstant(identifier: ts.Identifier, value: Constant | TemplateVar, constantLocation: SourceLocation) {\n const symbol = this.#typeChecker.resolveName(identifier.text, identifier, ts.SymbolFlags.All, false)\n invariant(symbol, 'Constant identifier must resolve to a symbol')\n\n if (this.#constants.has(symbol)) {\n logger.error(new CodeError(`Duplicate definitions found for constant ${identifier.text}`, { sourceLocation: constantLocation }))\n return\n }\n const exportSymbol = this.#typeChecker.getExportSymbolOfSymbol(symbol)\n this.#constants.set(symbol, value)\n if (exportSymbol !== symbol) this.#constants.set(exportSymbol, value)\n }\n}\n","import type { DeliberateAny } from '../typescript-helpers'\n\ntype Primitive = number | bigint | string | boolean\n\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 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","import { LogicSigReference } from '../../awst/models'\nimport { nodeFactory } from '../../awst/node-factory'\nimport type { LogicSignature, Subroutine } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport type { Props } from '../../typescript-helpers'\nimport type { LogicSigPType } from '../ptypes'\nimport type { LogicSigOptionsDecoratorData } from './decorator-data'\n\nexport class LogicSigClassModel {\n public readonly isAbstract = false\n public get id(): LogicSigReference {\n return LogicSigReference.fromPType(this.type)\n }\n public readonly type: LogicSigPType\n public get name(): string {\n return this.type.name\n }\n public readonly description: string | null\n public readonly bases: Array<LogicSigReference>\n public readonly options: LogicSigOptionsDecoratorData | undefined\n public readonly program: Subroutine\n public readonly sourceLocation: SourceLocation\n constructor(props: Props<Omit<LogicSigClassModel, 'name' | 'id' | 'isAbstract'>>) {\n this.type = props.type\n this.description = props.description\n this.program = props.program\n this.bases = props.bases\n this.sourceLocation = props.sourceLocation\n this.options = props.options\n }\n\n public buildLogicSignature(): LogicSignature {\n return nodeFactory.logicSignature({\n id: this.id,\n shortName: this.options?.name ?? this.name,\n program: this.program,\n sourceLocation: this.sourceLocation,\n docstring: this.description,\n avmVersion: this.options?.avmVersion ?? null,\n reservedScratchSpace: this.options?.scratchSlots ?? new Set(),\n })\n }\n}\n","if (!Set.prototype.union) {\n Set.prototype.union = function union<T>(this: Set<T>, other: ReadonlySet<T>) {\n return new Set([...this, ...other])\n }\n}\n","import type { awst } from '../../awst'\nimport type { LogicSigReference } from '../../awst/models'\nimport { ContractReference, OnCompletionAction } from '../../awst/models'\nimport { nodeFactory } from '../../awst/node-factory'\nimport type { AppStorageDefinition, ContractMethod, Statement } from '../../awst/nodes'\nimport { ARC4BareMethodConfig, ARC4CreateOption, StateTotals } from '../../awst/nodes'\nimport { SourceLocation } from '../../awst/source-location'\nimport { wtypes } from '../../awst/wtypes'\nimport { Constants } from '../../constants'\nimport { logger } from '../../logger'\nimport type { Props } from '../../typescript-helpers'\nimport { codeInvariant, invariant, isIn } from '../../util'\nimport { CustomKeyMap } from '../../util/custom-key-map'\nimport type { ContractClassPType } from '../ptypes'\nimport { ClusteredContractClassType } from '../ptypes'\nimport type { ContractOptionsDecoratorData } from './decorator-data'\nimport { LogicSigClassModel } from './logic-sig-class-model'\nimport '../../polyfill/set.prototype.union'\n\nexport class ContractClassModel {\n public readonly isAbstract: boolean\n public get id(): ContractReference {\n return ContractReference.fromPType(this.type)\n }\n public readonly type: ContractClassPType\n public get name(): string {\n return this.type.name\n }\n public readonly options: ContractOptionsDecoratorData | undefined\n public readonly description: string | null\n public readonly propertyInitialization: Array<Statement>\n public readonly approvalProgram: ContractMethod | null\n public readonly clearProgram: ContractMethod | null\n public readonly ctor: ContractMethod | null\n public readonly methods: Array<ContractMethod>\n public readonly appState: Array<AppStorageDefinition>\n public readonly sourceLocation: SourceLocation\n constructor(props: Props<Omit<ContractClassModel, 'name' | 'id'>>) {\n this.isAbstract = props.isAbstract\n this.type = props.type\n this.description = props.description\n this.propertyInitialization = props.propertyInitialization\n this.ctor = props.ctor\n this.approvalProgram = props.approvalProgram\n this.clearProgram = props.clearProgram\n this.methods = props.methods\n this.appState = props.appState\n this.sourceLocation = props.sourceLocation\n this.options = props.options\n }\n\n hasExplicitStateTotals() {\n return this.options?.stateTotals !== undefined\n }\n\n buildContract(compilationSet: CompilationSet): awst.Contract {\n let approvalProgram: ContractMethod | null = this.approvalProgram\n let clearProgram: ContractMethod | null = this.clearProgram\n const methods: ContractMethod[] = [...this.methods]\n const ctors: ContractMethod[] = this.ctor ? [this.ctor] : []\n const methodResolutionOrder: ContractReference[] = []\n let firstBaseWithStateTotals: ContractClassModel | undefined = undefined\n let reservedScratchSpace = new Set<bigint>()\n\n const seenContractIds = new Set<string>()\n\n for (const baseType of this.type.allBases()) {\n const baseClass = this.getModelForClass(compilationSet, baseType)\n if (baseClass.hasExplicitStateTotals() && firstBaseWithStateTotals === undefined) {\n firstBaseWithStateTotals = baseClass\n }\n if (baseClass.options?.scratchSlots) {\n reservedScratchSpace = reservedScratchSpace.union(baseClass.options.scratchSlots)\n }\n methodResolutionOrder.push(baseClass.id)\n if (seenContractIds.has(baseClass.id.toString())) {\n continue\n } else {\n seenContractIds.add(baseClass.id.toString())\n }\n approvalProgram ??= baseClass.approvalProgram\n clearProgram ??= baseClass.clearProgram\n if (baseClass.approvalProgram && baseClass.approvalProgram !== approvalProgram) methods.push(baseClass.approvalProgram)\n if (baseClass.clearProgram && baseClass.clearProgram !== clearProgram) methods.push(baseClass.clearProgram)\n for (const method of baseClass.methods) {\n // Maybe need validation??\n methods.push(method)\n }\n if (baseClass.ctor) ctors.push(baseClass.ctor)\n }\n if (this.type.isARC4) {\n const hasCreate = methods.some((m) => isIn(m.arc4MethodConfig?.create, [ARC4CreateOption.allow, ARC4CreateOption.require]))\n const hasBareNoop = methods.some(\n (m) =>\n m.arc4MethodConfig instanceof ARC4BareMethodConfig && isIn(OnCompletionAction.NoOp, m.arc4MethodConfig.allowedCompletionTypes),\n )\n\n if (!hasCreate) {\n if (hasBareNoop) {\n logger.error(\n this.sourceLocation,\n `Non-abstract ARC4 contract has no methods which can be called to create the contract. ` +\n `An implicit one could not be inserted as there is already a bare method handling the NoOp on completion action. ` +\n `In order to allow creating the contract specify { onCreate: 'allow' } or { onCreate: 'require' } in an @abimethod or @baremethod decorator above the chosen method.`,\n )\n } else {\n methods.push(this.makeDefaultCreate())\n }\n }\n }\n\n codeInvariant(approvalProgram, 'must have approval')\n codeInvariant(clearProgram, 'must have clear')\n\n if (!this.hasExplicitStateTotals && firstBaseWithStateTotals) {\n logger.warn(\n this.options?.sourceLocation ?? this.sourceLocation,\n `Contract extends base contract ${firstBaseWithStateTotals.id} with explicit stateTotals, but does not define its own stateTotals. This could result in insufficient reserved state at run time. An empty object may be provided in order to indicate that this contract should revert to the default behaviour`,\n )\n }\n\n const stateTotals = new StateTotals({\n globalBytes: this.options?.stateTotals?.globalBytes ?? null,\n globalUints: this.options?.stateTotals?.globalUints ?? null,\n localBytes: this.options?.stateTotals?.localBytes ?? null,\n localUints: this.options?.stateTotals?.localUints ?? null,\n })\n\n if (this.options?.scratchSlots) {\n reservedScratchSpace = reservedScratchSpace.union(this.options.scratchSlots)\n }\n\n const hasSignificantConstructor = ctors.length > 1\n\n return nodeFactory.contract({\n name: this.options?.name ?? this.name,\n id: this.id,\n description: this.description,\n approvalProgram: hasSignificantConstructor ? ContractClassModel.patchApprovalToCallCtor(approvalProgram, methods) : approvalProgram,\n clearProgram,\n methodResolutionOrder,\n methods: [...methods, ...(hasSignificantConstructor ? ctors : [])],\n appState: this.appState,\n stateTotals,\n reservedScratchSpace: reservedScratchSpace,\n sourceLocation: this.sourceLocation,\n avmVersion: this.options?.avmVersion ?? null,\n })\n }\n\n private getModelForClass(compilationSet: CompilationSet, contractType: ContractClassPType): ContractClassModel {\n if (contractType instanceof ClusteredContractClassType) {\n return this.buildClusteredMetaClass(compilationSet, contractType)\n } else {\n return compilationSet.getContractClass(ContractReference.fromPType(contractType))\n }\n }\n\n private buildClusteredMetaClass(compilationSet: CompilationSet, clusteredType: ClusteredContractClassType): ContractClassModel {\n const ctor = nodeFactory.contractMethod({\n memberName: Constants.constructorMethodName,\n cref: ContractReference.fromPType(clusteredType),\n documentation: nodeFactory.methodDocumentation({}),\n sourceLocation: SourceLocation.None,\n args: [],\n returnType: wtypes.voidWType,\n body: nodeFactory.block({\n sourceLocation: SourceLocation.None,\n }),\n arc4MethodConfig: null,\n inline: null, // TODO: Expose inline hint option\n })\n const ctorTargets: awst.ContractMethod[] = []\n for (const baseType of clusteredType.baseTypes) {\n for (const b of [baseType, ...baseType.allBases()]) {\n const baseClassModel = this.getModelForClass(compilationSet, b)\n if (baseClassModel.ctor) {\n ctorTargets.push(baseClassModel.ctor)\n break\n }\n }\n }\n ctor.body.body.push(\n ...ctorTargets.map((ct) =>\n nodeFactory.expressionStatement({\n expr: nodeFactory.subroutineCallExpression({\n target: nodeFactory.contractMethodTarget({\n memberName: ct.memberName,\n cref: ct.cref,\n }),\n args: [],\n sourceLocation: SourceLocation.None,\n wtype: wtypes.voidWType,\n }),\n }),\n ),\n )\n return new ContractClassModel({\n appState: [],\n approvalProgram: null,\n clearProgram: null,\n isAbstract: true,\n sourceLocation: SourceLocation.None,\n propertyInitialization: [],\n description: null,\n ctor: ctor,\n methods: [],\n options: undefined,\n type: clusteredType,\n })\n }\n\n private static patchApprovalToCallCtor(approval: ContractMethod, methods: ContractMethod[]): ContractMethod {\n const callCtorIfNew = nodeFactory.ifElse({\n condition: nodeFactory.not({\n expr: nodeFactory.reinterpretCast({\n expr: nodeFactory.intrinsicCall({\n opCode: 'txn',\n immediates: ['ApplicationID'],\n stackArgs: [],\n sourceLocation: SourceLocation.None,\n wtype: wtypes.uint64WType,\n }),\n sourceLocation: SourceLocation.None,\n wtype: wtypes.boolWType,\n }),\n sourceLocation: SourceLocation.None,\n }),\n ifBranch: nodeFactory.block(\n { sourceLocation: SourceLocation.None },\n nodeFactory.expressionStatement({\n expr: nodeFactory.subroutineCallExpression({\n args: [],\n wtype: wtypes.voidWType,\n target: nodeFactory.instanceMethodTarget({\n memberName: Constants.constructorMethodName,\n }),\n sourceLocation: SourceLocation.None,\n }),\n }),\n ),\n sourceLocation: SourceLocation.None,\n elseBranch: null,\n })\n\n return nodeFactory.contractMethod({\n ...approval,\n body: nodeFactory.block({ sourceLocation: SourceLocation.None }, callCtorIfNew, approval.body),\n })\n }\n\n private makeDefaultCreate() {\n return nodeFactory.contractMethod({\n memberName: Constants.defaultCreateMethodName,\n cref: ContractReference.fromPType(this.type),\n args: [],\n arc4MethodConfig: new ARC4BareMethodConfig({\n allowedCompletionTypes: [OnCompletionAction.NoOp],\n create: ARC4CreateOption.require,\n sourceLocation: this.sourceLocation,\n }),\n returnType: wtypes.voidWType,\n documentation: nodeFactory.methodDocumentation({\n description: 'Implicitly generated create method',\n }),\n sourceLocation: this.sourceLocation,\n body: nodeFactory.block({\n sourceLocation: this.sourceLocation,\n }),\n inline: null, // TODO: Expose inline hint option?\n })\n }\n}\n\nexport class CompilationSet extends CustomKeyMap<ContractReference | LogicSigReference, ContractClassModel | LogicSigClassModel> {\n constructor() {\n super((x) => x.toString())\n }\n\n get compilationOutputSet() {\n return Array.from(this.entries())\n .filter(([, meta]) => !meta.isAbstract)\n .map(([ref]) => ref)\n }\n\n getContractClass(cref: ContractReference) {\n const maybeClass = this.get(cref)\n invariant(maybeClass instanceof ContractClassModel, 'Contract reference must resolve to a contract class')\n return maybeClass\n }\n\n getLogicSig(lref: LogicSigReference) {\n const maybeLogicSig = this.get(lref)\n invariant(maybeLogicSig instanceof LogicSigClassModel, 'Logic sig reference must resolve to a logic signature class')\n return maybeLogicSig\n }\n}\n","import ts from 'typescript'\nimport { BinaryBooleanOperator } from '../awst/nodes'\nimport { BuilderBinaryOp, BuilderComparisonOp, BuilderUnaryOp } from '../awst_build/eb'\nimport type { DeliberateAny } from '../typescript-helpers'\n\nexport const SyntaxKindName = {\n [ts.SyntaxKind.Unknown]: 'Unknown',\n [ts.SyntaxKind.EndOfFileToken]: 'EndOfFileToken',\n [ts.SyntaxKind.SingleLineCommentTrivia]: 'SingleLineCommentTrivia',\n [ts.SyntaxKind.MultiLineCommentTrivia]: 'MultiLineCommentTrivia',\n [ts.SyntaxKind.NewLineTrivia]: 'NewLineTrivia',\n [ts.SyntaxKind.WhitespaceTrivia]: 'WhitespaceTrivia',\n [ts.SyntaxKind.ShebangTrivia]: 'ShebangTrivia',\n [ts.SyntaxKind.ConflictMarkerTrivia]: 'ConflictMarkerTrivia',\n [ts.SyntaxKind.NonTextFileMarkerTrivia]: 'NonTextFileMarkerTrivia',\n [ts.SyntaxKind.NumericLiteral]: 'NumericLiteral',\n [ts.SyntaxKind.BigIntLiteral]: 'BigIntLiteral',\n [ts.SyntaxKind.StringLiteral]: 'StringLiteral',\n [ts.SyntaxKind.JsxText]: 'JsxText',\n [ts.SyntaxKind.JsxTextAllWhiteSpaces]: 'JsxTextAllWhiteSpaces',\n [ts.SyntaxKind.RegularExpressionLiteral]: 'RegularExpressionLiteral',\n [ts.SyntaxKind.NoSubstitutionTemplateLiteral]: 'NoSubstitutionTemplateLiteral',\n [ts.SyntaxKind.TemplateHead]: 'TemplateHead',\n [ts.SyntaxKind.TemplateMiddle]: 'TemplateMiddle',\n [ts.SyntaxKind.TemplateTail]: 'TemplateTail',\n [ts.SyntaxKind.OpenBraceToken]: 'OpenBraceToken',\n [ts.SyntaxKind.CloseBraceToken]: 'CloseBraceToken',\n [ts.SyntaxKind.OpenParenToken]: 'OpenParenToken',\n [ts.SyntaxKind.CloseParenToken]: 'CloseParenToken',\n [ts.SyntaxKind.OpenBracketToken]: 'OpenBracketToken',\n [ts.SyntaxKind.CloseBracketToken]: 'CloseBracketToken',\n [ts.SyntaxKind.DotToken]: 'DotToken',\n [ts.SyntaxKind.DotDotDotToken]: 'DotDotDotToken',\n [ts.SyntaxKind.SemicolonToken]: 'SemicolonToken',\n [ts.SyntaxKind.CommaToken]: 'CommaToken',\n [ts.SyntaxKind.QuestionDotToken]: 'QuestionDotToken',\n [ts.SyntaxKind.LessThanToken]: 'LessThanToken',\n [ts.SyntaxKind.LessThanSlashToken]: 'LessThanSlashToken',\n [ts.SyntaxKind.GreaterThanToken]: 'GreaterThanToken',\n [ts.SyntaxKind.LessThanEqualsToken]: 'LessThanEqualsToken',\n [ts.SyntaxKind.GreaterThanEqualsToken]: 'GreaterThanEqualsToken',\n [ts.SyntaxKind.EqualsEqualsToken]: 'EqualsEqualsToken',\n [ts.SyntaxKind.ExclamationEqualsToken]: 'ExclamationEqualsToken',\n [ts.SyntaxKind.EqualsEqualsEqualsToken]: 'EqualsEqualsEqualsToken',\n [ts.SyntaxKind.ExclamationEqualsEqualsToken]: 'ExclamationEqualsEqualsToken',\n [ts.SyntaxKind.EqualsGreaterThanToken]: 'EqualsGreaterThanToken',\n [ts.SyntaxKind.PlusToken]: 'PlusToken',\n [ts.SyntaxKind.MinusToken]: 'MinusToken',\n [ts.SyntaxKind.AsteriskToken]: 'AsteriskToken',\n [ts.SyntaxKind.AsteriskAsteriskToken]: 'AsteriskAsteriskToken',\n [ts.SyntaxKind.SlashToken]: 'SlashToken',\n [ts.SyntaxKind.PercentToken]: 'PercentToken',\n [ts.SyntaxKind.PlusPlusToken]: 'PlusPlusToken',\n [ts.SyntaxKind.MinusMinusToken]: 'MinusMinusToken',\n [ts.SyntaxKind.LessThanLessThanToken]: 'LessThanLessThanToken',\n [ts.SyntaxKind.GreaterThanGreaterThanToken]: 'GreaterThanGreaterThanToken',\n [ts.SyntaxKind.GreaterThanGreaterThanGreaterThanToken]: 'GreaterThanGreaterThanGreaterThanToken',\n [ts.SyntaxKind.AmpersandToken]: 'AmpersandToken',\n [ts.SyntaxKind.BarToken]: 'BarToken',\n [ts.SyntaxKind.CaretToken]: 'CaretToken',\n [ts.SyntaxKind.ExclamationToken]: 'ExclamationToken',\n [ts.SyntaxKind.TildeToken]: 'TildeToken',\n [ts.SyntaxKind.AmpersandAmpersandToken]: 'AmpersandAmpersandToken',\n [ts.SyntaxKind.BarBarToken]: 'BarBarToken',\n [ts.SyntaxKind.QuestionToken]: 'QuestionToken',\n [ts.SyntaxKind.ColonToken]: 'ColonToken',\n [ts.SyntaxKind.AtToken]: 'AtToken',\n [ts.SyntaxKind.QuestionQuestionToken]: 'QuestionQuestionToken',\n [ts.SyntaxKind.BacktickToken]: 'BacktickToken',\n [ts.SyntaxKind.HashToken]: 'HashToken',\n [ts.SyntaxKind.EqualsToken]: 'EqualsToken',\n [ts.SyntaxKind.PlusEqualsToken]: 'PlusEqualsToken',\n [ts.SyntaxKind.MinusEqualsToken]: 'MinusEqualsToken',\n [ts.SyntaxKind.AsteriskEqualsToken]: 'AsteriskEqualsToken',\n [ts.SyntaxKind.AsteriskAsteriskEqualsToken]: 'AsteriskAsteriskEqualsToken',\n [ts.SyntaxKind.SlashEqualsToken]: 'SlashEqualsToken',\n [ts.SyntaxKind.PercentEqualsToken]: 'PercentEqualsToken',\n [ts.SyntaxKind.LessThanLessThanEqualsToken]: 'LessThanLessThanEqualsToken',\n [ts.SyntaxKind.GreaterThanGreaterThanEqualsToken]: 'GreaterThanGreaterThanEqualsToken',\n [ts.SyntaxKind.GreaterThanGreaterThanGreaterThanEqualsToken]: 'GreaterThanGreaterThanGreaterThanEqualsToken',\n [ts.SyntaxKind.AmpersandEqualsToken]: 'AmpersandEqualsToken',\n [ts.SyntaxKind.BarEqualsToken]: 'BarEqualsToken',\n [ts.SyntaxKind.BarBarEqualsToken]: 'BarBarEqualsToken',\n [ts.SyntaxKind.AmpersandAmpersandEqualsToken]: 'AmpersandAmpersandEqualsToken',\n [ts.SyntaxKind.QuestionQuestionEqualsToken]: 'QuestionQuestionEqualsToken',\n [ts.SyntaxKind.CaretEqualsToken]: 'CaretEqualsToken',\n [ts.SyntaxKind.Identifier]: 'Identifier',\n [ts.SyntaxKind.PrivateIdentifier]: 'PrivateIdentifier',\n [ts.SyntaxKind.BreakKeyword]: 'BreakKeyword',\n [ts.SyntaxKind.CaseKeyword]: 'CaseKeyword',\n [ts.SyntaxKind.CatchKeyword]: 'CatchKeyword',\n [ts.SyntaxKind.ClassKeyword]: 'ClassKeyword',\n [ts.SyntaxKind.ConstKeyword]: 'ConstKeyword',\n [ts.SyntaxKind.ContinueKeyword]: 'ContinueKeyword',\n [ts.SyntaxKind.DebuggerKeyword]: 'DebuggerKeyword',\n [ts.SyntaxKind.DefaultKeyword]: 'DefaultKeyword',\n [ts.SyntaxKind.DeleteKeyword]: 'DeleteKeyword',\n [ts.SyntaxKind.DoKeyword]: 'DoKeyword',\n [ts.SyntaxKind.ElseKeyword]: 'ElseKeyword',\n [ts.SyntaxKind.EnumKeyword]: 'EnumKeyword',\n [ts.SyntaxKind.ExportKeyword]: 'ExportKeyword',\n [ts.SyntaxKind.ExtendsKeyword]: 'ExtendsKeyword',\n [ts.SyntaxKind.FalseKeyword]: 'FalseKeyword',\n [ts.SyntaxKind.FinallyKeyword]: 'FinallyKeyword',\n [ts.SyntaxKind.ForKeyword]: 'ForKeyword',\n [ts.SyntaxKind.FunctionKeyword]: 'FunctionKeyword',\n [ts.SyntaxKind.IfKeyword]: 'IfKeyword',\n [ts.SyntaxKind.ImportKeyword]: 'ImportKeyword',\n [ts.SyntaxKind.InKeyword]: 'InKeyword',\n [ts.SyntaxKind.InstanceOfKeyword]: 'InstanceOfKeyword',\n [ts.SyntaxKind.NewKeyword]: 'NewKeyword',\n [ts.SyntaxKind.NullKeyword]: 'NullKeyword',\n [ts.SyntaxKind.ReturnKeyword]: 'ReturnKeyword',\n [ts.SyntaxKind.SuperKeyword]: 'SuperKeyword',\n [ts.SyntaxKind.SwitchKeyword]: 'SwitchKeyword',\n [ts.SyntaxKind.ThisKeyword]: 'ThisKeyword',\n [ts.SyntaxKind.ThrowKeyword]: 'ThrowKeyword',\n [ts.SyntaxKind.TrueKeyword]: 'TrueKeyword',\n [ts.SyntaxKind.TryKeyword]: 'TryKeyword',\n [ts.SyntaxKind.TypeOfKeyword]: 'TypeOfKeyword',\n [ts.SyntaxKind.VarKeyword]: 'VarKeyword',\n [ts.SyntaxKind.VoidKeyword]: 'VoidKeyword',\n [ts.SyntaxKind.WhileKeyword]: 'WhileKeyword',\n [ts.SyntaxKind.WithKeyword]: 'WithKeyword',\n [ts.SyntaxKind.ImplementsKeyword]: 'ImplementsKeyword',\n [ts.SyntaxKind.InterfaceKeyword]: 'InterfaceKeyword',\n [ts.SyntaxKind.LetKeyword]: 'LetKeyword',\n [ts.SyntaxKind.PackageKeyword]: 'PackageKeyword',\n [ts.SyntaxKind.PrivateKeyword]: 'PrivateKeyword',\n [ts.SyntaxKind.ProtectedKeyword]: 'ProtectedKeyword',\n [ts.SyntaxKind.PublicKeyword]: 'PublicKeyword',\n [ts.SyntaxKind.StaticKeyword]: 'StaticKeyword',\n [ts.SyntaxKind.YieldKeyword]: 'YieldKeyword',\n [ts.SyntaxKind.AbstractKeyword]: 'AbstractKeyword',\n [ts.SyntaxKind.AccessorKeyword]: 'AccessorKeyword',\n [ts.SyntaxKind.AsKeyword]: 'AsKeyword',\n [ts.SyntaxKind.AssertsKeyword]: 'AssertsKeyword',\n [ts.SyntaxKind.AssertKeyword]: 'AssertKeyword',\n [ts.SyntaxKind.AnyKeyword]: 'AnyKeyword',\n [ts.SyntaxKind.AsyncKeyword]: 'AsyncKeyword',\n [ts.SyntaxKind.AwaitKeyword]: 'AwaitKeyword',\n [ts.SyntaxKind.BooleanKeyword]: 'BooleanKeyword',\n [ts.SyntaxKind.ConstructorKeyword]: 'ConstructorKeyword',\n [ts.SyntaxKind.DeclareKeyword]: 'DeclareKeyword',\n [ts.SyntaxKind.GetKeyword]: 'GetKeyword',\n [ts.SyntaxKind.InferKeyword]: 'InferKeyword',\n [ts.SyntaxKind.IntrinsicKeyword]: 'IntrinsicKeyword',\n [ts.SyntaxKind.IsKeyword]: 'IsKeyword',\n [ts.SyntaxKind.KeyOfKeyword]: 'KeyOfKeyword',\n [ts.SyntaxKind.ModuleKeyword]: 'ModuleKeyword',\n [ts.SyntaxKind.NamespaceKeyword]: 'NamespaceKeyword',\n [ts.SyntaxKind.NeverKeyword]: 'NeverKeyword',\n [ts.SyntaxKind.OutKeyword]: 'OutKeyword',\n [ts.SyntaxKind.ReadonlyKeyword]: 'ReadonlyKeyword',\n [ts.SyntaxKind.RequireKeyword]: 'RequireKeyword',\n [ts.SyntaxKind.NumberKeyword]: 'NumberKeyword',\n [ts.SyntaxKind.ObjectKeyword]: 'ObjectKeyword',\n [ts.SyntaxKind.SatisfiesKeyword]: 'SatisfiesKeyword',\n [ts.SyntaxKind.SetKeyword]: 'SetKeyword',\n [ts.SyntaxKind.StringKeyword]: 'StringKeyword',\n [ts.SyntaxKind.SymbolKeyword]: 'SymbolKeyword',\n [ts.SyntaxKind.TypeKeyword]: 'TypeKeyword',\n [ts.SyntaxKind.UndefinedKeyword]: 'UndefinedKeyword',\n [ts.SyntaxKind.UniqueKeyword]: 'UniqueKeyword',\n [ts.SyntaxKind.UnknownKeyword]: 'UnknownKeyword',\n [ts.SyntaxKind.UsingKeyword]: 'UsingKeyword',\n [ts.SyntaxKind.FromKeyword]: 'FromKeyword',\n [ts.SyntaxKind.GlobalKeyword]: 'GlobalKeyword',\n [ts.SyntaxKind.BigIntKeyword]: 'BigIntKeyword',\n [ts.SyntaxKind.OverrideKeyword]: 'OverrideKeyword',\n [ts.SyntaxKind.OfKeyword]: 'OfKeyword',\n [ts.SyntaxKind.QualifiedName]: 'QualifiedName',\n [ts.SyntaxKind.ComputedPropertyName]: 'ComputedPropertyName',\n [ts.SyntaxKind.TypeParameter]: 'TypeParameter',\n [ts.SyntaxKind.Parameter]: 'Parameter',\n [ts.SyntaxKind.Decorator]: 'Decorator',\n [ts.SyntaxKind.PropertySignature]: 'PropertySignature',\n [ts.SyntaxKind.PropertyDeclaration]: 'PropertyDeclaration',\n [ts.SyntaxKind.MethodSignature]: 'MethodSignature',\n [ts.SyntaxKind.MethodDeclaration]: 'MethodDeclaration',\n [ts.SyntaxKind.ClassStaticBlockDeclaration]: 'ClassStaticBlockDeclaration',\n [ts.SyntaxKind.Constructor]: 'Constructor',\n [ts.SyntaxKind.GetAccessor]: 'GetAccessor',\n [ts.SyntaxKind.SetAccessor]: 'SetAccessor',\n [ts.SyntaxKind.CallSignature]: 'CallSignature',\n [ts.SyntaxKind.ConstructSignature]: 'ConstructSignature',\n [ts.SyntaxKind.IndexSignature]: 'IndexSignature',\n [ts.SyntaxKind.TypePredicate]: 'TypePredicate',\n [ts.SyntaxKind.TypeReference]: 'TypeReference',\n [ts.SyntaxKind.FunctionType]: 'FunctionType',\n [ts.SyntaxKind.ConstructorType]: 'ConstructorType',\n [ts.SyntaxKind.TypeQuery]: 'TypeQuery',\n [ts.SyntaxKind.TypeLiteral]: 'TypeLiteral',\n [ts.SyntaxKind.ArrayType]: 'ArrayType',\n [ts.SyntaxKind.TupleType]: 'TupleType',\n [ts.SyntaxKind.OptionalType]: 'OptionalType',\n [ts.SyntaxKind.RestType]: 'RestType',\n [ts.SyntaxKind.UnionType]: 'UnionType',\n [ts.SyntaxKind.IntersectionType]: 'IntersectionType',\n [ts.SyntaxKind.ConditionalType]: 'ConditionalType',\n [ts.SyntaxKind.InferType]: 'InferType',\n [ts.SyntaxKind.ParenthesizedType]: 'ParenthesizedType',\n [ts.SyntaxKind.ThisType]: 'ThisType',\n [ts.SyntaxKind.TypeOperator]: 'TypeOperator',\n [ts.SyntaxKind.IndexedAccessType]: 'IndexedAccessType',\n [ts.SyntaxKind.MappedType]: 'MappedType',\n [ts.SyntaxKind.LiteralType]: 'LiteralType',\n [ts.SyntaxKind.NamedTupleMember]: 'NamedTupleMember',\n [ts.SyntaxKind.TemplateLiteralType]: 'TemplateLiteralType',\n [ts.SyntaxKind.TemplateLiteralTypeSpan]: 'TemplateLiteralTypeSpan',\n [ts.SyntaxKind.ImportType]: 'ImportType',\n [ts.SyntaxKind.ObjectBindingPattern]: 'ObjectBindingPattern',\n [ts.SyntaxKind.ArrayBindingPattern]: 'ArrayBindingPattern',\n [ts.SyntaxKind.BindingElement]: 'BindingElement',\n [ts.SyntaxKind.ArrayLiteralExpression]: 'ArrayLiteralExpression',\n [ts.SyntaxKind.ObjectLiteralExpression]: 'ObjectLiteralExpression',\n [ts.SyntaxKind.PropertyAccessExpression]: 'PropertyAccessExpression',\n [ts.SyntaxKind.ElementAccessExpression]: 'ElementAccessExpression',\n [ts.SyntaxKind.CallExpression]: 'CallExpression',\n [ts.SyntaxKind.NewExpression]: 'NewExpression',\n [ts.SyntaxKind.TaggedTemplateExpression]: 'TaggedTemplateExpression',\n [ts.SyntaxKind.TypeAssertionExpression]: 'TypeAssertionExpression',\n [ts.SyntaxKind.ParenthesizedExpression]: 'ParenthesizedExpression',\n [ts.SyntaxKind.FunctionExpression]: 'FunctionExpression',\n [ts.SyntaxKind.ArrowFunction]: 'ArrowFunction',\n [ts.SyntaxKind.DeleteExpression]: 'DeleteExpression',\n [ts.SyntaxKind.TypeOfExpression]: 'TypeOfExpression',\n [ts.SyntaxKind.VoidExpression]: 'VoidExpression',\n [ts.SyntaxKind.AwaitExpression]: 'AwaitExpression',\n [ts.SyntaxKind.PrefixUnaryExpression]: 'PrefixUnaryExpression',\n [ts.SyntaxKind.PostfixUnaryExpression]: 'PostfixUnaryExpression',\n [ts.SyntaxKind.BinaryExpression]: 'BinaryExpression',\n [ts.SyntaxKind.ConditionalExpression]: 'ConditionalExpression',\n [ts.SyntaxKind.TemplateExpression]: 'TemplateExpression',\n [ts.SyntaxKind.YieldExpression]: 'YieldExpression',\n [ts.SyntaxKind.SpreadElement]: 'SpreadElement',\n [ts.SyntaxKind.ClassExpression]: 'ClassExpression',\n [ts.SyntaxKind.OmittedExpression]: 'OmittedExpression',\n [ts.SyntaxKind.ExpressionWithTypeArguments]: 'ExpressionWithTypeArguments',\n [ts.SyntaxKind.AsExpression]: 'AsExpression',\n [ts.SyntaxKind.NonNullExpression]: 'NonNullExpression',\n [ts.SyntaxKind.MetaProperty]: 'MetaProperty',\n [ts.SyntaxKind.SyntheticExpression]: 'SyntheticExpression',\n [ts.SyntaxKind.SatisfiesExpression]: 'SatisfiesExpression',\n [ts.SyntaxKind.TemplateSpan]: 'TemplateSpan',\n [ts.SyntaxKind.SemicolonClassElement]: 'SemicolonClassElement',\n [ts.SyntaxKind.Block]: 'Block',\n [ts.SyntaxKind.EmptyStatement]: 'EmptyStatement',\n [ts.SyntaxKind.VariableStatement]: 'VariableStatement',\n [ts.SyntaxKind.ExpressionStatement]: 'ExpressionStatement',\n [ts.SyntaxKind.IfStatement]: 'IfStatement',\n [ts.SyntaxKind.DoStatement]: 'DoStatement',\n [ts.SyntaxKind.WhileStatement]: 'WhileStatement',\n [ts.SyntaxKind.ForStatement]: 'ForStatement',\n [ts.SyntaxKind.ForInStatement]: 'ForInStatement',\n [ts.SyntaxKind.ForOfStatement]: 'ForOfStatement',\n [ts.SyntaxKind.ContinueStatement]: 'ContinueStatement',\n [ts.SyntaxKind.BreakStatement]: 'BreakStatement',\n [ts.SyntaxKind.ReturnStatement]: 'ReturnStatement',\n [ts.SyntaxKind.WithStatement]: 'WithStatement',\n [ts.SyntaxKind.SwitchStatement]: 'SwitchStatement',\n [ts.SyntaxKind.LabeledStatement]: 'LabeledStatement',\n [ts.SyntaxKind.ThrowStatement]: 'ThrowStatement',\n [ts.SyntaxKind.TryStatement]: 'TryStatement',\n [ts.SyntaxKind.DebuggerStatement]: 'DebuggerStatement',\n [ts.SyntaxKind.VariableDeclaration]: 'VariableDeclaration',\n [ts.SyntaxKind.VariableDeclarationList]: 'VariableDeclarationList',\n [ts.SyntaxKind.FunctionDeclaration]: 'FunctionDeclaration',\n [ts.SyntaxKind.ClassDeclaration]: 'ClassDeclaration',\n [ts.SyntaxKind.InterfaceDeclaration]: 'InterfaceDeclaration',\n [ts.SyntaxKind.TypeAliasDeclaration]: 'TypeAliasDeclaration',\n [ts.SyntaxKind.EnumDeclaration]: 'EnumDeclaration',\n [ts.SyntaxKind.ModuleDeclaration]: 'ModuleDeclaration',\n [ts.SyntaxKind.ModuleBlock]: 'ModuleBlock',\n [ts.SyntaxKind.CaseBlock]: 'CaseBlock',\n [ts.SyntaxKind.NamespaceExportDeclaration]: 'NamespaceExportDeclaration',\n [ts.SyntaxKind.ImportEqualsDeclaration]: 'ImportEqualsDeclaration',\n [ts.SyntaxKind.ImportDeclaration]: 'ImportDeclaration',\n [ts.SyntaxKind.ImportClause]: 'ImportClause',\n [ts.SyntaxKind.NamespaceImport]: 'NamespaceImport',\n [ts.SyntaxKind.NamedImports]: 'NamedImports',\n [ts.SyntaxKind.ImportSpecifier]: 'ImportSpecifier',\n [ts.SyntaxKind.ExportAssignment]: 'ExportAssignment',\n [ts.SyntaxKind.ExportDeclaration]: 'ExportDeclaration',\n [ts.SyntaxKind.NamedExports]: 'NamedExports',\n [ts.SyntaxKind.NamespaceExport]: 'NamespaceExport',\n [ts.SyntaxKind.ExportSpecifier]: 'ExportSpecifier',\n [ts.SyntaxKind.MissingDeclaration]: 'MissingDeclaration',\n [ts.SyntaxKind.ExternalModuleReference]: 'ExternalModuleReference',\n [ts.SyntaxKind.JsxElement]: 'JsxElement',\n [ts.SyntaxKind.JsxSelfClosingElement]: 'JsxSelfClosingElement',\n [ts.SyntaxKind.JsxOpeningElement]: 'JsxOpeningElement',\n [ts.SyntaxKind.JsxClosingElement]: 'JsxClosingElement',\n [ts.SyntaxKind.JsxFragment]: 'JsxFragment',\n [ts.SyntaxKind.JsxOpeningFragment]: 'JsxOpeningFragment',\n [ts.SyntaxKind.JsxClosingFragment]: 'JsxClosingFragment',\n [ts.SyntaxKind.JsxAttribute]: 'JsxAttribute',\n [ts.SyntaxKind.JsxAttributes]: 'JsxAttributes',\n [ts.SyntaxKind.JsxSpreadAttribute]: 'JsxSpreadAttribute',\n [ts.SyntaxKind.JsxExpression]: 'JsxExpression',\n [ts.SyntaxKind.JsxNamespacedName]: 'JsxNamespacedName',\n [ts.SyntaxKind.CaseClause]: 'CaseClause',\n [ts.SyntaxKind.DefaultClause]: 'DefaultClause',\n [ts.SyntaxKind.HeritageClause]: 'HeritageClause',\n [ts.SyntaxKind.CatchClause]: 'CatchClause',\n [ts.SyntaxKind.ImportAttributes]: 'ImportAttributes',\n [ts.SyntaxKind.ImportAttribute]: 'ImportAttribute',\n [ts.SyntaxKind.PropertyAssignment]: 'PropertyAssignment',\n [ts.SyntaxKind.ShorthandPropertyAssignment]: 'ShorthandPropertyAssignment',\n [ts.SyntaxKind.SpreadAssignment]: 'SpreadAssignment',\n [ts.SyntaxKind.EnumMember]: 'EnumMember',\n [ts.SyntaxKind.SourceFile]: 'SourceFile',\n [ts.SyntaxKind.Bundle]: 'Bundle',\n [ts.SyntaxKind.JSDocTypeExpression]: 'JSDocTypeExpression',\n [ts.SyntaxKind.JSDocNameReference]: 'JSDocNameReference',\n [ts.SyntaxKind.JSDocMemberName]: 'JSDocMemberName',\n [ts.SyntaxKind.JSDocAllType]: 'JSDocAllType',\n [ts.SyntaxKind.JSDocUnknownType]: 'JSDocUnknownType',\n [ts.SyntaxKind.JSDocNullableType]: 'JSDocNullableType',\n [ts.SyntaxKind.JSDocNonNullableType]: 'JSDocNonNullableType',\n [ts.SyntaxKind.JSDocOptionalType]: 'JSDocOptionalType',\n [ts.SyntaxKind.JSDocFunctionType]: 'JSDocFunctionType',\n [ts.SyntaxKind.JSDocVariadicType]: 'JSDocVariadicType',\n [ts.SyntaxKind.JSDocNamepathType]: 'JSDocNamepathType',\n [ts.SyntaxKind.JSDoc]: 'JSDoc',\n [ts.SyntaxKind.JSDocText]: 'JSDocText',\n [ts.SyntaxKind.JSDocTypeLiteral]: 'JSDocTypeLiteral',\n [ts.SyntaxKind.JSDocSignature]: 'JSDocSignature',\n [ts.SyntaxKind.JSDocLink]: 'JSDocLink',\n [ts.SyntaxKind.JSDocLinkCode]: 'JSDocLinkCode',\n [ts.SyntaxKind.JSDocLinkPlain]: 'JSDocLinkPlain',\n [ts.SyntaxKind.JSDocTag]: 'JSDocTag',\n [ts.SyntaxKind.JSDocAugmentsTag]: 'JSDocAugmentsTag',\n [ts.SyntaxKind.JSDocImplementsTag]: 'JSDocImplementsTag',\n [ts.SyntaxKind.JSDocAuthorTag]: 'JSDocAuthorTag',\n [ts.SyntaxKind.JSDocDeprecatedTag]: 'JSDocDeprecatedTag',\n [ts.SyntaxKind.JSDocClassTag]: 'JSDocClassTag',\n [ts.SyntaxKind.JSDocPublicTag]: 'JSDocPublicTag',\n [ts.SyntaxKind.JSDocPrivateTag]: 'JSDocPrivateTag',\n [ts.SyntaxKind.JSDocProtectedTag]: 'JSDocProtectedTag',\n [ts.SyntaxKind.JSDocReadonlyTag]: 'JSDocReadonlyTag',\n [ts.SyntaxKind.JSDocOverrideTag]: 'JSDocOverrideTag',\n [ts.SyntaxKind.JSDocCallbackTag]: 'JSDocCallbackTag',\n [ts.SyntaxKind.JSDocOverloadTag]: 'JSDocOverloadTag',\n [ts.SyntaxKind.JSDocEnumTag]: 'JSDocEnumTag',\n [ts.SyntaxKind.JSDocParameterTag]: 'JSDocParameterTag',\n [ts.SyntaxKind.JSDocReturnTag]: 'JSDocReturnTag',\n [ts.SyntaxKind.JSDocThisTag]: 'JSDocThisTag',\n [ts.SyntaxKind.JSDocTypeTag]: 'JSDocTypeTag',\n [ts.SyntaxKind.JSDocTemplateTag]: 'JSDocTemplateTag',\n [ts.SyntaxKind.JSDocTypedefTag]: 'JSDocTypedefTag',\n [ts.SyntaxKind.JSDocSeeTag]: 'JSDocSeeTag',\n [ts.SyntaxKind.JSDocPropertyTag]: 'JSDocPropertyTag',\n [ts.SyntaxKind.JSDocThrowsTag]: 'JSDocThrowsTag',\n [ts.SyntaxKind.JSDocSatisfiesTag]: 'JSDocSatisfiesTag',\n [ts.SyntaxKind.SyntaxList]: 'SyntaxList',\n [ts.SyntaxKind.NotEmittedStatement]: 'NotEmittedStatement',\n [ts.SyntaxKind.PartiallyEmittedExpression]: 'PartiallyEmittedExpression',\n [ts.SyntaxKind.CommaListExpression]: 'CommaListExpression',\n [ts.SyntaxKind.SyntheticReferenceExpression]: 'SyntheticReferenceExpression',\n [ts.SyntaxKind.Count]: 'Count',\n} as const\n\nconst namesRecord = SyntaxKindName as Record<ts.SyntaxKind, string | undefined>\n\nexport const getNodeName = (node: ts.Node): string => {\n return namesRecord[node.kind] ?? 'Unknown'\n}\n\nexport const getSyntaxName = (kind: ts.SyntaxKind): string => {\n return namesRecord[kind] ?? 'Unknown'\n}\n\nexport type SyntaxKindNameType = typeof SyntaxKindName\n\nexport type ModuleStatements =\n | ts.ClassDeclaration\n | ts.ImportDeclaration\n | ts.VariableStatement\n | ts.FunctionDeclaration\n | ts.TypeAliasDeclaration\n | ts.InterfaceDeclaration\n\nexport type PrimaryExpressions =\n | LiteralExpressions\n | ts.TrueLiteral\n | ts.FalseLiteral\n | ts.ArrayLiteralExpression\n | ts.ClassExpression\n | ts.FunctionExpression\n | ts.Identifier\n | ts.ImportExpression\n | ts.NewExpression\n | ts.NullLiteral\n | ts.ObjectLiteralExpression\n | ts.PrivateIdentifier\n | ts.ParenthesizedExpression\n | ts.SuperExpression\n | ts.TemplateExpression\n | ts.ThisExpression\n\nexport type MemberExpressions =\n | PrimaryExpressions\n | ts.ElementAccessExpression\n | ts.ExpressionWithTypeArguments\n | ts.PropertyAccessExpression\n | ts.TaggedTemplateExpression\n\nexport type LeftHandSideExpression = ts.CallExpression | MemberExpressions | ts.NonNullExpression\n\n/**\n * All concrete types which extends ts.ClassElement\n */\nexport type ClassElements =\n | ts.ClassStaticBlockDeclaration\n | ts.ConstructorDeclaration\n | ts.GetAccessorDeclaration\n | ts.IndexSignatureDeclaration\n | ts.MethodDeclaration\n | ts.PropertyDeclaration\n | ts.SemicolonClassElement\n | ts.SetAccessorDeclaration\n\n/**\n * All concrete types which extends ts.Statement\n */\nexport type Statements =\n | ts.EmptyStatement\n | ts.VariableStatement\n | ts.ExpressionStatement\n | ts.IfStatement\n | ts.DoStatement\n | ts.WhileStatement\n | ts.ForStatement\n | ts.ForInStatement\n | ts.ForOfStatement\n | ts.ContinueStatement\n | ts.BreakStatement\n | ts.ReturnStatement\n | ts.WithStatement\n | ts.SwitchStatement\n | ts.LabeledStatement\n | ts.ThrowStatement\n | ts.TryStatement\n | ts.DebuggerStatement\n | ts.ImportDeclaration\n | ts.ClassDeclaration\n | ts.TypeAliasDeclaration\n\n/**\n * All concrete types which extends ts.LiteralExpression\n */\nexport type LiteralExpressions =\n | ts.NumericLiteral\n | ts.BigIntLiteral\n | ts.StringLiteral\n | ts.RegularExpressionLiteral\n | ts.NoSubstitutionTemplateLiteral\n\n/**\n * All concrete types which extend ts.Expression\n */\nexport type Expressions =\n | ts.PropertyAccessExpression\n | ts.ElementAccessExpression\n | ts.TypeAssertion\n | ts.ParenthesizedExpression\n | ts.FunctionExpression\n | ts.DeleteExpression\n | ts.TypeOfExpression\n | ts.VoidExpression\n | ts.AwaitExpression\n | ts.PrefixUnaryExpression\n | ts.PostfixUnaryExpression\n | ts.BinaryExpression\n | ts.ConditionalExpression\n | ts.TemplateExpression\n | ts.YieldExpression\n | ts.OmittedExpression\n | ts.ExpressionWithTypeArguments\n | ts.AsExpression\n | ts.NonNullExpression\n | ts.SatisfiesExpression\n | ts.SpreadElement\n | PrimaryExpressions\n | LeftHandSideExpression\n\n/**\n * Map an inherited base type to a union type of \"all\" the nodes which extend that base type\n * where \"all\" is limited to nodes relevant to this compiler.\n */\nexport type MapBaseType<T> = T extends DeliberateAny\n ? IfEquals<\n T,\n ts.Expression,\n Expressions,\n IfEquals<\n T,\n ts.LeftHandSideExpression,\n LeftHandSideExpression,\n IfEquals<T, ts.Statement, Statements, IfEquals<T, ts.ClassElement, ClassElements, T>>\n >\n >\n : never\n\ntype IfEquals<T, U, Y = unknown, N = never> = ((x: T) => T) extends (x: U) => U ? (((x: U) => U) extends (x: T) => T ? Y : N) : N\n\nexport const BinaryOpSyntaxes = {\n [ts.SyntaxKind.PlusToken]: BuilderBinaryOp.add,\n [ts.SyntaxKind.MinusToken]: BuilderBinaryOp.sub,\n [ts.SyntaxKind.AsteriskToken]: BuilderBinaryOp.mult,\n [ts.SyntaxKind.SlashToken]: BuilderBinaryOp.div,\n [ts.SyntaxKind.PercentToken]: BuilderBinaryOp.mod,\n [ts.SyntaxKind.AsteriskAsteriskToken]: BuilderBinaryOp.pow,\n [ts.SyntaxKind.BarToken]: BuilderBinaryOp.bitOr,\n [ts.SyntaxKind.CaretToken]: BuilderBinaryOp.bitXor,\n [ts.SyntaxKind.AmpersandToken]: BuilderBinaryOp.bitAnd,\n [ts.SyntaxKind.LessThanLessThanToken]: BuilderBinaryOp.lshift,\n [ts.SyntaxKind.GreaterThanGreaterThanToken]: BuilderBinaryOp.rshift,\n} as const\n\nexport const LogicalOpSyntaxes = {\n [ts.SyntaxKind.AmpersandAmpersandToken]: BinaryBooleanOperator.and,\n [ts.SyntaxKind.BarBarToken]: BinaryBooleanOperator.or,\n}\nexport const AugmentedAssignmentLogicalOpSyntaxes = {\n [ts.SyntaxKind.AmpersandAmpersandEqualsToken]: BinaryBooleanOperator.and,\n [ts.SyntaxKind.BarBarEqualsToken]: BinaryBooleanOperator.or,\n}\n\nexport function isKeyOf<TMap extends object>(key: PropertyKey, map: TMap): key is keyof TMap {\n return Object.hasOwn(map, key)\n}\n\nexport const ComparisonOpSyntaxes = {\n [ts.SyntaxKind.EqualsEqualsEqualsToken]: BuilderComparisonOp.eq,\n [ts.SyntaxKind.ExclamationEqualsEqualsToken]: BuilderComparisonOp.ne,\n [ts.SyntaxKind.LessThanToken]: BuilderComparisonOp.lt,\n [ts.SyntaxKind.LessThanEqualsToken]: BuilderComparisonOp.lte,\n [ts.SyntaxKind.GreaterThanToken]: BuilderComparisonOp.gt,\n [ts.SyntaxKind.GreaterThanEqualsToken]: BuilderComparisonOp.gte,\n} as const\n\nexport const AugmentedAssignmentBinaryOp = {\n [ts.SyntaxKind.PlusEqualsToken]: BuilderBinaryOp.add,\n [ts.SyntaxKind.MinusEqualsToken]: BuilderBinaryOp.sub,\n [ts.SyntaxKind.AsteriskEqualsToken]: BuilderBinaryOp.mult,\n [ts.SyntaxKind.SlashEqualsToken]: BuilderBinaryOp.div,\n [ts.SyntaxKind.PercentEqualsToken]: BuilderBinaryOp.mod,\n [ts.SyntaxKind.AsteriskAsteriskEqualsToken]: BuilderBinaryOp.pow,\n [ts.SyntaxKind.BarEqualsToken]: BuilderBinaryOp.bitOr,\n [ts.SyntaxKind.CaretEqualsToken]: BuilderBinaryOp.bitXor,\n [ts.SyntaxKind.AmpersandEqualsToken]: BuilderBinaryOp.bitAnd,\n [ts.SyntaxKind.LessThanLessThanEqualsToken]: BuilderBinaryOp.lshift,\n [ts.SyntaxKind.GreaterThanGreaterThanEqualsToken]: BuilderBinaryOp.rshift,\n} as const\n\nexport const UnaryExpressionUnaryOps = {\n [ts.SyntaxKind.PlusPlusToken]: BuilderUnaryOp.inc,\n [ts.SyntaxKind.MinusMinusToken]: BuilderUnaryOp.dec,\n [ts.SyntaxKind.PlusToken]: BuilderUnaryOp.pos,\n [ts.SyntaxKind.MinusToken]: BuilderUnaryOp.neg,\n [ts.SyntaxKind.TildeToken]: BuilderUnaryOp.bit_inv,\n}\n","import ts, { ObjectFlags } from 'typescript'\nimport { SourceLocation } from '../awst/source-location'\nimport { Constants } from '../constants'\nimport { CodeError, InternalError } from '../errors'\nimport { logger } from '../logger'\nimport { codeInvariant, hasFlags, intersectsFlags, invariant, isIn, normalisePath } from '../util'\nimport { getNodeName } from '../visitor/syntax-names'\nimport type { AppStorageType, PType } from './ptypes'\nimport {\n anyGtxnType,\n anyPType,\n ApprovalProgram,\n arc4BaseContractType,\n ArrayPType,\n baseContractType,\n BigIntLiteralPType,\n bigIntPType,\n boolPType,\n ClearStateProgram,\n ClusteredContractClassType,\n ClusteredPrototype,\n ContractClassPType,\n FunctionPType,\n gtxnUnion,\n IntersectionPType,\n logicSigBaseType,\n LogicSigPType,\n NamespacePType,\n neverPType,\n nullPType,\n numberPType,\n NumericLiteralPType,\n ObjectPType,\n StorageProxyPType,\n stringPType,\n SuperPrototypeSelector,\n TuplePType,\n TypeParameterType,\n undefinedPType,\n UnionPType,\n unknownPType,\n voidPType,\n} from './ptypes'\nimport { ARC4EncodedType, arc4StructBaseType, ARC4StructClass, ARC4StructType, UintNType } from './ptypes/arc4-types'\nimport { SymbolName } from './symbol-name'\nimport { typeRegistry } from './type-registry'\n\nexport class TypeResolver {\n constructor(\n private readonly checker: ts.TypeChecker,\n private readonly programDirectory: string,\n ) {}\n\n private getUnaliasedSymbolForNode(node: ts.Node) {\n const symbol = this.checker.getSymbolAtLocation(node)\n if (symbol) {\n if (hasFlags(symbol.flags, ts.SymbolFlags.Alias)) {\n return this.checker.getAliasedSymbol(symbol)\n }\n return symbol\n }\n return undefined\n }\n\n resolveTypeParameters(node: ts.CallExpression | ts.NewExpression, sourceLocation: SourceLocation) {\n if (node.typeArguments) {\n // Explicit type arguments\n return node.typeArguments.map((t) => this.resolveTypeNode(t, sourceLocation))\n }\n const sig = this.checker.getResolvedSignature(node)\n invariant(sig, 'CallExpression must resolve to a signature')\n /*\n The method getTypeArgumentsForResolvedSignature has not made it into typescript yet, but it has been\n proposed here: https://github.com/microsoft/TypeScript/issues/59637 and added to the backlog. For now\n the method has been patched into the TypeScript 5.7.2 using patch-package\n */\n const tps = this.checker.getTypeArgumentsForResolvedSignature(sig)\n return tps?.map((t) => this.resolveType(t, sourceLocation)) ?? []\n }\n\n resolve(node: ts.Node, sourceLocation: SourceLocation): PType {\n const symbol = this.getUnaliasedSymbolForNode(node)\n if (symbol !== undefined && symbol.declarations?.length) {\n const symbolName = symbol && this.getSymbolFullName(symbol, sourceLocation)\n if (symbolName.name === '*') {\n return new NamespacePType(symbolName)\n }\n const ptype = typeRegistry.tryResolveSingletonName(symbolName)\n if (ptype === undefined && symbolName.module.startsWith(Constants.algoTsPackage)) {\n /*\n Most symbols in the algo-ts module should resolve to a singleton instance\n This can probably be removed once we've implemented ptypes for everything in algo-ts\n\n */\n if (symbolName.fullName !== baseContractType.fullName && symbolName.fullName !== arc4BaseContractType.fullName)\n logger.warn(sourceLocation, `${symbolName} could not be resolved to a singleton ptype`)\n }\n if (ptype) {\n return ptype\n }\n }\n const type = this.checker.getTypeAtLocation(node)\n if (node.kind === ts.SyntaxKind.ThisKeyword || node.kind === ts.SyntaxKind.SuperKeyword) {\n /**\n * This shouldn't be used in any code paths as `visitThisKeyword` and `visitSuperKeyword` have their own way to\n * determine the type.\n */\n logger.debug(sourceLocation, `Attempting to reflect type of ${getNodeName(node)} node which is known to be unreliable`)\n }\n if (ts.isConstructorDeclaration(node)) {\n const signature = this.checker.getSignatureFromDeclaration(node)\n invariant(signature, 'Constructor node must have call signature')\n const parentType = this.getTypeName(this.checker.getTypeAtLocation(node.parent), sourceLocation)\n return this.reflectFunctionType(\n new SymbolName({\n name: Constants.constructorMethodName,\n module: parentType.module,\n }),\n [signature],\n sourceLocation,\n )\n }\n return this.resolveType(type, sourceLocation)\n }\n\n resolveTypeNode(node: ts.TypeNode, sourceLocation: SourceLocation): PType {\n const type = this.checker.getTypeFromTypeNode(node)\n return this.resolveType(type, sourceLocation)\n }\n\n resolveType(tsType: ts.Type, sourceLocation: SourceLocation): PType {\n if (tsType.symbol) {\n const symbolType = this.checker.getTypeOfSymbol(tsType.symbol)\n if (symbolType !== tsType && !tsType.isClass() && symbolType.isClass()) {\n tsType = symbolType\n }\n }\n\n intersect: if (isIntersectionType(tsType)) {\n if (tsType.aliasSymbol) {\n break intersect\n }\n // Special handling of struct base types which are an intersection of `StructBase` and the generic `T` type\n const parts = tsType.types.map((t) => this.resolveType(t, sourceLocation))\n if (parts.some((p) => p.equals(arc4StructBaseType))) {\n return arc4StructBaseType\n } else {\n return IntersectionPType.fromTypes(parts)\n }\n }\n if (isUnionType(tsType)) {\n const ut = UnionPType.fromTypes(tsType.types.map((t) => this.resolveType(t, sourceLocation)))\n if (ut.equals(gtxnUnion)) {\n return anyGtxnType\n }\n return ut\n }\n switch (tsType.flags) {\n case ts.TypeFlags.Undefined:\n return undefinedPType\n case ts.TypeFlags.Null:\n return nullPType\n case ts.TypeFlags.Any:\n return anyPType\n case ts.TypeFlags.Boolean | ts.TypeFlags.Union:\n case ts.TypeFlags.BooleanLiteral:\n return boolPType\n case ts.TypeFlags.Void:\n return voidPType\n case ts.TypeFlags.String:\n case ts.TypeFlags.StringLiteral:\n return stringPType\n case ts.TypeFlags.Never:\n return neverPType\n case ts.TypeFlags.Unknown:\n return unknownPType\n case ts.TypeFlags.NumberLiteral | ts.TypeFlags.EnumLiteral:\n case ts.TypeFlags.NumberLiteral:\n invariant(tsType.isNumberLiteral(), 'type must be literal', sourceLocation)\n return new NumericLiteralPType({ literalValue: BigInt(tsType.value) })\n case ts.TypeFlags.Number:\n return numberPType\n case ts.TypeFlags.BigIntLiteral:\n invariant(tsType.isLiteral() && typeof tsType.value === 'object', 'type must be literal bigint', sourceLocation)\n return new BigIntLiteralPType({ literalValue: BigInt(tsType.value.base10Value) * (tsType.value.negative ? -1n : 1n) })\n case ts.TypeFlags.BigInt:\n return bigIntPType\n }\n if (isTupleReference(tsType)) {\n codeInvariant(\n tsType.target.fixedLength !== undefined && tsType.target.fixedLength !== null,\n 'Tuple types should have a fixed length',\n sourceLocation,\n )\n codeInvariant(tsType.typeArguments, 'Tuple items must have types', sourceLocation)\n\n return new TuplePType({\n items: tsType.typeArguments.map((t) => this.resolveType(t, sourceLocation)),\n })\n }\n if (isInstantiationExpression(tsType)) {\n return this.resolve(tsType.node.expression, sourceLocation)\n }\n\n const typeName = this.getTypeName(tsType, sourceLocation)\n logger.debug(sourceLocation, `Resolving ptype for ${typeName}`)\n\n if (typeName.name === '__type' && typeName.module.startsWith(Constants.algoTsPackage)) {\n // We are likely dealing with `typeof X` where X is a singleton exported by algo-ts\n const declarationNode = tsType.symbol.getDeclarations()?.[0]?.parent\n\n if (declarationNode && ts.isVariableDeclaration(declarationNode)) {\n return this.resolve(declarationNode.name, sourceLocation)\n }\n }\n\n if (typeName.fullName === arc4StructBaseType.fullName) return arc4StructBaseType\n if (typeName.fullName === ClusteredPrototype.fullName) {\n return this.resolveClusteredPrototype(tsType, sourceLocation)\n }\n\n if (tsType.flags === ts.TypeFlags.TypeParameter) {\n return new TypeParameterType(typeName)\n }\n\n if (tsType.aliasTypeArguments?.length) {\n const typeArgs = tsType.aliasTypeArguments.map((a) => this.resolveType(a, sourceLocation))\n const gt = typeRegistry.tryResolveGenericPType(typeName, typeArgs)\n if (gt) return gt\n } else if (isTypeReference(tsType) && tsType.typeArguments?.length) {\n const typeArgs = tsType.typeArguments.map((a) => this.resolveType(a, sourceLocation))\n const gt = typeRegistry.tryResolveGenericPType(typeName, typeArgs)\n if (gt) return gt\n } else {\n const it = typeRegistry.tryResolveInstancePType(typeName)\n if (it) return it\n }\n\n if (tsType.getConstructSignatures().length) {\n return this.reflectConstructorType(tsType, sourceLocation)\n }\n\n if (tsType.isClass()) {\n if (typeName.fullName === arc4BaseContractType.fullName) return arc4BaseContractType\n if (typeName.fullName === baseContractType.fullName) return baseContractType\n if (typeName.fullName === logicSigBaseType.fullName) return logicSigBaseType\n\n const [baseType, ...rest] = tsType.getBaseTypes()?.map((t) => this.resolveType(t, sourceLocation)) ?? []\n\n invariant(rest.length === 0, 'Class can have at most one base type')\n\n // Treat sub-types of UintN type as the base type.\n if (baseType instanceof UintNType) return baseType\n\n if (baseType instanceof ContractClassPType) {\n return this.reflectContractType(typeName, tsType, baseType, sourceLocation)\n }\n if (baseType instanceof ARC4StructType) {\n return this.reflectStructType(typeName, tsType, baseType, sourceLocation)\n }\n if (baseType instanceof LogicSigPType) {\n return new LogicSigPType({\n ...typeName,\n sourceLocation,\n baseType,\n })\n }\n throw new CodeError(\n `${typeName.fullName} cannot be mapped to an algo ts type. Classes must extend \"Contract\" or \"BaseContract\" base classes to be considered a contract`,\n { sourceLocation },\n )\n }\n const callSignatures = this.checker.getSignaturesOfType(tsType, ts.SignatureKind.Call)\n if (callSignatures.length) {\n return this.reflectFunctionType(typeName, callSignatures, sourceLocation)\n }\n if (this.checker.isArrayType(tsType)) {\n const itemType = tsType.getNumberIndexType()\n if (!itemType) {\n throw new CodeError('Cannot determine array item type', { sourceLocation })\n } else {\n const itemPType = this.resolveType(itemType, sourceLocation)\n return new ArrayPType({\n elementType: itemPType,\n })\n }\n }\n if (isObjectType(tsType)) {\n return this.reflectObjectType(tsType, sourceLocation)\n }\n throw new InternalError(`Cannot determine type of ${typeName}`, { sourceLocation })\n }\n\n private reflectObjectType(tsType: ts.Type, sourceLocation: SourceLocation): ObjectPType {\n const typeAlias = tsType.aliasSymbol ? this.getSymbolFullName(tsType.aliasSymbol, sourceLocation) : undefined\n const properties: Record<string, PType> = {}\n for (const prop of tsType.getProperties()) {\n if (prop.name.startsWith('__@')) {\n // Symbol property - ignore\n // TODO: Check AST nodes to confirm?\n continue\n }\n const type = this.checker.getTypeOfSymbol(prop)\n const ptype = this.resolveType(type, sourceLocation)\n if (ptype.singleton) {\n logger.error(sourceLocation, `${ptype} is not a valid object property type`)\n } else {\n properties[prop.name] = ptype\n }\n }\n if (typeAlias) {\n return new ObjectPType({ alias: typeAlias, properties, description: tryGetTypeDescription(tsType) })\n }\n return ObjectPType.anonymous(properties)\n }\n\n private reflectConstructorType(tsType: ts.Type, sourceLocation: SourceLocation): PType {\n const constructorSignatures = tsType.getConstructSignatures()\n invariant(constructorSignatures.length, 'Must have at least one signature')\n const typeDeclaration = tsType.getSymbol()?.declarations?.[0]\n if (typeDeclaration && ts.isClassDeclaration(typeDeclaration)) {\n const ptype = this.resolve(typeDeclaration, sourceLocation)\n if (ptype instanceof ARC4StructType) {\n return ARC4StructClass.fromStructType(ptype)\n } else if (ptype instanceof ContractClassPType || ptype instanceof LogicSigPType) {\n return ptype\n }\n }\n throw new CodeError('Unable to reflect constructor type', { sourceLocation })\n }\n\n private reflectFunctionType(\n typeName: SymbolName,\n callSignatures: readonly ts.Signature[],\n sourceLocation: SourceLocation,\n ): FunctionPType {\n if (typeName.fullName === ApprovalProgram.fullName) return ApprovalProgram\n if (typeName.fullName === ClearStateProgram.fullName) return ClearStateProgram\n\n codeInvariant(callSignatures.length === 1, 'User defined functions must have exactly 1 call signature', sourceLocation)\n const [sig] = callSignatures\n const returnType = this.resolveType(sig.getReturnType(), sourceLocation)\n const parameters = sig.getParameters().map((p) => {\n const paramType = this.checker.getTypeOfSymbol(p)\n return [p.name, this.resolveType(paramType, this.getLocationOfSymbol(p) ?? sourceLocation)] as const\n })\n return new FunctionPType({\n returnType,\n parameters,\n name: typeName.name,\n module: typeName.module,\n sourceLocation,\n })\n }\n\n private reflectStructType(\n typeName: SymbolName,\n tsType: ts.Type,\n baseType: ARC4StructType,\n sourceLocation: SourceLocation,\n ): ARC4StructType {\n const ignoredProps = ['bytes', 'equals', 'native', 'copy', Constants.constructorMethodName]\n const fields: Record<string, ARC4EncodedType> = {}\n for (const prop of tsType.getProperties()) {\n if (isIn(prop.name, ignoredProps)) continue\n const type = this.checker.getTypeOfSymbol(prop)\n const propLocation = this.getLocationOfSymbol(prop) ?? sourceLocation\n const ptype = this.resolveType(type, propLocation)\n if (ptype instanceof ARC4EncodedType) {\n fields[prop.name] = ptype\n } else {\n // Ignore\n }\n }\n return new ARC4StructType({\n ...typeName,\n fields: fields,\n sourceLocation: sourceLocation,\n description: tryGetTypeDescription(tsType),\n frozen: baseType.frozen,\n })\n }\n\n private reflectContractType(\n typeName: SymbolName,\n tsType: ts.Type,\n baseType: ContractClassPType,\n sourceLocation: SourceLocation,\n ): ContractClassPType {\n const properties: Record<string, AppStorageType> = {}\n const methods: Record<string, FunctionPType> = {}\n\n for (const prop of tsType.getProperties()) {\n const type = this.checker.getTypeOfSymbol(prop)\n const ptype = this.resolveType(type, this.getLocationOfSymbol(prop) ?? sourceLocation)\n if (ptype instanceof StorageProxyPType) {\n properties[prop.name] = ptype\n } else if (ptype instanceof FunctionPType) {\n methods[prop.name] = ptype\n }\n }\n return new ContractClassPType({\n properties,\n methods,\n name: typeName.name,\n module: typeName.module,\n baseTypes: [baseType],\n sourceLocation,\n })\n }\n\n private resolveClusteredPrototype(tsType: ts.Type, sourceLocation: SourceLocation): PType {\n invariant(isIntersectionType(tsType), 'Clustered prototypes must be an intersection type')\n const baseContracts: ContractClassPType[] = []\n for (const t of tsType.types.map((t) => this.resolveType(t, sourceLocation))) {\n if (t instanceof ContractClassPType) {\n baseContracts.push(t)\n } else if (t instanceof SuperPrototypeSelector) {\n // Ignore for now\n } else {\n throw new CodeError(\n `Unexpected type: ${t}. Polytype can only be used to support multiple inheritance in contracts for now. All base types must extend the Contract or BaseContract class.}`,\n )\n }\n }\n return new ClusteredContractClassType({\n methods: {},\n baseTypes: baseContracts,\n sourceLocation,\n })\n }\n\n private getTypeName(type: ts.Type, sourceLocation: SourceLocation): SymbolName {\n if (type.aliasSymbol) {\n const name = this.getSymbolFullName(type.aliasSymbol, sourceLocation)\n // We only respect type aliases within certain modules, otherwise use the\n // unaliased symbol\n if (name.module.startsWith(Constants.algoTsPackage) || name.module === Constants.polytypeModuleName) return name\n }\n invariant(type.symbol, 'Type must have a symbol', sourceLocation)\n return this.getSymbolFullName(type.symbol, sourceLocation)\n }\n\n private getLocationOfSymbol(symbol: ts.Symbol): SourceLocation | undefined {\n const declaration = symbol.getDeclarations()?.[0]\n\n return declaration && SourceLocation.fromNode(declaration, this.programDirectory)\n }\n\n private tryGetLocalSymbolName(symbol: ts.Symbol): string | undefined {\n const dec = symbol.getDeclarations()?.[0] as undefined | { localSymbol?: ts.Symbol }\n return dec?.localSymbol?.name\n }\n\n private getSymbolFullName(symbol: ts.Symbol, sourceLocation: SourceLocation): SymbolName {\n const symbolName = symbol.name === 'default' ? (this.tryGetLocalSymbolName(symbol) ?? symbol.name) : symbol.name\n\n const declaration = symbol?.declarations?.[0]\n if (declaration) {\n if (\n intersectsFlags(symbol.flags, ts.SymbolFlags.Namespace) &&\n !intersectsFlags(symbol.flags, ts.SymbolFlags.Function | ts.SymbolFlags.RegularEnum)\n ) {\n return new SymbolName({\n module: normalisePath(declaration.getSourceFile().fileName, this.programDirectory),\n name: '*',\n })\n }\n return new SymbolName({ module: normalisePath(declaration.getSourceFile().fileName, this.programDirectory), name: symbolName })\n }\n throw new InternalError(`Symbol does not have a declaration`, { sourceLocation })\n }\n}\n\nfunction isObjectType(tsType: ts.Type): tsType is ts.ObjectType {\n return hasFlags(tsType.flags, ts.TypeFlags.Object)\n}\nfunction isTypeReference(tsType: ts.Type): tsType is ts.TypeReference {\n return isObjectType(tsType) && hasFlags(tsType.objectFlags, ts.ObjectFlags.Reference)\n}\nfunction isTupleType(tsType: ts.Type): tsType is ts.TupleType {\n return isObjectType(tsType) && hasFlags(tsType.objectFlags, ts.ObjectFlags.Tuple)\n}\n\nfunction isTupleReference(tsType: ts.Type): tsType is ts.TypeReference & { target: ts.TupleType } {\n return isTypeReference(tsType) && isTupleType(tsType.target)\n}\n\nfunction isUnionType(tsType: ts.Type): tsType is ts.UnionType {\n return tsType.flags === ts.TypeFlags.Union\n}\n\nfunction isIntersectionType(tsType: ts.Type): tsType is ts.IntersectionType {\n return tsType.flags === ts.TypeFlags.Intersection\n}\n\nfunction isInstantiationExpression(tsType: ts.Type): tsType is ts.Type & { node: ts.ExpressionWithTypeArguments } {\n return isObjectType(tsType) && hasFlags(tsType.objectFlags, ObjectFlags.InstantiationExpressionType)\n}\n\nfunction tryGetTypeDescription(tsType: ts.Type): string | undefined {\n const dec = tsType.aliasSymbol?.valueDeclaration ?? tsType.symbol.valueDeclaration\n if (!dec) return undefined\n const docs = ts.getJSDocCommentsAndTags(dec)\n for (const doc of docs) {\n if (ts.isJSDoc(doc)) {\n return ts.getTextOfJSDocComment(doc.comment)\n }\n }\n return undefined\n}\n","/**\n * Tracks the context in which expressions should be evaluated.\n *\n * A boolean context is more lenient with mixed expression types as it is only concerned with truthy-ness\n */\nexport class EvaluationContext {\n #isBoolean: boolean = false\n\n get isBoolean() {\n return this.#isBoolean\n }\n\n enterBooleanContext(): Disposable {\n const previous = this.#isBoolean\n this.#isBoolean = true\n return {\n [Symbol.dispose]: () => {\n this.#isBoolean = previous\n },\n }\n }\n leaveBooleanContext(): Disposable {\n const previous = this.#isBoolean\n this.#isBoolean = false\n return {\n [Symbol.dispose]: () => {\n this.#isBoolean = previous\n },\n }\n }\n}\n","export function defaultRecord<TKey extends PropertyKey, TValue>(defaultInit: (key: TKey) => TValue) {\n return new Proxy({} as Record<TKey, TValue>, {\n get(target, property, receiver) {\n if (!(property in target)) {\n Object.assign(target, { [property]: defaultInit(property as TKey) })\n }\n return Reflect.get(target, property, receiver)\n },\n })\n}\n","import ts from 'typescript'\nimport { nodeFactory } from '../../awst/node-factory'\nimport type { Block, Goto } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { codeInvariant, invariant, toSubScript } from '../../util'\nimport { defaultRecord } from '../../util/default-map'\n\ntype SwitchOrLoop = 'switch' | 'loop'\ntype LoopContext = Disposable & { breakTarget: Block; continueTarget: Block; readonly hasBreaks: boolean; readonly hasContinues: boolean }\ntype SwitchContext = Disposable & {\n breakTarget: Block\n caseTarget(caseIndex: number, sourceLocation: SourceLocation): Block\n gotoCase(caseIndex: number, sourceLocation: SourceLocation): Goto\n readonly hasBreaks: boolean\n}\ntype StackData =\n | { type: 'switch'; uniqueName: string; label?: string; numBreaks: number }\n | { type: 'loop'; uniqueName: string; label?: string; numBreaks: number; numContinues: number }\n\nconst breakSuffix = 'ᵇ'\nconst continueSuffix = 'ᶜ'\n\n/**\n * Tracks parent switches and loops so that break and continue statements\n * can target the correct parent.\n */\nexport class SwitchLoopContext {\n private labelCount = defaultRecord<string, number>(() => 0)\n private unlabelledCount = defaultRecord<SwitchOrLoop, number>(() => 0)\n\n constructor() {}\n\n private switchLoopStack: Array<StackData> = []\n\n getBreakTarget(label: ts.Identifier | undefined, sourceLocation: SourceLocation): string {\n const labelName = label?.text\n const item = this.switchLoopStack.toReversed().find(({ label }) => labelName === undefined || label === labelName)\n codeInvariant(item, 'Break must exist inside a switch or loop construct', sourceLocation)\n item.numBreaks++\n return `${item.uniqueName}${breakSuffix}`\n }\n\n getContinueTarget(label: ts.Identifier | undefined, sourceLocation: SourceLocation): string {\n const labelName = label?.text\n const item = this.switchLoopStack.toReversed().find(({ label }) => labelName === undefined || label === labelName)\n codeInvariant(item?.type === 'loop', 'Continue must exist inside a loop construct', sourceLocation)\n item.numContinues++\n return `${item.uniqueName}${continueSuffix}`\n }\n\n enterLoop(\n node: ts.WhileStatement | ts.ForStatement | ts.ForOfStatement | ts.ForInStatement | ts.DoStatement,\n sourceLocation: SourceLocation,\n ): LoopContext {\n const label = ts.isLabeledStatement(node.parent) ? node?.parent.label : undefined\n\n const uniqueName = this.uniqueNameForLabel(label, 'loop')\n const stackData: StackData = {\n uniqueName,\n label: label?.text,\n type: 'loop',\n numBreaks: 0,\n numContinues: 0,\n }\n this.switchLoopStack.push(stackData)\n return {\n breakTarget: nodeFactory.block({ sourceLocation, label: `${uniqueName}${breakSuffix}` }),\n continueTarget: nodeFactory.block({ sourceLocation, label: `${uniqueName}${continueSuffix}` }),\n [Symbol.dispose]: () => {\n const popped = this.switchLoopStack.pop()\n invariant(popped?.uniqueName === uniqueName && popped.type === 'loop', 'Switch loop stack is unbalanced')\n },\n get hasBreaks() {\n return stackData.numBreaks > 0\n },\n get hasContinues() {\n return stackData.numContinues > 0\n },\n }\n }\n\n private uniqueNameForLabel(label: ts.Identifier | undefined, type: 'switch' | 'loop'): string {\n if (label) {\n const count = ++this.labelCount[label.text]\n return `${label.text}${toSubScript(count)}`\n } else {\n const nextCount = ++this.unlabelledCount[type]\n return `#${type}${toSubScript(nextCount)}`\n }\n }\n\n enterSwitch(node: ts.SwitchStatement, sourceLocation: SourceLocation): SwitchContext {\n const label = ts.isLabeledStatement(node.parent) ? node?.parent.label : undefined\n const uniqueName = this.uniqueNameForLabel(label, 'switch')\n const stackData: StackData = {\n uniqueName,\n label: label?.text,\n type: 'switch',\n numBreaks: 0,\n }\n this.switchLoopStack.push(stackData)\n return {\n breakTarget: nodeFactory.block({ sourceLocation, label: `${uniqueName}${breakSuffix}` }),\n caseTarget(caseIndex: number, sourceLocation: SourceLocation) {\n return nodeFactory.block({ sourceLocation, label: `${uniqueName}ᶜ${toSubScript(caseIndex)}` })\n },\n gotoCase(caseIndex: number, sourceLocation: SourceLocation): Goto {\n return nodeFactory.goto({ sourceLocation, target: `${uniqueName}ᶜ${toSubScript(caseIndex)}` })\n },\n [Symbol.dispose]: () => {\n const popped = this.switchLoopStack.pop()\n invariant(popped?.uniqueName === uniqueName && popped.type === 'switch', 'Switch loop stack is unbalanced')\n },\n get hasBreaks() {\n return stackData.numBreaks > 0\n },\n }\n }\n}\n","import type ts from 'typescript'\nimport { toSubScript } from '../../util'\n\nexport class UniqueNameResolver {\n protected readonly symbolToName: Map<ts.Symbol, string>\n protected readonly nameToCount: Map<string, number>\n\n constructor(parent?: UniqueNameResolver) {\n if (parent) {\n this.symbolToName = new Map(parent.symbolToName.entries())\n this.nameToCount = new Map(parent.nameToCount.entries())\n } else {\n this.symbolToName = new Map()\n this.nameToCount = new Map()\n }\n }\n\n /**\n * Resolve a rawName to a unique name within the scope of this resolver. When provided\n * with a symbol which has already been seen, return the same name\n * @param rawName\n * @param symbol\n */\n resolveUniqueName(rawName: string, symbol: ts.Symbol | undefined): string {\n const name = symbol && this.symbolToName.get(symbol)\n if (name) {\n return name\n }\n const nameCount = this.nameToCount.get(rawName) ?? 0\n let uniqueName\n if (nameCount === 0) {\n uniqueName = rawName\n } else {\n uniqueName = `${rawName}${toSubScript(nameCount)}`\n }\n this.nameToCount.set(rawName, nameCount + 1)\n if (symbol) {\n this.symbolToName.set(symbol, uniqueName)\n }\n return uniqueName\n }\n\n createChild(): UniqueNameResolver {\n return new UniqueNameResolver(this)\n }\n}\n","import { AsyncLocalStorage } from 'node:async_hooks'\nimport ts from 'typescript'\nimport type { awst } from '../../awst'\nimport type { ContractReference, LogicSigReference } from '../../awst/models'\nimport { nodeFactory } from '../../awst/node-factory'\nimport type { AppStorageDefinition, ARC4MethodConfig } from '../../awst/nodes'\nimport { SourceLocation } from '../../awst/source-location'\nimport { logger } from '../../logger'\nimport { invariant } from '../../util'\nimport { ConstantStore } from '../constant-store'\nimport type { NodeBuilder } from '../eb'\nimport type { AppStorageDeclaration } from '../models/app-storage-declaration'\nimport type { ContractClassModel } from '../models/contract-class-model'\nimport { CompilationSet } from '../models/contract-class-model'\nimport type { LogicSigClassModel } from '../models/logic-sig-class-model'\nimport type { ContractClassPType, PType } from '../ptypes'\nimport { arc4BaseContractType, baseContractType } from '../ptypes'\nimport { typeRegistry } from '../type-registry'\nimport { TypeResolver } from '../type-resolver'\nimport { EvaluationContext } from './evaluation-context'\nimport { SwitchLoopContext } from './switch-loop-context'\nimport { UniqueNameResolver } from './unique-name-resolver'\n\nexport abstract class AwstBuildContext {\n /**\n * Get the source location of a node in the current source file\n * @param node\n */\n abstract getSourceLocation(node: ts.Node): SourceLocation\n\n /**\n * Get NodeBuilder instance for the given identifier.\n * @param node\n */\n abstract getBuilderForNode(node: ts.Identifier): NodeBuilder\n\n /**\n * Reflect the PType of the given node\n * @param node\n */\n abstract getPTypeForNode(node: ts.Node): PType\n\n /**\n * Reflect generic type parameters for a call expression\n * @param node\n */\n abstract getTypeParameters(node: ts.CallExpression | ts.NewExpression): PType[]\n\n /**\n * Resolve the given identifier to a unique variable name that accounts\n * for shadowed variable names.\n * @param node\n */\n abstract resolveVariableName(node: ts.Identifier): string\n\n /**\n * Resolve the given parameter declaration to a unique parameter name to be used\n * in destructuring assignments where no explicit parameter name is available.\n * @param node\n */\n abstract resolveDestructuredParamName(node: ts.ParameterDeclaration): string\n\n /**\n * Generate a unique variable name for a discarded value.\n */\n abstract generateDiscardedVarName(): string\n\n /**\n * Add a named constant to the current context\n * @param identifier The identifier of the constant declaration in this source file\n * @param value The compile time constant value\n */\n abstract addConstant(identifier: ts.Identifier, value: awst.Constant | awst.TemplateVar): void\n\n /**\n * Retrieve the evaluation context\n */\n abstract get evaluationCtx(): EvaluationContext\n\n /**\n * Retrieve the switch loop context\n */\n abstract get switchLoopCtx(): SwitchLoopContext\n\n abstract addStorageDeclaration(declaration: AppStorageDeclaration): void\n abstract addArc4Config(methodData: {\n contractReference: ContractReference\n sourceLocation: SourceLocation\n arc4MethodConfig: ARC4MethodConfig\n memberName: string\n }): void\n abstract getArc4Config(contractType: ContractClassPType, memberName: string): ARC4MethodConfig | undefined\n\n abstract getStorageDeclaration(contractType: ContractClassPType, memberName: string): AppStorageDeclaration | undefined\n\n abstract getStorageDefinitionsForContract(contractType: ContractClassPType): AppStorageDefinition[]\n\n abstract addToCompilationSet(compilationTarget: ContractReference, contract: ContractClassModel): void\n abstract addToCompilationSet(compilationTarget: LogicSigReference, logicSig: LogicSigClassModel): void\n\n abstract get compilationSet(): CompilationSet\n\n protected abstract createChildContext(): AwstBuildContext\n\n static get current(): AwstBuildContext {\n const ctx = this.asyncStore.getStore()\n if (!ctx) {\n throw new Error('No context available!')\n }\n return ctx\n }\n\n private static asyncStore = new AsyncLocalStorage<AwstBuildContext>()\n\n static run<R>(program: ts.Program, cb: () => R) {\n const ctx = AwstBuildContextImpl.forProgram(program)\n\n return AwstBuildContext.asyncStore.run(ctx, cb)\n }\n\n runInChildContext<R>(cb: (deferred: RunDeferred) => R) {\n const childCtx = this.createChildContext()\n\n const runDeferred: RunDeferred = (action) => () => AwstBuildContext.asyncStore.run(childCtx, action)\n\n return AwstBuildContext.asyncStore.run(childCtx, () => cb(runDeferred))\n }\n}\n\ntype RunDeferred = <T>(action: () => T) => () => T\n\nclass AwstBuildContextImpl extends AwstBuildContext {\n readonly evaluationCtx = new EvaluationContext()\n readonly switchLoopCtx = new SwitchLoopContext()\n readonly typeResolver: TypeResolver\n readonly typeChecker: ts.TypeChecker\n readonly #compilationSet: CompilationSet\n private constructor(\n public readonly program: ts.Program,\n private readonly constants: ConstantStore,\n private readonly nameResolver: UniqueNameResolver,\n private readonly storageDeclarations: Map<string, Map<string, AppStorageDeclaration>>,\n private readonly arc4MethodConfig: Map<string, Map<string, ARC4MethodConfig>>,\n compilationSet: CompilationSet,\n ) {\n super()\n this.typeChecker = program.getTypeChecker()\n this.typeResolver = new TypeResolver(this.typeChecker, this.program.getCurrentDirectory())\n this.#compilationSet = compilationSet\n }\n\n addArc4Config({\n memberName,\n sourceLocation,\n contractReference,\n arc4MethodConfig,\n }: {\n contractReference: ContractReference\n sourceLocation: SourceLocation\n arc4MethodConfig: ARC4MethodConfig\n memberName: string\n }): void {\n const contractConfig = this.arc4MethodConfig.get(contractReference.id) ?? new Map<string, ARC4MethodConfig>()\n if (contractConfig.size === 0) {\n // Add to map if new\n this.arc4MethodConfig.set(contractReference.id, contractConfig)\n }\n if (contractConfig.has(memberName)) {\n logger.error(sourceLocation, `Duplicate declaration of member ${memberName} on ${contractReference}`)\n }\n contractConfig.set(memberName, arc4MethodConfig)\n }\n\n getArc4Config(contractType: ContractClassPType, memberName: string): ARC4MethodConfig | undefined {\n for (const ct of [contractType, ...contractType.allBases()]) {\n if (ct.equals(baseContractType) || ct.equals(arc4BaseContractType)) continue\n const contractMethods = this.arc4MethodConfig.get(ct.fullName)\n invariant(contractMethods, `${ct} has not been visited`)\n if (contractMethods.has(memberName)) {\n return contractMethods.get(memberName)\n }\n }\n return undefined\n }\n\n static forProgram(program: ts.Program): AwstBuildContext {\n return new AwstBuildContextImpl(\n program,\n new ConstantStore(program),\n new UniqueNameResolver(),\n new Map(),\n new Map(),\n new CompilationSet(),\n )\n }\n\n addConstant(identifier: ts.Identifier, value: awst.Constant | awst.TemplateVar) {\n this.constants.addConstant(identifier, value, this.getSourceLocation(identifier))\n }\n\n createChildContext(): AwstBuildContext {\n return new AwstBuildContextImpl(\n this.program,\n this.constants,\n this.nameResolver.createChild(),\n this.storageDeclarations,\n this.arc4MethodConfig,\n this.#compilationSet,\n )\n }\n\n resolveDestructuredParamName(node: ts.ParameterDeclaration) {\n const symbol = (node as { symbol?: ts.Symbol }).symbol\n invariant(symbol, 'Param node must have symbol')\n return this.nameResolver.resolveUniqueName('p', symbol)\n }\n generateDiscardedVarName() {\n return this.nameResolver.resolveUniqueName('_', undefined)\n }\n resolveVariableName(node: ts.Identifier) {\n const symbol = this.typeChecker.resolveName(node.text, node, ts.SymbolFlags.All, false)\n invariant(symbol, 'There must be a symbol for an identifier node')\n return this.nameResolver.resolveUniqueName(node.text, symbol)\n }\n\n getTypeParameters(node: ts.CallExpression | ts.NewExpression): PType[] {\n return this.typeResolver.resolveTypeParameters(node, this.getSourceLocation(node))\n }\n\n getPTypeForNode(node: ts.Node): PType {\n const sourceLocation = this.getSourceLocation(node)\n if (ts.isTypeNode(node)) {\n return this.typeResolver.resolveTypeNode(node, sourceLocation)\n }\n return this.typeResolver.resolve(node, sourceLocation)\n }\n\n getBuilderForNode(node: ts.Identifier): NodeBuilder {\n const sourceLocation = this.getSourceLocation(node)\n const ptype = this.typeResolver.resolve(node, sourceLocation)\n if (ptype.singleton) {\n return typeRegistry.getSingletonEb(ptype, sourceLocation)\n }\n const constantValue = this.constants.tryResolveConstant(node)\n if (constantValue) {\n return typeRegistry.getInstanceEb(constantValue, ptype)\n }\n const variableName = this.resolveVariableName(node)\n return typeRegistry.getInstanceEb(\n nodeFactory.varExpression({\n sourceLocation,\n name: variableName,\n wtype: ptype.wtypeOrThrow,\n }),\n ptype,\n )\n }\n\n getSourceLocation(node: ts.Node) {\n return SourceLocation.fromNode(node, this.program.getCurrentDirectory())\n }\n\n addStorageDeclaration(declaration: AppStorageDeclaration): void {\n const contractDeclarations = this.storageDeclarations.get(declaration.definedIn.fullName) ?? new Map()\n if (contractDeclarations.size === 0) {\n // Add to map if new\n this.storageDeclarations.set(declaration.definedIn.fullName, contractDeclarations)\n }\n if (contractDeclarations.has(declaration.memberName)) {\n logger.error(declaration.sourceLocation, `Duplicate declaration of member ${declaration.memberName} on ${declaration.definedIn}`)\n }\n contractDeclarations.set(declaration.memberName, declaration)\n }\n\n getStorageDeclaration(contractType: ContractClassPType, memberName: string): AppStorageDeclaration | undefined {\n const declaration = this.storageDeclarations.get(contractType.fullName)?.get(memberName)\n if (declaration) return declaration\n for (const baseType of contractType.baseTypes) {\n const baseDeclaration = this.getStorageDeclaration(baseType, memberName)\n if (baseDeclaration) return baseDeclaration\n }\n return undefined\n }\n\n getStorageDefinitionsForContract(contractType: ContractClassPType): AppStorageDefinition[] {\n const result = new Map<string, AppStorageDefinition>()\n const seenContracts = new Set<string>()\n for (const ct of [contractType, ...contractType.allBases()]) {\n if (seenContracts.has(ct.fullName)) continue\n seenContracts.add(ct.fullName)\n\n for (const [memberName, declaration] of this.storageDeclarations.get(ct.fullName) ?? []) {\n if (result.has(memberName)) {\n logger.error(\n result.get(memberName)?.sourceLocation,\n `Redefinition of app storage member, original declared in ${declaration.sourceLocation}`,\n )\n }\n result.set(memberName, declaration.definition)\n }\n }\n return Array.from(result.values())\n }\n\n addToCompilationSet(compilationTarget: ContractReference, contract: ContractClassModel): void\n addToCompilationSet(compilationTarget: LogicSigReference, logicSig: LogicSigClassModel): void\n addToCompilationSet(compilationTarget: ContractReference | LogicSigReference, contractOrSig: ContractClassModel | LogicSigClassModel) {\n if (this.#compilationSet.has(compilationTarget)) {\n logger.debug(undefined, `${compilationTarget.id} already exists in compilation set`)\n return\n }\n this.#compilationSet.set(compilationTarget, contractOrSig)\n }\n\n get compilationSet() {\n return this.#compilationSet\n }\n}\n","import { ContractReference } from '../../awst/models'\nimport { nodeFactory } from '../../awst/node-factory'\nimport type { ContractMethodTarget, InstanceMethodTarget, InstanceSuperMethodTarget, SubroutineID } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { InternalError } from '../../errors'\nimport type { ContractClassPType, PType } from '../ptypes'\nimport { FunctionPType } from '../ptypes'\nimport { typeRegistry } from '../type-registry'\nimport type { NodeBuilder } from './index'\nimport { FunctionBuilder } from './index'\nimport { parseFunctionArgs } from './util/arg-parsing'\n\nexport abstract class SubroutineExpressionBuilder extends FunctionBuilder {\n protected constructor(\n sourceLocation: SourceLocation,\n public readonly ptype: FunctionPType,\n public readonly target: SubroutineID | InstanceMethodTarget | InstanceSuperMethodTarget | ContractMethodTarget,\n ) {\n super(sourceLocation)\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const { args: mappedArgs } = parseFunctionArgs({\n args,\n typeArgs,\n funcName: this.ptype.name,\n callLocation: sourceLocation,\n genericTypeArgs: 0,\n argSpec: (a) => this.ptype.parameters.map(([_, ptype]) => a.required(ptype)),\n })\n\n return typeRegistry.getInstanceEb(\n nodeFactory.subroutineCallExpression({\n target: this.target,\n args: mappedArgs.map((a) => nodeFactory.callArg({ name: null, value: a.resolve() })),\n sourceLocation: sourceLocation,\n wtype: this.ptype.returnType.wtypeOrThrow,\n }),\n this.ptype.returnType,\n )\n }\n}\n\n/**\n * Invoke a contract method on the current contract (ie. this.someMethod())\n */\nexport class ContractMethodExpressionBuilder extends SubroutineExpressionBuilder {\n declare readonly target: ContractMethodTarget\n\n constructor(\n sourceLocation: SourceLocation,\n ptype: FunctionPType,\n public readonly contractType: ContractClassPType,\n ) {\n super(\n sourceLocation,\n ptype,\n nodeFactory.contractMethodTarget({\n cref: ContractReference.fromPType(contractType),\n memberName: ptype.name,\n }),\n )\n }\n}\n\n/**\n * Invoke a contract method on the super contract (ie. super.someMethod())\n */\nexport class BaseContractMethodExpressionBuilder extends SubroutineExpressionBuilder {\n constructor(sourceLocation: SourceLocation, ptype: FunctionPType) {\n super(\n sourceLocation,\n ptype,\n nodeFactory.instanceSuperMethodTarget({\n memberName: ptype.name,\n }),\n )\n }\n}\n\n/**\n * Invoke a free subroutine (ie. someMethod())\n */\nexport class FreeSubroutineExpressionBuilder extends SubroutineExpressionBuilder {\n constructor(sourceLocation: SourceLocation, ptype: PType) {\n if (!(ptype instanceof FunctionPType)) {\n throw new InternalError(`Invalid ptype`)\n }\n super(\n sourceLocation,\n ptype,\n nodeFactory.subroutineID({\n target: ptype.fullName,\n }),\n )\n }\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { BytesConstant, Expression } from '../../../awst/nodes'\nimport { ARC4ABIMethodConfig, EqualityComparison } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport { wtypes } from '../../../awst/wtypes'\nimport { CodeError } from '../../../errors'\nimport { logger } from '../../../logger'\nimport { codeInvariant, hexToUint8Array } from '../../../util'\nimport { isArc4EncodableType, ptypeToArc4EncodedType, ptypeToArc4PType } from '../../arc4-util'\nimport { AwstBuildContext } from '../../context/awst-build-context'\nimport type { PType } from '../../ptypes'\nimport { bytesPType, stringPType, uint64PType } from '../../ptypes'\nimport {\n arc4EncodedLengthFunction,\n ARC4EncodedType,\n decodeArc4Function,\n encodeArc4Function,\n interpretAsArc4Function,\n methodSelectorFunction,\n} from '../../ptypes/arc4-types'\nimport { instanceEb } from '../../type-registry'\nimport { ContractMethodExpressionBuilder, SubroutineExpressionBuilder } from '../free-subroutine-expression-builder'\nimport type { InstanceBuilder, NodeBuilder } from '../index'\nimport { FunctionBuilder } from '../index'\nimport { requireStringConstant } from '../util'\nimport { parseFunctionArgs } from '../util/arg-parsing'\n\nexport class InterpretAsArc4FunctionBuilder extends FunctionBuilder {\n readonly ptype = interpretAsArc4Function\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n ptypes: [ptype],\n args: [theBytes, prefixType],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 1,\n funcName: this.typeDescription,\n argSpec: (a) => [a.required(bytesPType), a.optional(stringPType)],\n callLocation: sourceLocation,\n })\n codeInvariant(ptype instanceof ARC4EncodedType, 'Generic type must be an ARC4 encoded type')\n\n const prefixBytes = getPrefixValue(prefixType)\n\n return instanceEb(\n nodeFactory.reinterpretCast({\n expr: validatePrefix(theBytes, prefixBytes, sourceLocation),\n wtype: ptype.wtype,\n sourceLocation,\n }),\n ptype,\n )\n }\n}\nexport class EncodeArc4FunctionBuilder extends FunctionBuilder {\n readonly ptype = encodeArc4Function\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [valueToEncode],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 1,\n funcName: this.typeDescription,\n argSpec: (a) => [a.required()],\n callLocation: sourceLocation,\n })\n const encodedType = ptypeToArc4EncodedType(valueToEncode.ptype, sourceLocation)\n\n return instanceEb(\n nodeFactory.reinterpretCast({\n expr: nodeFactory.aRC4Encode({\n value: valueToEncode.resolve(),\n wtype: encodedType.wtype,\n sourceLocation,\n }),\n sourceLocation,\n wtype: bytesPType.wtype,\n }),\n bytesPType,\n )\n }\n}\nexport class DecodeArc4FunctionBuilder extends FunctionBuilder {\n readonly ptype = decodeArc4Function\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n ptypes: [ptype],\n args: [theBytes, prefixType],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 1,\n funcName: this.typeDescription,\n argSpec: (a) => [a.required(bytesPType), a.optional(stringPType)],\n callLocation: sourceLocation,\n })\n codeInvariant(isArc4EncodableType(ptype), `Cannot determine ARC4 encoding for ${ptype}`, sourceLocation)\n\n const arc4Encoded = ptypeToArc4EncodedType(ptype, sourceLocation)\n\n const prefixBytes = getPrefixValue(prefixType)\n\n return instanceEb(\n nodeFactory.aRC4Decode({\n value: nodeFactory.reinterpretCast({\n expr: validatePrefix(theBytes, prefixBytes, sourceLocation),\n sourceLocation,\n wtype: arc4Encoded.wtype,\n }),\n wtype: ptype.wtypeOrThrow,\n sourceLocation,\n }),\n ptype,\n )\n }\n}\nfunction validatePrefix(base: InstanceBuilder, expectedPrefix: BytesConstant | undefined, sourceLocation: SourceLocation): Expression {\n if (expectedPrefix === undefined) return base.resolve()\n\n const baseSingle = base.singleEvaluation().resolve()\n\n const baseNoPrefix = nodeFactory.intrinsicCall({\n opCode: 'extract',\n immediates: [4n, 0n],\n wtype: bytesPType.wtype,\n stackArgs: [baseSingle],\n sourceLocation,\n })\n const observedPrefix = nodeFactory.intrinsicCall({\n opCode: 'extract',\n immediates: [0n, 4n],\n wtype: bytesPType.wtype,\n stackArgs: [baseSingle],\n sourceLocation,\n })\n const prefixIsValid = nodeFactory.bytesComparisonExpression({\n operator: EqualityComparison.eq,\n lhs: observedPrefix,\n rhs: expectedPrefix,\n sourceLocation,\n })\n\n return nodeFactory.checkedMaybe({\n expr: nodeFactory.tupleExpression({ items: [baseNoPrefix, prefixIsValid], sourceLocation }),\n comment: 'Bytes has valid prefix',\n })\n}\n\nfunction getPrefixValue(arg: InstanceBuilder | undefined): BytesConstant | undefined {\n if (arg === undefined) return undefined\n const value = requireStringConstant(arg).value\n switch (value) {\n case 'log':\n return nodeFactory.bytesConstant({ value: hexToUint8Array('151F7C75'), sourceLocation: arg.sourceLocation })\n case 'none':\n return undefined\n default:\n logger.error(arg.sourceLocation, `Expected literal string: 'none' | 'log'`)\n }\n}\n\nfunction getArc4TypeName(arg: PType, sourceLocation: SourceLocation): string {\n const arc4Type = ptypeToArc4PType(arg, sourceLocation)\n return arc4Type.wtype instanceof wtypes.ARC4Type ? arc4Type.wtype.arc4Name : (arc4Type.wtype?.name ?? arc4Type.name)\n}\n\nexport class MethodSelectorFunctionBuilder extends FunctionBuilder {\n readonly ptype = methodSelectorFunction\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [methodSignature],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n callLocation: sourceLocation,\n funcName: this.typeDescription,\n argSpec: (a) => [a.passthrough()],\n })\n\n let signature: string\n\n if (methodSignature instanceof SubroutineExpressionBuilder) {\n codeInvariant(\n methodSignature instanceof ContractMethodExpressionBuilder,\n `Expected contract instance method, found ${methodSignature.typeDescription}`,\n )\n\n const methodTarget = methodSignature.target\n const arc4Config = AwstBuildContext.current.getArc4Config(methodSignature.contractType, methodTarget.memberName)\n codeInvariant(\n arc4Config instanceof ARC4ABIMethodConfig,\n `${methodTarget.memberName} is not an ABI method`,\n methodSignature.sourceLocation,\n )\n const params = methodSignature.ptype.parameters.map(([_, ptype]) => getArc4TypeName(ptype, sourceLocation)).join(',')\n const returnType = getArc4TypeName(methodSignature.ptype.returnType, sourceLocation)\n signature = `${arc4Config.name}(${params})${returnType}`\n } else {\n if (methodSignature === undefined) {\n throw new CodeError(\n `${this.typeDescription} expects exactly 1 argument that is either a string literal, or a contract function reference`,\n { sourceLocation },\n )\n }\n signature = requireStringConstant(methodSignature).value\n }\n\n return instanceEb(\n nodeFactory.methodConstant({\n value: signature,\n wtype: wtypes.bytesWType,\n sourceLocation,\n }),\n bytesPType,\n )\n }\n}\n\nexport class Arc4EncodedLengthFunctionBuilder extends FunctionBuilder {\n readonly ptype = arc4EncodedLengthFunction\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n ptypes: [typeToEncode],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 1,\n funcName: this.typeDescription,\n argSpec: (a) => [],\n callLocation: sourceLocation,\n })\n\n const arc4Type = ptypeToArc4EncodedType(typeToEncode, sourceLocation)\n\n codeInvariant(\n arc4Type.encodedBitSize !== null,\n `Target type must encode to a fixed size. ${typeToEncode} encodes with a variable length`,\n sourceLocation,\n )\n\n return instanceEb(\n nodeFactory.uInt64Constant({\n value: ARC4EncodedType.bitsToBytes(arc4Type.encodedBitSize),\n sourceLocation,\n }),\n uint64PType,\n )\n }\n}\n","import type { Expression, LValue } from '../../awst/nodes'\nimport { CodeError } from '../../errors'\nimport type { InstanceType } from '../ptypes'\nimport { voidPType } from '../ptypes'\nimport { InstanceExpressionBuilder } from './index'\n\nexport class VoidExpressionBuilder extends InstanceExpressionBuilder<InstanceType> {\n constructor(expr: Expression) {\n super(expr, voidPType)\n }\n resolveLValue(): LValue {\n throw new CodeError(`${this.typeDescription} is not a valid assignment target`)\n }\n}\n","import { intrinsicFactory } from '../../awst/intrinsic-factory'\nimport { StringConstant } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { CodeError } from '../../errors'\nimport { invariant } from '../../util'\nimport type { PType } from '../ptypes'\nimport { stringPType } from '../ptypes'\nimport type { NodeBuilder } from './index'\nimport { FunctionBuilder } from './index'\nimport { requireConstantOfType, requireStringConstant } from './util'\nimport { parseFunctionArgs } from './util/arg-parsing'\nimport { VoidExpressionBuilder } from './void-expression-builder'\n\nexport class AssertFunctionBuilder extends FunctionBuilder {\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const [condition, message, ...rest] = args\n if (rest.length !== 0) {\n throw CodeError.unexpectedUnhandledArgs({ sourceLocation })\n }\n\n if (condition === undefined) {\n throw new CodeError('Missing required argument: condition', { sourceLocation })\n }\n let messageStr: string | null = null\n if (message) {\n const messageConst = requireConstantOfType(message, stringPType)\n invariant(messageConst instanceof StringConstant, 'messageConst must be StringConst')\n messageStr = messageConst.value\n }\n\n return new VoidExpressionBuilder(\n intrinsicFactory.assert({\n sourceLocation,\n condition: condition.boolEval(sourceLocation),\n comment: messageStr,\n }),\n )\n }\n}\n\nexport class ErrFunctionBuilder extends FunctionBuilder {\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [message],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n callLocation: sourceLocation,\n argSpec: (a) => [a.optional(stringPType)],\n funcName: 'err',\n })\n\n return new VoidExpressionBuilder(\n intrinsicFactory.err({\n sourceLocation,\n comment: message ? requireStringConstant(message).value : null,\n }),\n )\n }\n}\n","import { nodeFactory } from '../../awst/node-factory'\nimport type { Expression } from '../../awst/nodes'\nimport { BinaryBooleanOperator } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { CodeError } from '../../errors'\nimport { codeInvariant } from '../../util'\nimport type { PType } from '../ptypes'\nimport { ArrayPType, boolPType, matchFunction, ObjectPType, TuplePType, uint64PType } from '../ptypes'\nimport { instanceEb } from '../type-registry'\nimport type { InstanceBuilder } from './index'\nimport { BuilderComparisonOp, NodeBuilder } from './index'\nimport { isStaticallyIterable, StaticIterator } from './traits/static-iterator'\nimport { requireBuilderOfType, requireInstanceBuilder } from './util'\nimport { parseFunctionArgs } from './util/arg-parsing'\n\nexport class MatchFunctionBuilder extends NodeBuilder {\n readonly ptype = matchFunction\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [subject, tests],\n } = parseFunctionArgs({\n args,\n typeArgs,\n callLocation: sourceLocation,\n genericTypeArgs: 1,\n funcName: 'match',\n argSpec: (a) => [a.passthrough(), a.required()],\n })\n codeInvariant(subject, 'subject parameter is missing', sourceLocation)\n\n return buildComparisons(subject, tests, this.typeDescription, sourceLocation)\n }\n}\n\nexport function buildComparisons(subject: NodeBuilder, tests: InstanceBuilder, functionName: string, sourceLocation: SourceLocation) {\n if (tests.ptype instanceof ObjectPType) {\n const condition = tests.ptype\n .orderedProperties()\n .reduce((acc: Expression | undefined, [propName, propType]): Expression | undefined => {\n const subjectProperty = requireInstanceBuilder(subject.memberAccess(propName, sourceLocation))\n const testProperty = requireInstanceBuilder(tests.memberAccess(propName, sourceLocation))\n\n const comparison = buildComparison(subjectProperty, testProperty, functionName, sourceLocation)\n return combineConditions(acc, comparison.resolve(), sourceLocation)\n }, undefined)\n codeInvariant(condition, `${functionName} must have at least 1 condition`, sourceLocation)\n return instanceEb(condition, boolPType)\n } else if (isStaticallyIterable(tests)) {\n const condition = tests[StaticIterator]().reduce<Expression | undefined>(\n (acc, testItem, index) => {\n const indexAsBuilder = instanceEb(nodeFactory.uInt64Constant({ value: BigInt(index), sourceLocation }), uint64PType)\n const subjectItem = requireInstanceBuilder(subject.indexAccess(indexAsBuilder, sourceLocation))\n const comparison = buildComparison(subjectItem, testItem, functionName, sourceLocation)\n return combineConditions(acc, comparison.resolve(), sourceLocation)\n },\n compareLengths(subject, tests, functionName, sourceLocation),\n )\n codeInvariant(condition, `${functionName} must have at least 1 condition`, sourceLocation)\n return instanceEb(condition, boolPType)\n } else if (tests.ptype instanceof ArrayPType) {\n throw new CodeError(`${functionName} doesn't support matching against non literal arrays`, { sourceLocation: tests.sourceLocation })\n } else {\n throw new CodeError(`${functionName} requires either an object, array literal, or tuple`, { sourceLocation: tests.sourceLocation })\n }\n}\n\nfunction compareLengths(subject: NodeBuilder, tests: InstanceBuilder, functionName: string, sourceLocation: SourceLocation) {\n const subjectLength = requireInstanceBuilder(subject.memberAccess('length', sourceLocation))\n const testsLength = requireInstanceBuilder(tests.memberAccess('length', sourceLocation))\n\n return buildComparison(subjectLength, testsLength, functionName, sourceLocation).resolve()\n}\n\nfunction buildComparison(\n subjectProperty: InstanceBuilder,\n testProperty: InstanceBuilder,\n functionName: string,\n sourceLocation: SourceLocation,\n): InstanceBuilder {\n const subjectType = subjectProperty.ptype\n // Recurse comparisons for nested objects\n if (\n subjectProperty.ptype instanceof ObjectPType ||\n subjectProperty.ptype instanceof TuplePType ||\n subjectProperty.ptype instanceof ArrayPType\n ) {\n return buildComparisons(subjectProperty, testProperty, functionName, sourceLocation)\n }\n\n if (testProperty.resolvableToPType(subjectType)) {\n return subjectProperty.compare(testProperty, BuilderComparisonOp.eq, sourceLocation)\n } else if (testProperty.hasProperty('between')) {\n const range = requireInstanceBuilder(testProperty.memberAccess('between', sourceLocation)).singleEvaluation()\n const rangePType = new TuplePType({ items: [subjectType, subjectType] })\n codeInvariant(range.resolvableToPType(rangePType), 'Between range must be of type $')\n const zeroIndex = instanceEb(nodeFactory.uInt64Constant({ value: 0n, sourceLocation }), uint64PType)\n const gte = subjectProperty\n .compare(requireBuilderOfType(range.indexAccess(zeroIndex, sourceLocation), subjectType), BuilderComparisonOp.gte, sourceLocation)\n .resolve()\n\n const oneIndex = instanceEb(nodeFactory.uInt64Constant({ value: 1n, sourceLocation }), uint64PType)\n const lte = subjectProperty\n .compare(requireBuilderOfType(range.indexAccess(oneIndex, sourceLocation), subjectType), BuilderComparisonOp.lte, sourceLocation)\n .resolve()\n\n return instanceEb(combineConditions(lte, gte, sourceLocation), boolPType)\n } else {\n const [op, operand] = getComparisonOpAndOperand(testProperty, subjectType)\n return subjectProperty.compare(operand, op, sourceLocation)\n }\n}\n\nfunction getComparisonOpAndOperand(testProperty: InstanceBuilder, targetType: PType): [BuilderComparisonOp, operand: InstanceBuilder] {\n const ops = {\n lessThan: BuilderComparisonOp.lt,\n lessThanEq: BuilderComparisonOp.lte,\n greaterThan: BuilderComparisonOp.gt,\n greaterThanEq: BuilderComparisonOp.gte,\n }\n for (const [prop, op] of Object.entries(ops)) {\n if (testProperty.hasProperty(prop)) {\n return [op, requireBuilderOfType(testProperty.memberAccess(prop, testProperty.sourceLocation), targetType)]\n }\n }\n throw new CodeError(`Cannot compare values of type ${testProperty.ptype} and ${targetType.name}`, {\n sourceLocation: testProperty.sourceLocation,\n })\n}\n\nfunction combineConditions(left: Expression | undefined, right: Expression, sourceLocation: SourceLocation): Expression {\n if (left) {\n return nodeFactory.booleanBinaryOperation({\n left: left,\n right: right,\n op: BinaryBooleanOperator.and,\n sourceLocation,\n })\n }\n return right\n}\n","import { intrinsicFactory } from '../../awst/intrinsic-factory'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { codeInvariant } from '../../util'\nimport type { PType } from '../ptypes'\nimport { assertMatchFunction, stringPType } from '../ptypes'\nimport { NodeBuilder } from './index'\nimport { buildComparisons } from './match-function-builder'\nimport { requireStringConstant } from './util'\nimport { parseFunctionArgs } from './util/arg-parsing'\nimport { VoidExpressionBuilder } from './void-expression-builder'\n\nexport class AssertMatchFunctionBuilder extends NodeBuilder {\n readonly ptype = assertMatchFunction\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [subject, tests, comment],\n } = parseFunctionArgs({\n args,\n typeArgs,\n callLocation: sourceLocation,\n genericTypeArgs: 1,\n funcName: 'assertMatch',\n argSpec: (a) => [a.passthrough(), a.required(), a.optional(stringPType)],\n })\n codeInvariant(subject, 'subject parameter is missing', sourceLocation)\n\n const condition = buildComparisons(subject, tests, this.typeDescription, sourceLocation).resolve()\n\n codeInvariant(condition, 'assertMatch must have at least 1 condition', sourceLocation)\n const commentStr = comment ? requireStringConstant(comment).value : 'assert target is match for conditions'\n return new VoidExpressionBuilder(\n intrinsicFactory.assert({\n condition,\n comment: commentStr,\n sourceLocation,\n }),\n )\n }\n}\n","import { awst } from '../../awst'\nimport { intrinsicFactory } from '../../awst/intrinsic-factory'\nimport { nodeFactory } from '../../awst/node-factory'\nimport type { Expression } from '../../awst/nodes'\nimport { BigUIntBinaryOperator, BigUIntPostfixUnaryOperator, IntegerConstant, NumericComparison } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { wtypes } from '../../awst/wtypes'\n\nimport { NotSupported } from '../../errors'\nimport { logger } from '../../logger'\nimport { tryConvertEnum } from '../../util'\nimport type { InstanceType, PType } from '../ptypes'\nimport { BigUintFunction, biguintPType, boolPType, bytesPType, stringPType, uint64PType } from '../ptypes'\nimport { instanceEb } from '../type-registry'\nimport type { InstanceBuilder, NodeBuilder } from './index'\nimport { BuilderBinaryOp, BuilderComparisonOp, BuilderUnaryOp, FunctionBuilder, InstanceExpressionBuilder } from './index'\nimport { UInt64ExpressionBuilder } from './uint64-expression-builder'\nimport { requireExpressionOfType } from './util'\nimport { parseFunctionArgs } from './util/arg-parsing'\n\nexport class BigUintFunctionBuilder extends FunctionBuilder {\n readonly ptype = BigUintFunction\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [initialValue],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n callLocation: sourceLocation,\n funcName: 'BigUInt',\n argSpec: (a) => [a.optional(boolPType, stringPType, bytesPType, biguintPType, uint64PType)],\n })\n let biguint: Expression\n\n if (!initialValue) {\n biguint = nodeFactory.bigUIntConstant({\n sourceLocation,\n value: 0n,\n })\n } else if (initialValue.ptype.equals(boolPType)) {\n biguint = nodeFactory.reinterpretCast({\n expr: initialValue.toBytes(sourceLocation),\n sourceLocation,\n wtype: biguintPType.wtype,\n })\n } else if (initialValue.ptype.equals(stringPType)) {\n const expr = initialValue.resolve()\n if (expr instanceof awst.StringConstant) {\n biguint = nodeFactory.bigUIntConstant({\n value: BigInt(expr.value),\n sourceLocation,\n })\n } else {\n logger.error(initialValue.sourceLocation, 'Only compile time constant string values are supported')\n biguint = nodeFactory.bigUIntConstant({ value: 0n, sourceLocation })\n }\n } else if (initialValue.ptype.equals(bytesPType)) {\n biguint = nodeFactory.reinterpretCast({\n expr: initialValue.resolve(),\n sourceLocation,\n wtype: biguintPType.wtype,\n })\n } else if (initialValue.ptype.equals(uint64PType)) {\n const expr = initialValue.resolve()\n if (expr instanceof IntegerConstant) {\n biguint = nodeFactory.bigUIntConstant({\n ...expr,\n sourceLocation,\n })\n } else {\n biguint = nodeFactory.reinterpretCast({\n expr: initialValue.toBytes(sourceLocation),\n sourceLocation,\n wtype: biguintPType.wtype,\n })\n }\n } else {\n return initialValue\n }\n return new BigUintExpressionBuilder(biguint)\n }\n}\n\nexport class BigUintExpressionBuilder extends InstanceExpressionBuilder<InstanceType> {\n constructor(expr: Expression) {\n super(expr, biguintPType)\n }\n compare(other: InstanceBuilder, op: BuilderComparisonOp, sourceLocation: SourceLocation): InstanceBuilder {\n const otherExpr = requireExpressionOfType(other, biguintPType)\n const numComOp = tryConvertEnum(op, BuilderComparisonOp, NumericComparison)\n if (numComOp === undefined) {\n throw new NotSupported(`Numeric comparison operator ${op}`, {\n sourceLocation,\n })\n }\n return instanceEb(\n nodeFactory.numericComparisonExpression({\n lhs: this._expr,\n rhs: otherExpr,\n operator: numComOp,\n sourceLocation,\n }),\n boolPType,\n )\n }\n boolEval(sourceLocation: SourceLocation, negate: boolean = false): Expression {\n return new UInt64ExpressionBuilder(\n intrinsicFactory.bitLen({\n value: this._expr,\n sourceLocation,\n }),\n ).boolEval(sourceLocation, negate)\n }\n\n prefixUnaryOp(op: BuilderUnaryOp, sourceLocation: SourceLocation): InstanceBuilder {\n let binaryOp: BigUIntBinaryOperator\n\n switch (op) {\n case BuilderUnaryOp.inc:\n binaryOp = BigUIntBinaryOperator.add\n break\n case BuilderUnaryOp.dec:\n binaryOp = BigUIntBinaryOperator.sub\n break\n case BuilderUnaryOp.bit_inv:\n logger.error(sourceLocation, `Bitwise inversion of ${this.typeDescription} is not supported as the bit size is indeterminate`)\n return this\n\n case BuilderUnaryOp.pos:\n return this\n default:\n return super.prefixUnaryOp(op, sourceLocation)\n }\n return new BigUintExpressionBuilder(\n nodeFactory.assignmentExpression({\n target: this.resolveLValue(),\n sourceLocation,\n value: nodeFactory.bigUIntBinaryOperation({\n left: this.resolve(),\n right: nodeFactory.bigUIntConstant({ value: 1n, sourceLocation }),\n op: binaryOp,\n sourceLocation,\n }),\n }),\n )\n }\n\n postfixUnaryOp(op: BuilderUnaryOp, sourceLocation: SourceLocation): InstanceBuilder {\n let unaryOp: BigUIntPostfixUnaryOperator\n switch (op) {\n case BuilderUnaryOp.inc:\n unaryOp = BigUIntPostfixUnaryOperator.increment\n break\n case BuilderUnaryOp.dec:\n unaryOp = BigUIntPostfixUnaryOperator.decrement\n break\n default:\n return super.postfixUnaryOp(op, sourceLocation)\n }\n return new BigUintExpressionBuilder(\n nodeFactory.bigUIntPostfixUnaryOperation({\n sourceLocation,\n target: this.resolveLValue(),\n wtype: this.ptype.wtype,\n op: unaryOp,\n }),\n )\n }\n\n binaryOp(other: InstanceBuilder, op: BuilderBinaryOp, sourceLocation: SourceLocation): InstanceBuilder {\n const otherExpr = requireExpressionOfType(other, biguintPType)\n\n const uintOp = op === BuilderBinaryOp.div ? BigUIntBinaryOperator.floorDiv : tryConvertEnum(op, BuilderBinaryOp, BigUIntBinaryOperator)\n if (uintOp === undefined) {\n throw new NotSupported(`BigUint binary operator '${op}'`, {\n sourceLocation,\n })\n }\n return new BigUintExpressionBuilder(\n nodeFactory.bigUIntBinaryOperation({\n left: this._expr,\n right: otherExpr,\n op: uintOp,\n sourceLocation,\n }),\n )\n }\n\n augmentedAssignment(other: InstanceBuilder, op: BuilderBinaryOp, sourceLocation: SourceLocation): InstanceBuilder {\n return new BigUintExpressionBuilder(\n nodeFactory.assignmentExpression({\n target: this.resolveLValue(),\n value: this.binaryOp(other, op, sourceLocation).resolve(),\n sourceLocation,\n }),\n )\n }\n\n toBytes(sourceLocation: SourceLocation): awst.Expression {\n return nodeFactory.reinterpretCast({ expr: this.resolve(), sourceLocation, wtype: wtypes.bytesWType })\n }\n}\n","import { wtypes } from './wtypes'\n\nexport class TxnFieldData {\n readonly immediate: string\n readonly wtype: wtypes.WType\n readonly numValues: number\n readonly isInnerParam: boolean\n /**\n * If field is an array, accept individual arguments and convert to an array\n */\n readonly arrayPromote: boolean\n constructor(data: { field: TxnField; wtype: wtypes.WType; numValues?: number; isInnerParam?: boolean; arrayPromote?: boolean }) {\n this.immediate = data.field\n this.wtype = data.wtype\n this.numValues = data.numValues ?? 1\n this.isInnerParam = data.isInnerParam ?? true\n this.arrayPromote = data.arrayPromote ?? false\n }\n}\n\nexport enum TxnField {\n Sender = 'Sender',\n Fee = 'Fee',\n FirstValid = 'FirstValid',\n FirstValidTime = 'FirstValidTime',\n LastValid = 'LastValid',\n Note = 'Note',\n Lease = 'Lease',\n Receiver = 'Receiver',\n Amount = 'Amount',\n CloseRemainderTo = 'CloseRemainderTo',\n VotePK = 'VotePK',\n SelectionPK = 'SelectionPK',\n VoteFirst = 'VoteFirst',\n VoteLast = 'VoteLast',\n VoteKeyDilution = 'VoteKeyDilution',\n Type = 'Type',\n TypeEnum = 'TypeEnum',\n XferAsset = 'XferAsset',\n AssetAmount = 'AssetAmount',\n AssetSender = 'AssetSender',\n AssetReceiver = 'AssetReceiver',\n AssetCloseTo = 'AssetCloseTo',\n GroupIndex = 'GroupIndex',\n TxID = 'TxID',\n ApplicationID = 'ApplicationID',\n OnCompletion = 'OnCompletion',\n NumAppArgs = 'NumAppArgs',\n NumAccounts = 'NumAccounts',\n ApprovalProgram = 'ApprovalProgram',\n ClearStateProgram = 'ClearStateProgram',\n RekeyTo = 'RekeyTo',\n ConfigAsset = 'ConfigAsset',\n ConfigAssetTotal = 'ConfigAssetTotal',\n ConfigAssetDecimals = 'ConfigAssetDecimals',\n ConfigAssetDefaultFrozen = 'ConfigAssetDefaultFrozen',\n ConfigAssetUnitName = 'ConfigAssetUnitName',\n ConfigAssetName = 'ConfigAssetName',\n ConfigAssetURL = 'ConfigAssetURL',\n ConfigAssetMetadataHash = 'ConfigAssetMetadataHash',\n ConfigAssetManager = 'ConfigAssetManager',\n ConfigAssetReserve = 'ConfigAssetReserve',\n ConfigAssetFreeze = 'ConfigAssetFreeze',\n ConfigAssetClawback = 'ConfigAssetClawback',\n FreezeAsset = 'FreezeAsset',\n FreezeAssetAccount = 'FreezeAssetAccount',\n FreezeAssetFrozen = 'FreezeAssetFrozen',\n NumAssets = 'NumAssets',\n NumApplications = 'NumApplications',\n GlobalNumUint = 'GlobalNumUint',\n GlobalNumByteSlice = 'GlobalNumByteSlice',\n LocalNumUint = 'LocalNumUint',\n LocalNumByteSlice = 'LocalNumByteSlice',\n ExtraProgramPages = 'ExtraProgramPages',\n Nonparticipation = 'Nonparticipation',\n NumLogs = 'NumLogs',\n CreatedAssetID = 'CreatedAssetID',\n CreatedApplicationID = 'CreatedApplicationID',\n LastLog = 'LastLog',\n StateProofPK = 'StateProofPK',\n NumApprovalProgramPages = 'NumApprovalProgramPages',\n NumClearStateProgramPages = 'NumClearStateProgramPages',\n ApplicationArgs = 'ApplicationArgs',\n Accounts = 'Accounts',\n Assets = 'Assets',\n Applications = 'Applications',\n Logs = 'Logs',\n ApprovalProgramPages = 'ApprovalProgramPages',\n ClearStateProgramPages = 'ClearStateProgramPages',\n}\n\nexport const TxnFields: Record<TxnField, TxnFieldData> = {\n Sender: new TxnFieldData({ field: TxnField.Sender, wtype: wtypes.accountWType }),\n Fee: new TxnFieldData({ field: TxnField.Fee, wtype: wtypes.uint64WType }),\n FirstValid: new TxnFieldData({ field: TxnField.FirstValid, wtype: wtypes.uint64WType, isInnerParam: false }),\n FirstValidTime: new TxnFieldData({ field: TxnField.FirstValidTime, wtype: wtypes.uint64WType, isInnerParam: false }),\n LastValid: new TxnFieldData({ field: TxnField.LastValid, wtype: wtypes.uint64WType, isInnerParam: false }),\n Note: new TxnFieldData({ field: TxnField.Note, wtype: wtypes.bytesWType }),\n Lease: new TxnFieldData({ field: TxnField.Lease, wtype: wtypes.bytesWType, isInnerParam: false }),\n Receiver: new TxnFieldData({ field: TxnField.Receiver, wtype: wtypes.accountWType }),\n Amount: new TxnFieldData({ field: TxnField.Amount, wtype: wtypes.uint64WType }),\n CloseRemainderTo: new TxnFieldData({ field: TxnField.CloseRemainderTo, wtype: wtypes.accountWType }),\n VotePK: new TxnFieldData({ field: TxnField.VotePK, wtype: wtypes.bytesWType }),\n SelectionPK: new TxnFieldData({ field: TxnField.SelectionPK, wtype: wtypes.bytesWType }),\n VoteFirst: new TxnFieldData({ field: TxnField.VoteFirst, wtype: wtypes.uint64WType }),\n VoteLast: new TxnFieldData({ field: TxnField.VoteLast, wtype: wtypes.uint64WType }),\n VoteKeyDilution: new TxnFieldData({ field: TxnField.VoteKeyDilution, wtype: wtypes.uint64WType }),\n Type: new TxnFieldData({ field: TxnField.Type, wtype: wtypes.bytesWType }),\n TypeEnum: new TxnFieldData({ field: TxnField.TypeEnum, wtype: wtypes.uint64WType }),\n XferAsset: new TxnFieldData({ field: TxnField.XferAsset, wtype: wtypes.assetWType }),\n AssetAmount: new TxnFieldData({ field: TxnField.AssetAmount, wtype: wtypes.uint64WType }),\n AssetSender: new TxnFieldData({ field: TxnField.AssetSender, wtype: wtypes.accountWType }),\n AssetReceiver: new TxnFieldData({ field: TxnField.AssetReceiver, wtype: wtypes.accountWType }),\n AssetCloseTo: new TxnFieldData({ field: TxnField.AssetCloseTo, wtype: wtypes.accountWType }),\n GroupIndex: new TxnFieldData({ field: TxnField.GroupIndex, wtype: wtypes.uint64WType, isInnerParam: false }),\n TxID: new TxnFieldData({ field: TxnField.TxID, wtype: wtypes.bytesWType, isInnerParam: false }),\n // v2\n ApplicationID: new TxnFieldData({ field: TxnField.ApplicationID, wtype: wtypes.applicationWType }),\n OnCompletion: new TxnFieldData({ field: TxnField.OnCompletion, wtype: wtypes.uint64WType }),\n NumAppArgs: new TxnFieldData({ field: TxnField.NumAppArgs, wtype: wtypes.uint64WType, isInnerParam: false }),\n NumAccounts: new TxnFieldData({ field: TxnField.NumAccounts, wtype: wtypes.uint64WType, isInnerParam: false }),\n ApprovalProgram: new TxnFieldData({ field: TxnField.ApprovalProgram, wtype: wtypes.bytesWType }),\n ClearStateProgram: new TxnFieldData({ field: TxnField.ClearStateProgram, wtype: wtypes.bytesWType }),\n RekeyTo: new TxnFieldData({ field: TxnField.RekeyTo, wtype: wtypes.accountWType }),\n ConfigAsset: new TxnFieldData({ field: TxnField.ConfigAsset, wtype: wtypes.assetWType }),\n ConfigAssetTotal: new TxnFieldData({ field: TxnField.ConfigAssetTotal, wtype: wtypes.uint64WType }),\n ConfigAssetDecimals: new TxnFieldData({ field: TxnField.ConfigAssetDecimals, wtype: wtypes.uint64WType }),\n ConfigAssetDefaultFrozen: new TxnFieldData({ field: TxnField.ConfigAssetDefaultFrozen, wtype: wtypes.boolWType }),\n ConfigAssetUnitName: new TxnFieldData({ field: TxnField.ConfigAssetUnitName, wtype: wtypes.bytesWType }),\n ConfigAssetName: new TxnFieldData({ field: TxnField.ConfigAssetName, wtype: wtypes.bytesWType }),\n ConfigAssetURL: new TxnFieldData({ field: TxnField.ConfigAssetURL, wtype: wtypes.bytesWType }),\n ConfigAssetMetadataHash: new TxnFieldData({ field: TxnField.ConfigAssetMetadataHash, wtype: wtypes.bytesWType }),\n ConfigAssetManager: new TxnFieldData({ field: TxnField.ConfigAssetManager, wtype: wtypes.accountWType }),\n ConfigAssetReserve: new TxnFieldData({ field: TxnField.ConfigAssetReserve, wtype: wtypes.accountWType }),\n ConfigAssetFreeze: new TxnFieldData({ field: TxnField.ConfigAssetFreeze, wtype: wtypes.accountWType }),\n ConfigAssetClawback: new TxnFieldData({ field: TxnField.ConfigAssetClawback, wtype: wtypes.accountWType }),\n FreezeAsset: new TxnFieldData({ field: TxnField.FreezeAsset, wtype: wtypes.assetWType }),\n FreezeAssetAccount: new TxnFieldData({ field: TxnField.FreezeAssetAccount, wtype: wtypes.accountWType }),\n FreezeAssetFrozen: new TxnFieldData({ field: TxnField.FreezeAssetFrozen, wtype: wtypes.boolWType }),\n // v3\n NumAssets: new TxnFieldData({ field: TxnField.NumAssets, wtype: wtypes.uint64WType, isInnerParam: false }),\n NumApplications: new TxnFieldData({ field: TxnField.NumApplications, wtype: wtypes.uint64WType, isInnerParam: false }),\n GlobalNumUint: new TxnFieldData({ field: TxnField.GlobalNumUint, wtype: wtypes.uint64WType }),\n GlobalNumByteSlice: new TxnFieldData({ field: TxnField.GlobalNumByteSlice, wtype: wtypes.uint64WType }),\n LocalNumUint: new TxnFieldData({ field: TxnField.LocalNumUint, wtype: wtypes.uint64WType }),\n LocalNumByteSlice: new TxnFieldData({ field: TxnField.LocalNumByteSlice, wtype: wtypes.uint64WType }),\n // v4\n ExtraProgramPages: new TxnFieldData({ field: TxnField.ExtraProgramPages, wtype: wtypes.uint64WType }),\n // v5\n Nonparticipation: new TxnFieldData({ field: TxnField.Nonparticipation, wtype: wtypes.boolWType }),\n NumLogs: new TxnFieldData({ field: TxnField.NumLogs, wtype: wtypes.uint64WType, isInnerParam: false }),\n CreatedAssetID: new TxnFieldData({ field: TxnField.CreatedAssetID, wtype: wtypes.assetWType, isInnerParam: false }),\n CreatedApplicationID: new TxnFieldData({ field: TxnField.CreatedApplicationID, wtype: wtypes.applicationWType, isInnerParam: false }),\n // v6\n LastLog: new TxnFieldData({ field: TxnField.LastLog, wtype: wtypes.bytesWType, isInnerParam: false }),\n StateProofPK: new TxnFieldData({ field: TxnField.StateProofPK, wtype: wtypes.bytesWType }),\n // v7\n NumApprovalProgramPages: new TxnFieldData({ field: TxnField.NumApprovalProgramPages, wtype: wtypes.uint64WType, isInnerParam: false }),\n NumClearStateProgramPages: new TxnFieldData({\n field: TxnField.NumClearStateProgramPages,\n wtype: wtypes.uint64WType,\n isInnerParam: false,\n }),\n // array fields\n // TODO: allow configuring as these are consensus values\n // v2\n ApplicationArgs: new TxnFieldData({ field: TxnField.ApplicationArgs, wtype: wtypes.bytesWType, numValues: 16 }),\n Accounts: new TxnFieldData({ field: TxnField.Accounts, wtype: wtypes.accountWType, numValues: 4 }),\n // v3\n Assets: new TxnFieldData({ field: TxnField.Assets, wtype: wtypes.assetWType, numValues: 8 }),\n Applications: new TxnFieldData({ field: TxnField.Applications, wtype: wtypes.applicationWType, numValues: 8 }),\n // v5\n Logs: new TxnFieldData({ field: TxnField.Logs, wtype: wtypes.bytesWType, numValues: 32, isInnerParam: false }),\n // v7\n ApprovalProgramPages: new TxnFieldData({\n field: TxnField.ApprovalProgramPages,\n wtype: wtypes.bytesWType,\n numValues: 4,\n arrayPromote: true,\n }),\n ClearStateProgramPages: new TxnFieldData({\n field: TxnField.ClearStateProgramPages,\n wtype: wtypes.bytesWType,\n numValues: 4,\n arrayPromote: true,\n }),\n}\n","import { ContractReference, LogicSigReference } from '../../../awst/models'\nimport { nodeFactory } from '../../../awst/node-factory'\nimport type { Expression } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport { TxnField } from '../../../awst/txn-fields'\nimport { codeInvariant, invariant } from '../../../util'\nimport type { PType } from '../../ptypes'\nimport {\n compiledContractType,\n compiledLogicSigType,\n compileFunctionType,\n ContractClassPType,\n LogicSigPType,\n ObjectPType,\n uint64PType,\n} from '../../ptypes'\nimport { instanceEb } from '../../type-registry'\nimport type { InstanceBuilder, NodeBuilder } from '../index'\nimport { FunctionBuilder } from '../index'\nimport { requireBuilderOfType, requireInstanceBuilder, requireStringConstant } from '../util'\nimport { parseFunctionArgs } from '../util/arg-parsing'\n\nexport class CompileFunctionBuilder extends FunctionBuilder {\n readonly ptype = compileFunctionType\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [contractOrSig, options],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n callLocation: sourceLocation,\n funcName: this.typeDescription,\n argSpec: (a) => [a.required(ContractClassPType, LogicSigPType), a.optional()],\n })\n\n const templateVarOptions = parseTemplateVars(options)\n\n if (contractOrSig.ptype instanceof ContractClassPType) {\n return instanceEb(\n nodeFactory.compiledContract({\n contract: ContractReference.fromPType(contractOrSig.ptype),\n allocationOverrides: parseAllocationOverrides(options),\n ...templateVarOptions,\n wtype: compiledContractType.wtype,\n sourceLocation,\n }),\n compiledContractType,\n )\n } else {\n invariant(contractOrSig.ptype instanceof LogicSigPType, 'ptype must be LogicSigPType')\n return instanceEb(\n nodeFactory.compiledLogicSig({\n logicSig: LogicSigReference.fromPType(contractOrSig.ptype),\n ...templateVarOptions,\n wtype: compiledLogicSigType.wtype,\n sourceLocation,\n }),\n compiledLogicSigType,\n )\n }\n }\n}\nconst optionsNames = {\n prefix: 'templateVarsPrefix',\n templateVars: 'templateVars',\n}\n\nfunction parseTemplateVars(options: InstanceBuilder | undefined): { prefix: string | null; templateVariables: Map<string, Expression> } {\n const prefix = options?.hasProperty(optionsNames.prefix)\n ? requireStringConstant(options.memberAccess(optionsNames.prefix, options.sourceLocation)).value\n : null\n\n const templateVariables = new Map<string, Expression>()\n\n if (options?.hasProperty(optionsNames.templateVars)) {\n const templateVars = requireInstanceBuilder(options.memberAccess(optionsNames.templateVars, options.sourceLocation))\n codeInvariant(\n templateVars.ptype instanceof ObjectPType,\n `${optionsNames.templateVars} must be an object type`,\n templateVars.sourceLocation,\n )\n\n for (const [varName] of templateVars.ptype.orderedProperties()) {\n templateVariables.set(varName, requireInstanceBuilder(templateVars.memberAccess(varName, templateVars.sourceLocation)).resolve())\n }\n }\n\n return {\n prefix,\n templateVariables,\n }\n}\n\nconst allocationOverrides = {\n extraProgramPages: [TxnField.ExtraProgramPages, uint64PType],\n globalUints: [TxnField.ExtraProgramPages, uint64PType],\n globalBytes: [TxnField.ExtraProgramPages, uint64PType],\n localUints: [TxnField.ExtraProgramPages, uint64PType],\n localBytes: [TxnField.ExtraProgramPages, uint64PType],\n} as const\n\nfunction parseAllocationOverrides(options: InstanceBuilder | undefined): Map<TxnField, Expression> {\n const overrides = new Map<TxnField, Expression>()\n if (options) {\n for (const [property, [field, fieldType]] of Object.entries(allocationOverrides)) {\n if (options.hasProperty(property)) {\n overrides.set(field, requireBuilderOfType(options.memberAccess(property, options.sourceLocation), fieldType).resolve())\n }\n }\n }\n return overrides\n}\n","import type { SupportedAvmVersion } from '../../../constants'\nimport { Constants } from '../../../constants'\nimport { codeInvariant, isIn } from '../../../util'\nimport type { NodeBuilder } from '../index'\nimport { requireIntegerConstant } from './index'\n\nexport function requireAvmVersion(builder: NodeBuilder): SupportedAvmVersion {\n const value = requireIntegerConstant(builder)\n codeInvariant(isIn(value.value, Constants.supportedAvmVersions), `${value.value} is not a supported AVM version`, value.sourceLocation)\n return value.value as SupportedAvmVersion\n}\n","import { nodeFactory } from '../../awst/node-factory'\nimport type { Expression } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { codeInvariant, invariant } from '../../util'\nimport type { PType, PTypeOrClass } from '../ptypes'\nimport { ArrayPType, TuplePType, uint64PType } from '../ptypes'\nimport { instanceEb } from '../type-registry'\nimport type { InstanceBuilder, NodeBuilder } from './index'\nimport { InstanceExpressionBuilder } from './index'\nimport type { StaticallyIterable } from './traits/static-iterator'\nimport { StaticIterator } from './traits/static-iterator'\nimport { requireIntegerConstant } from './util'\n\nexport class TupleExpressionBuilder extends InstanceExpressionBuilder<TuplePType> implements StaticallyIterable {\n constructor(expression: Expression, ptype: PType) {\n invariant(ptype instanceof TuplePType, 'TupleExpressionBuilder must be built with ptype of type TuplePType')\n super(expression, ptype)\n }\n\n iterate(): Expression {\n return this.resolve()\n }\n\n resolvableToPType(ptype: PTypeOrClass): boolean {\n if (ptype instanceof ArrayPType && this.ptype.items.every((i) => i.equals(ptype.elementType))) {\n return true\n }\n return super.resolvableToPType(ptype)\n }\n\n resolveToPType(ptype: PTypeOrClass): InstanceBuilder {\n if (ptype instanceof ArrayPType && this.ptype.items.every((i) => i.equals(ptype.elementType))) {\n return instanceEb(\n nodeFactory.newArray({\n values: this[StaticIterator]().map((i) => i.resolve()),\n wtype: ptype.wtype,\n sourceLocation: this.sourceLocation,\n }),\n ptype,\n )\n }\n\n return super.resolveToPType(ptype)\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n switch (name) {\n case 'length':\n return instanceEb(\n nodeFactory.uInt64Constant({\n value: BigInt(this.ptype.items.length),\n sourceLocation,\n }),\n uint64PType,\n )\n }\n return super.memberAccess(name, sourceLocation)\n }\n\n indexAccess(index: InstanceBuilder, sourceLocation: SourceLocation): NodeBuilder {\n const indexNum = requireIntegerConstant(index).value\n const itemType = this.ptype.items[Number(indexNum)]\n codeInvariant(\n indexNum < this.ptype.items.length && indexNum >= 0,\n \"Index arg must be a numeric literal between 0 and the tuple's length\",\n )\n return instanceEb(\n nodeFactory.tupleItemExpression({\n index: indexNum,\n sourceLocation,\n base: this._expr,\n }),\n itemType,\n )\n }\n\n [StaticIterator](): InstanceBuilder[] {\n return this.ptype.items.map((itemType, index) =>\n instanceEb(\n nodeFactory.tupleItemExpression({\n index: BigInt(index),\n sourceLocation: this.sourceLocation,\n base: this._expr,\n }),\n itemType,\n ),\n )\n }\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { Expression, LValue } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport { CodeError } from '../../../errors'\nimport { codeInvariant } from '../../../util'\nimport type { PTypeOrClass } from '../../ptypes'\nimport { ArrayLiteralPType, ArrayPType, TuplePType } from '../../ptypes'\nimport type { NodeBuilder } from '../index'\nimport { InstanceBuilder } from '../index'\nimport type { StaticallyIterable } from '../traits/static-iterator'\nimport { StaticIterator } from '../traits/static-iterator'\nimport { TupleExpressionBuilder } from '../tuple-expression-builder'\nimport { requireIntegerConstant } from '../util'\nimport { arrayLength } from '../util/array/length'\n\nexport class ArrayLiteralExpressionBuilder extends InstanceBuilder implements StaticallyIterable {\n readonly ptype: ArrayLiteralPType | ArrayPType\n constructor(\n sourceLocation: SourceLocation,\n private readonly items: InstanceBuilder[],\n ptype?: ArrayPType | ArrayLiteralPType,\n ) {\n super(sourceLocation)\n this.ptype = ptype ?? new ArrayLiteralPType({ items: items.map((i) => i.ptype) })\n }\n\n resolve(): Expression {\n const arrayType = this.ptype instanceof ArrayPType ? this.ptype : this.ptype.getArrayType()\n\n return nodeFactory.newArray({\n sourceLocation: this.sourceLocation,\n values: this.items.map((i) => i.resolve()),\n wtype: arrayType.wtype,\n })\n }\n\n resolveLValue(): LValue {\n throw new CodeError('Array literal is not a valid lvalue')\n }\n\n singleEvaluation(): InstanceBuilder {\n return new ArrayLiteralExpressionBuilder(\n this.sourceLocation,\n this.items.map((i) => i.singleEvaluation()),\n )\n }\n\n indexAccess(index: InstanceBuilder, sourceLocation: SourceLocation): NodeBuilder {\n const indexNum = Number(requireIntegerConstant(index).value)\n codeInvariant(indexNum < this.items.length, `Index ${indexNum} out of bounds of array`, sourceLocation)\n return this.items[indexNum]\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n switch (name) {\n case 'length':\n return arrayLength(this, sourceLocation)\n }\n return super.memberAccess(name, sourceLocation)\n }\n\n resolveToPType(ptype: PTypeOrClass): InstanceBuilder {\n if (ptype instanceof TuplePType) {\n codeInvariant(\n ptype.items.length <= this.items.length,\n `Value of length ${this.items.length} cannot be resolved to type of length ${ptype.items.length}`,\n )\n return new TupleExpressionBuilder(\n nodeFactory.tupleExpression({\n items: ptype.items.map((itemType, index) => this.items[index].resolveToPType(itemType).resolve()),\n sourceLocation: this.sourceLocation,\n }),\n ptype,\n )\n }\n if (ptype instanceof ArrayPType) {\n return new ArrayLiteralExpressionBuilder(\n this.sourceLocation,\n this.items.map((i) => i.resolveToPType(ptype.elementType)),\n ptype,\n )\n }\n return super.resolveToPType(ptype)\n }\n\n resolvableToPType(ptype: PTypeOrClass): boolean {\n if (ptype.equals(this.ptype)) return true\n if (ptype instanceof TuplePType) {\n return ptype.items.every((itemType, index) => this.items[index].resolvableToPType(itemType))\n }\n if (ptype instanceof ArrayPType) {\n return this.items.every((i) => i.resolveToPType(ptype.elementType))\n }\n return false\n }\n\n [StaticIterator](): InstanceBuilder[] {\n return this.items\n }\n}\n","import { CodeError } from '../../../errors'\nimport { codeInvariant } from '../../../util'\nimport { numberPType } from '../../ptypes'\nimport type { NodeBuilder } from '../index'\nimport { ArrayLiteralExpressionBuilder } from '../literal/array-literal-expression-builder'\nimport { StaticIterator } from '../traits/static-iterator'\nimport { requireLiteralNumber } from './index'\n\nexport function processScratchRanges(builder: NodeBuilder): Set<bigint> {\n codeInvariant(\n builder instanceof ArrayLiteralExpressionBuilder,\n 'Scratch ranges should be specified in an array literal',\n builder.sourceLocation,\n )\n const slots = new Set<bigint>()\n for (const item of builder[StaticIterator]()) {\n if (item.resolvableToPType(numberPType)) {\n slots.add(requireLiteralNumber(item))\n } else {\n const from = getRangeProp(item, 'from')\n const to = getRangeProp(item, 'to')\n for (let i = from; i <= to; i++) {\n slots.add(i)\n }\n }\n }\n\n return slots\n}\n\nfunction getRangeProp(builder: NodeBuilder, name: string): bigint {\n if (builder.hasProperty(name)) {\n return requireLiteralNumber(builder.memberAccess(name, builder.sourceLocation))\n }\n throw new CodeError('Scratch slot reservations should be either a single slot or an object containing a from and to property', {\n sourceLocation: builder.sourceLocation,\n })\n}\n","import { nodeFactory } from '../../awst/node-factory'\n\nimport type { Expression, LValue } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { wtypes } from '../../awst/wtypes'\nimport { Constants } from '../../constants'\nimport { CodeError } from '../../errors'\nimport { codeInvariant, invariant } from '../../util'\nimport { AwstBuildContext } from '../context/awst-build-context'\nimport type { ContractOptionsDecoratorData } from '../models/decorator-data'\nimport type { PType } from '../ptypes'\nimport {\n ClusteredContractClassType,\n ContractClassPType,\n contractOptionsDecorator,\n numberPType,\n StorageProxyPType,\n stringPType,\n} from '../ptypes'\n\nimport { instanceEb } from '../type-registry'\n\nimport { BaseContractMethodExpressionBuilder, ContractMethodExpressionBuilder } from './free-subroutine-expression-builder'\nimport { DecoratorDataBuilder, FunctionBuilder, InstanceBuilder, NodeBuilder } from './index'\nimport { requireLiteralNumber, requireStringConstant } from './util'\nimport { parseFunctionArgs } from './util/arg-parsing'\nimport { requireAvmVersion } from './util/avm-version'\nimport { processScratchRanges } from './util/scratch-slots'\nimport { VoidExpressionBuilder } from './void-expression-builder'\n\n/**\n * Handles expressions using `this` in the context of a contract\n */\nexport class ContractThisBuilder extends InstanceBuilder<ContractClassPType> {\n resolve(): Expression {\n throw new CodeError('this keyword is not valid as a value', { sourceLocation: this.sourceLocation })\n }\n resolveLValue(): LValue {\n throw new CodeError('this keyword is not valid as a value', { sourceLocation: this.sourceLocation })\n }\n readonly #ptype: ContractClassPType\n constructor(ptype: ContractClassPType, sourceLocation: SourceLocation) {\n super(sourceLocation)\n this.#ptype = ptype\n }\n\n get ptype(): ContractClassPType {\n return this.#ptype\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n const property = this.ptype.properties[name]\n if (property) {\n const storageDeclaration = AwstBuildContext.current.getStorageDeclaration(this.ptype, name)\n if (property instanceof StorageProxyPType) {\n codeInvariant(storageDeclaration, `No declaration exists for property ${property}.`, sourceLocation)\n return instanceEb(storageDeclaration.key, property)\n }\n }\n const method = this.ptype.methods[name]\n if (method) {\n return new ContractMethodExpressionBuilder(sourceLocation, method, this.ptype)\n }\n return super.memberAccess(name, sourceLocation)\n }\n}\n\n/**\n * Handles expressions using `super` in the context of a contract\n */\nexport class ContractSuperBuilder extends ContractThisBuilder {\n constructor(ptype: ContractClassPType, sourceLocation: SourceLocation) {\n super(ptype, sourceLocation)\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n codeInvariant(args.length === 0, 'Constructor arguments are not supported', sourceLocation)\n codeInvariant(typeArgs.length === 0, 'Super calls cannot be generic', sourceLocation)\n return new VoidExpressionBuilder(\n nodeFactory.subroutineCallExpression({\n target: nodeFactory.instanceSuperMethodTarget({\n memberName: Constants.constructorMethodName,\n }),\n args: [],\n sourceLocation,\n wtype: wtypes.voidWType,\n }),\n )\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n if (this.ptype instanceof ClusteredContractClassType && name === 'class') {\n return new PolytypeClassSuperMethodBuilder(this.ptype, sourceLocation)\n }\n\n const method = this.ptype.methods[name]\n if (method) {\n return new BaseContractMethodExpressionBuilder(sourceLocation, method)\n }\n return super.memberAccess(name, sourceLocation)\n }\n}\n\n/**\n * Handles calls of `super.class` from polytype library which is used to access the prototype of a specific base type\n */\nclass PolytypeClassSuperMethodBuilder extends FunctionBuilder {\n constructor(\n public readonly ptype: ClusteredContractClassType,\n sourceLocation: SourceLocation,\n ) {\n super(sourceLocation)\n }\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [contract],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 1,\n callLocation: sourceLocation,\n funcName: 'super.class',\n argSpec: (a) => [a.required(ContractClassPType)],\n })\n const matchedBaseType = this.ptype.baseTypes.find((b) => b.equals(contract.ptype))\n\n codeInvariant(matchedBaseType, `${contract.ptype} must be a direct base type of this class`)\n return new PolytypeExplicitClassAccessExpressionBuilder(matchedBaseType, sourceLocation)\n }\n}\n\n/**\n * Matches polytype's super.class(SomeType) expression\n */\nexport class PolytypeExplicitClassAccessExpressionBuilder extends InstanceBuilder {\n resolve(): Expression {\n throw new CodeError('Contract class cannot be used as a value')\n }\n resolveLValue(): LValue {\n throw new CodeError('Contract class cannot be used as a value')\n }\n constructor(\n public readonly ptype: ContractClassPType,\n sourceLocation: SourceLocation,\n ) {\n super(sourceLocation)\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n const method = this.ptype.methods[name]\n if (method) {\n return new ContractMethodExpressionBuilder(sourceLocation, method, this.ptype)\n }\n if (name in this.ptype.properties) {\n throw new CodeError(`Not Supported: Accessing properties of a specific base type. Instead just use \\`this.${name}\\``, {\n sourceLocation,\n })\n }\n return super.memberAccess(name, sourceLocation)\n }\n}\n\nexport class ContractClassBuilder extends InstanceBuilder {\n resolve(): Expression {\n throw new CodeError('Contract class cannot be used as a value')\n }\n resolveLValue(): LValue {\n throw new CodeError('Contract class cannot be used as a value')\n }\n readonly ptype: ContractClassPType\n constructor(sourceLocation: SourceLocation, ptype: PType) {\n super(sourceLocation)\n invariant(ptype instanceof ContractClassPType, 'ptype must be ContractClassPType')\n this.ptype = ptype\n }\n\n newCall(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): InstanceBuilder {\n throw new CodeError('Contract class cannot be constructed manually')\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): InstanceBuilder {\n throw new CodeError('Contract class cannot be called manually')\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n switch (name) {\n case 'prototype':\n return new ContractClassPrototypeBuilder(sourceLocation, this.ptype)\n }\n return super.memberAccess(name, sourceLocation)\n }\n}\n\nclass ContractClassPrototypeBuilder extends NodeBuilder {\n constructor(\n sourceLocation: SourceLocation,\n readonly ptype: ContractClassPType,\n ) {\n super(sourceLocation)\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n const method = this.ptype.methods[name]\n if (method) {\n return new ContractMethodExpressionBuilder(sourceLocation, method, this.ptype)\n }\n return super.memberAccess(name, sourceLocation)\n }\n}\n\nexport class ContractOptionsDecoratorBuilder extends FunctionBuilder {\n readonly ptype = contractOptionsDecorator\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [{ avmVersion, name, stateTotals, scratchSlots }],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n callLocation: sourceLocation,\n funcName: this.typeDescription,\n argSpec: (a) => [\n a.obj({\n avmVersion: a.optional(numberPType),\n name: a.optional(stringPType),\n scratchSlots: a.optional(),\n stateTotals: a.optional(),\n }),\n ],\n })\n\n return new DecoratorDataBuilder(sourceLocation, {\n type: 'contract',\n avmVersion: avmVersion && requireAvmVersion(avmVersion),\n name: name && requireStringConstant(name).value,\n stateTotals: stateTotals && buildStateTotals(stateTotals),\n scratchSlots: scratchSlots && processScratchRanges(scratchSlots),\n sourceLocation,\n })\n }\n}\n\nfunction buildStateTotals(builder: NodeBuilder): ContractOptionsDecoratorData['stateTotals'] {\n function tryGetProp(name: string): bigint | undefined {\n if (builder.hasProperty(name)) {\n return requireLiteralNumber(builder.memberAccess(name, builder.sourceLocation))\n }\n return undefined\n }\n\n return {\n globalBytes: tryGetProp('globalBytes'),\n globalUints: tryGetProp('globalUints'),\n localBytes: tryGetProp('localBytes'),\n localUints: tryGetProp('localUints'),\n }\n}\n","import { nodeFactory } from '../../awst/node-factory'\nimport { PuyaLibFunction } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { wtypes } from '../../awst/wtypes'\nimport type { PType } from '../ptypes'\nimport { ensureBudgetFunction, opUpFeeSourceType, uint64PType } from '../ptypes'\nimport type { NodeBuilder } from './index'\nimport { FunctionBuilder } from './index'\nimport { requireExpressionOfType } from './util'\nimport { parseFunctionArgs } from './util/arg-parsing'\nimport { VoidExpressionBuilder } from './void-expression-builder'\n\nexport class EnsureBudgetFunctionBuilder extends FunctionBuilder {\n readonly ptype = ensureBudgetFunction\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [budget, feeSource],\n } = parseFunctionArgs({\n args,\n typeArgs,\n callLocation: sourceLocation,\n funcName: this.ptype.name,\n genericTypeArgs: 0,\n argSpec: (a) => [a.required(uint64PType), a.optional(opUpFeeSourceType.memberType)],\n })\n\n return new VoidExpressionBuilder(\n nodeFactory.puyaLibCall({\n func: PuyaLibFunction.ensureBudget,\n args: [\n nodeFactory.callArg({\n name: null,\n value: budget.resolve(),\n }),\n nodeFactory.callArg({\n name: null,\n value: feeSource\n ? requireExpressionOfType(feeSource, opUpFeeSourceType.memberType)\n : nodeFactory.uInt64Constant({ value: 0n, sourceLocation }),\n }),\n ],\n sourceLocation,\n wtype: wtypes.voidWType,\n }),\n )\n }\n}\n","import { nodeFactory } from '../../awst/node-factory'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { CodeError } from '../../errors'\nimport { invariant } from '../../util'\nimport type { PType } from '../ptypes'\nimport { IntrinsicEnumType } from '../ptypes'\nimport { NodeBuilder } from './index'\nimport { StringExpressionBuilder } from './string-expression-builder'\n\nexport class IntrinsicEnumBuilder extends NodeBuilder {\n public readonly ptype: IntrinsicEnumType\n constructor(sourceLocation: SourceLocation, ptype: PType) {\n super(sourceLocation)\n invariant(ptype instanceof IntrinsicEnumType, 'ptype must be instance of IntrinsicEnumType')\n this.ptype = ptype\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n const matchedMember = this.ptype.members.find(([memberName]) => memberName === name)\n if (matchedMember) {\n return new StringExpressionBuilder(\n nodeFactory.stringConstant({\n value: matchedMember[1],\n sourceLocation,\n }),\n )\n }\n throw new CodeError(`Member ${name} does not exist on ${this.typeDescription}`, { sourceLocation })\n }\n}\n","import type { awst } from '../../awst'\n\nimport { intrinsicFactory } from '../../awst/intrinsic-factory'\nimport { nodeFactory } from '../../awst/node-factory'\nimport type { Expression } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { wtypes } from '../../awst/wtypes'\nimport { CodeError, InternalError, throwError } from '../../errors'\nimport type { PType } from '../ptypes'\nimport type { NodeBuilder } from './index'\nimport { FunctionBuilder } from './index'\nimport { requireInstanceBuilder } from './util'\nimport { VoidExpressionBuilder } from './void-expression-builder'\n\nexport class LogFunctionBuilder extends FunctionBuilder {\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const argsExps = args.map((a) => requireInstanceBuilder(a))\n\n let logBytes: awst.Expression\n if (argsExps.length === 0) {\n throw new CodeError(`log expects at least 1 argument`, { sourceLocation })\n } else if (argsExps.length === 1) {\n logBytes = argsExps[0].toBytes(sourceLocation)\n } else {\n logBytes =\n argsExps.reduce(\n (a: Expression | undefined, b): Expression | undefined =>\n a === undefined\n ? b.toBytes(sourceLocation)\n : intrinsicFactory.bytesConcat({ left: a, right: b.toBytes(sourceLocation), sourceLocation }),\n undefined,\n ) ?? throwError(new InternalError('Should never get here given previous conditions', { sourceLocation }))\n }\n\n return new VoidExpressionBuilder(\n nodeFactory.intrinsicCall({\n sourceLocation: sourceLocation,\n immediates: [],\n stackArgs: [logBytes],\n opCode: 'log',\n wtype: wtypes.voidWType,\n }),\n )\n }\n}\n","import type { Expression, LValue } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { CodeError } from '../../errors'\nimport { invariant } from '../../util'\nimport { logicSigOptionsDecorator, LogicSigPType, numberPType, type PType, stringPType } from '../ptypes'\nimport { DecoratorDataBuilder, FunctionBuilder, InstanceBuilder, type NodeBuilder } from './index'\nimport { requireStringConstant } from './util'\nimport { parseFunctionArgs } from './util/arg-parsing'\nimport { requireAvmVersion } from './util/avm-version'\nimport { processScratchRanges } from './util/scratch-slots'\n\nexport class LogicSigClassBuilder extends InstanceBuilder {\n resolve(): Expression {\n throw new CodeError('LogicSig class cannot be used as a value')\n }\n resolveLValue(): LValue {\n throw new CodeError('LogicSig class cannot be used as a value')\n }\n readonly ptype: LogicSigPType\n constructor(sourceLocation: SourceLocation, ptype: PType) {\n super(sourceLocation)\n invariant(ptype instanceof LogicSigPType, 'ptype must be LogicSigPType')\n this.ptype = ptype\n }\n\n newCall(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): InstanceBuilder {\n throw new CodeError('LogicSig class cannot be constructed manually')\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): InstanceBuilder {\n throw new CodeError('LogicSig class cannot be called manually')\n }\n}\n\nexport class LogicSigOptionsDecoratorBuilder extends FunctionBuilder {\n readonly ptype = logicSigOptionsDecorator\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [{ avmVersion, name, scratchSlots }],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n callLocation: sourceLocation,\n funcName: this.typeDescription,\n argSpec: (a) => [\n a.obj({\n avmVersion: a.optional(numberPType),\n name: a.optional(stringPType),\n scratchSlots: a.optional(),\n }),\n ],\n })\n\n return new DecoratorDataBuilder(sourceLocation, {\n type: 'logicsig',\n avmVersion: avmVersion ? requireAvmVersion(avmVersion) : undefined,\n name: name ? requireStringConstant(name).value : undefined,\n sourceLocation,\n scratchSlots: scratchSlots && processScratchRanges(scratchSlots),\n })\n }\n}\n","import { nodeFactory } from '../../awst/node-factory'\nimport type { Expression } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { invariant } from '../../util'\nimport type { LibClassType, PType } from '../ptypes'\nimport { MutableArrayConstructor, MutableArrayGeneric, MutableArrayType } from '../ptypes'\nimport type { InstanceBuilder, NodeBuilder } from './index'\nimport { ClassBuilder, InstanceExpressionBuilder } from './index'\nimport { Arc4CopyFunctionBuilder } from './shared/arc4-copy-function-builder'\nimport { ArrayPopFunctionBuilder } from './shared/pop-function-builder'\nimport { ArrayPushFunctionBuilder } from './shared/push-function-builder'\nimport { requireExpressionOfType } from './util'\nimport { parseFunctionArgs } from './util/arg-parsing'\nimport { indexAccess } from './util/array/index-access'\nimport { arrayLength } from './util/array/length'\n\nexport class MutableArrayClassBuilder extends ClassBuilder {\n ptype: LibClassType = MutableArrayConstructor\n newCall(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): InstanceBuilder {\n const {\n args: [...initialValues],\n ptypes: [itemType],\n } = parseFunctionArgs({\n args,\n typeArgs,\n callLocation: sourceLocation,\n funcName: this.typeDescription,\n genericTypeArgs: 1,\n argSpec: (a) => args.map((_) => a.required()),\n })\n const arrayType = MutableArrayGeneric.parameterise([itemType])\n return new MutableArrayExpressionBuilder(\n nodeFactory.newArray({\n values: initialValues.map((iv) => requireExpressionOfType(iv, itemType)),\n sourceLocation,\n wtype: arrayType.wtype,\n }),\n MutableArrayGeneric.parameterise([itemType]),\n )\n }\n}\n\nexport class MutableArrayExpressionBuilder extends InstanceExpressionBuilder<MutableArrayType> {\n constructor(expr: Expression, ptype: PType) {\n invariant(ptype instanceof MutableArrayType, 'ptype must be MutableArrayType')\n super(expr, ptype)\n }\n\n iterate(sourceLocation: SourceLocation): Expression {\n return this.resolve()\n }\n\n indexAccess(index: InstanceBuilder, sourceLocation: SourceLocation): NodeBuilder {\n return indexAccess(this, index, sourceLocation)\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n switch (name) {\n case 'push':\n return new ArrayPushFunctionBuilder(this)\n case 'pop':\n return new ArrayPopFunctionBuilder(this)\n case 'length':\n return arrayLength(this, sourceLocation)\n case 'copy':\n return new Arc4CopyFunctionBuilder(this)\n }\n return super.memberAccess(name, sourceLocation)\n }\n}\n","import type { SourceLocation } from '../../awst/source-location'\nimport { invariant } from '../../util'\nimport type { PType } from '../ptypes'\nimport { NamespacePType } from '../ptypes'\nimport { NodeBuilder } from './index'\n\nexport class NamespaceBuilder extends NodeBuilder {\n private readonly _ptype: NamespacePType\n constructor(sourceLocation: SourceLocation, ptype: PType) {\n super(sourceLocation)\n invariant(ptype instanceof NamespacePType, 'NamespaceBuilder must be constructed with NamespacePType')\n this._ptype = ptype\n }\n\n get ptype(): PType {\n return this._ptype\n }\n}\n","import { nodeFactory } from '../../awst/node-factory'\nimport type { Expression } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { CodeError } from '../../errors'\nimport { invariant } from '../../util'\nimport type { PType } from '../ptypes'\nimport { ArrayPType, numberPType, TuplePType, uint64PType } from '../ptypes'\nimport { ARC4ArrayType, ARC4EncodedType } from '../ptypes/arc4-types'\nimport { instanceEb } from '../type-registry'\nimport type { InstanceBuilder, NodeBuilder } from './index'\nimport { FunctionBuilder, InstanceExpressionBuilder } from './index'\nimport { SliceFunctionBuilder } from './shared/slice-function-builder'\nimport { parseFunctionArgs } from './util/arg-parsing'\nimport { concatArrays } from './util/array/concat'\nimport { indexAccess } from './util/array/index-access'\nimport { arrayLength } from './util/array/length'\nimport { translateNegativeIndex } from './util/translate-negative-index'\n\nexport class NativeArrayExpressionBuilder extends InstanceExpressionBuilder<ArrayPType> {\n constructor(expr: Expression, ptype: PType) {\n invariant(ptype instanceof ArrayPType, 'ptype must be instance of ArrayPType')\n super(expr, ptype)\n }\n\n iterate(sourceLocation: SourceLocation): Expression {\n return this.resolve()\n }\n\n indexAccess(index: InstanceBuilder, sourceLocation: SourceLocation): NodeBuilder {\n return indexAccess(this, index, sourceLocation)\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n switch (name) {\n case 'with':\n return new WithFunctionBuilder(this, sourceLocation)\n case 'length':\n return arrayLength(this, sourceLocation)\n case 'slice':\n return new SliceFunctionBuilder(this.resolve(), this.ptype)\n case 'concat':\n return new ConcatFunctionBuilder(this, sourceLocation)\n }\n\n return super.memberAccess(name, sourceLocation)\n }\n}\n\nclass ConcatFunctionBuilder extends FunctionBuilder {\n constructor(\n private arrayBuilder: NativeArrayExpressionBuilder,\n sourceLocation: SourceLocation,\n ) {\n super(sourceLocation)\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [...items],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n argSpec: (a) => args.map(() => a.required()),\n callLocation: sourceLocation,\n funcName: 'Array.concat',\n })\n const elementType = this.arrayBuilder.ptype.elementType\n\n return new NativeArrayExpressionBuilder(\n items\n .reduce((acc, cur) => {\n if (cur.resolvableToPType(elementType)) {\n return concatArrays(\n acc,\n instanceEb(\n nodeFactory.tupleExpression({\n items: [cur.resolveToPType(elementType).resolve()],\n sourceLocation: cur.sourceLocation,\n }),\n new TuplePType({ items: [elementType] }),\n ),\n sourceLocation,\n )\n } else if (cur.resolvableToPType(this.arrayBuilder.ptype)) {\n if (cur.ptype instanceof TuplePType) {\n // Tuple can stay as a tuple, as long as it _is_ resolvable to an array\n return concatArrays(acc, cur, sourceLocation)\n }\n return concatArrays(acc, cur.resolveToPType(this.arrayBuilder.ptype), sourceLocation)\n }\n if (!(elementType instanceof ARC4EncodedType)) {\n throw new CodeError(`${cur.typeDescription} cannot be concatenated to ${this.typeDescription}`, { sourceLocation })\n }\n if (cur.ptype instanceof ARC4ArrayType && cur.ptype.elementType.equals(elementType)) {\n return concatArrays(acc, cur, sourceLocation)\n }\n throw new Error('TODO')\n }, this.arrayBuilder)\n .resolve(),\n this.arrayBuilder.ptype,\n )\n }\n}\n\nclass WithFunctionBuilder extends FunctionBuilder {\n constructor(\n private arrayBuilder: NativeArrayExpressionBuilder,\n sourceLocation: SourceLocation,\n ) {\n super(sourceLocation)\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [index, newValue],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n argSpec: (a) => [a.required(uint64PType, numberPType), a.required(this.arrayBuilder.ptype.elementType)],\n callLocation: sourceLocation,\n funcName: 'Array.with',\n })\n\n return new NativeArrayExpressionBuilder(\n nodeFactory.arrayReplace({\n base: this.arrayBuilder.resolve(),\n value: newValue.resolve(),\n index: translateNegativeIndex(arrayLength(this.arrayBuilder, index.sourceLocation).resolve(), index),\n sourceLocation,\n }),\n this.arrayBuilder.ptype,\n )\n }\n}\n","import type { Expression, LValue } from '../../awst/nodes'\nimport { CodeError } from '../../errors'\nimport { invariant } from '../../util'\nimport type { PType } from '../ptypes'\nimport { InstanceType, neverPType } from '../ptypes'\nimport { InstanceExpressionBuilder } from './index'\n\nexport class NeverExpressionBuilder extends InstanceExpressionBuilder<InstanceType> {\n constructor(expr: Expression, ptype: PType) {\n invariant(ptype instanceof InstanceType && ptype.equals(neverPType), 'ptype must be neverPType')\n super(expr, neverPType)\n }\n\n resolve(): Expression {\n throw new CodeError('Cannot resolve expression of type never', { sourceLocation: this.sourceLocation })\n }\n\n resolveLValue(): LValue {\n throw new CodeError('Expression of type never is not a valid assignment target', { sourceLocation: this.sourceLocation })\n }\n}\n","/* THIS FILE IS GENERATED BY ~/scripts/generate-op-metadata.ts - DO NOT MODIFY DIRECTLY */\nimport * as ptypes from './ptypes'\nimport type { Expression } from '../awst/nodes'\n\nexport type ImmediateArgMapping = {\n name: string\n ptypes: ptypes.PType[]\n}\n\nexport type StackArg = {\n name: string\n ptypes: ptypes.PType[]\n}\n\nexport type Signature = {\n argNames: string[]\n immediateArgs: Array<ImmediateArgMapping | bigint | string>\n stackArgs: Array<StackArg | Expression>\n returnType: ptypes.PType\n}\n\nexport type IntrinsicOpMapping = {\n type: 'op-mapping'\n op: string\n signatures: Signature[]\n}\nexport type IntrinsicOpGrouping = {\n type: 'op-grouping'\n name: string\n ops: Record<string, IntrinsicOpMapping>\n}\nexport const OP_METADATA: Record<string, IntrinsicOpMapping | IntrinsicOpGrouping> = {\n AcctParams: {\n type: 'op-grouping',\n name: 'AcctParams',\n ops: {\n acctBalance: {\n type: 'op-mapping',\n op: 'acct_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AcctBalance'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType, ptypes.uint64PType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.uint64PType, ptypes.boolPType] }),\n },\n ],\n },\n acctMinBalance: {\n type: 'op-mapping',\n op: 'acct_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AcctMinBalance'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType, ptypes.uint64PType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.uint64PType, ptypes.boolPType] }),\n },\n ],\n },\n acctAuthAddr: {\n type: 'op-mapping',\n op: 'acct_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AcctAuthAddr'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType, ptypes.uint64PType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.accountPType, ptypes.boolPType] }),\n },\n ],\n },\n acctTotalNumUint: {\n type: 'op-mapping',\n op: 'acct_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AcctTotalNumUint'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType, ptypes.uint64PType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.uint64PType, ptypes.boolPType] }),\n },\n ],\n },\n acctTotalNumByteSlice: {\n type: 'op-mapping',\n op: 'acct_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AcctTotalNumByteSlice'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType, ptypes.uint64PType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.uint64PType, ptypes.boolPType] }),\n },\n ],\n },\n acctTotalExtraAppPages: {\n type: 'op-mapping',\n op: 'acct_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AcctTotalExtraAppPages'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType, ptypes.uint64PType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.uint64PType, ptypes.boolPType] }),\n },\n ],\n },\n acctTotalAppsCreated: {\n type: 'op-mapping',\n op: 'acct_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AcctTotalAppsCreated'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType, ptypes.uint64PType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.uint64PType, ptypes.boolPType] }),\n },\n ],\n },\n acctTotalAppsOptedIn: {\n type: 'op-mapping',\n op: 'acct_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AcctTotalAppsOptedIn'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType, ptypes.uint64PType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.uint64PType, ptypes.boolPType] }),\n },\n ],\n },\n acctTotalAssetsCreated: {\n type: 'op-mapping',\n op: 'acct_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AcctTotalAssetsCreated'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType, ptypes.uint64PType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.uint64PType, ptypes.boolPType] }),\n },\n ],\n },\n acctTotalAssets: {\n type: 'op-mapping',\n op: 'acct_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AcctTotalAssets'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType, ptypes.uint64PType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.uint64PType, ptypes.boolPType] }),\n },\n ],\n },\n acctTotalBoxes: {\n type: 'op-mapping',\n op: 'acct_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AcctTotalBoxes'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType, ptypes.uint64PType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.uint64PType, ptypes.boolPType] }),\n },\n ],\n },\n acctTotalBoxBytes: {\n type: 'op-mapping',\n op: 'acct_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AcctTotalBoxBytes'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType, ptypes.uint64PType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.uint64PType, ptypes.boolPType] }),\n },\n ],\n },\n acctIncentiveEligible: {\n type: 'op-mapping',\n op: 'acct_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AcctIncentiveEligible'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType, ptypes.uint64PType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.boolPType, ptypes.boolPType] }),\n },\n ],\n },\n acctLastProposed: {\n type: 'op-mapping',\n op: 'acct_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AcctLastProposed'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType, ptypes.uint64PType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.uint64PType, ptypes.boolPType] }),\n },\n ],\n },\n acctLastHeartbeat: {\n type: 'op-mapping',\n op: 'acct_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AcctLastHeartbeat'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType, ptypes.uint64PType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.uint64PType, ptypes.boolPType] }),\n },\n ],\n },\n },\n },\n addw: {\n type: 'op-mapping',\n op: 'addw',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n ],\n returnType: new ptypes.TuplePType({ items: [ptypes.uint64PType, ptypes.uint64PType] }),\n },\n ],\n },\n AppGlobal: {\n type: 'op-grouping',\n name: 'AppGlobal',\n ops: {\n delete: {\n type: 'op-mapping',\n op: 'app_global_del',\n signatures: [\n { argNames: ['a'], immediateArgs: [], stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }], returnType: ptypes.voidPType },\n ],\n },\n getBytes: {\n type: 'op-mapping',\n op: 'app_global_get',\n signatures: [\n { argNames: ['a'], immediateArgs: [], stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }], returnType: ptypes.bytesPType },\n ],\n },\n getUint64: {\n type: 'op-mapping',\n op: 'app_global_get',\n signatures: [\n { argNames: ['a'], immediateArgs: [], stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }], returnType: ptypes.uint64PType },\n ],\n },\n getExBytes: {\n type: 'op-mapping',\n op: 'app_global_get_ex',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.applicationPType, ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.bytesPType] },\n ],\n returnType: new ptypes.TuplePType({ items: [ptypes.bytesPType, ptypes.boolPType] }),\n },\n ],\n },\n getExUint64: {\n type: 'op-mapping',\n op: 'app_global_get_ex',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.applicationPType, ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.bytesPType] },\n ],\n returnType: new ptypes.TuplePType({ items: [ptypes.uint64PType, ptypes.boolPType] }),\n },\n ],\n },\n put: {\n type: 'op-mapping',\n op: 'app_global_put',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.uint64PType, ptypes.bytesPType] },\n ],\n returnType: ptypes.voidPType,\n },\n ],\n },\n },\n },\n AppLocal: {\n type: 'op-grouping',\n name: 'AppLocal',\n ops: {\n delete: {\n type: 'op-mapping',\n op: 'app_local_del',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.accountPType, ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.bytesPType] },\n ],\n returnType: ptypes.voidPType,\n },\n ],\n },\n getBytes: {\n type: 'op-mapping',\n op: 'app_local_get',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.accountPType, ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.bytesPType] },\n ],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n getUint64: {\n type: 'op-mapping',\n op: 'app_local_get',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.accountPType, ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.bytesPType] },\n ],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n getExBytes: {\n type: 'op-mapping',\n op: 'app_local_get_ex',\n signatures: [\n {\n argNames: ['a', 'b', 'c'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.accountPType, ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.applicationPType, ptypes.uint64PType] },\n { name: 'c', ptypes: [ptypes.bytesPType] },\n ],\n returnType: new ptypes.TuplePType({ items: [ptypes.bytesPType, ptypes.boolPType] }),\n },\n ],\n },\n getExUint64: {\n type: 'op-mapping',\n op: 'app_local_get_ex',\n signatures: [\n {\n argNames: ['a', 'b', 'c'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.accountPType, ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.applicationPType, ptypes.uint64PType] },\n { name: 'c', ptypes: [ptypes.bytesPType] },\n ],\n returnType: new ptypes.TuplePType({ items: [ptypes.uint64PType, ptypes.boolPType] }),\n },\n ],\n },\n put: {\n type: 'op-mapping',\n op: 'app_local_put',\n signatures: [\n {\n argNames: ['a', 'b', 'c'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.accountPType, ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.bytesPType] },\n { name: 'c', ptypes: [ptypes.uint64PType, ptypes.bytesPType] },\n ],\n returnType: ptypes.voidPType,\n },\n ],\n },\n },\n },\n appOptedIn: {\n type: 'op-mapping',\n op: 'app_opted_in',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.accountPType, ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.applicationPType, ptypes.uint64PType] },\n ],\n returnType: ptypes.boolPType,\n },\n ],\n },\n AppParams: {\n type: 'op-grouping',\n name: 'AppParams',\n ops: {\n appApprovalProgram: {\n type: 'op-mapping',\n op: 'app_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AppApprovalProgram'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.applicationPType, ptypes.uint64PType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.bytesPType, ptypes.boolPType] }),\n },\n ],\n },\n appClearStateProgram: {\n type: 'op-mapping',\n op: 'app_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AppClearStateProgram'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.applicationPType, ptypes.uint64PType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.bytesPType, ptypes.boolPType] }),\n },\n ],\n },\n appGlobalNumUint: {\n type: 'op-mapping',\n op: 'app_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AppGlobalNumUint'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.applicationPType, ptypes.uint64PType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.uint64PType, ptypes.boolPType] }),\n },\n ],\n },\n appGlobalNumByteSlice: {\n type: 'op-mapping',\n op: 'app_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AppGlobalNumByteSlice'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.applicationPType, ptypes.uint64PType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.uint64PType, ptypes.boolPType] }),\n },\n ],\n },\n appLocalNumUint: {\n type: 'op-mapping',\n op: 'app_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AppLocalNumUint'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.applicationPType, ptypes.uint64PType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.uint64PType, ptypes.boolPType] }),\n },\n ],\n },\n appLocalNumByteSlice: {\n type: 'op-mapping',\n op: 'app_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AppLocalNumByteSlice'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.applicationPType, ptypes.uint64PType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.uint64PType, ptypes.boolPType] }),\n },\n ],\n },\n appExtraProgramPages: {\n type: 'op-mapping',\n op: 'app_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AppExtraProgramPages'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.applicationPType, ptypes.uint64PType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.uint64PType, ptypes.boolPType] }),\n },\n ],\n },\n appCreator: {\n type: 'op-mapping',\n op: 'app_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AppCreator'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.applicationPType, ptypes.uint64PType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.accountPType, ptypes.boolPType] }),\n },\n ],\n },\n appAddress: {\n type: 'op-mapping',\n op: 'app_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AppAddress'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.applicationPType, ptypes.uint64PType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.accountPType, ptypes.boolPType] }),\n },\n ],\n },\n },\n },\n arg: {\n type: 'op-mapping',\n op: 'args',\n signatures: [\n { argNames: ['a'], immediateArgs: [], stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }], returnType: ptypes.bytesPType },\n ],\n },\n AssetHolding: {\n type: 'op-grouping',\n name: 'AssetHolding',\n ops: {\n assetBalance: {\n type: 'op-mapping',\n op: 'asset_holding_get',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: ['AssetBalance'],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.accountPType, ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.assetPType, ptypes.uint64PType] },\n ],\n returnType: new ptypes.TuplePType({ items: [ptypes.uint64PType, ptypes.boolPType] }),\n },\n ],\n },\n assetFrozen: {\n type: 'op-mapping',\n op: 'asset_holding_get',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: ['AssetFrozen'],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.accountPType, ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.assetPType, ptypes.uint64PType] },\n ],\n returnType: new ptypes.TuplePType({ items: [ptypes.boolPType, ptypes.boolPType] }),\n },\n ],\n },\n },\n },\n AssetParams: {\n type: 'op-grouping',\n name: 'AssetParams',\n ops: {\n assetTotal: {\n type: 'op-mapping',\n op: 'asset_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AssetTotal'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.assetPType, ptypes.uint64PType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.uint64PType, ptypes.boolPType] }),\n },\n ],\n },\n assetDecimals: {\n type: 'op-mapping',\n op: 'asset_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AssetDecimals'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.assetPType, ptypes.uint64PType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.uint64PType, ptypes.boolPType] }),\n },\n ],\n },\n assetDefaultFrozen: {\n type: 'op-mapping',\n op: 'asset_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AssetDefaultFrozen'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.assetPType, ptypes.uint64PType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.boolPType, ptypes.boolPType] }),\n },\n ],\n },\n assetUnitName: {\n type: 'op-mapping',\n op: 'asset_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AssetUnitName'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.assetPType, ptypes.uint64PType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.bytesPType, ptypes.boolPType] }),\n },\n ],\n },\n assetName: {\n type: 'op-mapping',\n op: 'asset_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AssetName'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.assetPType, ptypes.uint64PType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.bytesPType, ptypes.boolPType] }),\n },\n ],\n },\n assetUrl: {\n type: 'op-mapping',\n op: 'asset_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AssetURL'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.assetPType, ptypes.uint64PType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.bytesPType, ptypes.boolPType] }),\n },\n ],\n },\n assetMetadataHash: {\n type: 'op-mapping',\n op: 'asset_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AssetMetadataHash'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.assetPType, ptypes.uint64PType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.bytesPType, ptypes.boolPType] }),\n },\n ],\n },\n assetManager: {\n type: 'op-mapping',\n op: 'asset_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AssetManager'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.assetPType, ptypes.uint64PType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.accountPType, ptypes.boolPType] }),\n },\n ],\n },\n assetReserve: {\n type: 'op-mapping',\n op: 'asset_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AssetReserve'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.assetPType, ptypes.uint64PType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.accountPType, ptypes.boolPType] }),\n },\n ],\n },\n assetFreeze: {\n type: 'op-mapping',\n op: 'asset_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AssetFreeze'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.assetPType, ptypes.uint64PType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.accountPType, ptypes.boolPType] }),\n },\n ],\n },\n assetClawback: {\n type: 'op-mapping',\n op: 'asset_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AssetClawback'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.assetPType, ptypes.uint64PType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.accountPType, ptypes.boolPType] }),\n },\n ],\n },\n assetCreator: {\n type: 'op-mapping',\n op: 'asset_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AssetCreator'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.assetPType, ptypes.uint64PType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.accountPType, ptypes.boolPType] }),\n },\n ],\n },\n },\n },\n balance: {\n type: 'op-mapping',\n op: 'balance',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: [],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType, ptypes.uint64PType] }],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n base64Decode: {\n type: 'op-mapping',\n op: 'base64_decode',\n signatures: [\n {\n argNames: ['e', 'a'],\n immediateArgs: [{ name: 'e', ptypes: [ptypes.base64PType] }],\n stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n bitLength: {\n type: 'op-mapping',\n op: 'bitlen',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: [],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType, ptypes.bytesPType] }],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n Block: {\n type: 'op-grouping',\n name: 'Block',\n ops: {\n blkSeed: {\n type: 'op-mapping',\n op: 'block',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['BlkSeed'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n blkTimestamp: {\n type: 'op-mapping',\n op: 'block',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['BlkTimestamp'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n blkProposer: {\n type: 'op-mapping',\n op: 'block',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['BlkProposer'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.accountPType,\n },\n ],\n },\n blkFeesCollected: {\n type: 'op-mapping',\n op: 'block',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['BlkFeesCollected'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n blkBonus: {\n type: 'op-mapping',\n op: 'block',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['BlkBonus'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n blkBranch: {\n type: 'op-mapping',\n op: 'block',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['BlkBranch'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n blkFeeSink: {\n type: 'op-mapping',\n op: 'block',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['BlkFeeSink'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.accountPType,\n },\n ],\n },\n blkProtocol: {\n type: 'op-mapping',\n op: 'block',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['BlkProtocol'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n blkTxnCounter: {\n type: 'op-mapping',\n op: 'block',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['BlkTxnCounter'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n blkProposerPayout: {\n type: 'op-mapping',\n op: 'block',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['BlkProposerPayout'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n },\n },\n Box: {\n type: 'op-grouping',\n name: 'Box',\n ops: {\n create: {\n type: 'op-mapping',\n op: 'box_create',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.boolPType,\n },\n ],\n },\n delete: {\n type: 'op-mapping',\n op: 'box_del',\n signatures: [\n { argNames: ['a'], immediateArgs: [], stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }], returnType: ptypes.boolPType },\n ],\n },\n extract: {\n type: 'op-mapping',\n op: 'box_extract',\n signatures: [\n {\n argNames: ['a', 'b', 'c'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n { name: 'c', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n get: {\n type: 'op-mapping',\n op: 'box_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: [],\n stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.bytesPType, ptypes.boolPType] }),\n },\n ],\n },\n length: {\n type: 'op-mapping',\n op: 'box_len',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: [],\n stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.uint64PType, ptypes.boolPType] }),\n },\n ],\n },\n put: {\n type: 'op-mapping',\n op: 'box_put',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.bytesPType] },\n ],\n returnType: ptypes.voidPType,\n },\n ],\n },\n replace: {\n type: 'op-mapping',\n op: 'box_replace',\n signatures: [\n {\n argNames: ['a', 'b', 'c'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n { name: 'c', ptypes: [ptypes.bytesPType] },\n ],\n returnType: ptypes.voidPType,\n },\n ],\n },\n resize: {\n type: 'op-mapping',\n op: 'box_resize',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.voidPType,\n },\n ],\n },\n splice: {\n type: 'op-mapping',\n op: 'box_splice',\n signatures: [\n {\n argNames: ['a', 'b', 'c', 'd'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n { name: 'c', ptypes: [ptypes.uint64PType] },\n { name: 'd', ptypes: [ptypes.bytesPType] },\n ],\n returnType: ptypes.voidPType,\n },\n ],\n },\n },\n },\n bsqrt: {\n type: 'op-mapping',\n op: 'bsqrt',\n signatures: [\n { argNames: ['a'], immediateArgs: [], stackArgs: [{ name: 'a', ptypes: [ptypes.biguintPType] }], returnType: ptypes.biguintPType },\n ],\n },\n btoi: {\n type: 'op-mapping',\n op: 'btoi',\n signatures: [\n { argNames: ['a'], immediateArgs: [], stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }], returnType: ptypes.uint64PType },\n ],\n },\n bzero: {\n type: 'op-mapping',\n op: 'bzero',\n signatures: [\n { argNames: ['a'], immediateArgs: [], stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }], returnType: ptypes.bytesPType },\n ],\n },\n concat: {\n type: 'op-mapping',\n op: 'concat',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.bytesPType] },\n ],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n divmodw: {\n type: 'op-mapping',\n op: 'divmodw',\n signatures: [\n {\n argNames: ['a', 'b', 'c', 'd'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n { name: 'c', ptypes: [ptypes.uint64PType] },\n { name: 'd', ptypes: [ptypes.uint64PType] },\n ],\n returnType: new ptypes.TuplePType({ items: [ptypes.uint64PType, ptypes.uint64PType, ptypes.uint64PType, ptypes.uint64PType] }),\n },\n ],\n },\n divw: {\n type: 'op-mapping',\n op: 'divw',\n signatures: [\n {\n argNames: ['a', 'b', 'c'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n { name: 'c', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n EllipticCurve: {\n type: 'op-grouping',\n name: 'EllipticCurve',\n ops: {\n add: {\n type: 'op-mapping',\n op: 'ec_add',\n signatures: [\n {\n argNames: ['g', 'a', 'b'],\n immediateArgs: [{ name: 'g', ptypes: [ptypes.ecPType] }],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.bytesPType] },\n ],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n mapTo: {\n type: 'op-mapping',\n op: 'ec_map_to',\n signatures: [\n {\n argNames: ['g', 'a'],\n immediateArgs: [{ name: 'g', ptypes: [ptypes.ecPType] }],\n stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n scalarMulMulti: {\n type: 'op-mapping',\n op: 'ec_multi_scalar_mul',\n signatures: [\n {\n argNames: ['g', 'a', 'b'],\n immediateArgs: [{ name: 'g', ptypes: [ptypes.ecPType] }],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.bytesPType] },\n ],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n pairingCheck: {\n type: 'op-mapping',\n op: 'ec_pairing_check',\n signatures: [\n {\n argNames: ['g', 'a', 'b'],\n immediateArgs: [{ name: 'g', ptypes: [ptypes.ecPType] }],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.bytesPType] },\n ],\n returnType: ptypes.boolPType,\n },\n ],\n },\n scalarMul: {\n type: 'op-mapping',\n op: 'ec_scalar_mul',\n signatures: [\n {\n argNames: ['g', 'a', 'b'],\n immediateArgs: [{ name: 'g', ptypes: [ptypes.ecPType] }],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.bytesPType] },\n ],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n subgroupCheck: {\n type: 'op-mapping',\n op: 'ec_subgroup_check',\n signatures: [\n {\n argNames: ['g', 'a'],\n immediateArgs: [{ name: 'g', ptypes: [ptypes.ecPType] }],\n stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }],\n returnType: ptypes.boolPType,\n },\n ],\n },\n },\n },\n ecdsaPkDecompress: {\n type: 'op-mapping',\n op: 'ecdsa_pk_decompress',\n signatures: [\n {\n argNames: ['v', 'a'],\n immediateArgs: [{ name: 'v', ptypes: [ptypes.ecdsaPType] }],\n stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.bytesPType, ptypes.bytesPType] }),\n },\n ],\n },\n ecdsaPkRecover: {\n type: 'op-mapping',\n op: 'ecdsa_pk_recover',\n signatures: [\n {\n argNames: ['v', 'a', 'b', 'c', 'd'],\n immediateArgs: [{ name: 'v', ptypes: [ptypes.ecdsaPType] }],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n { name: 'c', ptypes: [ptypes.bytesPType] },\n { name: 'd', ptypes: [ptypes.bytesPType] },\n ],\n returnType: new ptypes.TuplePType({ items: [ptypes.bytesPType, ptypes.bytesPType] }),\n },\n ],\n },\n ecdsaVerify: {\n type: 'op-mapping',\n op: 'ecdsa_verify',\n signatures: [\n {\n argNames: ['v', 'a', 'b', 'c', 'd', 'e'],\n immediateArgs: [{ name: 'v', ptypes: [ptypes.ecdsaPType] }],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.bytesPType] },\n { name: 'c', ptypes: [ptypes.bytesPType] },\n { name: 'd', ptypes: [ptypes.bytesPType] },\n { name: 'e', ptypes: [ptypes.bytesPType] },\n ],\n returnType: ptypes.boolPType,\n },\n ],\n },\n ed25519verify: {\n type: 'op-mapping',\n op: 'ed25519verify',\n signatures: [\n {\n argNames: ['a', 'b', 'c'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.bytesPType] },\n { name: 'c', ptypes: [ptypes.bytesPType] },\n ],\n returnType: ptypes.boolPType,\n },\n ],\n },\n ed25519verifyBare: {\n type: 'op-mapping',\n op: 'ed25519verify_bare',\n signatures: [\n {\n argNames: ['a', 'b', 'c'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.bytesPType] },\n { name: 'c', ptypes: [ptypes.bytesPType] },\n ],\n returnType: ptypes.boolPType,\n },\n ],\n },\n exp: {\n type: 'op-mapping',\n op: 'exp',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n expw: {\n type: 'op-mapping',\n op: 'expw',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n ],\n returnType: new ptypes.TuplePType({ items: [ptypes.uint64PType, ptypes.uint64PType] }),\n },\n ],\n },\n extractUint16: {\n type: 'op-mapping',\n op: 'extract_uint16',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n extractUint32: {\n type: 'op-mapping',\n op: 'extract_uint32',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n extractUint64: {\n type: 'op-mapping',\n op: 'extract_uint64',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n falconVerify: {\n type: 'op-mapping',\n op: 'falcon_verify',\n signatures: [\n {\n argNames: ['a', 'b', 'c'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.bytesPType] },\n { name: 'c', ptypes: [ptypes.bytesPType] },\n ],\n returnType: ptypes.boolPType,\n },\n ],\n },\n gaid: {\n type: 'op-mapping',\n op: 'gaids',\n signatures: [\n { argNames: ['a'], immediateArgs: [], stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }], returnType: ptypes.uint64PType },\n ],\n },\n getBit: {\n type: 'op-mapping',\n op: 'getbit',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.uint64PType, ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n getByte: {\n type: 'op-mapping',\n op: 'getbyte',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n GITxn: {\n type: 'op-grouping',\n name: 'GITxn',\n ops: {\n sender: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'Sender'],\n stackArgs: [],\n returnType: ptypes.accountPType,\n },\n ],\n },\n fee: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'Fee'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n firstValid: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'FirstValid'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n firstValidTime: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'FirstValidTime'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n lastValid: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'LastValid'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n note: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'Note'],\n stackArgs: [],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n lease: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'Lease'],\n stackArgs: [],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n receiver: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'Receiver'],\n stackArgs: [],\n returnType: ptypes.accountPType,\n },\n ],\n },\n amount: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'Amount'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n closeRemainderTo: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'CloseRemainderTo'],\n stackArgs: [],\n returnType: ptypes.accountPType,\n },\n ],\n },\n votePk: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'VotePK'],\n stackArgs: [],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n selectionPk: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'SelectionPK'],\n stackArgs: [],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n voteFirst: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'VoteFirst'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n voteLast: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'VoteLast'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n voteKeyDilution: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'VoteKeyDilution'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n type: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'Type'],\n stackArgs: [],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n typeEnum: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'TypeEnum'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n xferAsset: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'XferAsset'],\n stackArgs: [],\n returnType: ptypes.assetPType,\n },\n ],\n },\n assetAmount: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'AssetAmount'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n assetSender: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'AssetSender'],\n stackArgs: [],\n returnType: ptypes.accountPType,\n },\n ],\n },\n assetReceiver: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'AssetReceiver'],\n stackArgs: [],\n returnType: ptypes.accountPType,\n },\n ],\n },\n assetCloseTo: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'AssetCloseTo'],\n stackArgs: [],\n returnType: ptypes.accountPType,\n },\n ],\n },\n groupIndex: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'GroupIndex'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n txId: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'TxID'],\n stackArgs: [],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n applicationId: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'ApplicationID'],\n stackArgs: [],\n returnType: ptypes.applicationPType,\n },\n ],\n },\n onCompletion: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'OnCompletion'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n applicationArgs: {\n type: 'op-mapping',\n op: 'gitxnas',\n signatures: [\n {\n argNames: ['t', 'a'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'ApplicationArgs'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n numAppArgs: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'NumAppArgs'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n accounts: {\n type: 'op-mapping',\n op: 'gitxnas',\n signatures: [\n {\n argNames: ['t', 'a'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'Accounts'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.accountPType,\n },\n ],\n },\n numAccounts: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'NumAccounts'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n approvalProgram: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'ApprovalProgram'],\n stackArgs: [],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n clearStateProgram: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'ClearStateProgram'],\n stackArgs: [],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n rekeyTo: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'RekeyTo'],\n stackArgs: [],\n returnType: ptypes.accountPType,\n },\n ],\n },\n configAsset: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'ConfigAsset'],\n stackArgs: [],\n returnType: ptypes.assetPType,\n },\n ],\n },\n configAssetTotal: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'ConfigAssetTotal'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n configAssetDecimals: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'ConfigAssetDecimals'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n configAssetDefaultFrozen: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'ConfigAssetDefaultFrozen'],\n stackArgs: [],\n returnType: ptypes.boolPType,\n },\n ],\n },\n configAssetUnitName: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'ConfigAssetUnitName'],\n stackArgs: [],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n configAssetName: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'ConfigAssetName'],\n stackArgs: [],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n configAssetUrl: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'ConfigAssetURL'],\n stackArgs: [],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n configAssetMetadataHash: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'ConfigAssetMetadataHash'],\n stackArgs: [],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n configAssetManager: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'ConfigAssetManager'],\n stackArgs: [],\n returnType: ptypes.accountPType,\n },\n ],\n },\n configAssetReserve: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'ConfigAssetReserve'],\n stackArgs: [],\n returnType: ptypes.accountPType,\n },\n ],\n },\n configAssetFreeze: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'ConfigAssetFreeze'],\n stackArgs: [],\n returnType: ptypes.accountPType,\n },\n ],\n },\n configAssetClawback: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'ConfigAssetClawback'],\n stackArgs: [],\n returnType: ptypes.accountPType,\n },\n ],\n },\n freezeAsset: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'FreezeAsset'],\n stackArgs: [],\n returnType: ptypes.assetPType,\n },\n ],\n },\n freezeAssetAccount: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'FreezeAssetAccount'],\n stackArgs: [],\n returnType: ptypes.accountPType,\n },\n ],\n },\n freezeAssetFrozen: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'FreezeAssetFrozen'],\n stackArgs: [],\n returnType: ptypes.boolPType,\n },\n ],\n },\n assets: {\n type: 'op-mapping',\n op: 'gitxnas',\n signatures: [\n {\n argNames: ['t', 'a'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'Assets'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.assetPType,\n },\n ],\n },\n numAssets: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'NumAssets'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n applications: {\n type: 'op-mapping',\n op: 'gitxnas',\n signatures: [\n {\n argNames: ['t', 'a'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'Applications'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.applicationPType,\n },\n ],\n },\n numApplications: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'NumApplications'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n globalNumUint: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'GlobalNumUint'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n globalNumByteSlice: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'GlobalNumByteSlice'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n localNumUint: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'LocalNumUint'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n localNumByteSlice: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'LocalNumByteSlice'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n extraProgramPages: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'ExtraProgramPages'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n nonparticipation: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'Nonparticipation'],\n stackArgs: [],\n returnType: ptypes.boolPType,\n },\n ],\n },\n logs: {\n type: 'op-mapping',\n op: 'gitxnas',\n signatures: [\n {\n argNames: ['t', 'a'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'Logs'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n numLogs: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'NumLogs'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n createdAssetId: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'CreatedAssetID'],\n stackArgs: [],\n returnType: ptypes.assetPType,\n },\n ],\n },\n createdApplicationId: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'CreatedApplicationID'],\n stackArgs: [],\n returnType: ptypes.applicationPType,\n },\n ],\n },\n lastLog: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'LastLog'],\n stackArgs: [],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n stateProofPk: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'StateProofPK'],\n stackArgs: [],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n approvalProgramPages: {\n type: 'op-mapping',\n op: 'gitxnas',\n signatures: [\n {\n argNames: ['t', 'a'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'ApprovalProgramPages'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n numApprovalProgramPages: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'NumApprovalProgramPages'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n clearStateProgramPages: {\n type: 'op-mapping',\n op: 'gitxnas',\n signatures: [\n {\n argNames: ['t', 'a'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'ClearStateProgramPages'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n numClearStateProgramPages: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'NumClearStateProgramPages'],\n stackArgs: [],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n },\n },\n gloadBytes: {\n type: 'op-mapping',\n op: 'gloadss',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n gloadUint64: {\n type: 'op-mapping',\n op: 'gloadss',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n Global: {\n type: 'op-grouping',\n name: 'Global',\n ops: {\n minTxnFee: {\n type: 'op-mapping',\n op: 'global',\n signatures: [{ argNames: [], immediateArgs: ['MinTxnFee'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n minBalance: {\n type: 'op-mapping',\n op: 'global',\n signatures: [{ argNames: [], immediateArgs: ['MinBalance'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n maxTxnLife: {\n type: 'op-mapping',\n op: 'global',\n signatures: [{ argNames: [], immediateArgs: ['MaxTxnLife'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n zeroAddress: {\n type: 'op-mapping',\n op: 'global',\n signatures: [{ argNames: [], immediateArgs: ['ZeroAddress'], stackArgs: [], returnType: ptypes.accountPType }],\n },\n groupSize: {\n type: 'op-mapping',\n op: 'global',\n signatures: [{ argNames: [], immediateArgs: ['GroupSize'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n logicSigVersion: {\n type: 'op-mapping',\n op: 'global',\n signatures: [{ argNames: [], immediateArgs: ['LogicSigVersion'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n round: {\n type: 'op-mapping',\n op: 'global',\n signatures: [{ argNames: [], immediateArgs: ['Round'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n latestTimestamp: {\n type: 'op-mapping',\n op: 'global',\n signatures: [{ argNames: [], immediateArgs: ['LatestTimestamp'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n currentApplicationId: {\n type: 'op-mapping',\n op: 'global',\n signatures: [{ argNames: [], immediateArgs: ['CurrentApplicationID'], stackArgs: [], returnType: ptypes.applicationPType }],\n },\n creatorAddress: {\n type: 'op-mapping',\n op: 'global',\n signatures: [{ argNames: [], immediateArgs: ['CreatorAddress'], stackArgs: [], returnType: ptypes.accountPType }],\n },\n currentApplicationAddress: {\n type: 'op-mapping',\n op: 'global',\n signatures: [{ argNames: [], immediateArgs: ['CurrentApplicationAddress'], stackArgs: [], returnType: ptypes.accountPType }],\n },\n groupId: {\n type: 'op-mapping',\n op: 'global',\n signatures: [{ argNames: [], immediateArgs: ['GroupID'], stackArgs: [], returnType: ptypes.bytesPType }],\n },\n opcodeBudget: {\n type: 'op-mapping',\n op: 'global',\n signatures: [{ argNames: [], immediateArgs: ['OpcodeBudget'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n callerApplicationId: {\n type: 'op-mapping',\n op: 'global',\n signatures: [{ argNames: [], immediateArgs: ['CallerApplicationID'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n callerApplicationAddress: {\n type: 'op-mapping',\n op: 'global',\n signatures: [{ argNames: [], immediateArgs: ['CallerApplicationAddress'], stackArgs: [], returnType: ptypes.accountPType }],\n },\n assetCreateMinBalance: {\n type: 'op-mapping',\n op: 'global',\n signatures: [{ argNames: [], immediateArgs: ['AssetCreateMinBalance'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n assetOptInMinBalance: {\n type: 'op-mapping',\n op: 'global',\n signatures: [{ argNames: [], immediateArgs: ['AssetOptInMinBalance'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n genesisHash: {\n type: 'op-mapping',\n op: 'global',\n signatures: [{ argNames: [], immediateArgs: ['GenesisHash'], stackArgs: [], returnType: ptypes.bytesPType }],\n },\n payoutsEnabled: {\n type: 'op-mapping',\n op: 'global',\n signatures: [{ argNames: [], immediateArgs: ['PayoutsEnabled'], stackArgs: [], returnType: ptypes.boolPType }],\n },\n payoutsGoOnlineFee: {\n type: 'op-mapping',\n op: 'global',\n signatures: [{ argNames: [], immediateArgs: ['PayoutsGoOnlineFee'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n payoutsPercent: {\n type: 'op-mapping',\n op: 'global',\n signatures: [{ argNames: [], immediateArgs: ['PayoutsPercent'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n payoutsMinBalance: {\n type: 'op-mapping',\n op: 'global',\n signatures: [{ argNames: [], immediateArgs: ['PayoutsMinBalance'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n payoutsMaxBalance: {\n type: 'op-mapping',\n op: 'global',\n signatures: [{ argNames: [], immediateArgs: ['PayoutsMaxBalance'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n },\n },\n GTxn: {\n type: 'op-grouping',\n name: 'GTxn',\n ops: {\n sender: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['Sender'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.accountPType,\n },\n ],\n },\n fee: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['Fee'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n firstValid: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['FirstValid'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n firstValidTime: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['FirstValidTime'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n lastValid: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['LastValid'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n note: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['Note'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n lease: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['Lease'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n receiver: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['Receiver'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.accountPType,\n },\n ],\n },\n amount: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['Amount'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n closeRemainderTo: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['CloseRemainderTo'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.accountPType,\n },\n ],\n },\n votePk: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['VotePK'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n selectionPk: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['SelectionPK'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n voteFirst: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['VoteFirst'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n voteLast: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['VoteLast'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n voteKeyDilution: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['VoteKeyDilution'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n type: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['Type'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n typeEnum: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['TypeEnum'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n xferAsset: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['XferAsset'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.assetPType,\n },\n ],\n },\n assetAmount: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AssetAmount'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n assetSender: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AssetSender'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.accountPType,\n },\n ],\n },\n assetReceiver: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AssetReceiver'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.accountPType,\n },\n ],\n },\n assetCloseTo: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AssetCloseTo'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.accountPType,\n },\n ],\n },\n groupIndex: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['GroupIndex'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n txId: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['TxID'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n applicationId: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ApplicationID'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.applicationPType,\n },\n ],\n },\n onCompletion: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['OnCompletion'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n applicationArgs: {\n type: 'op-mapping',\n op: 'gtxnsas',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: ['ApplicationArgs'],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n numAppArgs: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['NumAppArgs'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n accounts: {\n type: 'op-mapping',\n op: 'gtxnsas',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: ['Accounts'],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.accountPType,\n },\n ],\n },\n numAccounts: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['NumAccounts'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n approvalProgram: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ApprovalProgram'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n clearStateProgram: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ClearStateProgram'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n rekeyTo: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['RekeyTo'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.accountPType,\n },\n ],\n },\n configAsset: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ConfigAsset'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.assetPType,\n },\n ],\n },\n configAssetTotal: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ConfigAssetTotal'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n configAssetDecimals: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ConfigAssetDecimals'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n configAssetDefaultFrozen: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ConfigAssetDefaultFrozen'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.boolPType,\n },\n ],\n },\n configAssetUnitName: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ConfigAssetUnitName'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n configAssetName: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ConfigAssetName'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n configAssetUrl: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ConfigAssetURL'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n configAssetMetadataHash: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ConfigAssetMetadataHash'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n configAssetManager: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ConfigAssetManager'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.accountPType,\n },\n ],\n },\n configAssetReserve: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ConfigAssetReserve'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.accountPType,\n },\n ],\n },\n configAssetFreeze: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ConfigAssetFreeze'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.accountPType,\n },\n ],\n },\n configAssetClawback: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ConfigAssetClawback'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.accountPType,\n },\n ],\n },\n freezeAsset: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['FreezeAsset'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.assetPType,\n },\n ],\n },\n freezeAssetAccount: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['FreezeAssetAccount'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.accountPType,\n },\n ],\n },\n freezeAssetFrozen: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['FreezeAssetFrozen'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.boolPType,\n },\n ],\n },\n assets: {\n type: 'op-mapping',\n op: 'gtxnsas',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: ['Assets'],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.assetPType,\n },\n ],\n },\n numAssets: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['NumAssets'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n applications: {\n type: 'op-mapping',\n op: 'gtxnsas',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: ['Applications'],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.applicationPType,\n },\n ],\n },\n numApplications: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['NumApplications'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n globalNumUint: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['GlobalNumUint'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n globalNumByteSlice: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['GlobalNumByteSlice'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n localNumUint: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['LocalNumUint'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n localNumByteSlice: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['LocalNumByteSlice'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n extraProgramPages: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ExtraProgramPages'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n nonparticipation: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['Nonparticipation'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.boolPType,\n },\n ],\n },\n logs: {\n type: 'op-mapping',\n op: 'gtxnsas',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: ['Logs'],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n numLogs: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['NumLogs'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n createdAssetId: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['CreatedAssetID'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.assetPType,\n },\n ],\n },\n createdApplicationId: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['CreatedApplicationID'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.applicationPType,\n },\n ],\n },\n lastLog: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['LastLog'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n stateProofPk: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['StateProofPK'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n approvalProgramPages: {\n type: 'op-mapping',\n op: 'gtxnsas',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: ['ApprovalProgramPages'],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n numApprovalProgramPages: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['NumApprovalProgramPages'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n clearStateProgramPages: {\n type: 'op-mapping',\n op: 'gtxnsas',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: ['ClearStateProgramPages'],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n numClearStateProgramPages: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['NumClearStateProgramPages'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n },\n },\n itob: {\n type: 'op-mapping',\n op: 'itob',\n signatures: [\n { argNames: ['a'], immediateArgs: [], stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }], returnType: ptypes.bytesPType },\n ],\n },\n ITxn: {\n type: 'op-grouping',\n name: 'ITxn',\n ops: {\n sender: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['Sender'], stackArgs: [], returnType: ptypes.accountPType }],\n },\n fee: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['Fee'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n firstValid: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['FirstValid'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n firstValidTime: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['FirstValidTime'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n lastValid: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['LastValid'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n note: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['Note'], stackArgs: [], returnType: ptypes.bytesPType }],\n },\n lease: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['Lease'], stackArgs: [], returnType: ptypes.bytesPType }],\n },\n receiver: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['Receiver'], stackArgs: [], returnType: ptypes.accountPType }],\n },\n amount: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['Amount'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n closeRemainderTo: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['CloseRemainderTo'], stackArgs: [], returnType: ptypes.accountPType }],\n },\n votePk: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['VotePK'], stackArgs: [], returnType: ptypes.bytesPType }],\n },\n selectionPk: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['SelectionPK'], stackArgs: [], returnType: ptypes.bytesPType }],\n },\n voteFirst: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['VoteFirst'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n voteLast: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['VoteLast'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n voteKeyDilution: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['VoteKeyDilution'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n type: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['Type'], stackArgs: [], returnType: ptypes.bytesPType }],\n },\n typeEnum: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['TypeEnum'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n xferAsset: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['XferAsset'], stackArgs: [], returnType: ptypes.assetPType }],\n },\n assetAmount: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['AssetAmount'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n assetSender: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['AssetSender'], stackArgs: [], returnType: ptypes.accountPType }],\n },\n assetReceiver: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['AssetReceiver'], stackArgs: [], returnType: ptypes.accountPType }],\n },\n assetCloseTo: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['AssetCloseTo'], stackArgs: [], returnType: ptypes.accountPType }],\n },\n groupIndex: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['GroupIndex'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n txId: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['TxID'], stackArgs: [], returnType: ptypes.bytesPType }],\n },\n applicationId: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['ApplicationID'], stackArgs: [], returnType: ptypes.applicationPType }],\n },\n onCompletion: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['OnCompletion'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n applicationArgs: {\n type: 'op-mapping',\n op: 'itxnas',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ApplicationArgs'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n numAppArgs: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['NumAppArgs'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n accounts: {\n type: 'op-mapping',\n op: 'itxnas',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['Accounts'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.accountPType,\n },\n ],\n },\n numAccounts: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['NumAccounts'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n approvalProgram: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['ApprovalProgram'], stackArgs: [], returnType: ptypes.bytesPType }],\n },\n clearStateProgram: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['ClearStateProgram'], stackArgs: [], returnType: ptypes.bytesPType }],\n },\n rekeyTo: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['RekeyTo'], stackArgs: [], returnType: ptypes.accountPType }],\n },\n configAsset: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['ConfigAsset'], stackArgs: [], returnType: ptypes.assetPType }],\n },\n configAssetTotal: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['ConfigAssetTotal'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n configAssetDecimals: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['ConfigAssetDecimals'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n configAssetDefaultFrozen: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['ConfigAssetDefaultFrozen'], stackArgs: [], returnType: ptypes.boolPType }],\n },\n configAssetUnitName: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['ConfigAssetUnitName'], stackArgs: [], returnType: ptypes.bytesPType }],\n },\n configAssetName: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['ConfigAssetName'], stackArgs: [], returnType: ptypes.bytesPType }],\n },\n configAssetUrl: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['ConfigAssetURL'], stackArgs: [], returnType: ptypes.bytesPType }],\n },\n configAssetMetadataHash: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['ConfigAssetMetadataHash'], stackArgs: [], returnType: ptypes.bytesPType }],\n },\n configAssetManager: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['ConfigAssetManager'], stackArgs: [], returnType: ptypes.accountPType }],\n },\n configAssetReserve: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['ConfigAssetReserve'], stackArgs: [], returnType: ptypes.accountPType }],\n },\n configAssetFreeze: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['ConfigAssetFreeze'], stackArgs: [], returnType: ptypes.accountPType }],\n },\n configAssetClawback: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['ConfigAssetClawback'], stackArgs: [], returnType: ptypes.accountPType }],\n },\n freezeAsset: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['FreezeAsset'], stackArgs: [], returnType: ptypes.assetPType }],\n },\n freezeAssetAccount: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['FreezeAssetAccount'], stackArgs: [], returnType: ptypes.accountPType }],\n },\n freezeAssetFrozen: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['FreezeAssetFrozen'], stackArgs: [], returnType: ptypes.boolPType }],\n },\n assets: {\n type: 'op-mapping',\n op: 'itxnas',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['Assets'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.assetPType,\n },\n ],\n },\n numAssets: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['NumAssets'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n applications: {\n type: 'op-mapping',\n op: 'itxnas',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['Applications'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.applicationPType,\n },\n ],\n },\n numApplications: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['NumApplications'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n globalNumUint: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['GlobalNumUint'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n globalNumByteSlice: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['GlobalNumByteSlice'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n localNumUint: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['LocalNumUint'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n localNumByteSlice: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['LocalNumByteSlice'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n extraProgramPages: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['ExtraProgramPages'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n nonparticipation: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['Nonparticipation'], stackArgs: [], returnType: ptypes.boolPType }],\n },\n logs: {\n type: 'op-mapping',\n op: 'itxnas',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['Logs'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n numLogs: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['NumLogs'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n createdAssetId: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['CreatedAssetID'], stackArgs: [], returnType: ptypes.assetPType }],\n },\n createdApplicationId: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['CreatedApplicationID'], stackArgs: [], returnType: ptypes.applicationPType }],\n },\n lastLog: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['LastLog'], stackArgs: [], returnType: ptypes.bytesPType }],\n },\n stateProofPk: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['StateProofPK'], stackArgs: [], returnType: ptypes.bytesPType }],\n },\n approvalProgramPages: {\n type: 'op-mapping',\n op: 'itxnas',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ApprovalProgramPages'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n numApprovalProgramPages: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['NumApprovalProgramPages'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n clearStateProgramPages: {\n type: 'op-mapping',\n op: 'itxnas',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ClearStateProgramPages'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n numClearStateProgramPages: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['NumClearStateProgramPages'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n },\n },\n ITxnCreate: {\n type: 'op-grouping',\n name: 'ITxnCreate',\n ops: {\n begin: {\n type: 'op-mapping',\n op: 'itxn_begin',\n signatures: [{ argNames: [], immediateArgs: [], stackArgs: [], returnType: ptypes.voidPType }],\n },\n setSender: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['Sender'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setFee: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['Fee'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setNote: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['Note'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setReceiver: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['Receiver'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setAmount: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['Amount'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setCloseRemainderTo: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['CloseRemainderTo'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setVotePk: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['VotePK'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setSelectionPk: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['SelectionPK'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setVoteFirst: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['VoteFirst'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setVoteLast: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['VoteLast'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setVoteKeyDilution: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['VoteKeyDilution'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setType: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['Type'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setTypeEnum: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['TypeEnum'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setXferAsset: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['XferAsset'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.assetPType, ptypes.uint64PType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setAssetAmount: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AssetAmount'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setAssetSender: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AssetSender'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setAssetReceiver: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AssetReceiver'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setAssetCloseTo: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AssetCloseTo'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setApplicationId: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ApplicationID'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.applicationPType, ptypes.uint64PType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setOnCompletion: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['OnCompletion'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setApplicationArgs: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ApplicationArgs'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setAccounts: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['Accounts'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setApprovalProgram: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ApprovalProgram'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setClearStateProgram: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ClearStateProgram'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setRekeyTo: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['RekeyTo'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setConfigAsset: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ConfigAsset'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.assetPType, ptypes.uint64PType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setConfigAssetTotal: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ConfigAssetTotal'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setConfigAssetDecimals: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ConfigAssetDecimals'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setConfigAssetDefaultFrozen: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ConfigAssetDefaultFrozen'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.boolPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setConfigAssetUnitName: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ConfigAssetUnitName'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setConfigAssetName: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ConfigAssetName'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setConfigAssetUrl: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ConfigAssetURL'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setConfigAssetMetadataHash: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ConfigAssetMetadataHash'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setConfigAssetManager: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ConfigAssetManager'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setConfigAssetReserve: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ConfigAssetReserve'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setConfigAssetFreeze: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ConfigAssetFreeze'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setConfigAssetClawback: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ConfigAssetClawback'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setFreezeAsset: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['FreezeAsset'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.assetPType, ptypes.uint64PType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setFreezeAssetAccount: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['FreezeAssetAccount'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setFreezeAssetFrozen: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['FreezeAssetFrozen'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.boolPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setAssets: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['Assets'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setApplications: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['Applications'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setGlobalNumUint: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['GlobalNumUint'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setGlobalNumByteSlice: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['GlobalNumByteSlice'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setLocalNumUint: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['LocalNumUint'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setLocalNumByteSlice: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['LocalNumByteSlice'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setExtraProgramPages: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ExtraProgramPages'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setNonparticipation: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['Nonparticipation'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.boolPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setStateProofPk: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['StateProofPK'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setApprovalProgramPages: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ApprovalProgramPages'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setClearStateProgramPages: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ClearStateProgramPages'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n next: {\n type: 'op-mapping',\n op: 'itxn_next',\n signatures: [{ argNames: [], immediateArgs: [], stackArgs: [], returnType: ptypes.voidPType }],\n },\n submit: {\n type: 'op-mapping',\n op: 'itxn_submit',\n signatures: [{ argNames: [], immediateArgs: [], stackArgs: [], returnType: ptypes.voidPType }],\n },\n },\n },\n JsonRef: {\n type: 'op-grouping',\n name: 'JsonRef',\n ops: {\n jsonString: {\n type: 'op-mapping',\n op: 'json_ref',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: ['JSONString'],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.bytesPType] },\n ],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n jsonUint64: {\n type: 'op-mapping',\n op: 'json_ref',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: ['JSONUint64'],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.bytesPType] },\n ],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n jsonObject: {\n type: 'op-mapping',\n op: 'json_ref',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: ['JSONObject'],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.bytesPType] },\n ],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n },\n },\n keccak256: {\n type: 'op-mapping',\n op: 'keccak256',\n signatures: [\n { argNames: ['a'], immediateArgs: [], stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }], returnType: ptypes.bytesPType },\n ],\n },\n len: {\n type: 'op-mapping',\n op: 'len',\n signatures: [\n { argNames: ['a'], immediateArgs: [], stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }], returnType: ptypes.uint64PType },\n ],\n },\n Scratch: {\n type: 'op-grouping',\n name: 'Scratch',\n ops: {\n loadBytes: {\n type: 'op-mapping',\n op: 'loads',\n signatures: [\n { argNames: ['a'], immediateArgs: [], stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }], returnType: ptypes.bytesPType },\n ],\n },\n loadUint64: {\n type: 'op-mapping',\n op: 'loads',\n signatures: [\n { argNames: ['a'], immediateArgs: [], stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }], returnType: ptypes.uint64PType },\n ],\n },\n store: {\n type: 'op-mapping',\n op: 'stores',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.uint64PType, ptypes.bytesPType] },\n ],\n returnType: ptypes.voidPType,\n },\n ],\n },\n },\n },\n mimc: {\n type: 'op-mapping',\n op: 'mimc',\n signatures: [\n {\n argNames: ['c', 'a'],\n immediateArgs: [{ name: 'c', ptypes: [ptypes.mimcConfigurationsPType] }],\n stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n minBalance: {\n type: 'op-mapping',\n op: 'min_balance',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: [],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType, ptypes.uint64PType] }],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n mulw: {\n type: 'op-mapping',\n op: 'mulw',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n ],\n returnType: new ptypes.TuplePType({ items: [ptypes.uint64PType, ptypes.uint64PType] }),\n },\n ],\n },\n onlineStake: {\n type: 'op-mapping',\n op: 'online_stake',\n signatures: [{ argNames: [], immediateArgs: [], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n replace: {\n type: 'op-mapping',\n op: 'replace3',\n signatures: [\n {\n argNames: ['a', 'b', 'c'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n { name: 'c', ptypes: [ptypes.bytesPType] },\n ],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n setByte: {\n type: 'op-mapping',\n op: 'setbyte',\n signatures: [\n {\n argNames: ['a', 'b', 'c'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n { name: 'c', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n sha256: {\n type: 'op-mapping',\n op: 'sha256',\n signatures: [\n { argNames: ['a'], immediateArgs: [], stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }], returnType: ptypes.bytesPType },\n ],\n },\n sha3_256: {\n type: 'op-mapping',\n op: 'sha3_256',\n signatures: [\n { argNames: ['a'], immediateArgs: [], stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }], returnType: ptypes.bytesPType },\n ],\n },\n sha512_256: {\n type: 'op-mapping',\n op: 'sha512_256',\n signatures: [\n { argNames: ['a'], immediateArgs: [], stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }], returnType: ptypes.bytesPType },\n ],\n },\n shl: {\n type: 'op-mapping',\n op: 'shl',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n shr: {\n type: 'op-mapping',\n op: 'shr',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n sqrt: {\n type: 'op-mapping',\n op: 'sqrt',\n signatures: [\n { argNames: ['a'], immediateArgs: [], stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }], returnType: ptypes.uint64PType },\n ],\n },\n substring: {\n type: 'op-mapping',\n op: 'substring3',\n signatures: [\n {\n argNames: ['a', 'b', 'c'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n { name: 'c', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n sumhash512: {\n type: 'op-mapping',\n op: 'sumhash512',\n signatures: [\n { argNames: ['a'], immediateArgs: [], stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }], returnType: ptypes.bytesPType },\n ],\n },\n Txn: {\n type: 'op-grouping',\n name: 'Txn',\n ops: {\n sender: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['Sender'], stackArgs: [], returnType: ptypes.accountPType }],\n },\n fee: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['Fee'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n firstValid: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['FirstValid'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n firstValidTime: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['FirstValidTime'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n lastValid: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['LastValid'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n note: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['Note'], stackArgs: [], returnType: ptypes.bytesPType }],\n },\n lease: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['Lease'], stackArgs: [], returnType: ptypes.bytesPType }],\n },\n receiver: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['Receiver'], stackArgs: [], returnType: ptypes.accountPType }],\n },\n amount: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['Amount'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n closeRemainderTo: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['CloseRemainderTo'], stackArgs: [], returnType: ptypes.accountPType }],\n },\n votePk: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['VotePK'], stackArgs: [], returnType: ptypes.bytesPType }],\n },\n selectionPk: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['SelectionPK'], stackArgs: [], returnType: ptypes.bytesPType }],\n },\n voteFirst: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['VoteFirst'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n voteLast: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['VoteLast'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n voteKeyDilution: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['VoteKeyDilution'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n type: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['Type'], stackArgs: [], returnType: ptypes.bytesPType }],\n },\n typeEnum: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['TypeEnum'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n xferAsset: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['XferAsset'], stackArgs: [], returnType: ptypes.assetPType }],\n },\n assetAmount: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['AssetAmount'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n assetSender: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['AssetSender'], stackArgs: [], returnType: ptypes.accountPType }],\n },\n assetReceiver: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['AssetReceiver'], stackArgs: [], returnType: ptypes.accountPType }],\n },\n assetCloseTo: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['AssetCloseTo'], stackArgs: [], returnType: ptypes.accountPType }],\n },\n groupIndex: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['GroupIndex'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n txId: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['TxID'], stackArgs: [], returnType: ptypes.bytesPType }],\n },\n applicationId: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['ApplicationID'], stackArgs: [], returnType: ptypes.applicationPType }],\n },\n onCompletion: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['OnCompletion'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n applicationArgs: {\n type: 'op-mapping',\n op: 'txnas',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ApplicationArgs'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n numAppArgs: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['NumAppArgs'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n accounts: {\n type: 'op-mapping',\n op: 'txnas',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['Accounts'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.accountPType,\n },\n ],\n },\n numAccounts: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['NumAccounts'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n approvalProgram: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['ApprovalProgram'], stackArgs: [], returnType: ptypes.bytesPType }],\n },\n clearStateProgram: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['ClearStateProgram'], stackArgs: [], returnType: ptypes.bytesPType }],\n },\n rekeyTo: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['RekeyTo'], stackArgs: [], returnType: ptypes.accountPType }],\n },\n configAsset: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['ConfigAsset'], stackArgs: [], returnType: ptypes.assetPType }],\n },\n configAssetTotal: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['ConfigAssetTotal'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n configAssetDecimals: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['ConfigAssetDecimals'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n configAssetDefaultFrozen: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['ConfigAssetDefaultFrozen'], stackArgs: [], returnType: ptypes.boolPType }],\n },\n configAssetUnitName: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['ConfigAssetUnitName'], stackArgs: [], returnType: ptypes.bytesPType }],\n },\n configAssetName: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['ConfigAssetName'], stackArgs: [], returnType: ptypes.bytesPType }],\n },\n configAssetUrl: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['ConfigAssetURL'], stackArgs: [], returnType: ptypes.bytesPType }],\n },\n configAssetMetadataHash: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['ConfigAssetMetadataHash'], stackArgs: [], returnType: ptypes.bytesPType }],\n },\n configAssetManager: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['ConfigAssetManager'], stackArgs: [], returnType: ptypes.accountPType }],\n },\n configAssetReserve: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['ConfigAssetReserve'], stackArgs: [], returnType: ptypes.accountPType }],\n },\n configAssetFreeze: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['ConfigAssetFreeze'], stackArgs: [], returnType: ptypes.accountPType }],\n },\n configAssetClawback: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['ConfigAssetClawback'], stackArgs: [], returnType: ptypes.accountPType }],\n },\n freezeAsset: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['FreezeAsset'], stackArgs: [], returnType: ptypes.assetPType }],\n },\n freezeAssetAccount: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['FreezeAssetAccount'], stackArgs: [], returnType: ptypes.accountPType }],\n },\n freezeAssetFrozen: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['FreezeAssetFrozen'], stackArgs: [], returnType: ptypes.boolPType }],\n },\n assets: {\n type: 'op-mapping',\n op: 'txnas',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['Assets'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.assetPType,\n },\n ],\n },\n numAssets: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['NumAssets'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n applications: {\n type: 'op-mapping',\n op: 'txnas',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['Applications'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.applicationPType,\n },\n ],\n },\n numApplications: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['NumApplications'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n globalNumUint: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['GlobalNumUint'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n globalNumByteSlice: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['GlobalNumByteSlice'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n localNumUint: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['LocalNumUint'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n localNumByteSlice: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['LocalNumByteSlice'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n extraProgramPages: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['ExtraProgramPages'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n nonparticipation: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['Nonparticipation'], stackArgs: [], returnType: ptypes.boolPType }],\n },\n logs: {\n type: 'op-mapping',\n op: 'txnas',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['Logs'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n numLogs: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['NumLogs'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n createdAssetId: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['CreatedAssetID'], stackArgs: [], returnType: ptypes.assetPType }],\n },\n createdApplicationId: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['CreatedApplicationID'], stackArgs: [], returnType: ptypes.applicationPType }],\n },\n lastLog: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['LastLog'], stackArgs: [], returnType: ptypes.bytesPType }],\n },\n stateProofPk: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['StateProofPK'], stackArgs: [], returnType: ptypes.bytesPType }],\n },\n approvalProgramPages: {\n type: 'op-mapping',\n op: 'txnas',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ApprovalProgramPages'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n numApprovalProgramPages: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['NumApprovalProgramPages'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n clearStateProgramPages: {\n type: 'op-mapping',\n op: 'txnas',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ClearStateProgramPages'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n numClearStateProgramPages: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['NumClearStateProgramPages'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n },\n },\n VoterParams: {\n type: 'op-grouping',\n name: 'VoterParams',\n ops: {\n voterBalance: {\n type: 'op-mapping',\n op: 'voter_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['VoterBalance'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType, ptypes.uint64PType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.uint64PType, ptypes.boolPType] }),\n },\n ],\n },\n voterIncentiveEligible: {\n type: 'op-mapping',\n op: 'voter_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['VoterIncentiveEligible'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType, ptypes.uint64PType] }],\n returnType: new ptypes.TuplePType({ items: [ptypes.boolPType, ptypes.boolPType] }),\n },\n ],\n },\n },\n },\n vrfVerify: {\n type: 'op-mapping',\n op: 'vrf_verify',\n signatures: [\n {\n argNames: ['s', 'a', 'b', 'c'],\n immediateArgs: [{ name: 's', ptypes: [ptypes.vrfVerifyPType] }],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.bytesPType] },\n { name: 'c', ptypes: [ptypes.bytesPType] },\n ],\n returnType: new ptypes.TuplePType({ items: [ptypes.bytesPType, ptypes.boolPType] }),\n },\n ],\n },\n extract: {\n type: 'op-mapping',\n op: 'extract3',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.bytesPType,\n },\n {\n argNames: ['a', 'b', 'c'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n { name: 'c', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n select: {\n type: 'op-mapping',\n op: 'select',\n signatures: [\n {\n argNames: ['a', 'b', 'c'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.bytesPType] },\n { name: 'c', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.bytesPType,\n },\n {\n argNames: ['a', 'b', 'c'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n { name: 'c', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n setBit: {\n type: 'op-mapping',\n op: 'setbit',\n signatures: [\n {\n argNames: ['target', 'n', 'c'],\n immediateArgs: [],\n stackArgs: [\n { name: 'target', ptypes: [ptypes.bytesPType] },\n { name: 'n', ptypes: [ptypes.uint64PType] },\n { name: 'c', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.bytesPType,\n },\n {\n argNames: ['target', 'n', 'c'],\n immediateArgs: [],\n stackArgs: [\n { name: 'target', ptypes: [ptypes.uint64PType] },\n { name: 'n', ptypes: [ptypes.uint64PType] },\n { name: 'c', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n}\n","import { intrinsicFactory } from '../../awst/intrinsic-factory'\nimport { nodeFactory } from '../../awst/node-factory'\nimport { Expression, IntegerConstant, StringConstant, UInt64BinaryOperator } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { CodeError, InternalError } from '../../errors'\nimport { codeInvariant, enumerate, invariant } from '../../util'\nimport type { IntrinsicOpGrouping, IntrinsicOpMapping } from '../op-metadata'\nimport { OP_METADATA } from '../op-metadata'\nimport type { PType } from '../ptypes'\nimport {\n bytesPType,\n IntrinsicEnumType,\n IntrinsicFunctionGroupType,\n IntrinsicFunctionType,\n stringPType,\n uint64PType,\n voidPType,\n} from '../ptypes'\nimport { instanceEb, typeRegistry } from '../type-registry'\nimport { FunctionBuilder, InstanceExpressionBuilder, NodeBuilder } from './index'\nimport { requestConstantOfType, requestExpressionOfType } from './util'\nimport { parseFunctionArgs } from './util/arg-parsing'\n\nexport class IntrinsicOpGroupBuilder extends NodeBuilder {\n private opGrouping: IntrinsicOpGrouping\n public readonly ptype: IntrinsicFunctionGroupType\n constructor(sourceLocation: SourceLocation, ptype: PType) {\n super(sourceLocation)\n invariant(ptype instanceof IntrinsicFunctionGroupType, 'ptype must be IntrinsicFunctionGroupType')\n this.ptype = ptype\n const metaData = OP_METADATA[ptype.name]\n invariant(metaData.type === 'op-grouping', 'ptype must map to op-grouping')\n this.opGrouping = metaData\n }\n\n hasProperty(name: string): boolean {\n return Object.hasOwn(this.opGrouping.ops, name)\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n if (!Object.hasOwn(this.opGrouping.ops, name)) {\n return super.memberAccess(name, sourceLocation)\n }\n const metaData = this.opGrouping.ops[name]\n\n if (metaData.signatures.some((s) => s.argNames.length || s.returnType.equals(voidPType))) {\n return new GroupedIntrinsicOpBuilder(sourceLocation, metaData)\n }\n\n const [sig] = metaData.signatures\n return typeRegistry.getInstanceEb(\n nodeFactory.intrinsicCall({\n wtype: sig.returnType.wtypeOrThrow,\n opCode: metaData.op,\n sourceLocation: sourceLocation,\n stackArgs: sig.stackArgs.map((x) => {\n if (x instanceof Expression) {\n return x\n }\n throw new InternalError('Intrinsic property expression cannot have unresolved arguments', { sourceLocation })\n }),\n immediates: sig.immediateArgs.map((x) => {\n switch (typeof x) {\n case 'string':\n case 'bigint':\n return x\n default:\n throw new InternalError('Intrinsic property expression cannot have unresolved arguments', { sourceLocation })\n }\n }),\n }),\n sig.returnType,\n )\n }\n}\n\nabstract class IntrinsicOpBuilderBase extends FunctionBuilder {\n protected constructor(\n sourceLocation: SourceLocation,\n private opMapping: IntrinsicOpMapping,\n ) {\n super(sourceLocation)\n }\n\n /**\n * Extract with 2 args extracts to the end of the sequence, the exact op code depends on if the start index is a constant value or not\n * @param args\n * @param typeArgs\n * @param sourceLocation\n */\n handleExtract(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [target, start, end],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n funcName: 'extract',\n callLocation: sourceLocation,\n argSpec: (a) => [a.required(bytesPType), a.required(uint64PType), a.optional(uint64PType)],\n })\n if (end) {\n const endExpr = end.resolve()\n codeInvariant(\n !(endExpr instanceof IntegerConstant && endExpr.value === 0n),\n 'Extract with length=0 will always return an empty byte array. Omit length parameter to extract to the end of the sequence.',\n )\n return instanceEb(\n nodeFactory.intrinsicCall({\n opCode: 'extract3',\n immediates: [],\n stackArgs: [target.resolve(), start.resolve(), endExpr],\n wtype: bytesPType.wtype,\n sourceLocation,\n }),\n bytesPType,\n )\n }\n const startExpr = start.resolve()\n if (startExpr instanceof IntegerConstant) {\n // Use immediate version of extract\n return instanceEb(\n nodeFactory.intrinsicCall({\n opCode: 'extract',\n immediates: [startExpr.value, 0n],\n stackArgs: [target.resolve()],\n wtype: bytesPType.wtype,\n sourceLocation,\n }),\n bytesPType,\n )\n } else {\n const targetExpr = target.singleEvaluation().resolve()\n const startExpr = start.singleEvaluation().resolve()\n return instanceEb(\n nodeFactory.intrinsicCall({\n opCode: 'extract3',\n immediates: [],\n stackArgs: [\n targetExpr,\n startExpr,\n nodeFactory.uInt64BinaryOperation({\n op: UInt64BinaryOperator.sub,\n sourceLocation,\n left: intrinsicFactory.bytesLen({ value: targetExpr, sourceLocation }),\n right: startExpr,\n }),\n ],\n wtype: bytesPType.wtype,\n sourceLocation,\n }),\n bytesPType,\n )\n }\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n if (this.opMapping.op === 'extract3') {\n return this.handleExtract(args, typeArgs, sourceLocation)\n }\n signatureLoop: for (const [index, sig] of enumerate(this.opMapping.signatures)) {\n const isLastSig = index + 1 >= this.opMapping.signatures.length\n if (args.length !== sig.argNames.length) {\n if (isLastSig)\n throw new CodeError(`Expected ${sig.argNames.length} args`, {\n sourceLocation,\n })\n else continue\n }\n\n const immediates: Array<string | bigint> = []\n const stackArgs: Array<Expression> = []\n\n stackArgLoop: for (const arg of sig.stackArgs) {\n if (arg instanceof Expression) {\n stackArgs.push(arg)\n continue\n }\n const thisArg = args[sig.argNames.indexOf(arg.name)]\n\n for (const ptype of arg.ptypes) {\n const expr = requestExpressionOfType(thisArg, ptype)\n if (expr) {\n stackArgs.push(expr)\n continue stackArgLoop\n }\n }\n continue signatureLoop\n }\n\n immediateArgLoop: for (const arg of sig.immediateArgs) {\n if (typeof arg === 'string' || typeof arg === 'bigint') {\n immediates.push(arg)\n continue\n }\n const thisArg = args[sig.argNames.indexOf(arg.name)]\n\n for (const ptype of arg.ptypes) {\n if (ptype instanceof IntrinsicEnumType) {\n const enumValue = requestConstantOfType(thisArg, stringPType)\n if (enumValue) {\n invariant(enumValue instanceof StringConstant, 'stringPType constant must be StringConstant')\n immediates.push(enumValue.value)\n continue immediateArgLoop\n }\n }\n const constantValue = requestConstantOfType(thisArg, ptype)\n if (constantValue) {\n if (constantValue instanceof IntegerConstant || constantValue instanceof StringConstant) {\n immediates.push(constantValue.value)\n continue immediateArgLoop\n }\n throw new InternalError(`Constant value ${constantValue} cannot be converted to an immediate argument`, { sourceLocation })\n }\n }\n continue signatureLoop\n }\n\n return typeRegistry.getInstanceEb(\n nodeFactory.intrinsicCall({\n opCode: this.opMapping.op,\n wtype: sig.returnType.wtypeOrThrow,\n sourceLocation: sourceLocation,\n stackArgs,\n immediates,\n }),\n sig.returnType,\n )\n }\n throw new CodeError(`Could not map arguments to any known signature`, { sourceLocation })\n }\n}\n\nexport class FreeIntrinsicOpBuilder extends IntrinsicOpBuilderBase {\n readonly ptype: IntrinsicFunctionType\n constructor(sourceLocation: SourceLocation, ptype: PType) {\n invariant(ptype instanceof IntrinsicFunctionType, 'ptype must be IntrinsicFunctionType')\n const metaData = OP_METADATA[ptype.name]\n invariant(metaData.type === 'op-mapping', 'ptype must map to op-grouping')\n super(sourceLocation, metaData)\n this.ptype = ptype\n }\n}\n\nexport class GroupedIntrinsicOpBuilder extends IntrinsicOpBuilderBase {\n constructor(sourceLocation: SourceLocation, opMapping: IntrinsicOpMapping) {\n super(sourceLocation, opMapping)\n }\n}\n\n/**\n * Builder for expressions which have the 'type' of an intrinsic function or group but are not the singleton instance\n * imported from @algorandfoundat/algorand-typescript. This is not supported.\n */\nexport class IntrinsicOpGroupOrFunctionTypeBuilder extends InstanceExpressionBuilder<PType> {\n constructor(expr: Expression, ptype: PType) {\n super(expr, ptype)\n throw new CodeError('Invalid alias of op function or group type', { sourceLocation: expr.sourceLocation })\n }\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { Expression } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport type { PType } from '../../ptypes'\nimport { accountPType, applicationPType, bytesPType, uint64PType } from '../../ptypes'\nimport type { NodeBuilder } from '../index'\nimport { FunctionBuilder } from '../index'\nimport { parseFunctionArgs } from '../util/arg-parsing'\nimport { Uint64BackedReferenceTypeExpressionBuilder } from './base'\n\nexport class ApplicationFunctionBuilder extends FunctionBuilder {\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [applicationId],\n } = parseFunctionArgs({\n argSpec: (a) => [a.optional(uint64PType)],\n args,\n typeArgs,\n genericTypeArgs: 0,\n funcName: 'Application',\n callLocation: sourceLocation,\n })\n\n return new ApplicationExpressionBuilder(\n nodeFactory.reinterpretCast({\n expr: applicationId?.resolve() ?? nodeFactory.uInt64Constant({ value: 0n, sourceLocation }),\n sourceLocation,\n wtype: applicationPType.wtypeOrThrow,\n }),\n )\n }\n}\n\nexport class ApplicationExpressionBuilder extends Uint64BackedReferenceTypeExpressionBuilder {\n constructor(expr: Expression) {\n super(expr, {\n ptype: applicationPType,\n backingMember: 'id',\n fieldOpCode: 'app_params_get',\n fieldMapping: {\n approvalProgram: ['AppApprovalProgram', bytesPType],\n clearStateProgram: ['AppClearStateProgram', bytesPType],\n globalNumUint: ['AppGlobalNumUint', uint64PType],\n globalNumBytes: ['AppGlobalNumByteSlice', uint64PType],\n localNumUint: ['AppLocalNumUint', uint64PType],\n localNumBytes: ['AppLocalNumByteSlice', uint64PType],\n extraProgramPages: ['AppExtraProgramPages', uint64PType],\n creator: ['AppCreator', accountPType],\n address: ['AppAddress', accountPType],\n },\n fieldBoolComment: 'application exists',\n })\n }\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { Expression } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport { wtypes } from '../../../awst/wtypes'\nimport type { PType } from '../../ptypes'\nimport { accountPType, assetPType, boolPType, bytesPType, uint64PType } from '../../ptypes'\nimport { instanceEb } from '../../type-registry'\nimport type { NodeBuilder } from '../index'\nimport { FunctionBuilder } from '../index'\nimport { parseFunctionArgs } from '../util/arg-parsing'\nimport type { FieldMapping } from './base'\nimport { Uint64BackedReferenceTypeExpressionBuilder } from './base'\n\nexport class AssetFunctionBuilder extends FunctionBuilder {\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [assetId],\n } = parseFunctionArgs({\n argSpec: (a) => [a.optional(uint64PType)],\n args,\n typeArgs,\n genericTypeArgs: 0,\n funcName: 'Asset function',\n callLocation: sourceLocation,\n })\n\n return new AssetExpressionBuilder(\n nodeFactory.reinterpretCast({\n expr: assetId?.resolve() ?? nodeFactory.uInt64Constant({ value: 0n, sourceLocation }),\n sourceLocation,\n wtype: assetPType.wtypeOrThrow,\n }),\n )\n }\n}\n\nclass AssetHoldingExpressionBuilder extends FunctionBuilder {\n static fieldMapping = {\n balance: ['AssetBalance', uint64PType],\n frozen: ['AssetFrozen', boolPType],\n } satisfies FieldMapping\n constructor(\n private asset: Expression,\n private holdingField: keyof typeof AssetHoldingExpressionBuilder.fieldMapping,\n sourceLocation: SourceLocation,\n ) {\n super(sourceLocation)\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [holder],\n } = parseFunctionArgs({\n args,\n typeArgs,\n callLocation: sourceLocation,\n genericTypeArgs: 0,\n funcName: this.holdingField,\n argSpec: (a) => [a.required(accountPType)],\n })\n const [immediate, resultType] = AssetHoldingExpressionBuilder.fieldMapping[this.holdingField]\n const op = nodeFactory.intrinsicCall({\n opCode: 'asset_holding_get',\n immediates: [immediate],\n stackArgs: [holder.resolve(), this.asset],\n wtype: new wtypes.WTuple({ types: [resultType.wtypeOrThrow, wtypes.boolWType], immutable: true }),\n sourceLocation,\n })\n return instanceEb(nodeFactory.checkedMaybe({ expr: op, comment: `account opted into asset` }), resultType)\n }\n}\nexport class AssetExpressionBuilder extends Uint64BackedReferenceTypeExpressionBuilder {\n constructor(expr: Expression) {\n super(expr, {\n ptype: assetPType,\n backingMember: 'id',\n fieldOpCode: 'asset_params_get',\n fieldMapping: {\n total: ['AssetTotal', uint64PType],\n decimals: ['AssetDecimals', uint64PType],\n defaultFrozen: ['AssetDefaultFrozen', boolPType],\n unitName: ['AssetUnitName', bytesPType],\n name: ['AssetName', bytesPType],\n url: ['AssetURL', bytesPType],\n metadataHash: ['AssetMetadataHash', bytesPType],\n manager: ['AssetManager', accountPType],\n reserve: ['AssetReserve', accountPType],\n freeze: ['AssetFreeze', accountPType],\n clawback: ['AssetClawback', accountPType],\n creator: ['AssetCreator', accountPType],\n },\n fieldBoolComment: 'asset exists',\n })\n }\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n if (name in AssetHoldingExpressionBuilder.fieldMapping) {\n return new AssetHoldingExpressionBuilder(\n this.resolve(),\n name as keyof typeof AssetHoldingExpressionBuilder.fieldMapping,\n sourceLocation,\n )\n }\n return super.memberAccess(name, sourceLocation)\n }\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { Expression } from '../../../awst/nodes'\nimport { BytesConstant } from '../../../awst/nodes'\nimport type { wtypes } from '../../../awst/wtypes'\nimport type { InstanceBuilder } from '../index'\n\nexport function extractKey(key: InstanceBuilder, keyWType: wtypes.WType): Expression\nexport function extractKey(key: InstanceBuilder | undefined, keyWType: wtypes.WType): Expression | undefined\nexport function extractKey(key: InstanceBuilder | undefined, keyWType: wtypes.WType): Expression | undefined {\n if (!key) return undefined\n\n const keyBytes = key.toBytes(key.sourceLocation)\n if (keyBytes instanceof BytesConstant) {\n return nodeFactory.bytesConstant({\n ...keyBytes,\n wtype: keyWType,\n })\n } else {\n return nodeFactory.reinterpretCast({\n expr: keyBytes,\n wtype: keyWType,\n sourceLocation: key.sourceLocation,\n })\n }\n}\n","import { nodeFactory } from '../../awst/node-factory'\nimport type { AppStorageDefinition, BytesConstant } from '../../awst/nodes'\nimport { AppStorageKind, BytesEncoding } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { CodeError } from '../../errors'\nimport { invariant, utf8ToUint8Array } from '../../util'\nimport type { ContractClassPType, StorageProxyPType } from '../ptypes'\nimport { BoxMapPType, BoxPType, BoxRefPType, GlobalStateType, LocalStateType } from '../ptypes'\n\nexport class AppStorageDeclaration {\n readonly memberName: string\n readonly ptype: GlobalStateType | LocalStateType | BoxMapPType | BoxPType | BoxRefPType\n readonly keyOverride: BytesConstant | null\n readonly sourceLocation: SourceLocation\n readonly definedIn: ContractClassPType\n readonly description: string | null\n constructor(props: {\n memberName: string\n ptype: StorageProxyPType\n keyOverride: BytesConstant | null\n sourceLocation: SourceLocation\n definedIn: ContractClassPType\n description: string | null\n }) {\n this.memberName = props.memberName\n this.ptype = props.ptype\n this.keyOverride = props.keyOverride\n this.sourceLocation = props.sourceLocation\n this.definedIn = props.definedIn\n this.description = props.description\n }\n\n get kind(): AppStorageKind {\n if (this.ptype instanceof GlobalStateType) {\n return AppStorageKind.appGlobal\n }\n if (this.ptype instanceof LocalStateType) {\n return AppStorageKind.accountLocal\n }\n invariant(\n this.ptype instanceof BoxPType || this.ptype instanceof BoxRefPType || this.ptype instanceof BoxMapPType,\n 'Must be exhaustive check on ptype',\n )\n return AppStorageKind.box\n }\n\n get key(): BytesConstant {\n if (this.keyOverride) {\n invariant(this.keyOverride.wtype.equals(this.ptype.wtype), 'Key wtype must match ptype')\n return this.keyOverride\n } else {\n return nodeFactory.bytesConstant({\n value: utf8ToUint8Array(this.memberName),\n sourceLocation: this.sourceLocation,\n encoding: BytesEncoding.utf8,\n wtype: this.ptype.wtype,\n })\n }\n }\n\n get definition(): AppStorageDefinition {\n if (!this.ptype.contentType.wtype || !this.ptype.contentType.wtype.scalarType) {\n throw new CodeError(`${this.ptype.contentType.fullName} is not a valid type for storage`, { sourceLocation: this.sourceLocation })\n }\n return nodeFactory.appStorageDefinition({\n ...this,\n kind: this.kind,\n key: this.key,\n keyWtype: null,\n storageWtype: this.ptype.contentType.wtypeOrThrow,\n })\n }\n}\n","import type {\n AppAccountStateExpression,\n AppStateExpression,\n Expression,\n FieldExpression,\n IndexExpression,\n TupleExpression,\n VarExpression,\n} from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport type { PType, PTypeOrClass } from '../../ptypes'\nimport { typeRegistry } from '../../type-registry'\nimport type { BuilderBinaryOp, BuilderComparisonOp, BuilderUnaryOp, InstanceBuilder, NodeBuilder } from '../index'\nimport { InstanceExpressionBuilder } from '../index'\n\nexport abstract class ValueProxy<TPType extends PType> extends InstanceExpressionBuilder<TPType> {\n private get proxied(): InstanceBuilder {\n return typeRegistry.getInstanceEb(this._expr, this.ptype)\n }\n\n resolve(): Expression {\n return this.proxied.resolve()\n }\n resolveLValue(): VarExpression | FieldExpression | IndexExpression | TupleExpression | AppStateExpression | AppAccountStateExpression {\n return this.proxied.resolveLValue()\n }\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n return this.proxied.memberAccess(name, sourceLocation)\n }\n augmentedAssignment(other: InstanceBuilder, op: BuilderBinaryOp, sourceLocation: SourceLocation): InstanceBuilder {\n return this.proxied.augmentedAssignment(other, op, sourceLocation)\n }\n iterate(sourceLocation: SourceLocation): Expression {\n return this.proxied.iterate(sourceLocation)\n }\n indexAccess(index: InstanceBuilder, sourceLocation: SourceLocation): NodeBuilder {\n return this.proxied.indexAccess(index, sourceLocation)\n }\n boolEval(sourceLocation: SourceLocation, negate: boolean = false): Expression {\n return this.proxied.boolEval(sourceLocation, negate)\n }\n binaryOp(other: InstanceBuilder, op: BuilderBinaryOp, sourceLocation: SourceLocation): InstanceBuilder {\n return this.proxied.binaryOp(other, op, sourceLocation)\n }\n prefixUnaryOp(op: BuilderUnaryOp, sourceLocation: SourceLocation): InstanceBuilder {\n return this.proxied.prefixUnaryOp(op, sourceLocation)\n }\n postfixUnaryOp(op: BuilderUnaryOp, sourceLocation: SourceLocation): InstanceBuilder {\n return this.proxied.postfixUnaryOp(op, sourceLocation)\n }\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n return this.proxied.call(args, typeArgs, sourceLocation)\n }\n compare(other: InstanceBuilder, op: BuilderComparisonOp, sourceLocation: SourceLocation): InstanceBuilder {\n return this.proxied.compare(other, op, sourceLocation)\n }\n taggedTemplate(head: string, spans: ReadonlyArray<readonly [InstanceBuilder, string]>, sourceLocation: SourceLocation): InstanceBuilder {\n return this.proxied.taggedTemplate(head, spans, sourceLocation)\n }\n singleEvaluation(): InstanceBuilder {\n return this.proxied.singleEvaluation()\n }\n hasProperty(_name: string): boolean {\n return this.proxied.hasProperty(_name)\n }\n toBytes(sourceLocation: SourceLocation): Expression {\n return this.proxied.toBytes(sourceLocation)\n }\n resolvableToPType(ptype: PTypeOrClass): boolean {\n return this.proxied.resolvableToPType(ptype)\n }\n resolveToPType(ptype: PTypeOrClass): InstanceBuilder {\n return this.proxied.resolveToPType(ptype)\n }\n}\n","import { nodeFactory } from '../../../../awst/node-factory'\nimport { type BoxValueExpression, BytesConstant, type Expression } from '../../../../awst/nodes'\nimport type { SourceLocation } from '../../../../awst/source-location'\nimport { wtypes } from '../../../../awst/wtypes'\nimport { codeInvariant } from '../../../../util'\nimport { AppStorageDeclaration } from '../../../models/app-storage-declaration'\nimport type { BoxPType, BoxRefPType } from '../../../ptypes'\nimport { boolPType, BoxMapPType, type ContractClassPType, type PType, uint64PType } from '../../../ptypes'\nimport { instanceEb } from '../../../type-registry'\nimport { InstanceExpressionBuilder } from '../../index'\nimport { ValueProxy } from '../value-proxy'\n\nexport abstract class BoxProxyExpressionBuilder<\n TProxyType extends BoxMapPType | BoxRefPType | BoxPType,\n> extends InstanceExpressionBuilder<TProxyType> {\n buildStorageDeclaration(\n memberName: string,\n memberLocation: SourceLocation,\n memberDescription: string | null,\n contractType: ContractClassPType,\n ): AppStorageDeclaration {\n codeInvariant(\n this._expr instanceof BytesConstant,\n `key${this.ptype instanceof BoxMapPType ? ' prefix' : ''} must be a compile time constant value if ${this.typeDescription} is assigned to a contract member`,\n )\n return new AppStorageDeclaration({\n sourceLocation: memberLocation,\n ptype: this.ptype,\n memberName: memberName,\n keyOverride: this._expr ?? null,\n description: memberDescription,\n definedIn: contractType,\n })\n }\n\n toBytes(sourceLocation: SourceLocation): Expression {\n return nodeFactory.reinterpretCast({\n expr: this.resolve(),\n wtype: wtypes.bytesWType,\n sourceLocation,\n })\n }\n}\n\n/**\n * Wraps the box value expression and watches for certain expressions which can be optimized.\n *\n * For example box.value.bytes.slice(...) can be optimized to use box_extract directly rather\n * than reading the entire box into memory and then slicing it. All unhandled scenarios are proxied\n * through to the underlying builder for the given type.\n */\nexport class BoxValueExpressionBuilder extends ValueProxy<PType> {\n constructor(boxValue: BoxValueExpression, ptype: PType) {\n super(boxValue, ptype)\n }\n}\n\nexport function boxValue({\n key,\n sourceLocation,\n contentType,\n}: {\n key: Expression\n sourceLocation: SourceLocation\n contentType: PType\n}): BoxValueExpression {\n return nodeFactory.boxValueExpression({\n key,\n sourceLocation,\n wtype: contentType.wtypeOrThrow,\n existsAssertionMessage: 'Box must have value',\n })\n}\n\nexport function boxLength(box: BoxValueExpression, sourceLocation: SourceLocation) {\n return instanceEb(\n nodeFactory.checkedMaybe({\n expr: nodeFactory.intrinsicCall({\n opCode: 'box_len',\n stackArgs: [box.key],\n wtype: new wtypes.WTuple({ types: [wtypes.uint64WType, wtypes.boolWType], immutable: true }),\n immediates: [],\n sourceLocation,\n }),\n comment: box.existsAssertionMessage ?? 'Box exists',\n }),\n uint64PType,\n )\n}\n\nexport function boxExists(box: BoxValueExpression, sourceLocation: SourceLocation) {\n return instanceEb(\n nodeFactory.stateExists({\n field: box,\n sourceLocation,\n wtype: wtypes.boolWType,\n }),\n\n boolPType,\n )\n}\n","import { nodeFactory } from '../../../../awst/node-factory'\nimport type { BoxValueExpression, Expression } from '../../../../awst/nodes'\nimport type { SourceLocation } from '../../../../awst/source-location'\nimport { wtypes } from '../../../../awst/wtypes'\nimport { invariant } from '../../../../util'\nimport type { PType } from '../../../ptypes'\nimport { boolPType, BoxPType, bytesPType, stringPType, TuplePType } from '../../../ptypes'\nimport { instanceEb } from '../../../type-registry'\nimport { FunctionBuilder, type NodeBuilder, ParameterlessFunctionBuilder } from '../../index'\nimport { parseFunctionArgs } from '../../util/arg-parsing'\nimport { extractKey } from '../util'\nimport { boxExists, boxLength, BoxProxyExpressionBuilder, boxValue, BoxValueExpressionBuilder } from './base'\n\nexport class BoxFunctionBuilder extends FunctionBuilder {\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n ptypes: [contentPType],\n args: [{ key }],\n } = parseFunctionArgs({\n args,\n typeArgs,\n funcName: `Box`,\n callLocation: sourceLocation,\n genericTypeArgs: 1,\n argSpec: (a) => [a.obj({ key: a.required(bytesPType, stringPType) })],\n })\n\n const ptype = new BoxPType({ content: contentPType })\n return new BoxExpressionBuilder(extractKey(key, wtypes.boxKeyWType), ptype)\n }\n}\n\nexport class BoxExpressionBuilder extends BoxProxyExpressionBuilder<BoxPType> {\n constructor(expr: Expression, ptype: PType) {\n invariant(ptype instanceof BoxPType, 'BoxExpressionBuilder must be constructed with ptype of BoxPType')\n super(expr, ptype)\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n const boxValueExpr = boxValue({\n key: this._expr,\n sourceLocation,\n contentType: this.ptype.contentType,\n })\n switch (name) {\n case 'key':\n return instanceEb(this.toBytes(sourceLocation), bytesPType)\n case 'value':\n return new BoxValueExpressionBuilder(boxValueExpr, this.ptype.contentType)\n case 'exists':\n return boxExists(boxValueExpr, sourceLocation)\n case 'length':\n return boxLength(boxValueExpr, sourceLocation)\n case 'delete':\n return new BoxDeleteFunctionBuilder(boxValueExpr, sourceLocation)\n case 'get':\n return new BoxGetFunctionBuilder(boxValueExpr, this.ptype.contentType, sourceLocation)\n case 'maybe':\n return new BoxMaybeFunctionBuilder(boxValueExpr, this.ptype.contentType, sourceLocation)\n }\n return super.memberAccess(name, sourceLocation)\n }\n}\n\nclass BoxDeleteFunctionBuilder extends ParameterlessFunctionBuilder {\n constructor(boxValue: BoxValueExpression, sourceLocation: SourceLocation) {\n super(boxValue, (expr) =>\n instanceEb(\n nodeFactory.stateDelete({\n sourceLocation,\n field: boxValue,\n wtype: wtypes.boolWType,\n }),\n boolPType,\n ),\n )\n }\n}\n\nclass BoxGetFunctionBuilder extends FunctionBuilder {\n constructor(\n private readonly boxValue: BoxValueExpression,\n private readonly contentType: PType,\n sourceLocation: SourceLocation,\n ) {\n super(sourceLocation)\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [{ default: defaultValue }],\n } = parseFunctionArgs({\n args,\n typeArgs,\n funcName: 'Box.get',\n callLocation: sourceLocation,\n genericTypeArgs: 0,\n argSpec: (a) => [a.obj({ default: a.optional(this.contentType) })],\n })\n\n if (defaultValue) {\n return instanceEb(\n nodeFactory.stateGet({\n sourceLocation,\n default: defaultValue.resolve(),\n wtype: this.contentType.wtypeOrThrow,\n field: this.boxValue,\n }),\n this.contentType,\n )\n } else {\n return new BoxValueExpressionBuilder(this.boxValue, this.contentType)\n }\n }\n}\nclass BoxMaybeFunctionBuilder extends FunctionBuilder {\n constructor(\n private readonly boxValue: BoxValueExpression,\n private readonly contentType: PType,\n sourceLocation: SourceLocation,\n ) {\n super(sourceLocation)\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n parseFunctionArgs({\n args,\n typeArgs,\n funcName: 'Box.maybe',\n callLocation: sourceLocation,\n genericTypeArgs: 0,\n argSpec: () => [],\n })\n const type = new TuplePType({ items: [this.contentType, boolPType] })\n\n return instanceEb(\n nodeFactory.stateGetEx({\n sourceLocation,\n wtype: type.wtype,\n field: this.boxValue,\n }),\n type,\n )\n }\n}\n","import { intrinsicFactory } from '../../../../awst/intrinsic-factory'\nimport type { Expression } from '../../../../awst/nodes'\nimport type { SourceLocation } from '../../../../awst/source-location'\nimport { wtypes } from '../../../../awst/wtypes'\n\nimport { invariant } from '../../../../util'\nimport type { PType } from '../../../ptypes'\nimport { BoxMapPType, BoxPType, bytesPType, stringPType } from '../../../ptypes'\nimport { instanceEb } from '../../../type-registry'\nimport { FunctionBuilder, type NodeBuilder } from '../../index'\nimport { parseFunctionArgs } from '../../util/arg-parsing'\nimport { extractKey } from '../util'\nimport { BoxProxyExpressionBuilder } from './base'\nimport { BoxExpressionBuilder } from './box'\n\nexport class BoxMapFunctionBuilder extends FunctionBuilder {\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n ptypes: [keySuffixType, contentPType],\n args: [{ keyPrefix }],\n } = parseFunctionArgs({\n args,\n typeArgs,\n funcName: `BoxMap`,\n callLocation: sourceLocation,\n genericTypeArgs: 2,\n argSpec: (a) => [a.obj({ keyPrefix: a.required(bytesPType, stringPType) })],\n })\n\n const ptype = new BoxMapPType({ content: contentPType, keyType: keySuffixType })\n return new BoxMapExpressionBuilder(extractKey(keyPrefix, wtypes.boxKeyWType), ptype)\n }\n}\n\nexport class BoxMapExpressionBuilder extends BoxProxyExpressionBuilder<BoxMapPType> {\n constructor(expr: Expression, ptype: PType) {\n invariant(ptype instanceof BoxMapPType, 'BoxMapExpressionBuilder must be constructed with ptype of BoxMapPType')\n super(expr, ptype)\n }\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [key],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n callLocation: sourceLocation,\n argSpec: (a) => [a.required(this.ptype.keyType)],\n funcName: 'BoxMap',\n })\n\n return new BoxExpressionBuilder(\n intrinsicFactory.bytesConcat({\n left: this._expr,\n right: key.toBytes(sourceLocation),\n sourceLocation: this.sourceLocation,\n }),\n new BoxPType({\n content: this.ptype.contentType,\n }),\n )\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n switch (name) {\n case 'keyPrefix':\n return instanceEb(this.toBytes(sourceLocation), bytesPType)\n }\n return super.memberAccess(name, sourceLocation)\n }\n}\n","import { nodeFactory } from '../../../../awst/node-factory'\nimport type { BoxValueExpression, Expression } from '../../../../awst/nodes'\nimport type { SourceLocation } from '../../../../awst/source-location'\nimport { wtypes } from '../../../../awst/wtypes'\n\nimport { invariant } from '../../../../util'\nimport type { PType } from '../../../ptypes'\nimport { boolPType, BoxRefPType, boxRefType, bytesPType, stringPType, TuplePType, uint64PType, voidPType } from '../../../ptypes'\nimport { instanceEb } from '../../../type-registry'\nimport { FunctionBuilder, type NodeBuilder } from '../../index'\nimport { parseFunctionArgs } from '../../util/arg-parsing'\nimport { extractKey } from '../util'\nimport { boxExists, boxLength, BoxProxyExpressionBuilder, boxValue, BoxValueExpressionBuilder } from './base'\n\nexport class BoxRefFunctionBuilder extends FunctionBuilder {\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [{ key }],\n } = parseFunctionArgs({\n args,\n typeArgs,\n funcName: `BoxRef`,\n callLocation: sourceLocation,\n genericTypeArgs: 0,\n argSpec: (a) => [a.obj({ key: a.required(bytesPType, stringPType) })],\n })\n\n return new BoxRefExpressionBuilder(extractKey(key, wtypes.boxKeyWType), boxRefType)\n }\n}\n\nexport class BoxRefExpressionBuilder extends BoxProxyExpressionBuilder<BoxRefPType> {\n constructor(expr: Expression, ptype: PType) {\n invariant(ptype instanceof BoxRefPType, 'BoxRefExpressionBuilder must be constructed with ptype of BoxRefPType')\n super(expr, ptype)\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n const boxValueExpr = boxValue({\n key: this._expr,\n sourceLocation,\n contentType: this.ptype.contentType,\n })\n switch (name) {\n case 'key':\n return instanceEb(this.toBytes(sourceLocation), bytesPType)\n case 'get':\n return new BoxRefGetFunctionBuilder(boxValueExpr)\n case 'delete':\n return new BoxRefDeleteFunctionBuilder(boxValueExpr)\n case 'put':\n return new BoxRefPutFunctionBuilder(boxValueExpr)\n case 'splice':\n return new BoxRefSpliceFunctionBuilder(boxValueExpr)\n case 'create':\n return new BoxRefCreateFunctionBuilder(boxValueExpr)\n case 'resize':\n return new BoxRefResizeFunctionBuilder(boxValueExpr)\n case 'extract':\n return new BoxRefExtractFunctionBuilder(boxValueExpr)\n case 'replace':\n return new BoxRefReplaceFunctionBuilder(boxValueExpr)\n case 'exists':\n return boxExists(boxValueExpr, sourceLocation)\n case 'maybe':\n return new BoxRefMaybeFunctionBuilder(boxValueExpr)\n case 'length':\n return boxLength(boxValueExpr, sourceLocation)\n case 'value':\n return new BoxValueExpressionBuilder(boxValueExpr, this.ptype.contentType)\n }\n return super.memberAccess(name, sourceLocation)\n }\n}\n\nabstract class BoxRefBaseFunctionBuilder extends FunctionBuilder {\n constructor(protected readonly boxValue: BoxValueExpression) {\n super(boxValue.sourceLocation)\n }\n}\n\nclass BoxRefCreateFunctionBuilder extends BoxRefBaseFunctionBuilder {\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [{ size }],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n funcName: 'BoxRef.create',\n callLocation: sourceLocation,\n argSpec: (a) => [a.obj({ size: a.required(uint64PType) })],\n })\n return instanceEb(\n nodeFactory.intrinsicCall({\n opCode: 'box_create',\n stackArgs: [this.boxValue.key, size.resolve()],\n wtype: wtypes.boolWType,\n immediates: [],\n sourceLocation,\n }),\n boolPType,\n )\n }\n}\nclass BoxRefResizeFunctionBuilder extends BoxRefBaseFunctionBuilder {\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [size],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n funcName: 'BoxRef.resize',\n callLocation: sourceLocation,\n argSpec: (a) => [a.required(uint64PType)],\n })\n return instanceEb(\n nodeFactory.intrinsicCall({\n opCode: 'box_resize',\n stackArgs: [this.boxValue.key, size.resolve()],\n wtype: wtypes.voidWType,\n immediates: [],\n sourceLocation,\n }),\n voidPType,\n )\n }\n}\nclass BoxRefExtractFunctionBuilder extends BoxRefBaseFunctionBuilder {\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [start, length],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n funcName: 'BoxRef.extract',\n callLocation: sourceLocation,\n argSpec: (a) => [a.required(uint64PType), a.required(uint64PType)],\n })\n return instanceEb(\n nodeFactory.intrinsicCall({\n opCode: 'box_extract',\n stackArgs: [this.boxValue.key, start.resolve(), length.resolve()],\n wtype: wtypes.bytesWType,\n immediates: [],\n sourceLocation,\n }),\n bytesPType,\n )\n }\n}\nclass BoxRefReplaceFunctionBuilder extends BoxRefBaseFunctionBuilder {\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [start, value],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n funcName: 'BoxRef.replace',\n callLocation: sourceLocation,\n argSpec: (a) => [a.required(uint64PType), a.required(bytesPType)],\n })\n return instanceEb(\n nodeFactory.intrinsicCall({\n opCode: 'box_replace',\n stackArgs: [this.boxValue.key, start.resolve(), value.resolve()],\n wtype: wtypes.voidWType,\n immediates: [],\n sourceLocation,\n }),\n voidPType,\n )\n }\n}\nclass BoxRefGetFunctionBuilder extends BoxRefBaseFunctionBuilder {\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [{ default: defaultValue }],\n } = parseFunctionArgs({\n args,\n typeArgs,\n funcName: 'BoxRef.get',\n callLocation: sourceLocation,\n genericTypeArgs: 0,\n argSpec: (a) => [a.obj({ default: a.optional(bytesPType) })],\n })\n\n if (defaultValue) {\n return instanceEb(\n nodeFactory.stateGet({\n sourceLocation,\n default: defaultValue.resolve(),\n wtype: wtypes.bytesWType,\n field: this.boxValue,\n }),\n bytesPType,\n )\n } else {\n return new BoxValueExpressionBuilder(this.boxValue, bytesPType)\n }\n }\n}\n\nclass BoxRefPutFunctionBuilder extends BoxRefBaseFunctionBuilder {\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [value],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n funcName: 'BoxRef.put',\n callLocation: sourceLocation,\n argSpec: (a) => [a.required(bytesPType)],\n })\n return instanceEb(\n nodeFactory.intrinsicCall({\n opCode: 'box_put',\n stackArgs: [this.boxValue.key, value.resolve()],\n wtype: wtypes.voidWType,\n immediates: [],\n sourceLocation,\n }),\n voidPType,\n )\n }\n}\nclass BoxRefSpliceFunctionBuilder extends BoxRefBaseFunctionBuilder {\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [start, stop, value],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n funcName: 'BoxRef.splice',\n callLocation: sourceLocation,\n argSpec: (a) => [a.required(uint64PType), a.required(uint64PType), a.required(bytesPType)],\n })\n return instanceEb(\n nodeFactory.intrinsicCall({\n opCode: 'box_splice',\n stackArgs: [this.boxValue.key, start.resolve(), stop.resolve(), value.resolve()],\n wtype: wtypes.voidWType,\n immediates: [],\n sourceLocation,\n }),\n voidPType,\n )\n }\n}\n\nclass BoxRefMaybeFunctionBuilder extends BoxRefBaseFunctionBuilder {\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n parseFunctionArgs({\n args,\n typeArgs,\n funcName: 'BoxRef.maybe',\n callLocation: sourceLocation,\n genericTypeArgs: 0,\n argSpec: () => [],\n })\n const type = new TuplePType({ items: [bytesPType, boolPType] })\n\n return instanceEb(\n nodeFactory.stateGetEx({\n sourceLocation,\n wtype: type.wtype,\n field: this.boxValue,\n }),\n type,\n )\n }\n}\n\nclass BoxRefDeleteFunctionBuilder extends BoxRefBaseFunctionBuilder {\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n parseFunctionArgs({\n args,\n typeArgs,\n funcName: 'BoxRef.delete',\n callLocation: sourceLocation,\n genericTypeArgs: 0,\n argSpec: () => [],\n })\n\n return instanceEb(\n nodeFactory.stateDelete({\n field: this.boxValue,\n sourceLocation,\n wtype: wtypes.boolWType,\n }),\n boolPType,\n )\n }\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { AppStateExpression, Expression } from '../../../awst/nodes'\nimport { BytesConstant } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport { wtypes } from '../../../awst/wtypes'\nimport { codeInvariant, invariant } from '../../../util'\nimport { AppStorageDeclaration } from '../../models/app-storage-declaration'\nimport type { ContractClassPType, PType } from '../../ptypes'\nimport { boolPType, bytesPType, GlobalStateType, stringPType } from '../../ptypes'\nimport { typeRegistry } from '../../type-registry'\nimport { BooleanExpressionBuilder } from '../boolean-expression-builder'\nimport type { NodeBuilder } from '../index'\nimport { FunctionBuilder, InstanceExpressionBuilder } from '../index'\nimport { parseFunctionArgs } from '../util/arg-parsing'\nimport { VoidExpressionBuilder } from '../void-expression-builder'\nimport { extractKey } from './util'\n\nexport class GlobalStateFunctionBuilder extends FunctionBuilder {\n constructor(sourceLocation: SourceLocation) {\n super(sourceLocation)\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const [contentPType] = typeArgs\n const {\n args: [{ initialValue, key }],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 1,\n argSpec: (a) => [\n a.obj({\n initialValue: a.optional(contentPType),\n key: a.optional(stringPType, bytesPType),\n }),\n ],\n funcName: this.typeDescription,\n callLocation: sourceLocation,\n })\n const ptype = new GlobalStateType({ content: contentPType })\n\n return new GlobalStateFunctionResultBuilder(extractKey(key, wtypes.stateKeyWType), ptype, {\n initialValue: initialValue?.resolve(),\n sourceLocation,\n })\n }\n}\n\nclass GlobalStateDeleteFunctionBuilder extends FunctionBuilder {\n constructor(\n private key: AppStateExpression,\n sourceLocation: SourceLocation,\n ) {\n super(sourceLocation)\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n callLocation: sourceLocation,\n funcName: 'GlobalState.delete',\n argSpec: () => [],\n })\n return new VoidExpressionBuilder(\n nodeFactory.stateDelete({\n field: this.key,\n sourceLocation,\n wtype: wtypes.voidWType,\n }),\n )\n }\n}\n\nexport class GlobalStateExpressionBuilder extends InstanceExpressionBuilder<GlobalStateType> {\n constructor(expr: Expression, ptype: PType) {\n invariant(ptype instanceof GlobalStateType, 'ptype must be instance of GlobalStateType')\n super(expr, ptype)\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n switch (name) {\n case 'delete':\n return new GlobalStateDeleteFunctionBuilder(this.buildField(), sourceLocation)\n case 'value':\n return typeRegistry.getInstanceEb(this.buildField(), this.ptype.contentType)\n case 'hasValue':\n return new BooleanExpressionBuilder(\n nodeFactory.stateExists({\n field: this.buildField(),\n wtype: boolPType.wtype,\n sourceLocation,\n }),\n )\n }\n return super.memberAccess(name, sourceLocation)\n }\n\n protected buildField(): AppStateExpression {\n return nodeFactory.appStateExpression({\n key: this._expr,\n wtype: this.ptype.contentType.wtypeOrThrow,\n existsAssertionMessage: 'check GlobalState exists',\n sourceLocation: this.sourceLocation,\n })\n }\n}\n\nexport class GlobalStateFunctionResultBuilder extends GlobalStateExpressionBuilder {\n resolve(): Expression {\n codeInvariant(\n this._keyExpr,\n 'Global state must have explicit key provided if not being assigned to a contract property',\n this.sourceLocation,\n )\n codeInvariant(!this.initialValue, 'Global state can only have an initial value specified if being assigned to a contract property')\n return this._expr\n }\n public readonly initialValue: Expression | undefined\n\n private readonly _keyExpr: Expression | undefined\n\n constructor(expr: Expression | undefined, ptype: PType, config: { initialValue?: Expression; sourceLocation: SourceLocation }) {\n const sourceLocation = expr?.sourceLocation ?? config?.sourceLocation\n invariant(sourceLocation, 'Must have expression or config')\n super(expr ?? nodeFactory.voidConstant({ sourceLocation }), ptype)\n this.initialValue = config.initialValue\n this._keyExpr = expr\n }\n\n protected buildField(): AppStateExpression {\n codeInvariant(\n this._keyExpr,\n 'Global state must have explicit key provided if not being assigned to a contract property',\n this.sourceLocation,\n )\n return super.buildField()\n }\n\n buildStorageDeclaration(\n memberName: string,\n memberLocation: SourceLocation,\n memberDescription: string | null,\n contractType: ContractClassPType,\n ): AppStorageDeclaration {\n if (this._keyExpr)\n codeInvariant(\n this._keyExpr instanceof BytesConstant,\n `key must be a compile time constant value if ${this.typeDescription} is assigned to a contract member`,\n )\n return new AppStorageDeclaration({\n sourceLocation: memberLocation,\n ptype: this.ptype,\n memberName: memberName,\n keyOverride: this._keyExpr ?? null,\n description: memberDescription,\n definedIn: contractType,\n })\n }\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { AppAccountStateExpression, AppStateExpression, Expression, LValue } from '../../../awst/nodes'\nimport { BytesConstant } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport { wtypes } from '../../../awst/wtypes'\nimport { CodeError } from '../../../errors'\nimport { codeInvariant, invariant } from '../../../util'\nimport { AppStorageDeclaration } from '../../models/app-storage-declaration'\n\nimport type { ContractClassPType, PType } from '../../ptypes'\nimport { accountPType, boolPType, bytesPType, LocalStateType, stringPType } from '../../ptypes'\nimport { instanceEb } from '../../type-registry'\nimport { FunctionBuilder, InstanceBuilder, InstanceExpressionBuilder, NodeBuilder } from '../index'\nimport { parseFunctionArgs } from '../util/arg-parsing'\nimport { VoidExpressionBuilder } from '../void-expression-builder'\nimport { extractKey } from './util'\n\nexport class LocalStateFunctionBuilder extends FunctionBuilder {\n constructor(sourceLocation: SourceLocation) {\n super(sourceLocation)\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const [contentPType] = typeArgs\n const {\n args: [{ key }],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 1,\n argSpec: (a) => [\n a.obj({\n key: a.optional(stringPType, bytesPType),\n }),\n ],\n funcName: this.typeDescription,\n callLocation: sourceLocation,\n })\n const ptype = new LocalStateType({ content: contentPType })\n return new LocalStateFunctionResultBuilder(extractKey(key, wtypes.stateKeyWType), ptype, { sourceLocation })\n }\n}\n\nexport class LocalStateExpressionBuilder extends InstanceExpressionBuilder<LocalStateType> {\n constructor(expr: Expression, ptype: PType) {\n invariant(ptype instanceof LocalStateType, 'ptype must be instance of LocalStateType')\n super(expr, ptype)\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [account],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n callLocation: sourceLocation,\n funcName: 'LocalState',\n argSpec: (a) => [a.required(accountPType)],\n })\n\n return new LocalStateForAccountExpressionBuilder(this.buildField(account.resolve(), sourceLocation), this.ptype.contentType)\n }\n\n private buildField(account: Expression, sourceLocation: SourceLocation): AppAccountStateExpression {\n return nodeFactory.appAccountStateExpression({\n key: this._expr,\n account,\n wtype: this.ptype.contentType.wtypeOrThrow,\n existsAssertionMessage: 'check LocalState exists',\n sourceLocation,\n })\n }\n}\n\nexport class LocalStateForAccountExpressionBuilder extends NodeBuilder {\n ptype: undefined\n\n constructor(\n private key: AppAccountStateExpression,\n private contentType: PType,\n ) {\n super(key.sourceLocation)\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n switch (name) {\n case 'value':\n return instanceEb(\n nodeFactory.appAccountStateExpression({\n ...this.key,\n sourceLocation,\n }),\n this.contentType,\n )\n case 'hasValue':\n return instanceEb(\n nodeFactory.stateExists({\n field: this.key,\n sourceLocation,\n wtype: wtypes.boolWType,\n }),\n boolPType,\n )\n case 'delete':\n return new LocalStateDeleteFunctionBuilder(this.key, sourceLocation)\n }\n return super.memberAccess(name, sourceLocation)\n }\n}\n\nclass LocalStateDeleteFunctionBuilder extends FunctionBuilder {\n constructor(\n private key: AppStateExpression,\n sourceLocation: SourceLocation,\n ) {\n super(sourceLocation)\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n callLocation: sourceLocation,\n funcName: 'LocalState.delete',\n argSpec: () => [],\n })\n return new VoidExpressionBuilder(\n nodeFactory.stateDelete({\n field: this.key,\n sourceLocation,\n wtype: wtypes.voidWType,\n }),\n )\n }\n}\n\nexport class LocalStateFunctionResultBuilder extends InstanceBuilder<LocalStateType> {\n resolve(): Expression {\n codeInvariant(\n this._expr,\n 'Local state must have explicit key provided if not being assigned to a contract property',\n this.sourceLocation,\n )\n return this._expr\n }\n resolveLValue(): LValue {\n throw CodeError.invalidAssignmentTarget({ name: this.typeDescription, sourceLocation: this.sourceLocation })\n }\n\n private _expr: Expression | undefined\n constructor(expr: Expression | undefined, ptype: PType, config: { sourceLocation: SourceLocation }) {\n const sourceLocation = expr?.sourceLocation ?? config?.sourceLocation\n invariant(sourceLocation, 'Must have expression or config')\n super(sourceLocation)\n invariant(ptype instanceof LocalStateType, 'ptype must be LocalStateType')\n this._expr = expr\n this.ptype = ptype\n }\n readonly ptype: LocalStateType\n\n buildStorageDeclaration(\n memberName: string,\n memberLocation: SourceLocation,\n memberDescription: string | null,\n contractType: ContractClassPType,\n ): AppStorageDeclaration {\n if (this._expr)\n codeInvariant(\n this._expr instanceof BytesConstant,\n `key is must be a compile time constant value if ${this.typeDescription} is assigned to a contract member`,\n )\n return new AppStorageDeclaration({\n sourceLocation: memberLocation,\n ptype: this.ptype,\n memberName: memberName,\n keyOverride: this._expr ?? null,\n description: memberDescription,\n definedIn: contractType,\n })\n }\n}\n","import * as A from 'arcsecond'\nimport { hexToUint8Array, utf8ToUint8Array } from './index'\n\nexport const TemplateVarNameRegex = /^[A-Z\\d_]+/\n\nconst templateVarName = A.regex(TemplateVarNameRegex)\n\nconst hexBytes = A.sequenceOf([A.str('0x'), A.regex(/^([A-F0-9]{2})*/)]).map(([prefix, chars]) => hexToUint8Array(chars))\n\nconst integer = A.regex(/^\\d+/).map((x) => BigInt(x))\n\nconst string = A.regex(/^.*/).map(utf8ToUint8Array)\n\nconst templateVarValue = A.choice([hexBytes, integer, string])\n\nconst templateVar = A.coroutine((parse) => {\n const name = parse(templateVarName)\n parse(A.char('='))\n const value = parse(templateVarValue)\n parse(A.endOfInput)\n return [name, value] as const\n})\n\nexport const parseCliTemplateVar = (text: string): readonly [string, Uint8Array | bigint] => {\n const result = templateVar.run(text)\n if (result.isError) {\n throw new Error('Cannot parse cli template var. Make sure it is in the form VAR_NAME={value}', { cause: result.error })\n } else {\n return result.result\n }\n}\n","import { nodeFactory } from '../../awst/node-factory'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { logger } from '../../logger'\nimport { TemplateVarNameRegex } from '../../util/template-var-cli-parser'\nimport type { PType } from '../ptypes'\nimport { stringPType, TemplateVarFunction } from '../ptypes'\nimport { instanceEb } from '../type-registry'\nimport type { NodeBuilder } from './index'\nimport { FunctionBuilder } from './index'\nimport { requireStringConstant } from './util'\nimport { parseFunctionArgs } from './util/arg-parsing'\n\nexport class TemplateVarFunctionBuilder extends FunctionBuilder {\n readonly ptype = TemplateVarFunction\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [name, prefix],\n ptypes: [varType],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 1,\n callLocation: sourceLocation,\n funcName: this.typeDescription,\n argSpec: (a) => [a.required(stringPType), a.optional(stringPType)],\n })\n\n const nameStr = requireStringConstant(name).value\n const validName = TemplateVarNameRegex.exec(nameStr)\n if (validName?.[0] !== nameStr) {\n logger.error(\n name.sourceLocation,\n 'Invalid name. Template variable names must only contain capital letters A-Z, numbers 0-9, and underscores',\n )\n }\n\n const prefixStr = prefix ? requireStringConstant(prefix).value : 'TMPL_'\n\n return instanceEb(\n nodeFactory.templateVar({\n name: `${prefixStr}${nameStr}`,\n wtype: varType.wtypeOrThrow,\n sourceLocation,\n }),\n varType,\n )\n }\n}\n","import { TransactionKind } from '../../../awst/models'\nimport { TxnField } from '../../../awst/txn-fields'\nimport type { PType } from '../../ptypes'\nimport {\n accountPType,\n applicationPType,\n assetPType,\n boolPType,\n bytesPType,\n onCompleteActionType,\n transactionTypeType,\n uint64PType,\n} from '../../ptypes'\n\ntype TxnFieldsMeta = Record<string, readonly [TxnField, PType]>\n\nconst baseTxnFields = {\n /**\n * 32 byte address\n */\n sender: [TxnField.Sender, accountPType] as const,\n\n /**\n * microalgos\n */\n fee: [TxnField.Fee, uint64PType] as const,\n\n /**\n * round number\n */\n firstValid: [TxnField.FirstValid, uint64PType] as const,\n\n /**\n * UNIX timestamp of block before txn.FirstValid. Fails if negative\n */\n firstValidTime: [TxnField.FirstValidTime, uint64PType] as const,\n\n /**\n * round number\n */\n lastValid: [TxnField.LastValid, uint64PType] as const,\n\n /**\n * Any data up to 1024 bytes\n */\n note: [TxnField.Note, bytesPType] as const,\n\n /**\n * 32 byte lease value\n */\n lease: [TxnField.Lease, bytesPType] as const,\n\n /**\n * Transaction type as bytes\n */\n typeBytes: [TxnField.Type, bytesPType] as const,\n\n /**\n * Transaction type as integer\n */\n type: [TxnField.TypeEnum, transactionTypeType.memberType] as const,\n\n /**\n * Position of this transaction within an atomic group\n * A stand-alone transaction is implicitly element 0 in a group of 1\n */\n groupIndex: [TxnField.GroupIndex, uint64PType] as const,\n\n /**\n * The computed ID for this transaction. 32 bytes.\n */\n txnId: [TxnField.TxID, bytesPType] as const,\n\n /**\n * 32 byte Sender's new AuthAddr\n */\n rekeyTo: [TxnField.RekeyTo, accountPType] as const,\n} satisfies TxnFieldsMeta\n\nexport const paymentTxnFields = {\n ...baseTxnFields,\n /**\n * 32 byte address\n */\n receiver: [TxnField.Receiver, accountPType] as const,\n\n /**\n * microalgos\n */\n amount: [TxnField.Amount, uint64PType] as const,\n\n /**\n * 32 byte address\n */\n closeRemainderTo: [TxnField.CloseRemainderTo, accountPType] as const,\n} satisfies TxnFieldsMeta\n\nexport const keyRegistrationTxnFields = {\n ...baseTxnFields,\n /**\n * 32 byte address\n */\n voteKey: [TxnField.VotePK, bytesPType] as const,\n\n /**\n * 32 byte address\n */\n selectionKey: [TxnField.SelectionPK, bytesPType] as const,\n\n /**\n * The first round that the participation key is valid.\n */\n voteFirst: [TxnField.VoteFirst, uint64PType] as const,\n\n /**\n * The last round that the participation key is valid.\n */\n voteLast: [TxnField.VoteLast, uint64PType] as const,\n\n /**\n * Dilution for the 2-level participation key\n */\n voteKeyDilution: [TxnField.VoteKeyDilution, uint64PType] as const,\n\n /**\n * Marks an account nonparticipating for rewards\n */\n nonparticipation: [TxnField.Nonparticipation, boolPType] as const,\n\n /**\n * 64 byte state proof public key\n */\n stateProofKey: [TxnField.StateProofPK, bytesPType] as const,\n} satisfies TxnFieldsMeta\n\nexport const assetConfigTxnFields = {\n ...baseTxnFields,\n /**\n * Asset ID in asset config transaction\n */\n configAsset: [TxnField.ConfigAsset, assetPType] as const,\n\n /**\n * The asset created by this transaction\n */\n createdAsset: [TxnField.CreatedAssetID, assetPType] as const,\n\n /**\n * Total number of units of this asset created\n */\n total: [TxnField.ConfigAssetTotal, uint64PType] as const,\n\n /**\n * Number of digits to display after the decimal place when displaying the asset\n */\n decimals: [TxnField.ConfigAssetDecimals, uint64PType] as const,\n\n /**\n * Whether the asset's slots are frozen by default or not, 0 or 1\n */\n defaultFrozen: [TxnField.ConfigAssetDefaultFrozen, boolPType] as const,\n\n /**\n * Unit name of the asset\n */\n unitName: [TxnField.ConfigAssetUnitName, bytesPType] as const,\n\n /**\n * The asset name\n */\n assetName: [TxnField.ConfigAssetName, bytesPType] as const,\n\n /**\n * URL\n */\n url: [TxnField.ConfigAssetURL, bytesPType] as const,\n\n /**\n * 32 byte commitment to unspecified asset metadata\n */\n metadataHash: [TxnField.ConfigAssetMetadataHash, bytesPType] as const,\n\n /**\n * 32 byte address\n */\n manager: [TxnField.ConfigAssetManager, accountPType] as const,\n\n /**\n * 32 byte address\n */\n reserve: [TxnField.ConfigAssetReserve, accountPType] as const,\n\n /**\n * 32 byte address\n */\n freeze: [TxnField.ConfigAssetFreeze, accountPType] as const,\n\n /**\n * 32 byte address\n */\n clawback: [TxnField.ConfigAssetClawback, accountPType] as const,\n} satisfies TxnFieldsMeta\n\nexport const assetTransferTxnFields = {\n ...baseTxnFields,\n /**\n * Asset ID\n */\n xferAsset: [TxnField.XferAsset, assetPType] as const,\n\n /**\n * value in Asset's units\n */\n assetAmount: [TxnField.AssetAmount, uint64PType] as const,\n\n /**\n * 32 byte address. Source of assets if Sender is the Asset's Clawback address.\n */\n assetSender: [TxnField.AssetSender, accountPType] as const,\n\n /**\n * 32 byte address\n */\n assetReceiver: [TxnField.AssetReceiver, accountPType] as const,\n\n /**\n * 32 byte address\n */\n assetCloseTo: [TxnField.AssetCloseTo, accountPType] as const,\n} satisfies TxnFieldsMeta\n\nexport const assetFreezeTxnFields = {\n ...baseTxnFields,\n /**\n * Asset ID being frozen or un-frozen\n */\n freezeAsset: [TxnField.FreezeAsset, assetPType] as const,\n\n /**\n * 32 byte address of the account whose asset slot is being frozen or un-frozen\n */\n freezeAccount: [TxnField.FreezeAssetAccount, accountPType] as const,\n\n /**\n * The new frozen value\n */\n frozen: [TxnField.FreezeAssetFrozen, boolPType] as const,\n} satisfies TxnFieldsMeta\n\nexport const applicationCallTxnFields = {\n ...baseTxnFields,\n /**\n * ApplicationID from ApplicationCall transaction\n */\n appId: [TxnField.ApplicationID, applicationPType] as const,\n\n /**\n * The application created by this transaction\n */\n createdApplication: [TxnField.CreatedApplicationID, applicationPType] as const,\n\n /**\n * ApplicationCall transaction on completion action\n */\n onCompletion: [TxnField.OnCompletion, onCompleteActionType.memberType] as const,\n\n /**\n * Number of ApplicationArgs\n */\n numAppArgs: [TxnField.NumAppArgs, uint64PType] as const,\n\n /**\n * Number of ApplicationArgs\n */\n numAccounts: [TxnField.NumAccounts, uint64PType] as const,\n\n /**\n * Approval program\n */\n approvalProgram: [TxnField.ApprovalProgramPages, bytesPType] as const,\n\n /**\n * Clear State program\n */\n clearStateProgram: [TxnField.ClearStateProgramPages, bytesPType] as const,\n\n /**\n * Number of Assets\n */\n numAssets: [TxnField.NumAssets, uint64PType] as const,\n\n /**\n * Number of Applications\n */\n numApps: [TxnField.NumApplications, uint64PType] as const,\n\n /**\n * Number of global state integers in ApplicationCall\n */\n globalNumUint: [TxnField.GlobalNumUint, uint64PType] as const,\n\n /**\n * Number of global state byteslices in ApplicationCall\n */\n globalNumBytes: [TxnField.GlobalNumByteSlice, uint64PType] as const,\n\n /**\n * Number of local state integers in ApplicationCall\n */\n localNumUint: [TxnField.LocalNumUint, uint64PType] as const,\n\n /**\n * Number of local state byteslices in ApplicationCall\n */\n localNumBytes: [TxnField.LocalNumByteSlice, uint64PType] as const,\n\n /**\n * Number of additional pages for each of the application's approval and clear state programs. An ExtraProgramPages of 1 means 2048 more total bytes, or 1024 for each program.\n */\n extraProgramPages: [TxnField.ExtraProgramPages, uint64PType] as const,\n\n /**\n * The last message emitted. Empty bytes if none were emitted. Application mode only\n */\n lastLog: [TxnField.LastLog, bytesPType] as const,\n\n /**\n * Read application logs\n */\n logs: [TxnField.Logs, bytesPType] as const,\n\n /**\n * Number of Approval Program pages\n */\n numApprovalProgramPages: [TxnField.NumApprovalProgramPages, uint64PType] as const,\n /**\n * Read approval program pages\n */\n approvalProgramPages: [TxnField.ApprovalProgramPages, bytesPType] as const,\n\n /**\n * Number of Clear State Program pages\n */\n numClearStateProgramPages: [TxnField.NumClearStateProgramPages, uint64PType] as const,\n /**\n * Read clear state program pages\n */\n clearStateProgramPages: [TxnField.ClearStateProgramPages, bytesPType] as const,\n\n /**\n * Arguments passed to the application in the ApplicationCall transaction\n * @param index\n */\n appArgs: [TxnField.ApplicationArgs, bytesPType] as const,\n\n /**\n * Accounts listed in the ApplicationCall transaction\n */\n accounts: [TxnField.Accounts, accountPType] as const,\n\n /**\n * Foreign Assets listed in the ApplicationCall transaction\n */\n assets: [TxnField.Assets, assetPType] as const,\n\n /**\n * Foreign Apps listed in the ApplicationCall transaction\n */\n apps: [TxnField.Applications, applicationPType] as const,\n\n /**\n * The id of the created application\n */\n createdApp: [TxnField.CreatedApplicationID, applicationPType] as const,\n\n /**\n * Number of logs\n */\n numLogs: [TxnField.NumLogs, uint64PType] as const,\n} satisfies TxnFieldsMeta\n\nexport const anyTxnFields = {\n ...paymentTxnFields,\n ...keyRegistrationTxnFields,\n ...assetConfigTxnFields,\n ...assetTransferTxnFields,\n ...assetFreezeTxnFields,\n ...applicationCallTxnFields,\n} satisfies TxnFieldsMeta\n\nexport const txnKindToFields = {\n [TransactionKind.pay]: paymentTxnFields,\n [TransactionKind.keyreg]: keyRegistrationTxnFields,\n [TransactionKind.acfg]: assetConfigTxnFields,\n [TransactionKind.axfer]: assetTransferTxnFields,\n [TransactionKind.afrz]: assetFreezeTxnFields,\n [TransactionKind.appl]: applicationCallTxnFields,\n}\n","import { TransactionKind } from '../../../awst/models'\nimport type { GroupTransactionPType, InnerTransactionPType, ItxnParamsPType } from '../../ptypes'\nimport {\n anyGtxnType,\n applicationCallGtxnType,\n applicationCallItxnParamsType,\n applicationItxnType,\n assetConfigGtxnType,\n assetConfigItxnParamsType,\n assetConfigItxnType,\n assetFreezeGtxnType,\n assetFreezeItxnParamsType,\n assetFreezeItxnType,\n assetTransferGtxnType,\n assetTransferItxnParamsType,\n assetTransferItxnType,\n keyRegistrationGtxnType,\n keyRegistrationItxnParamsType,\n keyRegistrationItxnType,\n paymentGtxnType,\n paymentItxnParamsType,\n paymentItxnType,\n} from '../../ptypes'\n\nexport function getInnerTransactionType(kind: TransactionKind | undefined): InnerTransactionPType {\n switch (kind) {\n case TransactionKind.pay:\n return paymentItxnType\n case TransactionKind.keyreg:\n return keyRegistrationItxnType\n case TransactionKind.acfg:\n return assetConfigItxnType\n case TransactionKind.axfer:\n return assetTransferItxnType\n case TransactionKind.afrz:\n return assetFreezeItxnType\n case TransactionKind.appl:\n return applicationItxnType\n default:\n throw new Error('TODO')\n //return anyInnerTransaction\n }\n}\nexport function getItxnParamsType(kind: TransactionKind | undefined): ItxnParamsPType {\n switch (kind) {\n case TransactionKind.pay:\n return paymentItxnParamsType\n case TransactionKind.keyreg:\n return keyRegistrationItxnParamsType\n case TransactionKind.acfg:\n return assetConfigItxnParamsType\n case TransactionKind.axfer:\n return assetTransferItxnParamsType\n case TransactionKind.afrz:\n return assetFreezeItxnParamsType\n case TransactionKind.appl:\n return applicationCallItxnParamsType\n default:\n throw new Error('TODO')\n //return anyInnerTransaction\n }\n}\nexport function getGroupTransactionType(kind: TransactionKind | undefined): GroupTransactionPType {\n switch (kind) {\n case TransactionKind.pay:\n return paymentGtxnType\n case TransactionKind.keyreg:\n return keyRegistrationGtxnType\n case TransactionKind.acfg:\n return assetConfigGtxnType\n case TransactionKind.axfer:\n return assetTransferGtxnType\n case TransactionKind.afrz:\n return assetFreezeGtxnType\n case TransactionKind.appl:\n return applicationCallGtxnType\n default:\n return anyGtxnType\n }\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { Expression } from '../../../awst/nodes'\nimport { IntegerConstant } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport type { TxnFieldData } from '../../../awst/txn-fields'\nimport { TxnFields } from '../../../awst/txn-fields'\nimport { Constants } from '../../../constants'\nimport { logger } from '../../../logger'\nimport { invariant } from '../../../util'\nimport type { PType } from '../../ptypes'\nimport { GroupTransactionPType, TransactionFunctionType, uint64PType } from '../../ptypes'\nimport { instanceEb } from '../../type-registry'\nimport type { NodeBuilder } from '../index'\nimport { FunctionBuilder, InstanceExpressionBuilder } from '../index'\nimport { parseFunctionArgs } from '../util/arg-parsing'\nimport { anyTxnFields, txnKindToFields } from './txn-fields'\nimport { getGroupTransactionType } from './util'\n\nexport class GroupTransactionExpressionBuilder extends InstanceExpressionBuilder<GroupTransactionPType> {\n constructor(expr: Expression, ptype: PType) {\n invariant(ptype instanceof GroupTransactionPType, 'ptype must be GroupTransactionPType')\n super(expr, ptype)\n }\n\n hasProperty(name: string): boolean {\n const txnKind = this.ptype.kind\n const fields = txnKind === undefined ? anyTxnFields : txnKindToFields[txnKind]\n return name in fields\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n const txnKind = this.ptype.kind\n const fields = txnKind === undefined ? anyTxnFields : txnKindToFields[txnKind]\n if (name in fields) {\n const [field, returnType] = fields[name as keyof typeof fields]\n const data = TxnFields[field]\n\n if (data.numValues === 1) {\n return instanceEb(\n nodeFactory.intrinsicCall({\n sourceLocation,\n stackArgs: [this._expr],\n immediates: [data.immediate],\n wtype: data.wtype,\n opCode: 'gtxns',\n }),\n returnType,\n )\n } else {\n return new IndexedTransactionFieldFunctionBuilder(this._expr, {\n txnData: data,\n returnType,\n memberName: name,\n })\n }\n }\n return super.memberAccess(name, sourceLocation)\n }\n}\n\nexport class GroupTransactionFunctionBuilder extends FunctionBuilder {\n readonly ptype: TransactionFunctionType\n\n constructor(sourceLocation: SourceLocation, ptype: PType) {\n super(sourceLocation)\n invariant(ptype instanceof TransactionFunctionType, 'ptype must be instance of TransactionFunctionType')\n this.ptype = ptype\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [groupIndexBuilder],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n callLocation: sourceLocation,\n funcName: this.ptype.name,\n argSpec: (a) => [a.required(uint64PType)],\n })\n const txnPType = getGroupTransactionType(this.ptype.kind)\n const groupIndex = groupIndexBuilder.resolve()\n if (groupIndex instanceof IntegerConstant && groupIndex.value >= Constants.algo.maxTransactionGroupSize) {\n logger.error(groupIndex.sourceLocation, `transaction group index should be less than ${Constants.algo.maxTransactionGroupSize}`)\n }\n\n return new GroupTransactionExpressionBuilder(\n nodeFactory.groupTransactionReference({\n index: groupIndex,\n wtype: txnPType.wtype,\n sourceLocation,\n }),\n txnPType,\n )\n }\n}\n\nclass IndexedTransactionFieldFunctionBuilder extends FunctionBuilder {\n constructor(\n private gtxn: Expression,\n private config: { txnData: TxnFieldData; returnType: PType; memberName: string },\n ) {\n super(gtxn.sourceLocation)\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [index],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n callLocation: sourceLocation,\n funcName: this.config.memberName,\n argSpec: (a) => [a.required(uint64PType)],\n })\n\n return instanceEb(\n nodeFactory.intrinsicCall({\n sourceLocation,\n stackArgs: [this.gtxn, index.resolve()],\n immediates: [this.config.txnData.immediate],\n wtype: this.config.txnData.wtype,\n opCode: 'gtxnsas',\n }),\n this.config.returnType,\n )\n }\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { Expression } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport { type TxnField, type TxnFieldData, TxnFields } from '../../../awst/txn-fields'\nimport { invariant } from '../../../util'\nimport type { PType } from '../../ptypes'\nimport { InnerTransactionPType, uint64PType } from '../../ptypes'\nimport { instanceEb } from '../../type-registry'\nimport type { NodeBuilder } from '../index'\nimport { FunctionBuilder, InstanceExpressionBuilder } from '../index'\nimport { parseFunctionArgs } from '../util/arg-parsing'\nimport { anyTxnFields, txnKindToFields } from './txn-fields'\n\nexport class InnerTransactionExpressionBuilder extends InstanceExpressionBuilder<InnerTransactionPType> {\n constructor(expr: Expression, ptype: PType) {\n invariant(ptype instanceof InnerTransactionPType, 'ptype must be InnerTransactionPType')\n super(expr, ptype)\n }\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n const txnKind = this.ptype.kind\n const fields = txnKind === undefined ? anyTxnFields : txnKindToFields[txnKind]\n if (name in fields) {\n const [field, returnType] = fields[name as keyof typeof fields]\n const data = TxnFields[field]\n\n if (data.numValues === 1) {\n return instanceEb(\n nodeFactory.innerTransactionField({\n sourceLocation,\n itxn: this.resolve(),\n arrayIndex: null,\n field,\n wtype: data.wtype,\n }),\n returnType,\n )\n } else {\n return new IndexedTransactionFieldFunctionBuilder(this._expr, {\n txnData: data,\n returnType,\n memberName: name,\n field,\n })\n }\n }\n return super.memberAccess(name, sourceLocation)\n }\n}\n\nclass IndexedTransactionFieldFunctionBuilder extends FunctionBuilder {\n constructor(\n private gtxn: Expression,\n private config: { txnData: TxnFieldData; returnType: PType; memberName: string; field: TxnField },\n ) {\n super(gtxn.sourceLocation)\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [index],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n callLocation: sourceLocation,\n funcName: this.config.memberName,\n argSpec: (a) => [a.required(uint64PType)],\n })\n\n return instanceEb(\n nodeFactory.innerTransactionField({\n sourceLocation,\n itxn: this.gtxn,\n arrayIndex: index.resolve(),\n field: this.config.field,\n wtype: this.config.txnData.wtype,\n }),\n this.config.returnType,\n )\n }\n}\n","import type { TransactionKind } from '../../../awst/models'\nimport { nodeFactory } from '../../../awst/node-factory'\nimport type { Expression } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport { TxnField, TxnFields } from '../../../awst/txn-fields'\nimport { logger } from '../../../logger'\nimport { codeInvariant, invariant } from '../../../util'\nimport type { PType } from '../../ptypes'\nimport { ItxnParamsPType, ObjectPType, submitGroupItxnFunction, TransactionFunctionType, TuplePType } from '../../ptypes'\nimport { instanceEb } from '../../type-registry'\nimport type { InstanceBuilder, NodeBuilder } from '../index'\nimport { FunctionBuilder, InstanceExpressionBuilder } from '../index'\nimport { isStaticallyIterable, StaticIterator } from '../traits/static-iterator'\nimport { parseFunctionArgs } from '../util/arg-parsing'\nimport { resolveCompatExpression } from '../util/resolve-compat-builder'\nimport { InnerTransactionExpressionBuilder } from './inner-transactions'\nimport { anyTxnFields, txnKindToFields } from './txn-fields'\nimport { getInnerTransactionType, getItxnParamsType } from './util'\n\nexport class ItxnParamsFactoryFunctionBuilder extends FunctionBuilder {\n readonly ptype: TransactionFunctionType\n\n constructor(sourceLocation: SourceLocation, ptype: PType) {\n super(sourceLocation)\n invariant(ptype instanceof TransactionFunctionType, 'ptype must be TransactionFunctionType')\n this.ptype = ptype\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [initialFields],\n } = parseFunctionArgs({\n args,\n typeArgs,\n callLocation: sourceLocation,\n genericTypeArgs: 0,\n funcName: this.ptype.name,\n argSpec: (a) => [a.required()],\n })\n const mappedFields = new Map<TxnField, Expression>()\n // Set default fee to 0 (transaction will be paid for from transaction group budget, rather than from the application balance)\n mappedFields.set(TxnField.Fee, nodeFactory.uInt64Constant({ value: 0n, sourceLocation }))\n if (this.ptype.kind) mappedFields.set(TxnField.TypeEnum, nodeFactory.uInt64Constant({ value: BigInt(this.ptype.kind), sourceLocation }))\n mapTransactionFields(mappedFields, initialFields, this.ptype.kind, sourceLocation)\n const fieldsType = getItxnParamsType(this.ptype.kind)\n\n return new ItxnParamsExpressionBuilder(\n nodeFactory.createInnerTransaction({\n fields: mappedFields,\n sourceLocation,\n wtype: fieldsType.wtype,\n }),\n fieldsType,\n )\n }\n}\n\nfunction mapTransactionFields(\n mappedFields: Map<TxnField, Expression>,\n fields: InstanceBuilder,\n kind: TransactionKind | undefined,\n sourceLocation: SourceLocation,\n) {\n codeInvariant(fields.ptype instanceof ObjectPType, 'fields argument must be an object type')\n const validFields: Record<string, readonly [TxnField, PType]> = kind !== undefined ? txnKindToFields[kind] : anyTxnFields\n for (const [prop] of fields.ptype.orderedProperties()) {\n if (prop in validFields) {\n const [txnField, fieldType] = validFields[prop as keyof typeof validFields]\n const txnFieldData = TxnFields[txnField]\n const propValue = fields.memberAccess(prop, sourceLocation)\n if (txnField === TxnField.ApplicationArgs) {\n codeInvariant(isStaticallyIterable(propValue), 'Unsupported expression for appArgs', propValue.sourceLocation)\n mappedFields.set(\n txnField,\n nodeFactory.tupleExpression({\n items: propValue[StaticIterator]().map((i) => i.toBytes(propValue.sourceLocation)),\n sourceLocation: propValue.sourceLocation,\n }),\n )\n } else if (txnFieldData.numValues > 1) {\n if (isStaticallyIterable(propValue)) {\n mappedFields.set(\n txnField,\n nodeFactory.tupleExpression({\n items: propValue[StaticIterator]().map((i) => resolveCompatExpression(i, fieldType)),\n sourceLocation: propValue.sourceLocation,\n }),\n )\n } else if (txnFieldData.arrayPromote) {\n mappedFields.set(\n txnField,\n nodeFactory.tupleExpression({\n items: [resolveCompatExpression(propValue, fieldType)],\n sourceLocation: propValue.sourceLocation,\n }),\n )\n } else {\n logger.error(propValue.sourceLocation, `Unsupported expression for ${prop}`)\n }\n } else {\n mappedFields.set(txnField, resolveCompatExpression(propValue, fieldType))\n }\n } else {\n logger.warn(sourceLocation, `Ignoring additional property: ${prop}`)\n }\n }\n}\n\nabstract class InnerTxnFieldsMethodBuilder extends FunctionBuilder {\n constructor(\n protected builder: ItxnParamsExpressionBuilder,\n sourceLocation: SourceLocation,\n ) {\n super(sourceLocation)\n }\n}\n\nclass SubmitInnerTxnMethodBuilder extends InnerTxnFieldsMethodBuilder {\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n parseFunctionArgs({\n args,\n typeArgs,\n callLocation: sourceLocation,\n genericTypeArgs: 0,\n funcName: 'submit',\n argSpec: () => [],\n })\n const transactionPType = getInnerTransactionType(this.builder.ptype.kind)\n return new InnerTransactionExpressionBuilder(\n nodeFactory.submitInnerTransaction({\n itxns: [this.builder.resolve()],\n wtype: transactionPType.wtype,\n sourceLocation,\n }),\n transactionPType,\n )\n }\n}\n\nexport class SubmitItxnGroupFunctionBuilder extends FunctionBuilder {\n ptype = submitGroupItxnFunction\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const { args: itxnParams } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 1,\n callLocation: sourceLocation,\n funcName: this.typeDescription,\n argSpec: (a) => [a.required(ItxnParamsPType), ...args.slice(1).map((_) => a.required(ItxnParamsPType))],\n })\n const resultType = new TuplePType({\n items: itxnParams.map((p, i) => {\n codeInvariant(p.ptype instanceof ItxnParamsPType, `Argument ${i} must be an itxn params type`, p.sourceLocation)\n return getInnerTransactionType(p.ptype.kind)\n }),\n })\n\n return instanceEb(\n nodeFactory.submitInnerTransaction({\n itxns: itxnParams.map((p) => p.resolve()),\n wtype: resultType.wtype,\n sourceLocation,\n }),\n resultType,\n )\n }\n}\n\nclass SetInnerTxnMethodBuilder extends InnerTxnFieldsMethodBuilder {\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [updatedFields],\n } = parseFunctionArgs({\n args,\n typeArgs,\n callLocation: sourceLocation,\n genericTypeArgs: 0,\n funcName: 'set',\n argSpec: (a) => [a.required()],\n })\n\n const mappedFields = new Map<TxnField, Expression>()\n const fieldsType = this.builder.ptype\n\n mapTransactionFields(mappedFields, updatedFields, fieldsType.kind, sourceLocation)\n\n return new ItxnParamsExpressionBuilder(\n nodeFactory.updateInnerTransaction({\n itxn: this.builder.resolve(),\n fields: mappedFields,\n sourceLocation,\n wtype: fieldsType.wtype,\n }),\n fieldsType,\n )\n }\n}\nclass CopyInnerTxnMethodBuilder extends InnerTxnFieldsMethodBuilder {\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n parseFunctionArgs({\n args,\n typeArgs,\n callLocation: sourceLocation,\n genericTypeArgs: 0,\n funcName: 'copy',\n argSpec: () => [],\n })\n\n return new ItxnParamsExpressionBuilder(\n nodeFactory.copy({\n value: this.builder.resolve(),\n sourceLocation,\n }),\n this.builder.ptype,\n )\n }\n}\n\nexport class ItxnParamsExpressionBuilder extends InstanceExpressionBuilder<ItxnParamsPType> {\n constructor(expr: Expression, ptype: PType) {\n invariant(ptype instanceof ItxnParamsPType, 'ptype must be InnerTransactionFieldsPType')\n super(expr, ptype)\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n switch (name) {\n case 'submit':\n return new SubmitInnerTxnMethodBuilder(this, sourceLocation)\n case 'set':\n return new SetInnerTxnMethodBuilder(this, sourceLocation)\n case 'copy':\n return new CopyInnerTxnMethodBuilder(this, sourceLocation)\n }\n return super.memberAccess(name, sourceLocation)\n }\n}\n","import { nodeFactory } from '../../awst/node-factory'\nimport type { Expression } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { wtypes } from '../../awst/wtypes'\nimport { invariant } from '../../util'\nimport type { PType, PTypeOrClass } from '../ptypes'\nimport { Uint64EnumMemberType, Uint64EnumType, uint64PType } from '../ptypes'\nimport { instanceEb } from '../type-registry'\nimport type { BuilderComparisonOp, InstanceBuilder } from './index'\nimport { InstanceExpressionBuilder, NodeBuilder } from './index'\nimport { requireExpressionOfType } from './util'\nimport { compareUint64 } from './util/compare-uint64'\n\nexport class Uint64EnumTypeBuilder extends NodeBuilder {\n readonly ptype: Uint64EnumType\n constructor(sourceLocation: SourceLocation, ptype: PType) {\n super(sourceLocation)\n invariant(ptype instanceof Uint64EnumType, 'ptype must be Uint64EnumType')\n this.ptype = ptype\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n if (name in this.ptype.members) {\n return new Uint64EnumMemberExpressionBuilder(\n nodeFactory.uInt64Constant({\n value: this.ptype.members[name],\n sourceLocation,\n }),\n this.ptype.memberType,\n )\n }\n return super.memberAccess(name, sourceLocation)\n }\n}\n\nexport class Uint64EnumMemberExpressionBuilder extends InstanceExpressionBuilder<Uint64EnumMemberType> {\n constructor(expr: Expression, ptype: PType) {\n invariant(ptype instanceof Uint64EnumMemberType, 'ptype must be Uint64EnumType')\n super(expr, ptype)\n }\n\n compare(other: InstanceBuilder, op: BuilderComparisonOp, sourceLocation: SourceLocation): InstanceBuilder {\n const otherExpr = requireExpressionOfType(other, uint64PType)\n return compareUint64(this._expr, otherExpr, op, sourceLocation, this.typeDescription)\n }\n\n resolvableToPType(ptype: PTypeOrClass): boolean {\n return ptype.equals(this.ptype) || ptype.equals(uint64PType)\n }\n resolveToPType(ptype: PTypeOrClass): InstanceBuilder {\n if (ptype.equals(uint64PType)) {\n return instanceEb(\n nodeFactory.reinterpretCast({\n expr: this._expr,\n wtype: wtypes.uint64WType,\n sourceLocation: this.sourceLocation,\n }),\n uint64PType,\n )\n }\n return super.resolveToPType(ptype)\n }\n}\n","import type { Expression, LValue } from '../../awst/nodes'\nimport { CodeError } from '../../errors'\nimport type { PType } from '../ptypes'\nimport { InstanceExpressionBuilder } from './index'\n\nexport class UnresolvableExpressionBuilder extends InstanceExpressionBuilder<PType> {\n resolve(): Expression {\n throw new CodeError(`Cannot resolve expression of type ${this.typeDescription}`, { sourceLocation: this.sourceLocation })\n }\n\n resolveLValue(): LValue {\n throw new CodeError(`Expression of type ${this.typeDescription} is not a valid assignment target`, {\n sourceLocation: this.sourceLocation,\n })\n }\n}\n","import type { awst } from '../../awst'\nimport { nodeFactory } from '../../awst/node-factory'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { wtypes } from '../../awst/wtypes'\nimport type { PType } from '../ptypes'\nimport { IterableIteratorGeneric, uint64PType } from '../ptypes'\nimport type { NodeBuilder } from './index'\nimport { FunctionBuilder } from './index'\nimport { IterableIteratorExpressionBuilder } from './iterable-iterator-expression-builder'\nimport { parseFunctionArgs } from './util/arg-parsing'\n\nexport class UrangeFunctionBuilder extends FunctionBuilder {\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const { args: uArgs } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n callLocation: sourceLocation,\n funcName: 'urange',\n argSpec: (a) => [a.required(uint64PType), ...args.slice(1, 3).map((_) => a.required(uint64PType))],\n })\n let expr: awst.Range\n if (uArgs.length === 1) {\n expr = nodeFactory.range({\n start: nodeFactory.uInt64Constant({ value: 0n, sourceLocation }),\n stop: uArgs[0].resolve(),\n step: nodeFactory.uInt64Constant({ value: 1n, sourceLocation }),\n sourceLocation,\n wtype: wtypes.uint64RangeWType,\n })\n } else if (uArgs.length === 2) {\n expr = nodeFactory.range({\n start: uArgs[0].resolve(),\n stop: uArgs[1].resolve(),\n step: nodeFactory.uInt64Constant({ value: 0n, sourceLocation }),\n sourceLocation,\n wtype: wtypes.uint64RangeWType,\n })\n } else {\n expr = nodeFactory.range({\n start: uArgs[0].resolve(),\n stop: uArgs[1].resolve(),\n step: uArgs[2].resolve(),\n sourceLocation,\n wtype: wtypes.uint64RangeWType,\n })\n }\n return new IterableIteratorExpressionBuilder(expr, IterableIteratorGeneric.parameterise([uint64PType]))\n }\n}\n","import { Arc28EmitFunctionBuilder } from '../eb/arc28/arc-28-emit-function-builder'\nimport { Arc4AbiMethodDecoratorBuilder, Arc4BareMethodDecoratorBuilder } from '../eb/arc4-bare-method-decorator-builder'\nimport {\n AddressClassBuilder,\n AddressExpressionBuilder,\n DynamicArrayClassBuilder,\n DynamicArrayExpressionBuilder,\n DynamicBytesClassBuilder,\n DynamicBytesExpressionBuilder,\n StaticArrayClassBuilder,\n StaticArrayExpressionBuilder,\n StaticBytesClassBuilder,\n StaticBytesExpressionBuilder,\n} from '../eb/arc4/arrays'\nimport { BoolClassBuilder, BoolExpressionBuilder } from '../eb/arc4/bool'\nimport { StrClassBuilder, StrExpressionBuilder } from '../eb/arc4/string'\nimport { StructClassBuilder, StructExpressionBuilder } from '../eb/arc4/struct'\nimport { Arc4TupleClassBuilder, Arc4TupleExpressionBuilder } from '../eb/arc4/tuple'\nimport { UFixedNxMClassBuilder, UFixedNxMExpressionBuilder } from '../eb/arc4/ufixed'\nimport { classBuilderForUintNAlias, UintNClassBuilder, UintNExpressionBuilder } from '../eb/arc4/uintn'\nimport {\n Arc4EncodedLengthFunctionBuilder,\n DecodeArc4FunctionBuilder,\n EncodeArc4FunctionBuilder,\n InterpretAsArc4FunctionBuilder,\n MethodSelectorFunctionBuilder,\n} from '../eb/arc4/util'\nimport { AssertFunctionBuilder, ErrFunctionBuilder } from '../eb/assert-function-builder'\nimport { AssertMatchFunctionBuilder } from '../eb/assert-match-function-builder'\nimport { BigUintExpressionBuilder, BigUintFunctionBuilder } from '../eb/biguint-expression-builder'\nimport { BooleanExpressionBuilder, BooleanFunctionBuilder } from '../eb/boolean-expression-builder'\nimport { BytesExpressionBuilder, BytesFunctionBuilder } from '../eb/bytes-expression-builder'\nimport { CompileFunctionBuilder } from '../eb/compiled/compile-function'\nimport { ContractClassBuilder, ContractOptionsDecoratorBuilder } from '../eb/contract-builder'\nimport { EnsureBudgetFunctionBuilder } from '../eb/ensure-budget'\nimport { FreeSubroutineExpressionBuilder } from '../eb/free-subroutine-expression-builder'\nimport { IntrinsicEnumBuilder } from '../eb/intrinsic-enum-builder'\nimport { IterableIteratorExpressionBuilder } from '../eb/iterable-iterator-expression-builder'\nimport { ObjectExpressionBuilder } from '../eb/literal/object-expression-builder'\nimport { LogFunctionBuilder } from '../eb/log-function-builder'\nimport { LogicSigClassBuilder, LogicSigOptionsDecoratorBuilder } from '../eb/logic-sig-builder'\nimport { MatchFunctionBuilder } from '../eb/match-function-builder'\nimport { MutableArrayClassBuilder, MutableArrayExpressionBuilder } from '../eb/mutable-arrays'\nimport { NamespaceBuilder } from '../eb/namespace-builder'\nimport { NativeArrayExpressionBuilder } from '../eb/native-array-expression-builder'\nimport { NeverExpressionBuilder } from '../eb/never-expression-builder'\nimport { FreeIntrinsicOpBuilder, IntrinsicOpGroupBuilder, IntrinsicOpGroupOrFunctionTypeBuilder } from '../eb/op-module-builder'\nimport { AccountExpressionBuilder, AccountFunctionBuilder } from '../eb/reference/account'\nimport { ApplicationExpressionBuilder, ApplicationFunctionBuilder } from '../eb/reference/application'\nimport { AssetExpressionBuilder, AssetFunctionBuilder } from '../eb/reference/asset'\nimport {\n BoxExpressionBuilder,\n BoxFunctionBuilder,\n BoxMapExpressionBuilder,\n BoxMapFunctionBuilder,\n BoxRefExpressionBuilder,\n BoxRefFunctionBuilder,\n} from '../eb/storage/box'\nimport { GlobalStateExpressionBuilder, GlobalStateFunctionBuilder } from '../eb/storage/global-state'\nimport { LocalStateExpressionBuilder, LocalStateFunctionBuilder } from '../eb/storage/local-state'\nimport { StringExpressionBuilder, StringFunctionBuilder } from '../eb/string-expression-builder'\nimport { TemplateVarFunctionBuilder } from '../eb/template-var'\nimport { GroupTransactionExpressionBuilder, GroupTransactionFunctionBuilder } from '../eb/transactions/group-transactions'\nimport {\n ItxnParamsExpressionBuilder,\n ItxnParamsFactoryFunctionBuilder,\n SubmitItxnGroupFunctionBuilder,\n} from '../eb/transactions/inner-transaction-params'\nimport { InnerTransactionExpressionBuilder } from '../eb/transactions/inner-transactions'\nimport { TupleExpressionBuilder } from '../eb/tuple-expression-builder'\nimport { Uint64EnumMemberExpressionBuilder, Uint64EnumTypeBuilder } from '../eb/uint64-enum-type-builder'\nimport { UInt64ExpressionBuilder, UInt64FunctionBuilder } from '../eb/uint64-expression-builder'\nimport { UnresolvableExpressionBuilder } from '../eb/unresolvable-expression-builder'\nimport { UrangeFunctionBuilder } from '../eb/urange-function'\nimport { VoidExpressionBuilder } from '../eb/void-expression-builder'\nimport { OP_METADATA } from '../op-metadata'\nimport type { TypeRegistry } from '../type-registry'\nimport {\n AddressClass,\n arc4AddressAlias,\n ARC4BoolClass,\n arc4BooleanType,\n arc4ByteAlias,\n arc4EncodedLengthFunction,\n ARC4StrClass,\n arc4StringType,\n ARC4StructClass,\n ARC4StructType,\n Arc4TupleClass,\n Arc4TupleGeneric,\n ARC4TupleType,\n ByteClass,\n decodeArc4Function,\n DynamicArrayConstructor,\n DynamicArrayGeneric,\n DynamicArrayType,\n DynamicBytesConstructor,\n DynamicBytesType,\n encodeArc4Function,\n interpretAsArc4Function,\n methodSelectorFunction,\n StaticArrayConstructor,\n StaticArrayGeneric,\n StaticArrayType,\n StaticBytesConstructor,\n StaticBytesGeneric,\n StaticBytesType,\n UFixedNxMClass,\n UFixedNxMGeneric,\n UFixedNxMType,\n UintN128Class,\n UintN16Class,\n UintN256Class,\n UintN32Class,\n UintN64Class,\n UintN8Class,\n UintNClass,\n UintNGeneric,\n UintNType,\n} from './arc4-types'\nimport {\n AccountFunction,\n accountPType,\n anyGtxnType,\n applicationCallGtxnType,\n applicationCallItxnFn,\n applicationCallItxnParamsType,\n ApplicationFunctionType,\n applicationItxnType,\n applicationPType,\n ApplicationTxnFunction,\n arc28EmitFunction,\n arc4AbiMethodDecorator,\n arc4BareMethodDecorator,\n ArrayPType,\n assertFunction,\n assertMatchFunction,\n assetConfigGtxnType,\n assetConfigItxnFn,\n assetConfigItxnParamsType,\n assetConfigItxnType,\n AssetConfigTxnFunction,\n assetFreezeGtxnType,\n assetFreezeItxnFn,\n assetFreezeItxnParamsType,\n assetFreezeItxnType,\n AssetFreezeTxnFunction,\n AssetFunction,\n assetPType,\n assetTransferGtxnType,\n assetTransferItxnFn,\n assetTransferItxnParamsType,\n assetTransferItxnType,\n AssetTransferTxnFunction,\n BigUintFunction,\n biguintPType,\n BooleanFunction,\n boolPType,\n BoxFunction,\n BoxGeneric,\n BoxMapFunction,\n BoxMapGeneric,\n BoxMapPType,\n BoxPType,\n BoxRefFunction,\n boxRefType,\n BytesFunction,\n bytesPType,\n ClassMethodDecoratorContext,\n compileFunctionType,\n ContractClassPType,\n contractOptionsDecorator,\n ensureBudgetFunction,\n errFunction,\n FunctionPType,\n GeneratorGeneric,\n GeneratorType,\n GlobalStateFunction,\n GlobalStateGeneric,\n GlobalStateType,\n IntrinsicFunctionGroupType,\n IntrinsicFunctionGroupTypeType,\n IntrinsicFunctionType,\n IntrinsicFunctionTypeType,\n IterableIteratorGeneric,\n IterableIteratorType,\n keyRegistrationGtxnType,\n keyRegistrationItxnFn,\n keyRegistrationItxnParamsType,\n keyRegistrationItxnType,\n KeyRegistrationTxnFunction,\n LocalStateFunction,\n LocalStateGeneric,\n LocalStateType,\n logFunction,\n logicSigOptionsDecorator,\n LogicSigPType,\n matchFunction,\n MutableArrayConstructor,\n MutableArrayGeneric,\n MutableArrayType,\n NamespacePType,\n neverPType,\n ObjectPType,\n onCompleteActionType,\n opUpFeeSourceType,\n paymentGtxnType,\n paymentItxnFn,\n paymentItxnParamsType,\n paymentItxnType,\n PaymentTxnFunction,\n PolytypeClassMethodHelper,\n PromiseGeneric,\n PromiseType,\n StringFunction,\n stringPType,\n submitGroupItxnFunction,\n SuperPrototypeSelector,\n SuperPrototypeSelectorGeneric,\n TemplateVarFunction,\n TransactionFunction,\n transactionTypeType,\n TuplePType,\n Uint64EnumMemberType,\n Uint64Function,\n uint64PType,\n urangeFunction,\n voidPType,\n} from './index'\nimport { ALL_OP_ENUMS } from './op-ptypes'\n\nexport function registerPTypes(typeRegistry: TypeRegistry) {\n if (typeRegistry.hasRegistrations) {\n return\n }\n // Primitives\n typeRegistry.register({ ptype: neverPType, instanceEb: NeverExpressionBuilder })\n typeRegistry.register({ ptype: boolPType, instanceEb: BooleanExpressionBuilder })\n typeRegistry.register({ ptype: BooleanFunction, singletonEb: BooleanFunctionBuilder })\n typeRegistry.register({ ptype: uint64PType, instanceEb: UInt64ExpressionBuilder })\n typeRegistry.register({ ptype: Uint64Function, singletonEb: UInt64FunctionBuilder })\n typeRegistry.register({ ptype: biguintPType, instanceEb: BigUintExpressionBuilder })\n typeRegistry.register({ ptype: BigUintFunction, singletonEb: BigUintFunctionBuilder })\n typeRegistry.register({ ptype: bytesPType, instanceEb: BytesExpressionBuilder })\n typeRegistry.register({ ptype: BytesFunction, singletonEb: BytesFunctionBuilder })\n typeRegistry.register({ ptype: stringPType, instanceEb: StringExpressionBuilder })\n typeRegistry.register({ ptype: voidPType, instanceEb: VoidExpressionBuilder })\n typeRegistry.register({ ptype: StringFunction, singletonEb: StringFunctionBuilder })\n\n // Compound\n typeRegistry.register({ ptype: ArrayPType, instanceEb: NativeArrayExpressionBuilder })\n typeRegistry.register({ ptype: TuplePType, instanceEb: TupleExpressionBuilder })\n typeRegistry.register({ ptype: ObjectPType, instanceEb: ObjectExpressionBuilder })\n\n typeRegistry.register({ ptype: MutableArrayConstructor, singletonEb: MutableArrayClassBuilder })\n typeRegistry.registerGeneric({ generic: MutableArrayGeneric, ptype: MutableArrayType, instanceEb: MutableArrayExpressionBuilder })\n\n // Unresolvable\n typeRegistry.registerGeneric({ ptype: GeneratorType, generic: GeneratorGeneric, instanceEb: UnresolvableExpressionBuilder })\n typeRegistry.registerGeneric({ ptype: PromiseType, generic: PromiseGeneric, instanceEb: UnresolvableExpressionBuilder })\n typeRegistry.register({ ptype: ClassMethodDecoratorContext, instanceEb: UnresolvableExpressionBuilder })\n typeRegistry.registerGeneric({\n ptype: SuperPrototypeSelector,\n generic: SuperPrototypeSelectorGeneric,\n instanceEb: UnresolvableExpressionBuilder,\n })\n typeRegistry.register({ ptype: PolytypeClassMethodHelper, instanceEb: UnresolvableExpressionBuilder })\n\n // Lib functions\n typeRegistry.register({ ptype: logFunction, singletonEb: LogFunctionBuilder })\n typeRegistry.register({ ptype: assertFunction, singletonEb: AssertFunctionBuilder })\n typeRegistry.register({ ptype: errFunction, singletonEb: ErrFunctionBuilder })\n typeRegistry.register({ ptype: matchFunction, singletonEb: MatchFunctionBuilder })\n typeRegistry.register({ ptype: assertMatchFunction, singletonEb: AssertMatchFunctionBuilder })\n typeRegistry.register({ ptype: ensureBudgetFunction, singletonEb: EnsureBudgetFunctionBuilder })\n typeRegistry.register({ ptype: urangeFunction, singletonEb: UrangeFunctionBuilder })\n typeRegistry.register({ ptype: TemplateVarFunction, singletonEb: TemplateVarFunctionBuilder })\n typeRegistry.register({ ptype: compileFunctionType, singletonEb: CompileFunctionBuilder })\n typeRegistry.register({ ptype: arc28EmitFunction, singletonEb: Arc28EmitFunctionBuilder })\n\n typeRegistry.register({ ptype: ContractClassPType, singletonEb: ContractClassBuilder })\n typeRegistry.register({ ptype: contractOptionsDecorator, singletonEb: ContractOptionsDecoratorBuilder })\n typeRegistry.register({ ptype: LogicSigPType, singletonEb: LogicSigClassBuilder })\n typeRegistry.register({ ptype: logicSigOptionsDecorator, singletonEb: LogicSigOptionsDecoratorBuilder })\n\n for (const enumType of [opUpFeeSourceType, onCompleteActionType, transactionTypeType]) {\n typeRegistry.register({ ptype: enumType, singletonEb: Uint64EnumTypeBuilder })\n typeRegistry.register({ ptype: enumType.memberType, instanceEb: Uint64EnumMemberExpressionBuilder })\n }\n typeRegistry.register({ ptype: Uint64EnumMemberType, instanceEb: Uint64EnumMemberExpressionBuilder })\n\n typeRegistry.registerGeneric({\n generic: IterableIteratorGeneric,\n ptype: IterableIteratorType,\n instanceEb: IterableIteratorExpressionBuilder,\n })\n\n typeRegistry.register({ ptype: FunctionPType, singletonEb: FreeSubroutineExpressionBuilder })\n\n // Op types\n typeRegistry.register({ ptype: NamespacePType, singletonEb: NamespaceBuilder })\n for (const enumPType of ALL_OP_ENUMS) {\n typeRegistry.register({ ptype: enumPType, singletonEb: IntrinsicEnumBuilder })\n }\n for (const [name, metadata] of Object.entries(OP_METADATA)) {\n if (metadata.type === 'op-grouping') {\n typeRegistry.register({\n ptype: new IntrinsicFunctionGroupType({\n name,\n }),\n singletonEb: IntrinsicOpGroupBuilder,\n })\n typeRegistry.register({\n ptype: new IntrinsicFunctionGroupTypeType({\n name: `${name}Type`,\n }),\n instanceEb: IntrinsicOpGroupOrFunctionTypeBuilder,\n })\n } else {\n typeRegistry.register({\n ptype: new IntrinsicFunctionType({\n name,\n }),\n singletonEb: FreeIntrinsicOpBuilder,\n })\n typeRegistry.register({\n ptype: new IntrinsicFunctionTypeType({\n name: `${name}Type`,\n }),\n instanceEb: IntrinsicOpGroupOrFunctionTypeBuilder,\n })\n }\n }\n\n // State\n typeRegistry.register({ ptype: GlobalStateFunction, singletonEb: GlobalStateFunctionBuilder })\n typeRegistry.registerGeneric({ generic: GlobalStateGeneric, ptype: GlobalStateType, instanceEb: GlobalStateExpressionBuilder })\n typeRegistry.register({ ptype: LocalStateFunction, singletonEb: LocalStateFunctionBuilder })\n typeRegistry.registerGeneric({ generic: LocalStateGeneric, ptype: LocalStateType, instanceEb: LocalStateExpressionBuilder })\n typeRegistry.register({ ptype: BoxFunction, singletonEb: BoxFunctionBuilder })\n typeRegistry.registerGeneric({ generic: BoxGeneric, ptype: BoxPType, instanceEb: BoxExpressionBuilder })\n typeRegistry.register({ ptype: BoxMapFunction, singletonEb: BoxMapFunctionBuilder })\n typeRegistry.registerGeneric({ generic: BoxMapGeneric, ptype: BoxMapPType, instanceEb: BoxMapExpressionBuilder })\n typeRegistry.register({ ptype: BoxRefFunction, singletonEb: BoxRefFunctionBuilder })\n typeRegistry.register({ ptype: boxRefType, instanceEb: BoxRefExpressionBuilder })\n\n // Reference types\n typeRegistry.register({ ptype: ApplicationFunctionType, singletonEb: ApplicationFunctionBuilder })\n typeRegistry.register({ ptype: applicationPType, instanceEb: ApplicationExpressionBuilder })\n typeRegistry.register({ ptype: AccountFunction, singletonEb: AccountFunctionBuilder })\n typeRegistry.register({ ptype: accountPType, instanceEb: AccountExpressionBuilder })\n typeRegistry.register({ ptype: AssetFunction, singletonEb: AssetFunctionBuilder })\n typeRegistry.register({ ptype: assetPType, instanceEb: AssetExpressionBuilder })\n\n // ARC4 encoded\n typeRegistry.register({ ptype: UintNClass, singletonEb: UintNClassBuilder })\n typeRegistry.register({ ptype: arc4AbiMethodDecorator, singletonEb: Arc4AbiMethodDecoratorBuilder })\n typeRegistry.register({ ptype: arc4BareMethodDecorator, singletonEb: Arc4BareMethodDecoratorBuilder })\n typeRegistry.register({ ptype: ByteClass, singletonEb: classBuilderForUintNAlias(ByteClass, arc4ByteAlias) })\n typeRegistry.register({ ptype: UintN8Class, singletonEb: classBuilderForUintNAlias(UintN8Class, new UintNType({ n: 8n })) })\n typeRegistry.register({ ptype: UintN16Class, singletonEb: classBuilderForUintNAlias(UintN8Class, new UintNType({ n: 16n })) })\n typeRegistry.register({ ptype: UintN32Class, singletonEb: classBuilderForUintNAlias(UintN8Class, new UintNType({ n: 32n })) })\n typeRegistry.register({ ptype: UintN64Class, singletonEb: classBuilderForUintNAlias(UintN8Class, new UintNType({ n: 64n })) })\n typeRegistry.register({ ptype: UintN128Class, singletonEb: classBuilderForUintNAlias(UintN8Class, new UintNType({ n: 128n })) })\n typeRegistry.register({ ptype: UintN256Class, singletonEb: classBuilderForUintNAlias(UintN8Class, new UintNType({ n: 256n })) })\n typeRegistry.registerGeneric({ generic: UintNGeneric, ptype: UintNType, instanceEb: UintNExpressionBuilder })\n typeRegistry.register({ ptype: UFixedNxMClass, singletonEb: UFixedNxMClassBuilder })\n typeRegistry.registerGeneric({ generic: UFixedNxMGeneric, ptype: UFixedNxMType, instanceEb: UFixedNxMExpressionBuilder })\n typeRegistry.register({ ptype: arc4ByteAlias, instanceEb: UintNExpressionBuilder })\n typeRegistry.register({ ptype: DynamicArrayConstructor, singletonEb: DynamicArrayClassBuilder })\n typeRegistry.registerGeneric({ generic: DynamicArrayGeneric, ptype: DynamicArrayType, instanceEb: DynamicArrayExpressionBuilder })\n typeRegistry.register({ ptype: StaticArrayConstructor, singletonEb: StaticArrayClassBuilder })\n typeRegistry.registerGeneric({ generic: StaticArrayGeneric, ptype: StaticArrayType, instanceEb: StaticArrayExpressionBuilder })\n typeRegistry.register({ ptype: arc4AddressAlias, instanceEb: AddressExpressionBuilder })\n typeRegistry.register({ ptype: AddressClass, singletonEb: AddressClassBuilder })\n typeRegistry.register({ ptype: ARC4BoolClass, singletonEb: BoolClassBuilder })\n typeRegistry.register({ ptype: arc4BooleanType, instanceEb: BoolExpressionBuilder })\n typeRegistry.register({ ptype: arc4StringType, instanceEb: StrExpressionBuilder })\n typeRegistry.register({ ptype: ARC4StrClass, singletonEb: StrClassBuilder })\n typeRegistry.register({ ptype: Arc4TupleClass, singletonEb: Arc4TupleClassBuilder })\n typeRegistry.registerGeneric({ generic: Arc4TupleGeneric, ptype: ARC4TupleType, instanceEb: Arc4TupleExpressionBuilder })\n typeRegistry.register({ ptype: ARC4StructType, instanceEb: StructExpressionBuilder })\n typeRegistry.register({ ptype: ARC4StructClass, singletonEb: StructClassBuilder })\n typeRegistry.register({ ptype: DynamicBytesConstructor, singletonEb: DynamicBytesClassBuilder })\n typeRegistry.register({ ptype: StaticBytesConstructor, singletonEb: StaticBytesClassBuilder })\n typeRegistry.register({ ptype: DynamicBytesType, instanceEb: DynamicBytesExpressionBuilder })\n typeRegistry.registerGeneric({ generic: StaticBytesGeneric, ptype: StaticBytesType, instanceEb: StaticBytesExpressionBuilder })\n typeRegistry.register({ ptype: interpretAsArc4Function, singletonEb: InterpretAsArc4FunctionBuilder })\n typeRegistry.register({ ptype: encodeArc4Function, singletonEb: EncodeArc4FunctionBuilder })\n typeRegistry.register({ ptype: decodeArc4Function, singletonEb: DecodeArc4FunctionBuilder })\n typeRegistry.register({ ptype: methodSelectorFunction, singletonEb: MethodSelectorFunctionBuilder })\n typeRegistry.register({ ptype: arc4EncodedLengthFunction, singletonEb: Arc4EncodedLengthFunctionBuilder })\n\n // GTXN types\n typeRegistry.register({ ptype: paymentGtxnType, instanceEb: GroupTransactionExpressionBuilder })\n typeRegistry.register({ ptype: PaymentTxnFunction, singletonEb: GroupTransactionFunctionBuilder })\n typeRegistry.register({ ptype: keyRegistrationGtxnType, instanceEb: GroupTransactionExpressionBuilder })\n typeRegistry.register({ ptype: KeyRegistrationTxnFunction, singletonEb: GroupTransactionFunctionBuilder })\n typeRegistry.register({ ptype: assetConfigGtxnType, instanceEb: GroupTransactionExpressionBuilder })\n typeRegistry.register({ ptype: AssetConfigTxnFunction, singletonEb: GroupTransactionFunctionBuilder })\n typeRegistry.register({ ptype: assetTransferGtxnType, instanceEb: GroupTransactionExpressionBuilder })\n typeRegistry.register({ ptype: AssetTransferTxnFunction, singletonEb: GroupTransactionFunctionBuilder })\n typeRegistry.register({ ptype: assetFreezeGtxnType, instanceEb: GroupTransactionExpressionBuilder })\n typeRegistry.register({ ptype: AssetFreezeTxnFunction, singletonEb: GroupTransactionFunctionBuilder })\n typeRegistry.register({ ptype: applicationCallGtxnType, instanceEb: GroupTransactionExpressionBuilder })\n typeRegistry.register({ ptype: ApplicationTxnFunction, singletonEb: GroupTransactionFunctionBuilder })\n typeRegistry.register({ ptype: anyGtxnType, instanceEb: GroupTransactionExpressionBuilder })\n typeRegistry.register({ ptype: TransactionFunction, singletonEb: GroupTransactionFunctionBuilder })\n\n // ITXN Types\n typeRegistry.register({ ptype: paymentItxnFn, singletonEb: ItxnParamsFactoryFunctionBuilder })\n typeRegistry.register({ ptype: keyRegistrationItxnFn, singletonEb: ItxnParamsFactoryFunctionBuilder })\n typeRegistry.register({ ptype: assetConfigItxnFn, singletonEb: ItxnParamsFactoryFunctionBuilder })\n typeRegistry.register({ ptype: assetTransferItxnFn, singletonEb: ItxnParamsFactoryFunctionBuilder })\n typeRegistry.register({ ptype: assetFreezeItxnFn, singletonEb: ItxnParamsFactoryFunctionBuilder })\n typeRegistry.register({ ptype: applicationCallItxnFn, singletonEb: ItxnParamsFactoryFunctionBuilder })\n typeRegistry.register({ ptype: submitGroupItxnFunction, singletonEb: SubmitItxnGroupFunctionBuilder })\n\n typeRegistry.register({ ptype: paymentItxnType, instanceEb: InnerTransactionExpressionBuilder })\n typeRegistry.register({ ptype: keyRegistrationItxnType, instanceEb: InnerTransactionExpressionBuilder })\n typeRegistry.register({ ptype: assetConfigItxnType, instanceEb: InnerTransactionExpressionBuilder })\n typeRegistry.register({ ptype: assetTransferItxnType, instanceEb: InnerTransactionExpressionBuilder })\n typeRegistry.register({ ptype: assetFreezeItxnType, instanceEb: InnerTransactionExpressionBuilder })\n typeRegistry.register({ ptype: applicationItxnType, instanceEb: InnerTransactionExpressionBuilder })\n\n typeRegistry.register({ ptype: paymentItxnParamsType, instanceEb: ItxnParamsExpressionBuilder })\n typeRegistry.register({ ptype: keyRegistrationItxnParamsType, instanceEb: ItxnParamsExpressionBuilder })\n typeRegistry.register({ ptype: assetConfigItxnParamsType, instanceEb: ItxnParamsExpressionBuilder })\n typeRegistry.register({ ptype: assetTransferItxnParamsType, instanceEb: ItxnParamsExpressionBuilder })\n typeRegistry.register({ ptype: assetFreezeItxnParamsType, instanceEb: ItxnParamsExpressionBuilder })\n typeRegistry.register({ ptype: applicationCallItxnParamsType, instanceEb: ItxnParamsExpressionBuilder })\n}\n","import type {\n AddressConstant,\n AppAccountStateExpression,\n AppStateExpression,\n AppStorageDefinition,\n ARC4Decode,\n ARC4Encode,\n ARC4Router,\n ArrayConcat,\n ArrayExtend,\n ArrayLength,\n ArrayPop,\n ArrayReplace,\n AssertExpression,\n AssignmentExpression,\n AssignmentStatement,\n BigUIntAugmentedAssignment,\n BigUIntBinaryOperation,\n BigUIntPostfixUnaryOperation,\n Block,\n BoolConstant,\n BooleanBinaryOperation,\n BoxValueExpression,\n BytesAugmentedAssignment,\n BytesBinaryOperation,\n BytesComparisonExpression,\n BytesConstant,\n BytesUnaryOperation,\n CheckedMaybe,\n CompiledContract,\n CompiledLogicSig,\n ConditionalExpression,\n Contract,\n ContractMemberNodeVisitor,\n ContractMethod,\n Copy,\n CreateInnerTransaction,\n DecimalConstant,\n Emit,\n Enumeration,\n ExpressionStatement,\n ExpressionVisitor,\n FieldExpression,\n ForInLoop,\n Goto,\n GroupTransactionReference,\n IfElse,\n IndexExpression,\n InnerTransactionField,\n IntegerConstant,\n IntersectionSliceExpression,\n IntrinsicCall,\n LogicSignature,\n LoopContinue,\n LoopExit,\n MethodConstant,\n NewArray,\n NewStruct,\n Not,\n NumericComparisonExpression,\n PuyaLibCall,\n Range,\n ReinterpretCast,\n ReturnStatement,\n Reversed,\n RootNodeVisitor,\n SingleEvaluation,\n SliceExpression,\n StateDelete,\n StateExists,\n StateGet,\n StateGetEx,\n StatementVisitor,\n StringConstant,\n SubmitInnerTransaction,\n Subroutine,\n SubroutineCallExpression,\n Switch,\n TemplateVar,\n TupleExpression,\n TupleItemExpression,\n UInt64AugmentedAssignment,\n UInt64BinaryOperation,\n UInt64PostfixUnaryOperation,\n UInt64UnaryOperation,\n UpdateInnerTransaction,\n VarExpression,\n VoidConstant,\n WhileLoop,\n} from '../nodes'\nimport { Expression } from '../nodes'\n\nexport class FunctionTraverser implements ExpressionVisitor<void>, StatementVisitor<void> {\n visitExpressionStatement(statement: ExpressionStatement): void {\n statement.expr.accept(this)\n }\n\n visitBlock(statement: Block): void {\n for (const s of statement.body) {\n s.accept(this)\n }\n }\n\n visitArrayLength(expression: ArrayLength): void {\n expression.array.accept(this)\n }\n\n visitArrayReplace(expression: ArrayReplace): void {\n expression.base.accept(this)\n expression.index.accept(this)\n expression.value.accept(this)\n }\n\n visitGoto(statement: Goto): void {}\n\n visitIfElse(statement: IfElse): void {\n statement.condition.accept(this)\n statement.ifBranch.accept(this)\n statement.elseBranch?.accept(this)\n }\n\n visitSwitch(statement: Switch): void {\n statement.value.accept(this)\n for (const [cv, cb] of statement.cases.entries()) {\n cv.accept(this)\n cb.accept(this)\n }\n statement.defaultCase?.accept(this)\n }\n\n visitWhileLoop(statement: WhileLoop): void {\n statement.condition.accept(this)\n statement.loopBody.accept(this)\n }\n\n visitLoopExit(statement: LoopExit): void {}\n\n visitLoopContinue(statement: LoopContinue): void {}\n\n visitReturnStatement(statement: ReturnStatement): void {\n statement.value?.accept(this)\n }\n\n visitAssignmentStatement(statement: AssignmentStatement): void {\n statement.target.accept(this)\n statement.value.accept(this)\n }\n\n visitUInt64AugmentedAssignment(statement: UInt64AugmentedAssignment): void {\n statement.target.accept(this)\n statement.value.accept(this)\n }\n\n visitBigUIntAugmentedAssignment(statement: BigUIntAugmentedAssignment): void {\n statement.target.accept(this)\n statement.value.accept(this)\n }\n\n visitBytesAugmentedAssignment(statement: BytesAugmentedAssignment): void {\n statement.target.accept(this)\n statement.value.accept(this)\n }\n\n visitForInLoop(statement: ForInLoop): void {\n statement.items.accept(this)\n statement.sequence.accept(this)\n statement.loopBody.accept(this)\n }\n\n visitAssertExpression(expression: AssertExpression): void {\n expression.condition?.accept(this)\n }\n\n visitIntegerConstant(expression: IntegerConstant): void {}\n\n visitDecimalConstant(expression: DecimalConstant): void {}\n\n visitBoolConstant(expression: BoolConstant): void {}\n\n visitBytesConstant(expression: BytesConstant): void {}\n\n visitStringConstant(expression: StringConstant): void {}\n\n visitVoidConstant(expression: VoidConstant): void {}\n\n visitTemplateVar(expression: TemplateVar): void {}\n\n visitMethodConstant(expression: MethodConstant): void {}\n\n visitAddressConstant(expression: AddressConstant): void {}\n\n visitARC4Encode(expression: ARC4Encode): void {\n expression.value.accept(this)\n }\n\n visitCopy(expression: Copy): void {\n expression.value.accept(this)\n }\n\n visitArrayConcat(expression: ArrayConcat): void {\n expression.left.accept(this)\n expression.right.accept(this)\n }\n\n visitArrayPop(expression: ArrayPop): void {\n expression.base.accept(this)\n }\n\n visitArrayExtend(expression: ArrayExtend): void {\n expression.base.accept(this)\n expression.other.accept(this)\n }\n\n visitARC4Decode(expression: ARC4Decode): void {\n expression.value.accept(this)\n }\n\n visitIntrinsicCall(expression: IntrinsicCall): void {\n for (const a of expression.stackArgs) {\n a.accept(this)\n }\n }\n\n visitCreateInnerTransaction(expression: CreateInnerTransaction): void {\n for (const v of expression.fields.values()) {\n v.accept(this)\n }\n }\n\n visitUpdateInnerTransaction(expression: UpdateInnerTransaction): void {\n for (const v of expression.fields.values()) {\n v.accept(this)\n }\n }\n\n visitGroupTransactionReference(expression: GroupTransactionReference): void {\n expression.index.accept(this)\n }\n\n visitCheckedMaybe(expression: CheckedMaybe): void {\n expression.expr.accept(this)\n }\n\n visitTupleExpression(expression: TupleExpression): void {\n for (const v of expression.items) {\n v.accept(this)\n }\n }\n\n visitTupleItemExpression(expression: TupleItemExpression): void {\n expression.base.accept(this)\n }\n\n visitVarExpression(expression: VarExpression): void {}\n\n visitInnerTransactionField(expression: InnerTransactionField): void {\n expression.itxn.accept(this)\n expression.arrayIndex?.accept(this)\n }\n\n visitSubmitInnerTransaction(expression: SubmitInnerTransaction): void {\n for (const itxn of expression.itxns) {\n itxn.accept(this)\n }\n }\n\n visitFieldExpression(expression: FieldExpression): void {\n expression.base.accept(this)\n }\n\n visitIndexExpression(expression: IndexExpression): void {\n expression.base.accept(this)\n expression.index.accept(this)\n }\n\n visitSliceExpression(expression: SliceExpression): void {\n expression.base.accept(this)\n expression.beginIndex?.accept(this)\n expression.endIndex?.accept(this)\n }\n\n visitIntersectionSliceExpression(expression: IntersectionSliceExpression): void {\n expression.base.accept(this)\n expression.beginIndex instanceof Expression && expression.beginIndex.accept(this)\n expression.endIndex instanceof Expression && expression.endIndex.accept(this)\n }\n\n visitAppStateExpression(expression: AppStateExpression): void {\n expression.key.accept(this)\n }\n\n visitAppAccountStateExpression(expression: AppAccountStateExpression): void {\n expression.key.accept(this)\n expression.account.accept(this)\n }\n\n visitBoxValueExpression(expression: BoxValueExpression): void {\n expression.key.accept(this)\n }\n\n visitSingleEvaluation(expression: SingleEvaluation): void {\n expression.source.accept(this)\n }\n\n visitReinterpretCast(expression: ReinterpretCast): void {\n expression.expr.accept(this)\n }\n\n visitNewArray(expression: NewArray): void {\n for (const v of expression.values) {\n v.accept(this)\n }\n }\n\n visitConditionalExpression(expression: ConditionalExpression): void {\n expression.condition.accept(this)\n expression.trueExpr.accept(this)\n expression.falseExpr.accept(this)\n }\n\n visitAssignmentExpression(expression: AssignmentExpression): void {\n expression.target.accept(this)\n expression.value.accept(this)\n }\n\n visitNumericComparisonExpression(expression: NumericComparisonExpression): void {\n expression.lhs.accept(this)\n expression.rhs.accept(this)\n }\n\n visitBytesComparisonExpression(expression: BytesComparisonExpression): void {\n expression.lhs.accept(this)\n expression.rhs.accept(this)\n }\n\n visitSubroutineCallExpression(expression: SubroutineCallExpression): void {\n for (const a of expression.args) {\n a.value.accept(this)\n }\n }\n\n visitPuyaLibCall(expression: PuyaLibCall): void {\n for (const a of expression.args) {\n a.value.accept(this)\n }\n }\n\n visitUInt64UnaryOperation(expression: UInt64UnaryOperation): void {\n expression.expr.accept(this)\n }\n\n visitUInt64PostfixUnaryOperation(expression: UInt64PostfixUnaryOperation): void {\n expression.target.accept(this)\n }\n\n visitBigUIntPostfixUnaryOperation(expression: BigUIntPostfixUnaryOperation): void {\n expression.target.accept(this)\n }\n\n visitBytesUnaryOperation(expression: BytesUnaryOperation): void {\n expression.expr.accept(this)\n }\n\n visitUInt64BinaryOperation(expression: UInt64BinaryOperation): void {\n expression.left.accept(this)\n expression.right.accept(this)\n }\n\n visitBigUIntBinaryOperation(expression: BigUIntBinaryOperation): void {\n expression.left.accept(this)\n expression.right.accept(this)\n }\n\n visitBytesBinaryOperation(expression: BytesBinaryOperation): void {\n expression.left.accept(this)\n expression.right.accept(this)\n }\n\n visitBooleanBinaryOperation(expression: BooleanBinaryOperation): void {\n expression.left.accept(this)\n expression.right.accept(this)\n }\n\n visitNot(expression: Not): void {\n expression.expr.accept(this)\n }\n\n visitEmit(expression: Emit): void {\n expression.value.accept(this)\n }\n\n visitRange(expression: Range): void {\n expression.start.accept(this)\n expression.stop.accept(this)\n expression.step.accept(this)\n }\n\n visitEnumeration(expression: Enumeration): void {\n expression.expr.accept(this)\n }\n\n visitReversed(expression: Reversed): void {\n expression.expr.accept(this)\n }\n\n visitStateGet(expression: StateGet): void {\n expression.default.accept(this)\n expression.field.accept(this)\n }\n\n visitStateGetEx(expression: StateGetEx): void {\n expression.field.accept(this)\n }\n\n visitStateExists(expression: StateExists): void {\n expression.field.accept(this)\n }\n\n visitStateDelete(expression: StateDelete): void {\n expression.field.accept(this)\n }\n\n visitNewStruct(expression: NewStruct): void {\n for (const v of expression.values.values()) {\n v.accept(this)\n }\n }\n\n visitCompiledContract(expression: CompiledContract): void {\n for (const v of expression.templateVariables.values()) {\n v.accept(this)\n }\n for (const v of expression.allocationOverrides.values()) {\n v.accept(this)\n }\n }\n\n visitCompiledLogicSig(expression: CompiledLogicSig): void {\n for (const v of expression.templateVariables.values()) {\n v.accept(this)\n }\n }\n\n visitARC4Router(expression: ARC4Router): void {}\n}\n\nexport class AwstTraverser extends FunctionTraverser implements RootNodeVisitor<void>, ContractMemberNodeVisitor<void> {\n visitContractMethod(contractMemberNode: ContractMethod): void {\n contractMemberNode.body.accept(this)\n }\n visitAppStorageDefinition(contractMemberNode: AppStorageDefinition): void {\n contractMemberNode.key.accept(this)\n }\n visitSubroutine(rootNode: Subroutine): void {\n rootNode.body.accept(this)\n }\n visitLogicSignature(rootNode: LogicSignature): void {\n rootNode.program.accept(this)\n }\n visitContract(rootNode: Contract): void {\n for (const s of rootNode.appState) {\n s.accept(this)\n }\n for (const m of rootNode.methods) {\n m.accept(this)\n }\n }\n}\n","import { Constants } from '../../constants'\nimport { logger } from '../../logger'\nimport type { ARC4Router, AWST, ContractMethod, SubroutineCallExpression } from '../nodes'\nimport { Contract, InstanceSuperMethodTarget } from '../nodes'\nimport { FunctionTraverser } from './awst-traverser'\n\nexport class Arc4ApprovalCallsRouter extends FunctionTraverser {\n static validate(awst: AWST[]) {\n for (const item of awst) {\n if (item instanceof Contract) {\n if (item.methods.some((m) => m.arc4MethodConfig)) {\n const validator = new Arc4ApprovalCallsRouter()\n validator.validate(item.approvalProgram)\n }\n }\n }\n }\n\n #superCalled = false\n #routerCalled = false\n\n validate(approvalProgram: ContractMethod) {\n approvalProgram.body.accept(this)\n if (!this.#superCalled && !this.#routerCalled) {\n logger.warn(\n approvalProgram.sourceLocation,\n 'Contract overrides approval program method but does not appear to call super.approvalProgram(). ARC4 routing may not work as expected',\n )\n }\n }\n\n visitSubroutineCallExpression(expression: SubroutineCallExpression) {\n if (expression.target instanceof InstanceSuperMethodTarget && expression.target.memberName === Constants.approvalProgramMethodName) {\n this.#superCalled = true\n }\n super.visitSubroutineCallExpression(expression)\n }\n\n visitARC4Router(expression: ARC4Router) {\n this.#routerCalled = true\n super.visitARC4Router(expression)\n }\n}\n","import type { AWST } from '../nodes'\nimport { Arc4ApprovalCallsRouter } from './arc4-approval-calls-router'\n\ntype ModuleValidator = {\n validate(awst: AWST[]): void\n}\n\nconst validators: ModuleValidator[] = [Arc4ApprovalCallsRouter]\n\nexport function validateAwst(awst: AWST[]): void {\n for (const validator of validators) {\n validator.validate(awst)\n }\n}\n","function positiveMod(x: number, m: number) {\n return ((x % m) + m) % m\n}\nfunction repeat<T>(c: T, n: number): T[] {\n return new Array<T>(n).fill(c)\n}\nfunction* batchBytesToUintN(bytes: Uint8Array, n: number): Generator<bigint> {\n const numberBytes = n / 8\n for (let i = 0; i < bytes.length / numberBytes; i += 1) {\n yield new Array(numberBytes).fill(null).reduce((acc, _, index) => {\n const offset = index + i * numberBytes\n if (offset >= bytes.length) {\n throw new Error('Needs padding')\n }\n return (acc << 8n) + BigInt(bytes[offset])\n }, 0n)\n }\n}\n\n/**\n * This implementation of base85 encoding matches python's base64.b85encode(...) function which is based on the character set of rfc1924\n * but supports arbitrary sized input.\n *\n * It IS NOT an ascii85 implementation\n */\nexport function buildBase85Encoder() {\n const b85Alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!#$%&()*+-;<=>?@^_`{|}~'\n const b85Chars = b85Alphabet.split('')\n const b85DoubleChars = b85Chars.flatMap((c) => b85Chars.map((c2) => c + c2))\n\n function encode(b: Uint8Array, chars: string[], doubleChars: string[]) {\n const padding = positiveMod(-b.length, 4)\n if (padding) {\n b = new Uint8Array([...b, ...repeat(0, padding)])\n }\n let result = ''\n for (const word of batchBytesToUintN(b, 4 * 8)) {\n result += doubleChars[Number(word / 85n ** 3n)]\n result += doubleChars[Number((word / 85n) % 85n ** 2n)]\n result += chars[Number(word % 85n)]\n }\n return result.slice(0, result.length - padding)\n }\n\n return {\n encode(b: Uint8Array) {\n return encode(b, b85Chars, b85DoubleChars)\n },\n encodeUtf8(s: string) {\n const b = new TextEncoder().encode(s)\n return this.encode(b)\n },\n }\n}\n","import { snakeCase } from 'change-case'\nimport path from 'node:path'\nimport { Constants } from '../constants'\nimport { InternalError } from '../errors'\nimport { invariant } from '../util'\nimport { buildBase85Encoder } from '../util/base-85'\nimport { ContractReference, LogicSigReference } from './models'\nimport type { RootNode } from './nodes'\nimport { IntrinsicCall, SingleEvaluation } from './nodes'\nimport { SourceLocation } from './source-location'\nimport { SymbolToNumber } from './util'\n\ntype JSONWithRaw = typeof JSON & {\n /**\n * This method exists in Node 21+ and several browsers but hasn't made its way into the typescript lib\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/rawJSON\n *\n *\n */\n rawJSON?(value: string): string\n}\n\nfunction serializeBigInt(value: bigint): unknown {\n const jsonWithRaw = JSON as unknown as JSONWithRaw\n if (jsonWithRaw.rawJSON) {\n return jsonWithRaw.rawJSON(`${value}`)\n }\n if (value < 0n) {\n if (value < Number.MIN_SAFE_INTEGER) {\n throw new InternalError(`Cannot safely serialize ${value} to JSON`)\n }\n return Number(value)\n } else {\n if (value > Number.MAX_SAFE_INTEGER) {\n return `${value}`\n }\n return Number(value)\n }\n}\n\nexport class SnakeCaseSerializer<T> {\n constructor(private readonly spaces = 2) {}\n public serialize(obj: T): string {\n return JSON.stringify(obj, (k, v) => this.serializerFunction(k, v), this.spaces)\n }\n private b85 = buildBase85Encoder()\n\n protected serializerFunction(key: string, value: unknown): unknown {\n if (typeof value === 'bigint') {\n return serializeBigInt(value)\n }\n if (value instanceof Uint8Array) {\n return this.b85.encode(value)\n }\n if (value instanceof Object && value.constructor.name !== 'Date' && value.constructor.name !== 'Object') {\n return {\n ...Object.fromEntries(Object.entries(value).map(([key, value]) => [snakeCase(key), value])),\n }\n }\n return value\n }\n}\n\nexport class AwstSerializer extends SnakeCaseSerializer<RootNode[]> {\n constructor(\n private options?: {\n sourcePaths?: 'absolute' | 'relative'\n programDirectory?: string\n },\n ) {\n super()\n }\n #singleEvals = new SymbolToNumber()\n\n protected serializerFunction(key: string, value: unknown): unknown {\n if (value instanceof Set) {\n return Array.from(value.keys())\n }\n if (value instanceof Array) {\n return value\n }\n if (value instanceof Map) {\n if (value.size === 0) return {}\n const keyType = typeof value.keys().next().value\n if (keyType === 'string' || keyType === 'number') {\n return Object.fromEntries(value.entries())\n }\n if (keyType === 'bigint') {\n return Object.fromEntries(Array.from(value.entries()).map(([k, v]) => [`${k}`, v]))\n }\n return Array.from(value.entries())\n }\n if (value instanceof Uint8Array) {\n return super.serializerFunction(key, value)\n }\n if (value instanceof ContractReference || value instanceof LogicSigReference) {\n return value.toString()\n }\n if (value instanceof IntrinsicCall) {\n // Convert bigint immediates to number so they serialize without quotes and can be disambiguated from string immediates\n return {\n _type: IntrinsicCall.name,\n ...(super.serializerFunction(key, value) as object),\n immediates: value.immediates.map((i) => {\n if (typeof i === 'bigint') {\n return serializeBigInt(i)\n }\n return i\n }),\n }\n }\n if (value instanceof SourceLocation && value.file) {\n let filePath: string = value.file\n if (this.options?.sourcePaths === 'absolute') {\n invariant(this.options.programDirectory, 'Program directory must be supplied for absolute paths')\n if (value.file.startsWith(Constants.algoTsPackage)) {\n filePath = path.join(this.options.programDirectory, 'node_modules', value.file)\n } else {\n filePath = path.join(this.options.programDirectory, value.file)\n }\n }\n return {\n ...(super.serializerFunction(key, value) as object),\n scope: undefined,\n file: filePath,\n }\n }\n if (value instanceof SingleEvaluation) {\n return {\n _type: SingleEvaluation.name,\n ...(super.serializerFunction(key, value) as object),\n id: String(this.#singleEvals.forSymbol(value.id)[0]),\n }\n }\n\n if (value instanceof Object && value.constructor.name !== 'Object') {\n return {\n _type: value.constructor.name,\n ...(super.serializerFunction(key, value) as object),\n }\n }\n return super.serializerFunction(key, value)\n }\n}\n\nexport function jsonSerializeAwst(awst: RootNode[]): string {\n return new AwstSerializer().serialize(awst)\n}\n","import { Buffer } from 'node:buffer'\nimport { InternalError } from '../errors'\nimport { uint8ArrayToBase32, uint8ArrayToUtf8 } from '../util'\nimport type { ContractReference } from './models'\nimport type {\n AppStorageDefinition,\n AssertExpression,\n ContractMemberNodeVisitor,\n Emit,\n ExpressionVisitor,\n RootNodeVisitor,\n StatementVisitor,\n} from './nodes'\nimport * as nodes from './nodes'\nimport { AppStorageKind, BytesEncoding, ContractMethodTarget, InstanceMethodTarget, InstanceSuperMethodTarget, SubroutineID } from './nodes'\nimport { SymbolToNumber } from './util'\nimport { wtypes } from './wtypes'\n\nfunction printBytes(value: Uint8Array, encoding: BytesEncoding) {\n switch (encoding) {\n case BytesEncoding.utf8:\n return `\"${uint8ArrayToUtf8(value)}\"`\n case BytesEncoding.base64:\n return `b64<${Buffer.from(value).toString('base64')}>`\n case BytesEncoding.base32:\n return `b32<${uint8ArrayToBase32(value)}>`\n default:\n return `0x${Buffer.from(value).toString('hex')}`\n }\n}\nexport class ToCodeVisitor\n implements RootNodeVisitor<string[]>, ContractMemberNodeVisitor<string[]>, StatementVisitor<string[]>, ExpressionVisitor<string>\n{\n visitRange(expression: nodes.Range): string {\n return `urange(${expression.start.accept(this)}, ${expression.stop.accept(this)}, ${expression.step.accept(this)})`\n }\n visitVoidConstant(expression: nodes.VoidConstant): string {\n return `void`\n }\n visitGroupTransactionReference(expression: nodes.GroupTransactionReference): string {\n return `group_transaction(index=${expression.index.accept(this)}, type=${expression.wtype})`\n }\n visitPuyaLibCall(expression: nodes.PuyaLibCall): string {\n return `${expression.func}(${expression.args.map((a) => a.value.accept(this)).join(', ')})`\n }\n visitARC4Router(expression: nodes.ARC4Router): string {\n return `arc4Router()`\n }\n visitAppStorageDefinition(contractMemberNode: AppStorageDefinition): string[] {\n throw new Error('Method not implemented.')\n }\n #singleEval = new SymbolToNumber()\n visitUInt64PostfixUnaryOperation(expression: nodes.UInt64PostfixUnaryOperation): string {\n return `${expression.target.accept(this)}${expression.op}`\n }\n visitBigUIntPostfixUnaryOperation(expression: nodes.BigUIntPostfixUnaryOperation): string {\n return `${expression.target.accept(this)}${expression.op}`\n }\n visitCompiledContract(expression: nodes.CompiledContract): string {\n let overrides = Array.from(expression.allocationOverrides.entries())\n .map(([f, v]) => `${f}=${v.accept(this)}`)\n .join(', ')\n if (overrides) {\n overrides = `, ${overrides}`\n }\n\n let templateVars = Array.from(expression.templateVariables.entries())\n .map(([n, v]) => `${n}=${v.accept(this)}`)\n .join(', ')\n if (templateVars) {\n templateVars = `, ${templateVars}`\n }\n\n const prefix = expression.prefix ? `, prefix=${expression.prefix}` : ''\n\n return `compile(${expression.contract.id}${overrides}${prefix}${templateVars}`\n }\n visitCompiledLogicSig(expression: nodes.CompiledLogicSig): string {\n let templateVars = Array.from(expression.templateVariables.entries())\n .map(([n, v]) => `${n}=${v.accept(this)}`)\n .join(', ')\n if (templateVars) {\n templateVars = `, ${templateVars}`\n }\n\n const prefix = expression.prefix ? `, prefix=${expression.prefix}` : ''\n\n return `compile(${expression.logicSig.id}${prefix}${templateVars}`\n }\n visitLoopExit(statement: nodes.LoopExit): string[] {\n return ['break']\n }\n visitLoopContinue(statement: nodes.LoopContinue): string[] {\n return ['continue']\n }\n visitGoto(statement: nodes.Goto): string[] {\n return [`goto ${statement.target}`]\n }\n visitIntersectionSliceExpression(expression: nodes.IntersectionSliceExpression): string {\n const args = [expression.beginIndex, expression.endIndex]\n .flatMap((f) => (typeof f === 'bigint' ? f : (f?.accept(this) ?? [])))\n .join(', ')\n return `${expression.base.accept(this)}.slice(${args})`\n }\n visitBoxValueExpression(expression: nodes.BoxValueExpression): string {\n return `Box[${expression.key.accept(this)}].value`\n }\n visitIntegerConstant(expression: nodes.IntegerConstant): string {\n if (expression.tealAlias) return expression.tealAlias\n return `${expression.value}`\n }\n visitDecimalConstant(expression: nodes.DecimalConstant): string {\n return `${expression.value}m`\n }\n visitBoolConstant(expression: nodes.BoolConstant): string {\n return expression.value ? 'True' : 'False'\n }\n visitBytesConstant(expression: nodes.BytesConstant): string {\n return printBytes(expression.value, expression.encoding)\n }\n visitStringConstant(expression: nodes.StringConstant): string {\n return `\"${expression.value}\"`\n }\n visitTemplateVar(expression: nodes.TemplateVar): string {\n return `TemplateVar[${expression.wtype}](${expression.name})`\n }\n visitMethodConstant(expression: nodes.MethodConstant): string {\n return `Method(\"${expression.value}\")`\n }\n visitAddressConstant(expression: nodes.AddressConstant): string {\n return `Address(\"${expression.value}\")`\n }\n visitARC4Encode(expression: nodes.ARC4Encode): string {\n return `ARC4_ENCODE(${expression.value.accept(this)}, wtype=${expression.wtype})`\n }\n visitCopy(expression: nodes.Copy): string {\n return `copy(${expression.value.accept(this)})`\n }\n visitArrayConcat(expression: nodes.ArrayConcat): string {\n return `${expression.left.accept(this)}.concat(${expression.right.accept(this)})`\n }\n visitArrayPop(expression: nodes.ArrayPop): string {\n return `${expression.base.accept(this)}.pop()`\n }\n visitArrayExtend(expression: nodes.ArrayExtend): string {\n return `${expression.base.accept(this)}.push(...${expression.other.accept(this)}`\n }\n visitArrayLength(expression: nodes.ArrayLength): string {\n return `${expression.array.accept(this)}.length`\n }\n visitArrayReplace(expression: nodes.ArrayReplace): string {\n return `${expression.base.accept(this)}.with(${expression.index.accept(this)}, ${expression.value.accept(this)})`\n }\n visitARC4Decode(expression: nodes.ARC4Decode): string {\n return `ARC4_DECODE(${expression.value.accept(this)})`\n }\n visitIntrinsicCall(expression: nodes.IntrinsicCall): string {\n const immediates = expression.immediates.length ? `<${expression.immediates.map((i) => i).join(', ')}>` : ''\n const stack = expression.stackArgs.map((a) => a.accept(this)).join(', ')\n return `${expression.opCode}${immediates}(${stack})`\n }\n visitCreateInnerTransaction(expression: nodes.CreateInnerTransaction): string {\n const fields = Array.from(expression.fields.entries())\n .map(([f, v]) => `${f}=${v.accept(this)}`)\n .join(', ')\n return `create_inner_transaction(${fields})`\n }\n visitUpdateInnerTransaction(expression: nodes.UpdateInnerTransaction): string {\n const fields = Array.from(expression.fields.entries())\n .map(([f, v]) => `${f}=${v.accept(this)}`)\n .join(', ')\n return `update_inner_transaction(${expression.itxn.accept(this)}, ${fields})`\n }\n visitCheckedMaybe(expression: nodes.CheckedMaybe): string {\n return `checked_maybe(${expression.expr.accept(this)}, comment=${expression.comment})`\n }\n visitTupleExpression(expression: nodes.TupleExpression): string {\n const names = expression.wtype.names\n if (names) {\n return `{ ${expression.items.map((item, i) => `${names[i]}: ${item.accept(this)}`).join(', ')} }`\n }\n\n return `<tuple>[${expression.items.map((i) => i.accept(this)).join(', ')}]`\n }\n visitTupleItemExpression(expression: nodes.TupleItemExpression): string {\n return `${expression.base.accept(this)}.${expression.index}`\n }\n visitVarExpression(expression: nodes.VarExpression): string {\n return expression.name\n }\n visitInnerTransactionField(expression: nodes.InnerTransactionField): string {\n const indexAccess = expression.arrayIndex ? `[${expression.arrayIndex.accept(this)}]` : ''\n return `${expression.itxn.accept(this)}.${expression.field}${indexAccess}`\n }\n visitSubmitInnerTransaction(expression: nodes.SubmitInnerTransaction): string {\n return `submit_txn(${expression.itxns.map((i) => i.accept(this)).join(', ')})`\n }\n visitFieldExpression(expression: nodes.FieldExpression): string {\n return `${expression.base.accept(this)}.${expression.name}`\n }\n visitIndexExpression(expression: nodes.IndexExpression): string {\n return `${expression.base.accept(this)}[${expression.index.accept(this)}]`\n }\n visitSliceExpression(expression: nodes.SliceExpression): string {\n return `${expression.base.accept(this)}[${expression.beginIndex?.accept(this) ?? ''}:${expression.endIndex?.accept(this) ?? ''}]`\n }\n visitAppStateExpression(expression: nodes.AppStateExpression): string {\n return `GlobalState[${expression.key.accept(this)}]`\n }\n visitAppAccountStateExpression(expression: nodes.AppAccountStateExpression): string {\n return `LocalState[${expression.account.accept(this)}][${expression.key.accept(this)}]`\n }\n visitSingleEvaluation(expression: nodes.SingleEvaluation): string {\n const [id, isNew] = this.#singleEval.forSymbol(expression.id)\n if (!isNew) {\n return `#${id}`\n }\n return `(#${id} = ${expression.source.accept(this)})`\n }\n visitReinterpretCast(expression: nodes.ReinterpretCast): string {\n const target = expression.expr.accept(this)\n if (expression.wtype.equals(wtypes.boolWType)) {\n return `Boolean(${target})`\n }\n return `reinterpret_cast<${expression.wtype}>(${target})`\n }\n visitNewArray(expression: nodes.NewArray): string {\n return `new ${expression.wtype.name}(${expression.values.map((v) => v.accept(this)).join(', ')})`\n }\n visitConditionalExpression(expression: nodes.ConditionalExpression): string {\n return `(${expression.condition.accept(this)} ? ${expression.trueExpr.accept(this)} : ${expression.falseExpr.accept(this)})`\n }\n visitAssignmentExpression(expression: nodes.AssignmentExpression): string {\n const rvalue =\n expression.value instanceof nodes.AssignmentExpression ? `(${expression.value.accept(this)})` : expression.value.accept(this)\n return `(${expression.target.accept(this)} = ${rvalue})`\n }\n visitNumericComparisonExpression(expression: nodes.NumericComparisonExpression): string {\n return `${expression.lhs.accept(this)} ${expression.operator} ${expression.rhs.accept(this)}`\n }\n visitBytesComparisonExpression(expression: nodes.BytesComparisonExpression): string {\n return `${expression.lhs.accept(this)} ${expression.operator} ${expression.rhs.accept(this)}`\n }\n visitSubroutineCallExpression(expression: nodes.SubroutineCallExpression): string {\n const target = this.visitCallTarget(expression.target)\n return `${target}(${expression.args.map((a) => a.value.accept(this)).join(', ')})`\n }\n visitCallTarget(target: nodes.SubroutineCallExpression['target']) {\n if (target instanceof SubroutineID) return target.target\n if (target instanceof ContractMethodTarget) return `${target.cref}.${target.memberName}`\n if (target instanceof InstanceMethodTarget) return `this.${target.memberName}`\n if (target instanceof InstanceSuperMethodTarget) return `super.${target.memberName}`\n throw new InternalError(`Unhandled target: ${target}`)\n }\n visitUInt64UnaryOperation(expression: nodes.UInt64UnaryOperation): string {\n return `${expression.op}${expression.expr.accept(this)}`\n }\n visitBytesUnaryOperation(expression: nodes.BytesUnaryOperation): string {\n return `${expression.op}${expression.expr.accept(this)}`\n }\n visitUInt64BinaryOperation(expression: nodes.UInt64BinaryOperation): string {\n return `${expression.left.accept(this)} ${expression.op} ${expression.right.accept(this)}`\n }\n visitBigUIntBinaryOperation(expression: nodes.BigUIntBinaryOperation): string {\n return `${expression.left.accept(this)} ${expression.op} ${expression.right.accept(this)}`\n }\n visitBytesBinaryOperation(expression: nodes.BytesBinaryOperation): string {\n return `${expression.left.accept(this)} ${expression.op} ${expression.right.accept(this)}`\n }\n visitBooleanBinaryOperation(expression: nodes.BooleanBinaryOperation): string {\n return `${expression.left.accept(this)} ${expression.op} ${expression.right.accept(this)}`\n }\n visitNot(expression: nodes.Not): string {\n return `!${expression.expr.accept(this)}`\n }\n visitEnumeration(expression: nodes.Enumeration): string {\n return `enumerate(${expression.expr.accept(this)})`\n }\n visitReversed(expression: nodes.Reversed): string {\n return `reversed(${expression.expr.accept(this)})`\n }\n visitStateGet(expression: nodes.StateGet): string {\n return `STATE_GET(${expression.field.accept(this)}, default=${expression.default.accept(this)})`\n }\n\n visitStateDelete(expression: nodes.StateDelete): string {\n return `STATE_DELETE(${expression.field.accept(this)})`\n }\n visitStateGetEx(expression: nodes.StateGetEx): string {\n return `STATE_GET_EX(${expression.field.accept(this)})`\n }\n visitStateExists(expression: nodes.StateExists): string {\n return `STATE_EXISTS(${expression.field.accept(this)})`\n }\n visitNewStruct(expression: nodes.NewStruct): string {\n const props = Array.from(expression.values)\n .map(([k, v]) => `${k}=${v.accept(this)}`)\n .join(', ')\n return `new ${expression.wtype.name}(${props})`\n }\n visitExpressionStatement(statement: nodes.ExpressionStatement): string[] {\n return [statement.expr.accept(this)]\n }\n visitBlock(statement: nodes.Block): string[] {\n return [...(statement.label ? [`${statement.label}:`] : []), ...statement.body.flatMap((b) => b.accept(this))]\n }\n visitIfElse(statement: nodes.IfElse): string[] {\n return [\n `if (${statement.condition.accept(this)}) {`,\n ...indent(statement.ifBranch.accept(this)),\n ...(statement.elseBranch ? ['} else {', ...indent(statement.elseBranch.accept(this)), '}'] : ['}']),\n ]\n }\n visitSwitch(statement: nodes.Switch): string[] {\n return [\n `switch (${statement.value.accept(this)}) {`,\n ...indent(\n Array.from(statement.cases.entries()).flatMap(([clause, block]) => [`case ${clause.accept(this)}:`, ...indent(block.accept(this))]),\n ),\n ...(statement.defaultCase ? indent(['default:', ...indent(statement.defaultCase.accept(this))]) : []),\n '}',\n ]\n }\n visitWhileLoop(statement: nodes.WhileLoop): string[] {\n return [`while (${statement.condition.accept(this)}) {`, ...indent(statement.loopBody.accept(this)), '}']\n }\n visitReturnStatement(statement: nodes.ReturnStatement): string[] {\n return [`return ${statement.value?.accept(this) ?? ''}`]\n }\n visitAssignmentStatement(statement: nodes.AssignmentStatement): string[] {\n return [`${statement.target.accept(this)}: ${statement.target.wtype} = ${statement.value.accept(this)}`]\n }\n visitUInt64AugmentedAssignment(statement: nodes.UInt64AugmentedAssignment): string[] {\n return [`${statement.target.accept(this)} = ${statement.target.accept(this)} ${statement.op} ${statement.value.accept(this)}`]\n }\n visitBigUIntAugmentedAssignment(statement: nodes.BigUIntAugmentedAssignment): string[] {\n return [`${statement.target.accept(this)} = ${statement.target.accept(this)} ${statement.op} ${statement.value.accept(this)}`]\n }\n visitBytesAugmentedAssignment(statement: nodes.BytesAugmentedAssignment): string[] {\n return [`${statement.target.accept(this)} = ${statement.target.accept(this)} ${statement.op} ${statement.value.accept(this)}`]\n }\n visitForInLoop(statement: nodes.ForInLoop): string[] {\n return [\n `for (${statement.items.accept(this)} in ${statement.sequence.accept(this)}) {`,\n ...indent(statement.loopBody.accept(this)),\n '}',\n ]\n }\n visitSubroutine(moduleStatement: nodes.Subroutine): string[] {\n const args = moduleStatement.args.map((a) => `${a.name}: ${a.wtype}`).join(', ')\n return [\n `subroutine ${moduleStatement.name}(${args}): ${moduleStatement.returnType}`,\n '{',\n ...indent(moduleStatement.body.accept(this)),\n '}',\n ]\n }\n visitEmit(expression: Emit): string {\n return `emit(\"${expression.signature}\", ${expression.value.accept(this)})`\n }\n\n visitContractMethod(statement: nodes.ContractMethod): string[] {\n const args = statement.args.map((a) => `${a.name}: ${a.wtype}`).join(', ')\n\n const prefix = statement.cref.id === this.currentContract.at(-1)?.id ? '' : `${statement.cref.className}::`\n return [`${prefix}${statement.memberName}(${args}): ${statement.returnType}`, '{', ...indent(statement.body.accept(this)), '}', '']\n }\n visitLogicSignature(moduleStatement: nodes.LogicSignature): string[] {\n return ['', `logicsig ${moduleStatement.id} {`, ...indent(moduleStatement.program.body.accept(this)), '}']\n }\n visitAssertExpression(expression: AssertExpression): string {\n return [\n expression.condition ? 'assert(' : 'err(',\n expression.condition?.accept(this) ?? '',\n expression.errorMessage ? `, comment=${expression.errorMessage}` : '',\n ')',\n ].join('')\n }\n\n private currentContract: ContractReference[] = []\n visitContract(c: nodes.Contract): string[] {\n this.currentContract.push(c.id)\n\n using _ = {\n [Symbol.dispose]: () => {\n this.currentContract.pop()\n },\n }\n const body: string[] = []\n if (c.appState.length) {\n const storageByKind = Array.from(c.appState.values()).reduce(\n (acc, cur) => acc.set(cur.kind, [...(acc.get(cur.kind) ?? []), cur]),\n new Map<AppStorageKind, AppStorageDefinition[]>(),\n )\n for (const [name, kind] of [\n ['globals', AppStorageKind.appGlobal],\n ['locals', AppStorageKind.accountLocal],\n ['boxes', AppStorageKind.box],\n ] as const) {\n const items = storageByKind.get(kind)\n if (items?.length) {\n body.push(\n `${name} {`,\n ...indent(\n items.map((g) =>\n g.keyWtype ? `[${g.key.accept(this)}]: ${g.keyWtype} => ${g.storageWtype}` : `[${g.key.accept(this)}]: ${g.storageWtype}`,\n ),\n ),\n '}',\n )\n }\n }\n }\n if (c.reservedScratchSpace.size) {\n body.push(`reservedScratchSpace: [${Array.from(c.reservedScratchSpace).join(', ')}]`)\n }\n if (c.approvalProgram) {\n body.push(...this.visitSpecialMethod(c.approvalProgram, 'approvalProgram'))\n }\n if (c.clearProgram) {\n body.push(...this.visitSpecialMethod(c.clearProgram, 'clearProgram'))\n }\n for (const method of c.methods) {\n body.push(...method.accept(this))\n }\n\n const header = ['contract', c.name]\n\n return [header.join(' '), '{', ...indent(body), '}']\n }\n\n visitSpecialMethod(statement: nodes.ContractMethod, name: string): string[] {\n return [`${name}(): ${statement.returnType}`, '{', ...indent(statement.body.accept(this)), '}', '']\n }\n}\n\nfunction indent(lines: string[], indentSize = ' '): string[] {\n return lines.map((l) => `${indentSize}${l}`)\n}\n","import * as fs from 'node:fs'\nimport upath from 'upath'\nimport { logger } from './logger'\nimport { mkDirIfNotExists } from './util'\n\nexport enum ArtifactKind {\n Awst,\n AwstJson,\n}\n\nexport function writeArtifact<TObj>({\n sourceFile,\n outDir,\n kind,\n obj,\n buildArtifact,\n}: {\n sourceFile: string\n outDir: string\n kind: ArtifactKind\n artifactName?: string\n buildArtifact(obj: TObj): string\n obj: TObj\n}) {\n let outFilePath: string\n switch (kind) {\n case ArtifactKind.Awst:\n outFilePath = upath.join(outDir, `${upath.basename(sourceFile, '.algo.ts')}.awst`)\n break\n case ArtifactKind.AwstJson:\n outFilePath = upath.join(outDir, `${upath.basename(sourceFile, '.algo.ts')}.awst.json`)\n break\n }\n\n const content = buildArtifact(obj)\n logger.info(undefined, `Writing ${outFilePath}`)\n mkDirIfNotExists(upath.dirname(outFilePath))\n fs.writeFileSync(outFilePath, content, 'utf-8')\n}\n","import type ts from 'typescript'\nimport type { AwstBuildContext } from '../awst_build/context/awst-build-context'\nimport { CodeError } from '../errors'\nimport { patchErrorLocation } from '../logger'\nimport type { DeliberateAny } from '../typescript-helpers'\nimport type { MapBaseType, SyntaxKindNameType } from './syntax-names'\nimport { getNodeName, SyntaxKindName } from './syntax-names'\n\ntype UnionToIntersection<T> = (T extends DeliberateAny ? (x: T) => void : never) extends (x: infer TIntersection) => void\n ? TIntersection\n : never\n\nexport type Visitor<T extends { kind: ts.SyntaxKind }, TReturn> = UnionToIntersection<\n T extends DeliberateAny\n ? { [key in T['kind'] as key extends keyof SyntaxKindNameType ? `visit${SyntaxKindNameType[key]}` : never]: (node: T) => TReturn }\n : never\n>\n\n/**\n * This type relies on `T` being a concrete node with a `kind` property that is resolved to a single `SyntaxKind`.\n * There are lots of nodes (such as ts.Expression) which are base types for several nodes which means this type\n * will return `typeof SyntaxKind` instead of `typeof SyntaxKind.someValue` and that will break the rest of the\n * generic types here. `MapBaseType<TNode>` exists to convert these base types into a union of their concrete implementors\n */\nexport type KindForNode<T extends ts.Node> = T extends { kind: infer TKind } ? TKind : never\n\nexport type VisitorMethod<TKind> = TKind extends keyof SyntaxKindNameType ? `visit${SyntaxKindNameType[TKind]}` : never\n\nexport type MethodReturnType<TMethod, TVisitor> = TMethod extends keyof TVisitor\n ? TVisitor[TMethod] extends (...args: DeliberateAny[]) => infer TReturn\n ? TReturn\n : never\n : never\n\nexport type ReturnTypeForNode<T extends ts.Node, TVisitor> = MethodReturnType<VisitorMethod<KindForNode<T>>, TVisitor>\n\nexport const accept = <TSelf extends { context: AwstBuildContext }, T extends ts.Node>(\n visitor: TSelf,\n node: T,\n): ReturnTypeForNode<MapBaseType<T>, TSelf> => {\n const sourceLocation = visitor.context.getSourceLocation(node)\n if (node.kind in SyntaxKindName) {\n const nodeName = getNodeName(node)\n const visitFunction = `visit${nodeName}`\n if (visitFunction in Object.getPrototypeOf(visitor)) {\n return patchErrorLocation(() => Object.getPrototypeOf(visitor)[visitFunction].call(visitor, node), sourceLocation)()\n } else {\n throw new CodeError(`Unsupported syntax visitor ${nodeName}`, { sourceLocation })\n }\n } else {\n throw new CodeError(`Unknown syntax kind ${node.kind}`, { sourceLocation })\n }\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { Expression } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport { wtypes } from '../../../awst/wtypes'\n\nimport type { PType, PTypeOrClass } from '../../ptypes'\nimport { typeRegistry } from '../../type-registry'\nimport type { InstanceBuilder } from '../index'\nimport { LiteralExpressionBuilder } from '../literal-expression-builder'\nimport { requireBuilderOfType, resolvableToType } from '../util'\n\nexport class ConditionalExpressionBuilder extends LiteralExpressionBuilder {\n private readonly _ptype: PType\n private readonly whenTrue: InstanceBuilder\n private readonly whenFalse: InstanceBuilder\n private readonly condition: Expression\n\n get ptype(): PType {\n return this._ptype\n }\n\n boolEval(sourceLocation: SourceLocation, negate: boolean = false): Expression {\n return nodeFactory.conditionalExpression({\n sourceLocation: this.sourceLocation,\n falseExpr: this.whenFalse.boolEval(sourceLocation, negate),\n trueExpr: this.whenTrue.boolEval(sourceLocation, negate),\n condition: this.condition,\n wtype: wtypes.boolWType,\n })\n }\n\n constructor({\n condition,\n ptype,\n whenFalse,\n whenTrue,\n sourceLocation,\n }: {\n ptype: PType\n condition: Expression\n whenTrue: InstanceBuilder\n whenFalse: InstanceBuilder\n sourceLocation: SourceLocation\n }) {\n super(sourceLocation)\n this._ptype = ptype\n this.whenTrue = whenTrue\n this.whenFalse = whenFalse\n this.condition = condition\n }\n\n resolvableToPType(ptype: PTypeOrClass): boolean {\n return resolvableToType(this.whenTrue, ptype) && resolvableToType(this.whenFalse, ptype)\n }\n\n resolveToPType(ptype: PTypeOrClass): InstanceBuilder {\n const falseBuilder = requireBuilderOfType(this.whenFalse, ptype)\n const trueBuilder = requireBuilderOfType(this.whenTrue, ptype)\n\n return typeRegistry.getInstanceEb(\n nodeFactory.conditionalExpression({\n sourceLocation: this.sourceLocation,\n falseExpr: falseBuilder.resolve(),\n trueExpr: trueBuilder.resolve(),\n condition: this.condition,\n wtype: falseBuilder.ptype.wtypeOrThrow,\n }),\n falseBuilder.ptype,\n )\n }\n}\n","import type { Expression, LValue } from '../../awst/nodes'\nimport { CodeError, InternalError } from '../../errors'\nimport type { PType, PTypeOrClass } from '../ptypes'\nimport { anyPType } from '../ptypes'\nimport { InstanceBuilder } from './index'\n\nexport class OmittedExpressionBuilder extends InstanceBuilder {\n get ptype(): PType {\n return anyPType\n }\n resolve(): Expression {\n throw new CodeError('Omitted expression cannot be resolved', { sourceLocation: this.sourceLocation })\n }\n resolveLValue(): LValue {\n throw new InternalError('Omitted expression cannot be resolved to an lvalue', { sourceLocation: this.sourceLocation })\n }\n\n resolvableToPType(ptype: PTypeOrClass): boolean {\n throw new InternalError('Omitted expression cannot be resolved to any type', { sourceLocation: this.sourceLocation })\n }\n}\n","import type { SourceLocation } from '../../awst/source-location'\nimport { CodeError } from '../../errors'\nimport type { PType } from '../ptypes'\nimport type { InstanceBuilder } from './index'\nimport { NodeBuilder } from './index'\nimport { isStaticallyIterable, StaticIterator } from './traits/static-iterator'\n\nexport class SpreadExpressionBuilder extends NodeBuilder {\n ptype: PType | undefined = undefined\n constructor(\n private baseExpression: InstanceBuilder,\n sourceLocation: SourceLocation,\n ) {\n super(sourceLocation)\n }\n\n getSpreadItems(): InstanceBuilder[] {\n if (isStaticallyIterable(this.baseExpression)) {\n return this.baseExpression[StaticIterator]()\n }\n throw new CodeError(`Spread operator is not supported on ${this.baseExpression.typeDescription}`, {\n sourceLocation: this.sourceLocation,\n })\n }\n}\n","import type * as ts from 'typescript'\nimport { NotSupported } from '../../errors'\nimport type { Visitor } from '../../visitor/visitor'\nimport { accept } from '../../visitor/visitor'\nimport { AwstBuildContext } from '../context/awst-build-context'\n\ntype ObjectNames = ts.PropertyName | ts.PseudoLiteralToken\n\nexport class TextVisitor implements Visitor<ObjectNames, string> {\n get context() {\n return AwstBuildContext.current\n }\n\n visitBigIntLiteral(node: ts.BigIntLiteral): string {\n return node.text\n }\n\n visitTemplateHead(node: ts.TemplateHead): string {\n return node.text\n }\n visitTemplateMiddle(node: ts.TemplateMiddle): string {\n return node.text\n }\n visitTemplateTail(node: ts.TemplateTail): string {\n return node.text\n }\n public accept = <TNode extends ts.Node>(node: TNode) => accept<TextVisitor, TNode>(this, node)\n\n visitIdentifier(node: ts.Identifier): string {\n return node.text\n }\n visitNoSubstitutionTemplateLiteral(node: ts.NoSubstitutionTemplateLiteral): string {\n return node.text\n }\n visitNumericLiteral(node: ts.NumericLiteral): string {\n return node.text\n }\n visitComputedPropertyName(node: ts.ComputedPropertyName): string {\n throw new NotSupported('Computed property names', {\n sourceLocation: this.context.getSourceLocation(node),\n })\n }\n visitPrivateIdentifier(node: ts.PrivateIdentifier): string {\n return node.text\n }\n visitStringLiteral(node: ts.StringLiteral): string {\n return node.text\n }\n}\n","import ts from 'typescript'\nimport { nodeFactory } from '../../awst/node-factory'\nimport type { Expression, LValue, MethodDocumentation, Statement } from '../../awst/nodes'\nimport { SourceLocation } from '../../awst/source-location'\nimport { CodeError, InternalError, NotSupported } from '../../errors'\nimport { logger } from '../../logger'\nimport { codeInvariant, enumerate, invariant, sortBy } from '../../util'\nimport type { Expressions } from '../../visitor/syntax-names'\nimport {\n AugmentedAssignmentBinaryOp,\n AugmentedAssignmentLogicalOpSyntaxes,\n BinaryOpSyntaxes,\n ComparisonOpSyntaxes,\n getNodeName,\n getSyntaxName,\n isKeyOf,\n LogicalOpSyntaxes,\n UnaryExpressionUnaryOps,\n} from '../../visitor/syntax-names'\nimport type { Visitor } from '../../visitor/visitor'\nimport { accept } from '../../visitor/visitor'\nimport { AwstBuildContext } from '../context/awst-build-context'\nimport { InstanceBuilder, NodeBuilder } from '../eb'\nimport { BooleanExpressionBuilder } from '../eb/boolean-expression-builder'\nimport { ArrayLiteralExpressionBuilder } from '../eb/literal/array-literal-expression-builder'\nimport { BigIntLiteralExpressionBuilder } from '../eb/literal/big-int-literal-expression-builder'\nimport { ConditionalExpressionBuilder } from '../eb/literal/conditional-expression-builder'\nimport type { ObjectLiteralParts } from '../eb/literal/object-literal-expression-builder'\nimport { ObjectLiteralExpressionBuilder } from '../eb/literal/object-literal-expression-builder'\nimport { NamespaceBuilder } from '../eb/namespace-builder'\nimport { OmittedExpressionBuilder } from '../eb/omitted-expression-builder'\nimport { SpreadExpressionBuilder } from '../eb/spread-expression-builder'\nimport { StringExpressionBuilder, StringFunctionBuilder } from '../eb/string-expression-builder'\nimport { StaticIterator } from '../eb/traits/static-iterator'\nimport { requireExpressionOfType, requireInstanceBuilder } from '../eb/util'\nimport { concatArrays } from '../eb/util/array/concat'\nimport type { PType } from '../ptypes'\nimport {\n ArrayLiteralPType,\n ArrayPType,\n BigIntLiteralPType,\n bigIntPType,\n biguintPType,\n boolPType,\n neverPType,\n numberPType,\n NumericLiteralPType,\n ObjectPType,\n TransientType,\n TuplePType,\n uint64PType,\n UnionPType,\n} from '../ptypes'\nimport { instanceEb, typeRegistry } from '../type-registry'\nimport { TextVisitor } from './text-visitor'\n\nexport abstract class BaseVisitor implements Visitor<Expressions, NodeBuilder> {\n private baseAccept = <TNode extends ts.Node>(node: TNode) => accept<BaseVisitor, TNode>(this, node)\n readonly textVisitor: TextVisitor\n get context() {\n return AwstBuildContext.current\n }\n\n protected constructor() {\n this.textVisitor = new TextVisitor()\n }\n\n logNotSupported(node: ts.Node | undefined, message: string) {\n if (!node) return\n logger.error(new NotSupported(message, { sourceLocation: this.sourceLocation(node) }))\n }\n\n throwNotSupported(node: ts.Node, message: string): never {\n throw new NotSupported(message, { sourceLocation: this.sourceLocation(node) })\n }\n\n visitBigIntLiteral(node: ts.BigIntLiteral): InstanceBuilder {\n const literalValue = BigInt(node.text.slice(0, -1))\n const ptype = this.context.getPTypeForNode(node)\n invariant(ptype instanceof TransientType, 'Literals should resolve to transient PTypes')\n return new BigIntLiteralExpressionBuilder(literalValue, ptype, this.sourceLocation(node))\n }\n\n visitRegularExpressionLiteral(node: ts.RegularExpressionLiteral): InstanceBuilder {\n this.throwNotSupported(node, 'Regular expressions')\n }\n\n visitFalseKeyword(node: ts.FalseLiteral): InstanceBuilder {\n return new BooleanExpressionBuilder(nodeFactory.boolConstant({ value: false, sourceLocation: this.sourceLocation(node) }))\n }\n\n visitTrueKeyword(node: ts.TrueLiteral): InstanceBuilder {\n return new BooleanExpressionBuilder(nodeFactory.boolConstant({ value: true, sourceLocation: this.sourceLocation(node) }))\n }\n\n sourceLocation(node: ts.Node): SourceLocation {\n return this.context.getSourceLocation(node)\n }\n\n visitStringLiteral(node: ts.StringLiteral): InstanceBuilder {\n return new StringExpressionBuilder(nodeFactory.stringConstant({ value: node.text, sourceLocation: this.sourceLocation(node) }))\n }\n\n visitNoSubstitutionTemplateLiteral(node: ts.NoSubstitutionTemplateLiteral): InstanceBuilder {\n return new StringExpressionBuilder(nodeFactory.stringConstant({ value: node.text, sourceLocation: this.sourceLocation(node) }))\n }\n\n visitNumericLiteral(node: ts.NumericLiteral): InstanceBuilder {\n const sourceLocation = this.sourceLocation(node)\n codeInvariant(\n !node.text.includes('.'),\n 'Literals with decimal points are not supported. Use a string literal to capture decimal values',\n sourceLocation,\n )\n const literalValue = BigInt(node.text)\n if (literalValue > Number.MAX_SAFE_INTEGER || literalValue < Number.MIN_SAFE_INTEGER) {\n logger.error(\n sourceLocation,\n `This number will lose precision at runtime. Use the Uint64 constructor with a bigint or string literal for very large integers.`,\n )\n }\n const ptype = this.context.getPTypeForNode(node)\n invariant(ptype instanceof TransientType, 'Literals should resolve to transient PTypes')\n return new BigIntLiteralExpressionBuilder(literalValue, ptype, this.sourceLocation(node))\n }\n\n visitIdentifier(node: ts.Identifier): NodeBuilder {\n return this.context.getBuilderForNode(node)\n }\n\n visitImportKeyword(node: ts.ImportExpression): NodeBuilder {\n this.throwNotSupported(node, 'Dynamic imports')\n }\n\n visitNullKeyword(node: ts.NullLiteral): NodeBuilder {\n this.throwNotSupported(node, 'Null values')\n }\n\n visitPrivateIdentifier(node: ts.PrivateIdentifier): NodeBuilder {\n // Private identifiers will be wrapped in a property access expression which makes use of the TextVisitor\n throw InternalError.shouldBeUnreachable()\n }\n\n visitSuperKeyword(node: ts.SuperExpression): NodeBuilder {\n this.throwNotSupported(node, `'super' keyword outside of a contract type`)\n }\n\n visitThisKeyword(node: ts.ThisExpression): NodeBuilder {\n this.throwNotSupported(node, `'this' keyword outside of a contract type`)\n }\n\n visitFunctionExpression(node: ts.FunctionExpression): NodeBuilder {\n this.throwNotSupported(node, 'function expressions. Use a named function instead eg. `function myFunction(...) {...}`')\n }\n\n visitClassExpression(node: ts.ClassExpression): NodeBuilder {\n this.throwNotSupported(node, 'class expressions')\n }\n\n visitObjectLiteralExpression(node: ts.ObjectLiteralExpression): NodeBuilder {\n const sourceLocation = this.sourceLocation(node)\n const parts: Array<ObjectLiteralParts> = node.properties.flatMap((p): ObjectLiteralParts[] => {\n const propertySourceLocation = this.sourceLocation(p)\n switch (p.kind) {\n case ts.SyntaxKind.PropertyAssignment:\n return [\n {\n type: 'properties',\n properties: {\n [this.textVisitor.accept(p.name)]: requireInstanceBuilder(this.baseAccept(p.initializer)),\n },\n },\n ]\n case ts.SyntaxKind.ShorthandPropertyAssignment:\n codeInvariant(!p.objectAssignmentInitializer, 'Object assignment initializer not supported', propertySourceLocation)\n this.logNotSupported(p.equalsToken, 'The equals token is not valid here')\n return [\n {\n type: 'properties',\n properties: { [this.textVisitor.accept(p.name)]: requireInstanceBuilder(this.baseAccept(p.name)) },\n },\n ]\n case ts.SyntaxKind.SpreadAssignment:\n return [\n {\n type: 'spread-object',\n obj: requireInstanceBuilder(this.baseAccept(p.expression)),\n },\n ]\n default:\n logger.error(propertySourceLocation, `Unsupported object literal property kind ${getNodeName(p)}`)\n return []\n }\n })\n const ptype = this.context.getPTypeForNode(node)\n invariant(ptype instanceof ObjectPType, 'Object literal ptype should resolve to ObjectPType')\n return new ObjectLiteralExpressionBuilder(sourceLocation, ptype, parts)\n }\n\n visitArrayLiteralExpression(node: ts.ArrayLiteralExpression): NodeBuilder {\n const sourceLocation = this.sourceLocation(node)\n\n if (node.elements.length === 0) {\n return new ArrayLiteralExpressionBuilder(sourceLocation, [])\n }\n\n const toConcat: Array<InstanceBuilder[] | InstanceBuilder> = []\n let itemBuffer: InstanceBuilder[] = []\n for (const element of node.elements) {\n if (ts.isSpreadElement(element)) {\n const spreadExpr = requireInstanceBuilder(this.baseAccept(element.expression))\n if (itemBuffer.length !== 0) {\n toConcat.push(itemBuffer)\n itemBuffer = []\n }\n toConcat.push(spreadExpr)\n } else {\n itemBuffer.push(requireInstanceBuilder(this.baseAccept(element)))\n }\n }\n if (itemBuffer.length !== 0) {\n toConcat.push(itemBuffer)\n }\n\n return toConcat\n .map((i) =>\n Array.isArray(i) ? new ArrayLiteralExpressionBuilder(SourceLocation.fromLocations(...i.map((li) => li.sourceLocation)), i) : i,\n )\n .reduce((acc, cur) => concatArrays(acc, cur, sourceLocation))\n }\n\n visitSpreadElement(node: ts.SpreadElement): NodeBuilder {\n const base = requireInstanceBuilder(this.baseAccept(node.expression))\n return new SpreadExpressionBuilder(base, this.sourceLocation(node))\n }\n\n visitPropertyAccessExpression(node: ts.PropertyAccessExpression): NodeBuilder {\n this.logNotSupported(node.questionDotToken, 'The optional chaining (?.) operator is not supported')\n const target = this.baseAccept(node.expression)\n if (target instanceof NamespaceBuilder) {\n codeInvariant(!ts.isPrivateIdentifier(node.name), 'Private identifiers are not supported here', this.sourceLocation(node.name))\n return this.context.getBuilderForNode(node.name)\n }\n const property = this.textVisitor.accept(node.name)\n return target.memberAccess(property, this.sourceLocation(node.name))\n }\n\n visitElementAccessExpression(node: ts.ElementAccessExpression): NodeBuilder {\n this.logNotSupported(node.questionDotToken, 'The optional chaining (?.) operator is not supported')\n\n const sourceLocation = this.sourceLocation(node)\n const target = this.baseAccept(node.expression)\n const argument = this.baseAccept(node.argumentExpression)\n return target.indexAccess(requireInstanceBuilder(argument), sourceLocation)\n }\n\n visitCallExpression(node: ts.CallExpression): NodeBuilder {\n this.logNotSupported(node.questionDotToken, 'The optional chaining (?.) operator is not supported')\n const sourceLocation = this.sourceLocation(node)\n const eb = this.baseAccept(node.expression)\n const args = node.arguments\n .map((a) => this.baseAccept(a))\n .flatMap((a) => (a instanceof SpreadExpressionBuilder ? a.getSpreadItems() : a))\n const typeArgs = this.context.getTypeParameters(node)\n return eb.call(args, typeArgs, sourceLocation)\n }\n\n visitNewExpression(node: ts.NewExpression): NodeBuilder {\n const sourceLocation = this.sourceLocation(node)\n const eb = this.baseAccept(node.expression)\n const args =\n node.arguments?.map((a) => this.baseAccept(a)).flatMap((a) => (a instanceof SpreadExpressionBuilder ? a.getSpreadItems() : a)) ?? []\n const typeArgs = this.context.getTypeParameters(node)\n return eb.newCall(args, typeArgs, sourceLocation)\n }\n\n visitTaggedTemplateExpression(node: ts.TaggedTemplateExpression): NodeBuilder {\n const sourceLocation = this.sourceLocation(node)\n const target = this.baseAccept(node.tag)\n if (ts.isNoSubstitutionTemplateLiteral(node.template)) {\n return target.taggedTemplate(this.textVisitor.accept(node.template), [], sourceLocation)\n } else {\n const head = this.textVisitor.accept(node.template.head)\n const spans = node.template.templateSpans.map(\n (s) => [requireInstanceBuilder(this.baseAccept(s.expression)), this.textVisitor.accept(s.literal)] as const,\n )\n return target.taggedTemplate(head, spans, sourceLocation)\n }\n }\n\n visitTypeAssertionExpression(node: ts.TypeAssertion): NodeBuilder {\n // Unsure what code this node represents - it may have been superseded by the AsExpression\n this.throwNotSupported(node, 'Type assertions')\n }\n\n visitParenthesizedExpression(node: ts.ParenthesizedExpression): NodeBuilder {\n return this.baseAccept(node.expression)\n }\n\n /**\n * `delete obj.prop`\n *\n * Not supported currently as typescript requires 'prop' to be optional and we don't support optional values\n */\n visitDeleteExpression(node: ts.DeleteExpression): NodeBuilder {\n this.throwNotSupported(node, 'Delete expressions')\n }\n\n visitTypeOfExpression(node: ts.TypeOfExpression): NodeBuilder {\n this.throwNotSupported(node, 'typeof expressions are only supported in type expressions')\n }\n\n visitVoidExpression(node: ts.VoidExpression): NodeBuilder {\n this.throwNotSupported(node, 'void expression')\n }\n\n visitAwaitExpression(node: ts.AwaitExpression): NodeBuilder {\n this.throwNotSupported(node, 'await keyword')\n }\n\n visitPrefixUnaryExpression(node: ts.PrefixUnaryExpression): NodeBuilder {\n const sourceLocation = this.sourceLocation(node)\n const target = requireInstanceBuilder(this.baseAccept(node.operand))\n if (node.operator === ts.SyntaxKind.ExclamationToken) {\n return new BooleanExpressionBuilder(target.boolEval(sourceLocation, true))\n }\n const op = UnaryExpressionUnaryOps[node.operator]\n return target.prefixUnaryOp(op, sourceLocation)\n }\n\n visitPostfixUnaryExpression(node: ts.PostfixUnaryExpression): NodeBuilder {\n const sourceLocation = this.sourceLocation(node)\n const target = requireInstanceBuilder(this.baseAccept(node.operand))\n const op = UnaryExpressionUnaryOps[node.operator]\n return target.postfixUnaryOp(op, sourceLocation)\n }\n\n evaluateCondition(nodeOrBuilder: ts.Expression | NodeBuilder, negate = false): Expression {\n using _ = this.context.evaluationCtx.enterBooleanContext()\n if (nodeOrBuilder instanceof NodeBuilder) {\n return requireInstanceBuilder(nodeOrBuilder).boolEval(nodeOrBuilder.sourceLocation, negate)\n } else {\n const sourceLocation = this.sourceLocation(nodeOrBuilder)\n return requireInstanceBuilder(this.baseAccept(nodeOrBuilder)).boolEval(sourceLocation, negate)\n }\n }\n\n visitBinaryExpression(node: ts.BinaryExpression): NodeBuilder {\n const sourceLocation = this.sourceLocation(node)\n const binaryOpKind = node.operatorToken.kind\n if (isKeyOf(binaryOpKind, BinaryOpSyntaxes)) {\n const left = requireInstanceBuilder(this.baseAccept(node.left))\n const right = requireInstanceBuilder(this.baseAccept(node.right))\n return left.binaryOp(right, BinaryOpSyntaxes[binaryOpKind], sourceLocation)\n } else if (isKeyOf(binaryOpKind, AugmentedAssignmentBinaryOp)) {\n using _ = this.context.evaluationCtx.leaveBooleanContext()\n\n const left = requireInstanceBuilder(this.baseAccept(node.left))\n const right = requireInstanceBuilder(this.baseAccept(node.right))\n return left.augmentedAssignment(right, AugmentedAssignmentBinaryOp[binaryOpKind], sourceLocation)\n } else if (binaryOpKind === ts.SyntaxKind.EqualsToken) {\n using _ = this.context.evaluationCtx.leaveBooleanContext()\n\n const left = requireInstanceBuilder(this.baseAccept(node.left))\n const right = requireInstanceBuilder(this.baseAccept(node.right))\n return this.handleAssignment(left, right, sourceLocation)\n } else if (isKeyOf(binaryOpKind, ComparisonOpSyntaxes)) {\n const left = requireInstanceBuilder(this.baseAccept(node.left))\n const right = requireInstanceBuilder(this.baseAccept(node.right))\n return left.compare(right, ComparisonOpSyntaxes[binaryOpKind], sourceLocation)\n } else if (isKeyOf(binaryOpKind, LogicalOpSyntaxes)) {\n const ptype = this.context.getPTypeForNode(node)\n if (ptype.equals(boolPType)) {\n const left = requireInstanceBuilder(this.baseAccept(node.left))\n const right = requireInstanceBuilder(this.baseAccept(node.right))\n\n return new BooleanExpressionBuilder(\n nodeFactory.booleanBinaryOperation({\n left: requireExpressionOfType(left, boolPType),\n right: requireExpressionOfType(right, boolPType),\n sourceLocation,\n op: LogicalOpSyntaxes[binaryOpKind],\n }),\n )\n } else if (this.context.evaluationCtx.isBoolean) {\n const left = requireInstanceBuilder(this.baseAccept(node.left))\n const right = requireInstanceBuilder(this.baseAccept(node.right))\n return new BooleanExpressionBuilder(\n nodeFactory.booleanBinaryOperation({\n left: left.boolEval(sourceLocation),\n right: right.boolEval(sourceLocation),\n sourceLocation,\n op: LogicalOpSyntaxes[binaryOpKind],\n }),\n )\n } else {\n const left = requireInstanceBuilder(this.baseAccept(node.left))\n const right = requireInstanceBuilder(this.baseAccept(node.right))\n const leftSingle = left.singleEvaluation()\n const isOr = binaryOpKind === ts.SyntaxKind.BarBarToken\n return this.createConditionalExpression({\n sourceLocation,\n condition: this.evaluateCondition(leftSingle),\n whenTrue: isOr ? leftSingle : right,\n whenFalse: isOr ? right : leftSingle,\n ptype: ptype,\n })\n }\n } else if (isKeyOf(binaryOpKind, AugmentedAssignmentLogicalOpSyntaxes)) {\n using _ = this.context.evaluationCtx.leaveBooleanContext()\n const left = requireInstanceBuilder(this.baseAccept(node.left))\n const right = requireInstanceBuilder(this.baseAccept(node.right))\n const expr = new BooleanExpressionBuilder(\n nodeFactory.booleanBinaryOperation({\n left: requireExpressionOfType(left, boolPType),\n right: requireExpressionOfType(right, boolPType),\n sourceLocation,\n op: AugmentedAssignmentLogicalOpSyntaxes[binaryOpKind],\n }),\n )\n return this.handleAssignment(left, expr, sourceLocation)\n }\n throw new NotSupported(`Binary expression with op ${getSyntaxName(binaryOpKind)}`)\n }\n\n visitConditionalExpression(node: ts.ConditionalExpression): NodeBuilder {\n const sourceLocation = this.sourceLocation(node)\n const condition = this.evaluateCondition(node.condition)\n const whenTrue = requireInstanceBuilder(this.baseAccept(node.whenTrue))\n const whenFalse = requireInstanceBuilder(this.baseAccept(node.whenFalse))\n const ptype = this.context.getPTypeForNode(node)\n return this.createConditionalExpression({\n condition,\n sourceLocation,\n whenFalse,\n whenTrue,\n ptype,\n })\n }\n\n createConditionalExpression({\n condition,\n ptype,\n whenFalse,\n whenTrue,\n sourceLocation,\n }: {\n ptype: PType\n condition: Expression\n whenTrue: InstanceBuilder\n whenFalse: InstanceBuilder\n sourceLocation: SourceLocation\n }): InstanceBuilder {\n // If the expression has a wtype, we can resolve it immediately - if not, we defer the resolution until we have more context\n // (eg. the type of the assignment target)\n if (!(ptype instanceof TransientType) && ptype.wtype) {\n return typeRegistry.getInstanceEb(\n nodeFactory.conditionalExpression({\n sourceLocation: sourceLocation,\n falseExpr: requireExpressionOfType(whenFalse, ptype),\n trueExpr: requireExpressionOfType(whenTrue, ptype),\n condition: condition,\n wtype: ptype.wtypeOrThrow,\n }),\n ptype,\n )\n }\n return new ConditionalExpressionBuilder({ sourceLocation, condition, whenTrue, whenFalse, ptype })\n }\n\n visitTemplateExpression(node: ts.TemplateExpression): NodeBuilder {\n const sourceLocation = this.sourceLocation(node)\n const target = new StringFunctionBuilder(sourceLocation)\n\n const head = this.textVisitor.accept(node.head)\n const spans = node.templateSpans.map(\n (s) => [requireInstanceBuilder(this.baseAccept(s.expression)), this.textVisitor.accept(s.literal)] as const,\n )\n return target.taggedTemplate(head, spans, sourceLocation)\n }\n\n visitYieldExpression(node: ts.YieldExpression): NodeBuilder {\n this.throwNotSupported(node, 'yield expressions')\n }\n\n visitOmittedExpression(node: ts.OmittedExpression): NodeBuilder {\n return new OmittedExpressionBuilder(this.context.getSourceLocation(node))\n }\n\n visitExpressionWithTypeArguments(node: ts.ExpressionWithTypeArguments): NodeBuilder {\n // Should be fine to ignore the type parameters as these can be inferred by the type checker\n return this.baseAccept(node.expression)\n }\n\n visitAsExpression(node: ts.AsExpression): NodeBuilder {\n const sourceLocation = this.sourceLocation(node)\n const outerType = this.context.getPTypeForNode(node)\n\n if (outerType instanceof TransientType) {\n throw new CodeError(outerType.typeMessage, { sourceLocation })\n }\n\n const innerExpr = this.baseAccept(node.expression)\n codeInvariant(\n innerExpr instanceof InstanceBuilder,\n `${innerExpr.typeDescription} is not a valid target for an as expression'`,\n sourceLocation,\n )\n\n codeInvariant(\n innerExpr.resolvableToPType(outerType),\n `${innerExpr.typeDescription} cannot be resolved to type ${outerType}`,\n sourceLocation,\n )\n\n return innerExpr.resolveToPType(outerType)\n }\n\n visitNonNullExpression(node: ts.NonNullExpression): NodeBuilder {\n this.throwNotSupported(node, 'non null assertions')\n }\n\n visitSatisfiesExpression(node: ts.SatisfiesExpression): NodeBuilder {\n return this.baseAccept(node.expression)\n }\n\n handleAssignmentStatement(target: InstanceBuilder, source: InstanceBuilder, sourceLocation: SourceLocation): Statement {\n return nodeFactory.expressionStatement({ expr: this.handleAssignment(target, source, sourceLocation).resolve() })\n }\n\n handleAssignment(target: InstanceBuilder, source: InstanceBuilder, sourceLocation: SourceLocation): InstanceBuilder {\n const assignmentType = this.buildAssignmentExpressionType(target.ptype, source.ptype, sourceLocation)\n return instanceEb(\n nodeFactory.assignmentExpression({\n target: this.buildLValue(target, assignmentType, sourceLocation),\n sourceLocation,\n value: source.resolveToPType(assignmentType).resolve(),\n }),\n assignmentType,\n )\n }\n\n /**\n * Given a target and source type, produce a type that represents the result of an assignment expression.\n *\n * This will largely represent the sourceType verbatim with the exception of numeric literal types which need\n * to be narrowed using the targetType.\n *\n * Eg. a `number` on the rhs should be narrowed to whatever the lhs is for example uint64.\n * @param targetType The type of the assignment target\n * @param sourceType The type of the assignment source\n * @param sourceLocation\n * @private\n */\n private buildAssignmentExpressionType(targetType: PType, sourceType: PType, sourceLocation: SourceLocation): PType {\n if (targetType instanceof ArrayLiteralPType)\n // Puya does not support assigning to array targets, but we can treat array literals as tuples\n return this.buildAssignmentExpressionType(targetType.getTupleType(), sourceType, sourceLocation)\n\n const errorMessage = `Value of type ${sourceType.name} cannot be assigned to target of type ${targetType.name}`\n if (sourceType.equals(targetType)) {\n return targetType\n }\n if (\n sourceType instanceof NumericLiteralPType ||\n sourceType.equals(numberPType) ||\n (sourceType instanceof UnionPType &&\n sourceType.types.every((t) => t.equals(uint64PType) || t instanceof NumericLiteralPType || sourceType.equals(numberPType)))\n ) {\n // Narrow `uint64 | number` or `number` to target type\n return targetType\n }\n if (\n sourceType.equals(bigIntPType) ||\n sourceType instanceof BigIntLiteralPType ||\n (sourceType instanceof UnionPType &&\n sourceType.types.every((t) => t.equals(biguintPType) || t instanceof BigIntLiteralPType || t.equals(bigIntPType)))\n ) {\n // Narrow `biguint | bigint` or `bigint` to target type\n return targetType\n }\n if (sourceType instanceof ArrayLiteralPType) {\n if (targetType instanceof TuplePType) {\n // Narrow array literal types to tuple item types\n codeInvariant(targetType.items.length <= sourceType.items.length, errorMessage, sourceLocation)\n return new TuplePType({\n items: sourceType.items.map((item, index) =>\n index < targetType.items.length ? this.buildAssignmentExpressionType(targetType.items[index], item, sourceLocation) : item,\n ),\n })\n } else if (targetType instanceof ArrayPType) {\n // Narrow array literal types to array type\n codeInvariant(\n sourceType.items.every((i) =>\n this.buildAssignmentExpressionType(targetType.elementType, i, sourceLocation).equals(targetType.elementType),\n ),\n errorMessage,\n sourceLocation,\n )\n return targetType\n }\n }\n if (sourceType instanceof ObjectPType) {\n // Recursively narrow object properties\n codeInvariant(targetType instanceof ObjectPType, errorMessage)\n const targetPropertyOrder = targetType\n .orderedProperties()\n .reduce((acc, [prop], index) => acc.set(prop, index), new Map<string, number>())\n return new ObjectPType({\n alias: targetType.alias,\n description: targetType.description,\n properties: Object.fromEntries(\n sourceType\n .orderedProperties()\n .map(([prop, propType]): [string, PType] => [\n prop,\n prop in targetType.properties\n ? this.buildAssignmentExpressionType(targetType.getPropertyType(prop), propType, sourceLocation)\n : propType,\n ])\n .toSorted(sortBy(([prop]) => targetPropertyOrder.get(prop) ?? Number.MAX_SAFE_INTEGER)),\n ),\n })\n }\n // Array<never> can be assigned to any target array type\n if (sourceType instanceof ArrayPType && sourceType.elementType.equals(neverPType)) {\n codeInvariant(targetType instanceof ArrayPType, errorMessage)\n return targetType\n }\n return sourceType\n }\n\n buildLValue(target: InstanceBuilder, assignmentType: PType, sourceLocation: SourceLocation): LValue {\n if (target instanceof ArrayLiteralExpressionBuilder) {\n if (assignmentType instanceof TuplePType) {\n const targetItems = target[StaticIterator]()\n\n const targets: LValue[] = []\n for (const [index, sourceItemType] of enumerate(assignmentType.items)) {\n const targetItem = targetItems[index]\n if (targetItem && !(targetItem instanceof OmittedExpressionBuilder)) {\n targets.push(this.buildLValue(targetItem, sourceItemType, sourceLocation))\n } else {\n targets.push(\n nodeFactory.varExpression({\n name: this.context.generateDiscardedVarName(),\n sourceLocation,\n wtype: sourceItemType.wtypeOrThrow,\n }),\n )\n }\n }\n return nodeFactory.tupleExpression({ items: targets, sourceLocation })\n }\n }\n if (target instanceof ObjectLiteralExpressionBuilder) {\n if (assignmentType instanceof ObjectPType) {\n const targets: LValue[] = []\n for (const [propName, propType] of assignmentType.orderedProperties()) {\n if (target.hasProperty(propName)) {\n targets.push(this.buildLValue(requireInstanceBuilder(target.memberAccess(propName, sourceLocation)), propType, sourceLocation))\n } else {\n targets.push(\n nodeFactory.varExpression({\n name: this.context.generateDiscardedVarName(),\n sourceLocation,\n wtype: propType.wtypeOrThrow,\n }),\n )\n }\n }\n return nodeFactory.tupleExpression({ items: targets, sourceLocation, wtype: assignmentType.wtype })\n }\n }\n if (target.ptype.equals(assignmentType)) {\n return target.resolveLValue()\n }\n throw new CodeError(\n `The target of an assignment must have the same type as the source. Target: ${target.ptype}, Source: ${assignmentType}`,\n {\n sourceLocation,\n },\n )\n }\n\n protected parseMemberModifiers(node: { modifiers?: readonly ts.ModifierLike[] }) {\n let isPublic = true\n let isStatic = false\n if (node.modifiers)\n for (const m of node.modifiers) {\n switch (m.kind) {\n case ts.SyntaxKind.StaticKeyword:\n isStatic = true\n continue\n case ts.SyntaxKind.PublicKeyword:\n isPublic = true\n continue\n case ts.SyntaxKind.ProtectedKeyword:\n isPublic = false\n continue\n case ts.SyntaxKind.PrivateKeyword:\n isPublic = false\n continue\n case ts.SyntaxKind.AbstractKeyword:\n continue\n case ts.SyntaxKind.AccessorKeyword:\n logger.error(this.sourceLocation(m), 'properties are not supported')\n continue\n case ts.SyntaxKind.AsyncKeyword:\n logger.error(this.sourceLocation(m), 'async keyword is not supported')\n continue\n case ts.SyntaxKind.DeclareKeyword:\n logger.error(this.sourceLocation(m), 'declare keyword is not supported')\n continue\n case ts.SyntaxKind.ExportKeyword:\n case ts.SyntaxKind.ConstKeyword:\n case ts.SyntaxKind.DefaultKeyword:\n case ts.SyntaxKind.ReadonlyKeyword:\n case ts.SyntaxKind.OverrideKeyword:\n case ts.SyntaxKind.InKeyword:\n case ts.SyntaxKind.OutKeyword:\n case ts.SyntaxKind.Decorator:\n // Ignore for now\n continue\n }\n }\n return {\n isStatic,\n isPublic,\n }\n }\n\n protected getNodeDescription(node: ts.Node): string | null {\n const docs = ts.getJSDocCommentsAndTags(node)\n for (const doc of docs) {\n if (ts.isJSDoc(doc)) {\n return ts.getTextOfJSDocComment(doc.comment) ?? null\n }\n }\n return null\n }\n\n protected getMethodDocumentation(node: ts.FunctionDeclaration | ts.MethodDeclaration | ts.ConstructorDeclaration): MethodDocumentation {\n const docs = Array.from(ts.getJSDocCommentsAndTags(node))\n let description: string | null = null\n const args = new Map<string, string>()\n let returns: string | null = null\n for (const doc of docs) {\n if (ts.isJSDoc(doc)) {\n description = ts.getTextOfJSDocComment(doc.comment) ?? null\n if (doc.tags) docs.push(...doc.tags)\n } else if (ts.isJSDocParameterTag(doc)) {\n const paramName = this.textVisitor.accept(doc.name)\n const paramComment = ts.getTextOfJSDocComment(doc.comment)\n\n args.set(paramName, paramComment ?? '')\n } else if (ts.isJSDocReturnTag(doc)) {\n returns = ts.getTextOfJSDocComment(doc.comment) ?? null\n }\n }\n return nodeFactory.methodDocumentation({\n description,\n args,\n returns,\n })\n }\n}\n","import ts from 'typescript'\nimport { logger } from '../../logger'\nimport { invariant, isIn } from '../../util'\nimport { accept } from '../../visitor/visitor'\nimport { AwstBuildContext } from '../context/awst-build-context'\nimport { DecoratorDataBuilder } from '../eb'\nimport type { DecoratorData, DecoratorDataForType, DecoratorType } from '../models/decorator-data'\nimport { BaseVisitor } from './base-visitor'\n\nexport class DecoratorVisitor extends BaseVisitor {\n private accept = <TNode extends ts.Node>(node: TNode) => accept<DecoratorVisitor, TNode>(this, node)\n\n public readonly result: DecoratorData\n\n constructor(node: ts.Decorator) {\n super()\n\n const expr = this.accept(node.expression)\n invariant(expr instanceof DecoratorDataBuilder, 'expr must be DecoratorDataBuilder')\n this.result = expr.resolveDecoratorData()\n }\n\n private static buildDecoratorData(node: { modifiers?: ts.NodeArray<ts.ModifierLike> }): DecoratorData[] {\n return (\n node.modifiers?.flatMap((modifier) => {\n if (!ts.isDecorator(modifier)) return []\n try {\n return AwstBuildContext.current.runInChildContext(() => new DecoratorVisitor(modifier).result)\n } catch (e) {\n invariant(e instanceof Error, 'Only errors should be thrown')\n logger.error(e)\n return []\n }\n }) ?? []\n )\n }\n\n static buildContractData(target: ts.ClassDeclaration) {\n const data = DecoratorVisitor.buildDecoratorData(target)\n return DecoratorVisitor.filterDecoratorData(\n data,\n ['contract'],\n (t) => `${t} is not supported on contracts`,\n 'Only one decorator is allowed per contract.',\n )\n }\n static buildLogicSigData(target: ts.ClassDeclaration) {\n const data = DecoratorVisitor.buildDecoratorData(target)\n return DecoratorVisitor.filterDecoratorData(\n data,\n ['logicsig'],\n (t) => `${t} is not supported on logic signatures`,\n 'Only one decorator is allowed per logic signature.',\n )\n }\n static buildContractMethodData(target: ts.MethodDeclaration) {\n const data = DecoratorVisitor.buildDecoratorData(target)\n return DecoratorVisitor.filterDecoratorData(\n data,\n ['arc4.abimethod', 'arc4.baremethod'],\n (t) => `${t} is not supported on contract methods`,\n 'Only one decorator is allowed per method. Multiple on complete actions can be provided in a single decorator',\n )\n }\n\n private static filterDecoratorData<TType extends DecoratorType>(\n decoratorData: DecoratorData[],\n types: TType[],\n notSupportedMessage: (type: DecoratorType) => string,\n duplicateMessage: string,\n ): DecoratorDataForType<TType> | undefined {\n let data: DecoratorDataForType<TType> | undefined\n for (const d of decoratorData) {\n if (isIn(d.type, types)) {\n if (data === undefined) {\n data = d as DecoratorDataForType<TType>\n } else {\n logger.error(d.sourceLocation, duplicateMessage)\n }\n } else {\n logger.error(d.sourceLocation, notSupportedMessage(d.type))\n }\n }\n return data\n }\n}\n","import type { SourceLocation } from '../../awst/source-location'\nimport { CodeError } from '../../errors'\nimport { codeInvariant } from '../../util'\nimport { DynamicArrayType, StaticArrayType } from './arc4-types'\nimport type { PType } from './base'\nimport { ArrayPType, IterableIteratorType, MutableArrayType, TuplePType, UnionPType } from './index'\n\nexport const getSequenceItemType = (sequence: PType, sequenceLocation: SourceLocation) => {\n if (sequence instanceof IterableIteratorType) return sequence.itemType\n if (sequence instanceof ArrayPType) return sequence.elementType\n if (sequence instanceof MutableArrayType) return sequence.elementType\n if (sequence instanceof TuplePType) {\n codeInvariant(\n sequence.items.every((i) => i.equals(sequence.items[0])),\n `Tuples are only iterable if all item types are the same type. Item type is ${UnionPType.fromTypes(sequence.items)}`,\n sequenceLocation,\n )\n return sequence.items[0]\n }\n if (sequence instanceof DynamicArrayType || sequence instanceof StaticArrayType) {\n return sequence.elementType\n }\n throw new CodeError(`Target is not iterable: ${sequence}`, { sourceLocation: sequenceLocation })\n}\n\nexport const ptypeIn = (target: PType, ...ptypes: [PType, ...PType[]]): boolean => {\n return ptypes.some((t) => t.equals(target))\n}\n","import { AwstBuildContext } from '../context/awst-build-context'\n\nexport function maybeNodes<T>(condition: boolean, ...nodes: T[]): T[] {\n return condition ? nodes : []\n}\n\nexport function visitInChildContext<TVisitorArgs extends unknown[], TVisitorResult>(\n Visitor: { new (...args: TVisitorArgs): { result: TVisitorResult } },\n ...args: TVisitorArgs\n) {\n return AwstBuildContext.current.runInChildContext((deferred) => {\n const visitor = new Visitor(...args)\n return deferred(() => visitor.result)\n })\n}\n","import ts from 'typescript'\nimport { nodeFactory } from '../../awst/node-factory'\nimport type * as awst from '../../awst/nodes'\nimport type { Block } from '../../awst/nodes'\nimport { AssignmentExpression, Goto, ReturnStatement } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { CodeError, InternalError, NotSupported } from '../../errors'\nimport { logger } from '../../logger'\nimport { codeInvariant, enumerate, instanceOfAny, invariant } from '../../util'\nimport type { Statements } from '../../visitor/syntax-names'\nimport { getNodeName } from '../../visitor/syntax-names'\nimport type { Visitor } from '../../visitor/visitor'\nimport { accept } from '../../visitor/visitor'\nimport type { InstanceBuilder } from '../eb'\nimport { BuilderComparisonOp } from '../eb'\nimport { ArrayLiteralExpressionBuilder } from '../eb/literal/array-literal-expression-builder'\nimport { ObjectLiteralExpressionBuilder } from '../eb/literal/object-literal-expression-builder'\nimport { NativeArrayExpressionBuilder } from '../eb/native-array-expression-builder'\nimport { OmittedExpressionBuilder } from '../eb/omitted-expression-builder'\nimport { TupleExpressionBuilder } from '../eb/tuple-expression-builder'\nimport { requireExpressionOfType, requireInstanceBuilder } from '../eb/util'\nimport type { PType } from '../ptypes'\nimport { FunctionPType, ObjectPType } from '../ptypes'\nimport { getSequenceItemType } from '../ptypes/util'\nimport { typeRegistry } from '../type-registry'\nimport { BaseVisitor } from './base-visitor'\nimport { maybeNodes } from './util'\n\n// noinspection JSUnusedGlobalSymbols\nexport abstract class FunctionVisitor\n extends BaseVisitor\n implements\n Visitor<ts.ParameterDeclaration, awst.SubroutineArgument>,\n Visitor<ts.Block, awst.Block>,\n Visitor<Statements, awst.Statement | awst.Statement[]>\n{\n protected accept = <TNode extends ts.Node>(node: TNode) => accept<FunctionVisitor, TNode>(this, node)\n\n protected readonly _functionType: FunctionPType\n\n constructor(protected readonly node: ts.MethodDeclaration | ts.FunctionDeclaration | ts.ConstructorDeclaration) {\n super()\n const type = this.context.getPTypeForNode(node)\n invariant(type instanceof FunctionPType, 'type of function must be FunctionPType')\n this._functionType = type\n }\n\n protected buildFunctionAwst(): {\n args: awst.SubroutineArgument[]\n documentation: awst.MethodDocumentation\n body: awst.Block\n } {\n const node = this.node\n const sourceLocation = this.sourceLocation(node)\n\n const args = node.parameters.map((p) => this.accept(p))\n const assignDestructuredParams = this.evaluateParameterBindingExpressions(node.parameters, sourceLocation)\n codeInvariant(node.body, 'Functions must have a body')\n const body = assignDestructuredParams.length\n ? nodeFactory.block({ sourceLocation }, assignDestructuredParams, this.accept(node.body))\n : this.accept(node.body)\n\n return {\n args,\n body,\n documentation: this.getMethodDocumentation(node),\n }\n }\n\n visitBindingName(bindingName: ts.BindingName, sourceLocation: SourceLocation): InstanceBuilder {\n switch (bindingName.kind) {\n case ts.SyntaxKind.ObjectBindingPattern: {\n const props = Array<[string, InstanceBuilder]>()\n for (const element of bindingName.elements) {\n const sourceLocation = this.sourceLocation(element)\n\n const propertyNameIdentifier = element.propertyName ?? element.name\n invariant(ts.isIdentifier(propertyNameIdentifier), 'propertyName must be an identifier')\n\n const propertyName = this.textVisitor.accept(propertyNameIdentifier)\n codeInvariant(!element.dotDotDotToken, 'Spread operator is not supported', sourceLocation)\n codeInvariant(!element.initializer, 'Initializer on object binding pattern is not supported', sourceLocation)\n\n props.push([propertyName, this.visitBindingName(element.name, sourceLocation)])\n }\n const ptype = ObjectPType.anonymous(props.map(([name, builder]): [string, PType] => [name, builder.ptype]))\n return new ObjectLiteralExpressionBuilder(sourceLocation, ptype, [{ type: 'properties', properties: Object.fromEntries(props) }])\n }\n case ts.SyntaxKind.ArrayBindingPattern: {\n const items: InstanceBuilder[] = []\n for (const element of bindingName.elements) {\n const sourceLocation = this.context.getSourceLocation(element)\n\n if (ts.isOmittedExpression(element)) {\n items.push(new OmittedExpressionBuilder(sourceLocation))\n } else {\n codeInvariant(!element.initializer, 'Initializer on array binding expression is not supported', sourceLocation)\n codeInvariant(!element.propertyName, 'Property name on array binding expression is not supported', sourceLocation)\n\n if (element.dotDotDotToken) {\n const spreadResult = this.visitBindingName(element.name, sourceLocation)\n if (spreadResult instanceof NativeArrayExpressionBuilder) {\n throw new CodeError(\n 'Spread operator is not supported in assignment expressions where the resulting type is a variadic array',\n { sourceLocation },\n )\n } else if (spreadResult instanceof TupleExpressionBuilder) {\n throw new CodeError('Spread operator is not currently supported with tuple expressions', { sourceLocation })\n } else {\n throw InternalError.shouldBeUnreachable()\n }\n } else {\n items.push(this.visitBindingName(element.name, sourceLocation))\n }\n }\n }\n return new ArrayLiteralExpressionBuilder(sourceLocation, items)\n }\n\n case ts.SyntaxKind.Identifier: {\n return requireInstanceBuilder(this.accept(bindingName))\n }\n default:\n throw new InternalError('Unhandled binding name', { sourceLocation })\n }\n }\n evaluateParameterBindingExpressions(parameters: Iterable<ts.ParameterDeclaration>, sourceLocation: SourceLocation): awst.Statement[] {\n const assignments: awst.Statement[] = []\n for (const p of parameters) {\n const sourceLocation = this.sourceLocation(p)\n if (!ts.isIdentifier(p.name)) {\n const paramPType = this.context.getPTypeForNode(p)\n const paramName = this.context.resolveDestructuredParamName(p)\n const paramBuilder = typeRegistry.getInstanceEb(\n nodeFactory.varExpression({\n name: paramName,\n sourceLocation,\n wtype: paramPType.wtypeOrThrow,\n }),\n paramPType,\n )\n\n assignments.push(this.handleAssignmentStatement(this.visitBindingName(p.name, sourceLocation), paramBuilder, sourceLocation))\n }\n }\n\n if (assignments.length === 0) return []\n\n return [\n nodeFactory.block(\n {\n sourceLocation,\n comment: 'Destructured params',\n },\n ...assignments,\n ),\n ]\n }\n\n visitTypeAliasDeclaration(node: ts.TypeAliasDeclaration): awst.Statement[] {\n return []\n }\n\n visitClassDeclaration(node: ts.ClassDeclaration): awst.Statement | awst.Statement[] {\n throw new NotSupported('Nested classes', {\n sourceLocation: this.sourceLocation(node),\n })\n }\n\n visitVariableDeclarationList(node: ts.VariableDeclarationList): awst.Statement[] {\n return node.declarations.flatMap((d) => {\n const sourceLocation = this.sourceLocation(d)\n if (!d.initializer) {\n // Typescript will already error if a destructuring expression is used without an initializer\n if (ts.isIdentifier(d.name)) {\n const ptype = this.context.getPTypeForNode(d.name)\n codeInvariant(ptype.wtype, `${ptype.fullName} is not a valid variable type`)\n }\n return []\n }\n\n const source = requireInstanceBuilder(this.accept(d.initializer))\n\n return this.handleAssignmentStatement(this.visitBindingName(d.name, sourceLocation), source, sourceLocation)\n })\n }\n\n visitVariableStatement(node: ts.VariableStatement): awst.Statement | awst.Statement[] {\n return this.accept(node.declarationList)\n }\n\n visitForStatement(node: ts.ForStatement): awst.Statement | awst.Statement[] {\n const sourceLocation = this.sourceLocation(node)\n let init: awst.Statement[] = []\n if (node.initializer) {\n if (ts.isExpression(node.initializer)) {\n init = [\n nodeFactory.expressionStatement({\n expr: requireInstanceBuilder(this.accept(node.initializer)).resolve(),\n }),\n ]\n } else {\n init = this.accept(node.initializer)\n }\n }\n let incrementor: awst.Statement[] = []\n if (node.incrementor) {\n incrementor = [\n nodeFactory.expressionStatement({\n expr: requireInstanceBuilder(this.accept(node.incrementor)).resolve(),\n }),\n ]\n }\n using ctx = this.context.switchLoopCtx.enterLoop(node, sourceLocation)\n return [\n ...init,\n nodeFactory.whileLoop({\n sourceLocation,\n condition: node.condition ? this.evaluateCondition(node.condition) : nodeFactory.boolConstant({ value: true, sourceLocation }),\n loopBody: nodeFactory.block(\n {\n sourceLocation,\n },\n this.accept(node.statement),\n ...maybeNodes(ctx.hasContinues, ctx.continueTarget),\n incrementor,\n ),\n }),\n ...maybeNodes(ctx.hasBreaks, ctx.breakTarget),\n ]\n }\n\n visitForOfStatement(node: ts.ForOfStatement): awst.Statement | awst.Statement[] {\n const sourceLocation = this.sourceLocation(node)\n const sequenceLocation = this.sourceLocation(node.expression)\n const initializerLocation = this.sourceLocation(node.initializer)\n const sequenceType = this.context.getPTypeForNode(node.expression)\n const itemType = getSequenceItemType(sequenceType, sequenceLocation)\n\n let items: awst.LValue\n if (ts.isExpression(node.initializer)) {\n items = requireInstanceBuilder(this.accept(node.initializer)).resolveLValue()\n } else {\n codeInvariant(node.initializer.declarations.length === 1, 'For of loops can only declare a single loop variable', initializerLocation)\n const [declaration] = node.initializer.declarations\n items = this.buildLValue(this.visitBindingName(declaration.name, initializerLocation), itemType, initializerLocation)\n }\n using ctx = this.context.switchLoopCtx.enterLoop(node, sourceLocation)\n return nodeFactory.block(\n { sourceLocation },\n nodeFactory.forInLoop({\n sourceLocation,\n sequence: requireInstanceBuilder(this.accept(node.expression)).iterate(sourceLocation),\n items,\n loopBody: nodeFactory.block({ sourceLocation }, this.accept(node.statement), ...maybeNodes(ctx.hasContinues, ctx.continueTarget)),\n }),\n ...maybeNodes(ctx.hasBreaks, ctx.breakTarget),\n )\n }\n visitForInStatement(node: ts.ForInStatement): awst.Statement | awst.Statement[] {\n throw new NotSupported('For in statements', {\n sourceLocation: this.sourceLocation(node),\n })\n }\n visitTryStatement(node: ts.TryStatement): awst.Statement | awst.Statement[] {\n throw new NotSupported('Try statements', {\n sourceLocation: this.sourceLocation(node),\n })\n }\n visitEmptyStatement(node: ts.EmptyStatement): awst.Statement | awst.Statement[] {\n return nodeFactory.block({ sourceLocation: this.sourceLocation(node), comment: 'Empty statement' })\n }\n visitExpressionStatement(node: ts.ExpressionStatement): awst.Statement | awst.Statement[] {\n const expr = requireInstanceBuilder(this.accept(node.expression)).resolve()\n if (expr instanceof AssignmentExpression) {\n return nodeFactory.assignmentStatement({\n ...expr,\n })\n }\n return nodeFactory.expressionStatement({\n expr,\n })\n }\n visitIfStatement(node: ts.IfStatement): awst.Statement | awst.Statement[] {\n const sourceLocation = this.sourceLocation(node)\n const condition = this.evaluateCondition(node.expression)\n\n const ifBranch = nodeFactory.block({ sourceLocation: this.sourceLocation(node.thenStatement) }, this.accept(node.thenStatement))\n const elseBranch =\n node.elseStatement && nodeFactory.block({ sourceLocation: this.sourceLocation(node.elseStatement) }, this.accept(node.elseStatement))\n\n return nodeFactory.ifElse({\n condition,\n ifBranch,\n elseBranch: elseBranch ?? null,\n sourceLocation,\n })\n }\n visitDoStatement(node: ts.DoStatement): awst.Statement | awst.Statement[] {\n const sourceLocation = this.sourceLocation(node)\n using ctx = this.context.switchLoopCtx.enterLoop(node, sourceLocation)\n invariant(ctx.breakTarget.label, 'Break target must have a label')\n return nodeFactory.block(\n { sourceLocation },\n nodeFactory.whileLoop({\n sourceLocation,\n condition: nodeFactory.boolConstant({ value: true, sourceLocation }),\n loopBody: nodeFactory.block(\n { sourceLocation },\n this.accept(node.statement),\n ...maybeNodes(ctx.hasContinues, ctx.continueTarget),\n nodeFactory.ifElse({\n condition: this.evaluateCondition(node.expression, true),\n sourceLocation,\n ifBranch: nodeFactory.block(\n { sourceLocation },\n nodeFactory.goto({ sourceLocation, target: this.context.switchLoopCtx.getBreakTarget(undefined, sourceLocation) }),\n ),\n elseBranch: null,\n }),\n ),\n }),\n ...maybeNodes(ctx.hasBreaks, ctx.breakTarget),\n )\n }\n visitWhileStatement(node: ts.WhileStatement): awst.Statement | awst.Statement[] {\n const sourceLocation = this.sourceLocation(node)\n using ctx = this.context.switchLoopCtx.enterLoop(node, sourceLocation)\n\n return nodeFactory.block(\n { sourceLocation },\n nodeFactory.whileLoop({\n sourceLocation,\n condition: this.evaluateCondition(node.expression),\n loopBody: nodeFactory.block({ sourceLocation }, this.accept(node.statement), ...maybeNodes(ctx.hasContinues, ctx.continueTarget)),\n }),\n ...maybeNodes(ctx.hasBreaks, ctx.breakTarget),\n )\n }\n visitContinueStatement(node: ts.ContinueStatement): awst.Statement | awst.Statement[] {\n const sourceLocation = this.sourceLocation(node)\n\n return nodeFactory.goto({\n sourceLocation,\n target: this.context.switchLoopCtx.getContinueTarget(node.label, sourceLocation),\n })\n }\n visitBreakStatement(node: ts.BreakStatement): awst.Statement | awst.Statement[] {\n const sourceLocation = this.sourceLocation(node)\n\n return nodeFactory.goto({\n sourceLocation,\n target: this.context.switchLoopCtx.getBreakTarget(node.label, sourceLocation),\n })\n }\n visitReturnStatement(node: ts.ReturnStatement): awst.Statement | awst.Statement[] {\n const sourceLocation = this.sourceLocation(node)\n if (!node.expression) {\n return nodeFactory.returnStatement({\n sourceLocation: sourceLocation,\n value: null,\n })\n }\n const returnValue = this.accept(node.expression)\n return nodeFactory.returnStatement({\n sourceLocation: sourceLocation,\n value: requireExpressionOfType(returnValue, this._functionType.returnType),\n })\n }\n visitWithStatement(node: ts.WithStatement): awst.Statement | awst.Statement[] {\n throw new NotSupported('with statements', { sourceLocation: this.sourceLocation(node) })\n }\n visitSwitchStatement(node: ts.SwitchStatement): awst.Statement | awst.Statement[] {\n const sourceLocation = this.sourceLocation(node)\n using ctx = this.context.switchLoopCtx.enterSwitch(node, sourceLocation)\n\n const subject = requireInstanceBuilder(this.accept(node.expression)).singleEvaluation()\n\n let defaultCase: Block | null = null\n\n const clauses: awst.Statement[] = []\n for (const [index, clause] of enumerate(node.caseBlock.clauses)) {\n const sourceLocation = this.sourceLocation(clause)\n\n const statements = clause.statements.flatMap((s) => this.accept(s))\n const isNotLastCase = index + 1 < node.caseBlock.clauses.length\n const isObviouslyTerminated = instanceOfAny(statements.at(-1), Goto, ReturnStatement)\n const caseBlock = nodeFactory.block(\n {\n sourceLocation,\n },\n ctx.caseTarget(index, sourceLocation),\n statements,\n ...(isNotLastCase && !isObviouslyTerminated ? [ctx.gotoCase(index + 1, sourceLocation)] : []),\n )\n if (clause.kind === ts.SyntaxKind.DefaultClause) {\n defaultCase = caseBlock\n } else {\n const clauseExpr = requireInstanceBuilder(this.accept(clause.expression))\n clauses.push(\n nodeFactory.ifElse({\n condition: subject.compare(clauseExpr, BuilderComparisonOp.eq, clauseExpr.sourceLocation).boolEval(clauseExpr.sourceLocation),\n ifBranch: caseBlock,\n elseBranch: null,\n sourceLocation,\n }),\n )\n }\n }\n if (defaultCase !== null) clauses.push(defaultCase)\n\n return nodeFactory.block(\n {\n sourceLocation,\n },\n ...clauses,\n ...maybeNodes(ctx.hasBreaks, ctx.breakTarget),\n )\n }\n\n visitLabeledStatement(node: ts.LabeledStatement): awst.Statement | awst.Statement[] {\n return this.accept(node.statement)\n }\n visitThrowStatement(node: ts.ThrowStatement): awst.Statement | awst.Statement[] {\n throw new NotSupported('Throw statements', {\n sourceLocation: this.sourceLocation(node),\n })\n }\n visitDebuggerStatement(node: ts.DebuggerStatement): awst.Statement | awst.Statement[] {\n logger.warn(this.sourceLocation(node), 'Ignoring debugger statement')\n return []\n }\n visitImportDeclaration(node: ts.ImportDeclaration): awst.Statement | awst.Statement[] {\n throw new NotSupported('Non-top-level import declarations')\n }\n\n visitBlock(node: ts.Block): awst.Block {\n return nodeFactory.block(\n {\n sourceLocation: this.sourceLocation(node),\n },\n node.statements.flatMap((s) => {\n try {\n return this.accept(s)\n } catch (e) {\n invariant(e instanceof Error, 'Only errors should be thrown')\n logger.error(e)\n return []\n }\n }),\n )\n }\n\n visitParameter(node: ts.ParameterDeclaration): awst.SubroutineArgument {\n const sourceLocation = this.sourceLocation(node)\n codeInvariant(node.type, 'Parameters must have type annotation', sourceLocation)\n codeInvariant(!node.dotDotDotToken, 'Rest parameters are not supported', sourceLocation)\n codeInvariant(!node.questionToken, 'Optional parameters are not supported', sourceLocation)\n if (node.initializer) {\n logger.warn(sourceLocation, 'TODO: Default parameter values')\n }\n const paramPType = this.context.getPTypeForNode(node.type)\n\n if (ts.isIdentifier(node.name)) {\n return nodeFactory.subroutineArgument({\n sourceLocation: sourceLocation,\n name: this.context.resolveVariableName(node.name),\n wtype: paramPType.wtypeOrThrow,\n })\n } else if (ts.isObjectBindingPattern(node.name)) {\n codeInvariant(paramPType instanceof ObjectPType, 'Param type must be object if it is being destructured', sourceLocation)\n return nodeFactory.subroutineArgument({\n sourceLocation,\n name: this.context.resolveDestructuredParamName(node),\n wtype: paramPType.wtype,\n })\n } else {\n throw new CodeError(`Unsupported parameter declaration type ${getNodeName(node)}`, { sourceLocation })\n }\n }\n}\n","import type ts from 'typescript'\nimport { ContractReference, OnCompletionAction } from '../../awst/models'\nimport { nodeFactory } from '../../awst/node-factory'\nimport type { ABIMethodArgConstantDefault, ABIMethodArgMemberDefault, ARC4MethodConfig } from '../../awst/nodes'\nimport * as awst from '../../awst/nodes'\nimport { ARC4ABIMethodConfig, ARC4BareMethodConfig, ARC4CreateOption } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { Constants } from '../../constants'\nimport { CodeError } from '../../errors'\nimport { logger } from '../../logger'\nimport { codeInvariant, invariant, isIn } from '../../util'\nimport type { NodeBuilder } from '../eb'\nimport { ContractSuperBuilder, ContractThisBuilder } from '../eb/contract-builder'\nimport { requireExpressionOfType } from '../eb/util'\nimport type { Arc4AbiDecoratorData, DecoratorData } from '../models/decorator-data'\nimport type { ContractClassPType, FunctionPType } from '../ptypes'\nimport { GlobalStateType, LocalStateType } from '../ptypes'\nimport { DecoratorVisitor } from './decorator-visitor'\nimport { FunctionVisitor } from './function-visitor'\nimport { visitInChildContext } from './util'\n\nexport class ContractMethodBaseVisitor extends FunctionVisitor {\n protected readonly _contractType: ContractClassPType\n constructor(node: ts.MethodDeclaration | ts.ConstructorDeclaration, contractType: ContractClassPType) {\n super(node)\n this._contractType = contractType\n }\n visitSuperKeyword(node: ts.SuperExpression): NodeBuilder {\n const sourceLocation = this.sourceLocation(node)\n\n // Only the polytype clustered class should have more than one base type, and it shouldn't have\n // any user code with super calls\n invariant(this._contractType.baseTypes.length === 1, 'Super keyword only valid if contract has a single base type')\n return new ContractSuperBuilder(this._contractType.baseTypes[0], sourceLocation)\n }\n\n visitThisKeyword(node: ts.ThisExpression): NodeBuilder {\n const sourceLocation = this.sourceLocation(node)\n return new ContractThisBuilder(this._contractType, sourceLocation)\n }\n}\n\nexport class ContractMethodVisitor extends ContractMethodBaseVisitor {\n private readonly metaData: {\n cref: ContractReference\n arc4MethodConfig: ARC4MethodConfig | null\n sourceLocation: SourceLocation\n }\n\n constructor(node: ts.MethodDeclaration, contractType: ContractClassPType) {\n super(node, contractType)\n const sourceLocation = this.sourceLocation(node)\n\n const decorator = DecoratorVisitor.buildContractMethodData(node)\n const cref = ContractReference.fromPType(this._contractType)\n\n const modifiers = this.parseMemberModifiers(node)\n\n const arc4MethodConfig = this.buildArc4Config({\n functionType: this._functionType,\n decorator,\n modifiers,\n methodLocation: sourceLocation,\n })\n\n if (arc4MethodConfig)\n this.context.addArc4Config({\n contractReference: cref,\n sourceLocation,\n arc4MethodConfig,\n memberName: this._functionType.name,\n })\n this.metaData = {\n arc4MethodConfig,\n cref,\n sourceLocation,\n }\n }\n\n get result() {\n const { args, body, documentation } = this.buildFunctionAwst()\n\n return new awst.ContractMethod({\n arc4MethodConfig: this.metaData.arc4MethodConfig,\n memberName: this._functionType.name,\n sourceLocation: this.metaData.sourceLocation,\n args,\n returnType: this._functionType.returnType.wtypeOrThrow,\n body,\n cref: this.metaData.cref,\n documentation,\n inline: null,\n })\n }\n\n public static buildContractMethod(node: ts.MethodDeclaration, contractType: ContractClassPType): () => awst.ContractMethod {\n return visitInChildContext(this, node, contractType)\n }\n\n private buildArc4Config({\n functionType,\n decorator,\n modifiers: { isPublic, isStatic },\n methodLocation,\n }: {\n functionType: FunctionPType\n decorator: DecoratorData | undefined\n modifiers: { isPublic: boolean; isStatic: boolean }\n methodLocation: SourceLocation\n }): awst.ARC4MethodConfig | null {\n const isProgramMethod = isIn(functionType.name, [Constants.approvalProgramMethodName, Constants.clearStateProgramMethodName])\n\n if (decorator && isIn(decorator.type, [Constants.arc4BareDecoratorName, Constants.arc4AbiDecoratorName])) {\n if (!isPublic) {\n logger.error(methodLocation, 'Private or protected methods cannot be exposed as an abi method')\n return null\n }\n if (isStatic) {\n logger.error(methodLocation, 'Static methods cannot be exposed as an abi method')\n return null\n }\n if (isProgramMethod) {\n logger.error(methodLocation, `${functionType.name} is reserved for program implementations and cannot be used as an abi method`)\n return null\n }\n }\n if (isProgramMethod || !isPublic || isStatic) return null\n\n if (decorator?.type === 'arc4.baremethod') {\n return new ARC4BareMethodConfig({\n sourceLocation: decorator.sourceLocation,\n allowedCompletionTypes: decorator.ocas,\n create: decorator.create,\n })\n }\n\n if (decorator?.type === 'arc4.abimethod') {\n return new ARC4ABIMethodConfig({\n sourceLocation: decorator.sourceLocation,\n allowedCompletionTypes: decorator.ocas,\n create: decorator.create,\n name: decorator.nameOverride ?? functionType.name,\n readonly: decorator.readonly,\n defaultArgs: new Map(\n Object.entries(decorator.defaultArguments).map(([parameterName, argConfig]) => [\n parameterName,\n this.buildDefaultArgument({\n methodName: functionType.name,\n parameterName,\n config: argConfig,\n decoratorLocation: decorator.sourceLocation,\n }),\n ]),\n ),\n })\n } else if (isPublic && this._contractType.isARC4) {\n return new ARC4ABIMethodConfig({\n sourceLocation: methodLocation,\n allowedCompletionTypes: [OnCompletionAction.NoOp],\n create: ARC4CreateOption.disallow,\n name: functionType.name,\n readonly: false,\n defaultArgs: new Map(),\n })\n }\n return null\n }\n\n private buildDefaultArgument({\n methodName,\n parameterName,\n config,\n decoratorLocation,\n }: {\n methodName: string\n parameterName: string\n config: Arc4AbiDecoratorData['defaultArguments'][string]\n decoratorLocation: SourceLocation\n }): ABIMethodArgMemberDefault | ABIMethodArgConstantDefault {\n const [, paramType] = this._contractType.methods[methodName].parameters.find(([p]) => p === parameterName) ?? [undefined, undefined]\n codeInvariant(\n paramType,\n `Default argument specification '${parameterName}' does not match any parameters on the target method`,\n decoratorLocation,\n )\n if (config.type === 'constant') {\n return nodeFactory.aBIMethodArgConstantDefault({\n value: requireExpressionOfType(config.value, paramType),\n })\n }\n const methodType = this._contractType.methods[config.name]\n if (methodType) {\n codeInvariant(\n methodType.returnType.equals(paramType),\n `Default argument specification for '${parameterName}' does not match parameter type`,\n decoratorLocation,\n )\n return nodeFactory.aBIMethodArgMemberDefault({\n name: config.name,\n })\n }\n const propertyType = this._contractType.properties[config.name]\n if (propertyType instanceof GlobalStateType || propertyType instanceof LocalStateType) {\n codeInvariant(\n propertyType.contentType.equals(paramType),\n `Default argument specification for '${parameterName}' does not match parameter type`,\n decoratorLocation,\n )\n return nodeFactory.aBIMethodArgMemberDefault({\n name: config.name,\n })\n }\n throw new CodeError('Unsupported default argument config', { sourceLocation: decoratorLocation })\n }\n}\n","import ts from 'typescript'\nimport type { ContractReference } from '../../awst/models'\nimport { nodeFactory } from '../../awst/node-factory'\nimport * as awst from '../../awst/nodes'\nimport { logger } from '../../logger'\nimport { codeInvariant, invariant } from '../../util'\nimport type { ContractClassPType } from '../ptypes'\nimport { voidPType } from '../ptypes'\nimport { ContractMethodBaseVisitor } from './contract-method-visitor'\nimport { visitInChildContext } from './util'\n\nexport interface ConstructorInfo {\n propertyInitializerStatements: awst.Statement[]\n cref: ContractReference\n}\n\nexport class ConstructorVisitor extends ContractMethodBaseVisitor {\n private _foundSuperCall = false\n constructor(\n node: ts.ConstructorDeclaration,\n contractType: ContractClassPType,\n private readonly contractInfo: ConstructorInfo,\n ) {\n super(node, contractType)\n }\n\n get result() {\n const sourceLocation = this.sourceLocation(this.node)\n const { args, body, documentation } = this.buildFunctionAwst()\n return new awst.ContractMethod({\n arc4MethodConfig: null,\n memberName: this._functionType.name,\n sourceLocation,\n args,\n returnType: voidPType.wtype,\n body,\n cref: this.contractInfo.cref,\n documentation,\n inline: null,\n })\n }\n\n public static buildConstructor(\n node: ts.ConstructorDeclaration,\n contractType: ContractClassPType,\n constructorMethodInfo: ConstructorInfo,\n ) {\n return visitInChildContext(this, node, contractType, constructorMethodInfo)\n }\n\n visitBlock(node: ts.Block): awst.Block {\n return nodeFactory.block(\n {\n sourceLocation: this.sourceLocation(node),\n },\n node.statements.flatMap((s) => {\n try {\n const statement = this.accept(s)\n if (isSuperCall(s)) {\n // Property initializer statements should be injected immediately after the super() call\n codeInvariant(!this._foundSuperCall, 'A constructor can only contain one call to super()')\n this._foundSuperCall = true\n return nodeFactory.block(\n {\n sourceLocation: this.sourceLocation(s),\n },\n ...(Array.isArray(statement) ? statement : [statement]),\n ...this.contractInfo.propertyInitializerStatements,\n )\n }\n return statement\n } catch (e) {\n invariant(e instanceof Error, 'Only errors should be thrown')\n logger.error(e)\n return []\n }\n }),\n )\n }\n}\n\nfunction isSuperCall(node: ts.Statement) {\n return (\n ts.isExpressionStatement(node) && ts.isCallExpression(node.expression) && node.expression.expression.kind === ts.SyntaxKind.SuperKeyword\n )\n}\n","import ts from 'typescript'\nimport { ContractReference } from '../../awst/models'\nimport { nodeFactory } from '../../awst/node-factory'\nimport type * as awst from '../../awst/nodes'\nimport type { ContractMethod } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { wtypes } from '../../awst/wtypes'\nimport { Constants } from '../../constants'\nimport { logger } from '../../logger'\nimport { codeInvariant, invariant } from '../../util'\nimport type { ClassElements } from '../../visitor/syntax-names'\nimport type { Visitor } from '../../visitor/visitor'\nimport { accept } from '../../visitor/visitor'\nimport { ContractSuperBuilder } from '../eb/contract-builder'\nimport { BoxProxyExpressionBuilder } from '../eb/storage/box'\nimport { GlobalStateFunctionResultBuilder } from '../eb/storage/global-state'\nimport { LocalStateFunctionResultBuilder } from '../eb/storage/local-state'\nimport { requireInstanceBuilder } from '../eb/util'\nimport { ContractClassModel } from '../models/contract-class-model'\nimport type { ContractOptionsDecoratorData } from '../models/decorator-data'\nimport type { ContractClassPType } from '../ptypes'\nimport { BaseVisitor } from './base-visitor'\nimport { ConstructorVisitor } from './constructor-visitor'\nimport { ContractMethodVisitor } from './contract-method-visitor'\nimport { DecoratorVisitor } from './decorator-visitor'\nimport { visitInChildContext } from './util'\n\nexport class ContractVisitor extends BaseVisitor implements Visitor<ClassElements, void> {\n private _ctor?: () => ContractMethod\n private _methods: Array<() => ContractMethod> = []\n private readonly _contractPType: ContractClassPType\n private readonly _propertyInitialization: awst.Statement[] = []\n public accept = <TNode extends ts.Node>(node: TNode) => accept<ContractVisitor, TNode>(this, node)\n\n private readonly metaData: {\n isAbstract: boolean\n contractOptions: ContractOptionsDecoratorData | undefined\n sourceLocation: SourceLocation\n description: string | null\n }\n\n constructor(classDec: ts.ClassDeclaration, ptype: ContractClassPType) {\n super()\n const sourceLocation = this.context.getSourceLocation(classDec)\n codeInvariant(classDec.name, 'Anonymous classes are not supported for contracts', sourceLocation)\n\n this._contractPType = ptype\n\n const contractOptions = DecoratorVisitor.buildContractData(classDec)\n\n const isAbstract = Boolean(classDec.modifiers?.some((m) => m.kind === ts.SyntaxKind.AbstractKeyword))\n\n for (const property of classDec.members.filter(ts.isPropertyDeclaration)) {\n this.acceptAndIgnoreBuildErrors(property)\n }\n const ctor = classDec.members.find(ts.isConstructorDeclaration)\n if (ctor) this.acceptAndIgnoreBuildErrors(ctor)\n\n for (const member of classDec.members) {\n if (!ts.isConstructorDeclaration(member) && !ts.isPropertyDeclaration(member)) {\n this.acceptAndIgnoreBuildErrors(member)\n }\n }\n\n this.metaData = {\n isAbstract,\n sourceLocation,\n contractOptions,\n description: this.getNodeDescription(classDec),\n }\n }\n\n get result(): [] | [awst.Contract] {\n const { isAbstract, sourceLocation, contractOptions, description } = this.metaData\n\n let approvalProgram: ContractMethod | null = null\n let clearProgram: ContractMethod | null = null\n const methods: ContractMethod[] = []\n const ctor: ContractMethod | null = this._ctor?.() ?? this.makeDefaultConstructor(sourceLocation)\n\n for (const deferredMethod of this._methods) {\n const contractMethod = deferredMethod()\n switch (contractMethod.memberName) {\n case Constants.approvalProgramMethodName:\n approvalProgram = contractMethod\n break\n case Constants.clearStateProgramMethodName:\n clearProgram = contractMethod\n break\n default:\n methods.push(contractMethod)\n }\n }\n\n const contract = new ContractClassModel({\n type: this._contractPType,\n propertyInitialization: this._propertyInitialization,\n isAbstract: isAbstract,\n appState: this.context.getStorageDefinitionsForContract(this._contractPType),\n ctor,\n methods,\n description,\n approvalProgram,\n clearProgram,\n options: contractOptions,\n sourceLocation: sourceLocation,\n })\n this.context.addToCompilationSet(contract.id, contract)\n const contractClass = this.context.compilationSet.getContractClass(ContractReference.fromPType(this._contractPType))\n if (!contractClass.isAbstract) {\n return [contractClass.buildContract(this.context.compilationSet)]\n }\n return []\n }\n\n private acceptAndIgnoreBuildErrors(node: ts.ClassElement) {\n try {\n this.accept(node)\n } catch (e) {\n invariant(e instanceof Error, 'Only errors should be thrown')\n logger.error(e)\n }\n }\n\n private makeDefaultConstructor(sourceLocation: SourceLocation) {\n // If there is no property initialization, we don't need an implicit constructor\n if (this._propertyInitialization.length === 0) return null\n invariant(this._contractPType.baseTypes.length === 1, 'Only single base type supported for now')\n return nodeFactory.contractMethod({\n memberName: Constants.constructorMethodName,\n cref: ContractReference.fromPType(this._contractPType),\n args: [],\n arc4MethodConfig: null,\n sourceLocation,\n returnType: wtypes.voidWType,\n\n documentation: nodeFactory.methodDocumentation(),\n body: nodeFactory.block(\n { sourceLocation },\n nodeFactory.expressionStatement({\n expr: requireInstanceBuilder(\n new ContractSuperBuilder(this._contractPType.baseTypes[0], sourceLocation).call([], [], sourceLocation),\n ).resolve(),\n }),\n ...this._propertyInitialization,\n ),\n inline: null,\n })\n }\n\n visitClassStaticBlockDeclaration(node: ts.ClassStaticBlockDeclaration): void {\n this.throwNotSupported(node, 'class static blocks')\n }\n visitConstructor(node: ts.ConstructorDeclaration): void {\n this._ctor = ConstructorVisitor.buildConstructor(node, this._contractPType, {\n cref: ContractReference.fromPType(this._contractPType),\n propertyInitializerStatements: this._propertyInitialization,\n })\n }\n visitGetAccessor(node: ts.GetAccessorDeclaration): void {\n this.throwNotSupported(node, 'get accessors')\n }\n visitIndexSignature(node: ts.IndexSignatureDeclaration): void {\n this.throwNotSupported(node, 'index signatures')\n }\n\n visitMethodDeclaration(node: ts.MethodDeclaration): void {\n this._methods.push(ContractMethodVisitor.buildContractMethod(node, this._contractPType))\n }\n visitPropertyDeclaration(node: ts.PropertyDeclaration): void {\n const sourceLocation = this.sourceLocation(node)\n codeInvariant(!node.questionToken, 'Optional properties are not supported', sourceLocation)\n codeInvariant(!node.exclamationToken, 'Non-null assertion operators on properties are not supported', sourceLocation)\n codeInvariant(!node.modifiers?.some((m) => m.kind === ts.SyntaxKind.StaticKeyword), 'Static properties are not supported')\n\n const propertyName = this.textVisitor.accept(node.name)\n codeInvariant(node.initializer, 'Properties must have an initializer', sourceLocation)\n if (node.type) {\n logger.info(sourceLocation, 'Type annotations are not required on initialized properties')\n }\n const initializer = this.accept(node.initializer)\n\n if (initializer instanceof GlobalStateFunctionResultBuilder) {\n const storageDeclaration = initializer.buildStorageDeclaration(\n propertyName,\n this.sourceLocation(node.name),\n this.getNodeDescription(node),\n this._contractPType,\n )\n this.context.addStorageDeclaration(storageDeclaration)\n if (initializer.initialValue) {\n this._propertyInitialization.push(\n nodeFactory.assignmentStatement({\n target: nodeFactory.appStateExpression({\n key: storageDeclaration.key,\n wtype: storageDeclaration.ptype.contentType.wtypeOrThrow,\n sourceLocation: storageDeclaration.sourceLocation,\n existsAssertionMessage: null,\n }),\n value: initializer.initialValue,\n sourceLocation,\n }),\n )\n }\n } else if (initializer instanceof BoxProxyExpressionBuilder || initializer instanceof LocalStateFunctionResultBuilder) {\n this.context.addStorageDeclaration(\n initializer.buildStorageDeclaration(\n propertyName,\n this.sourceLocation(node.name),\n this.getNodeDescription(node),\n this._contractPType,\n ),\n )\n } else {\n logger.error(\n initializer.sourceLocation,\n `Unsupported property type ${initializer.typeDescription}. Only GlobalState, LocalState, and Box proxies can be stored on a contract.`,\n )\n }\n }\n visitSemicolonClassElement(node: ts.SemicolonClassElement): void {\n // Ignore\n }\n visitSetAccessor(node: ts.SetAccessorDeclaration): void {\n this.throwNotSupported(node, 'set accessors')\n }\n\n public static buildContract(classDec: ts.ClassDeclaration, ptype: ContractClassPType) {\n return visitInChildContext(this, classDec, ptype)\n }\n}\n","import type ts from 'typescript'\nimport * as awst from '../../awst/nodes'\nimport { FunctionVisitor } from './function-visitor'\nimport { visitInChildContext } from './util'\n\nexport class LogicSigProgramVisitor extends FunctionVisitor {\n constructor(node: ts.MethodDeclaration) {\n super(node)\n }\n\n get result() {\n const sourceLocation = this.sourceLocation(this.node)\n const { args, body, documentation } = this.buildFunctionAwst()\n return new awst.Subroutine({\n id: this._functionType.fullName,\n name: this._functionType.name,\n sourceLocation,\n args,\n returnType: this._functionType.returnType.wtypeOrThrow,\n body,\n documentation,\n inline: null,\n })\n }\n\n public static buildLogicSigProgram(node: ts.MethodDeclaration) {\n return visitInChildContext(LogicSigProgramVisitor, node)\n }\n}\n","import type ts from 'typescript'\nimport type { Subroutine } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { Constants } from '../../constants'\nimport { CodeError } from '../../errors'\nimport { logger } from '../../logger'\nimport { codeInvariant, invariant } from '../../util'\nimport type { ClassElements } from '../../visitor/syntax-names'\nimport type { Visitor } from '../../visitor/visitor'\nimport { accept } from '../../visitor/visitor'\nimport type { LogicSigOptionsDecoratorData } from '../models/decorator-data'\nimport { LogicSigClassModel } from '../models/logic-sig-class-model'\nimport type { LogicSigPType } from '../ptypes'\nimport { boolPType, FunctionPType, uint64PType } from '../ptypes'\nimport { ptypeIn } from '../ptypes/util'\nimport { BaseVisitor } from './base-visitor'\nimport { DecoratorVisitor } from './decorator-visitor'\nimport { LogicSigProgramVisitor } from './logic-sig-program-visitor'\nimport { visitInChildContext } from './util'\n\nexport class LogicSigVisitor extends BaseVisitor implements Visitor<ClassElements, void> {\n public accept = <TNode extends ts.Node>(node: TNode) => accept<LogicSigVisitor, TNode>(this, node)\n\n static buildLogicSig(classDec: ts.ClassDeclaration, ptype: LogicSigPType) {\n return visitInChildContext(this, classDec, ptype)\n }\n\n private program?: () => Subroutine\n private readonly metaData: {\n description: string | null\n options: LogicSigOptionsDecoratorData | undefined\n sourceLocation: SourceLocation\n }\n\n constructor(\n classDec: ts.ClassDeclaration,\n private _logicSigPType: LogicSigPType,\n ) {\n super()\n const sourceLocation = this.sourceLocation(classDec)\n\n const options = DecoratorVisitor.buildLogicSigData(classDec)\n\n for (const member of classDec.members) {\n try {\n this.accept(member)\n } catch (e) {\n invariant(e instanceof Error, 'Only errors should be thrown')\n logger.error(e)\n }\n }\n\n this.metaData = {\n options,\n sourceLocation,\n description: this.getNodeDescription(classDec),\n }\n }\n\n get result() {\n const { sourceLocation, options, description } = this.metaData\n\n codeInvariant(this.program, 'Logic signature class must implement a valid program method', sourceLocation)\n\n const logicSig = new LogicSigClassModel({\n bases: [],\n sourceLocation,\n program: this.program(),\n type: this._logicSigPType,\n description,\n options,\n })\n\n this.context.addToCompilationSet(logicSig.id, logicSig)\n return logicSig.buildLogicSignature()\n }\n\n private throwLogicSigNotSupported(node: ts.Node, desc: string): never {\n throw new CodeError(`${desc} are not supported in logic signature definitions`, {\n sourceLocation: this.sourceLocation(node),\n })\n }\n\n visitClassStaticBlockDeclaration(node: ts.ClassStaticBlockDeclaration) {\n this.throwLogicSigNotSupported(node, 'Class static block declarations')\n }\n visitConstructor(node: ts.ConstructorDeclaration) {\n this.throwLogicSigNotSupported(node, 'Constructor declarations')\n }\n visitGetAccessor(node: ts.GetAccessorDeclaration) {\n this.throwLogicSigNotSupported(node, 'Property declarations')\n }\n visitIndexSignature(node: ts.IndexSignatureDeclaration) {\n this.throwLogicSigNotSupported(node, 'Index signature declarations')\n }\n visitMethodDeclaration(node: ts.MethodDeclaration) {\n const sourceLocation = this.sourceLocation(node)\n const methodType = this.context.getPTypeForNode(node)\n invariant(methodType instanceof FunctionPType, 'type of function must be FunctionPType')\n if (methodType.name !== Constants.logicSigProgramMethodName) {\n logger.error(\n sourceLocation,\n `LogicSig classes may only contain a program implementation method named '${Constants.logicSigProgramMethodName}'. Consider making '${methodType.name}' a free subroutine.`,\n )\n return\n }\n if (!ptypeIn(methodType.returnType, uint64PType, boolPType)) {\n logger.error(\n sourceLocation,\n `LogicSig program method must return \\`uint64\\` or \\`boolean\\`, found \\`${methodType.returnType.name}\\` `,\n )\n return\n }\n this.program = LogicSigProgramVisitor.buildLogicSigProgram(node)\n }\n visitPropertyDeclaration(node: ts.PropertyDeclaration) {\n this.throwLogicSigNotSupported(node, 'Property declarations')\n }\n visitSemicolonClassElement(node: ts.SemicolonClassElement) {\n // Ignore\n }\n visitSetAccessor(node: ts.SetAccessorDeclaration) {\n this.throwLogicSigNotSupported(node, 'Property declarations')\n }\n}\n","import type ts from 'typescript'\nimport { CodeError } from '../../errors'\nimport { logger } from '../../logger'\nimport { invariant } from '../../util'\nimport type { ClassElements } from '../../visitor/syntax-names'\nimport type { Visitor } from '../../visitor/visitor'\nimport { accept } from '../../visitor/visitor'\nimport { AwstBuildContext } from '../context/awst-build-context'\nimport type { ARC4StructType } from '../ptypes/arc4-types'\nimport { BaseVisitor } from './base-visitor'\n\nexport class StructVisitor extends BaseVisitor implements Visitor<ClassElements, void> {\n public accept = <TNode extends ts.Node>(node: TNode) => accept<StructVisitor, TNode>(this, node)\n\n static buildStructDef(classDec: ts.ClassDeclaration, ptype: ARC4StructType) {\n return AwstBuildContext.current.runInChildContext(() => {\n new StructVisitor(classDec, ptype)\n return []\n })\n }\n\n constructor(classDec: ts.ClassDeclaration, ptype: ARC4StructType) {\n super()\n\n for (const member of classDec.members) {\n try {\n this.accept(member)\n } catch (e) {\n invariant(e instanceof Error, 'Only errors should be thrown')\n logger.error(e)\n }\n }\n }\n\n private throwStructNotSupported(node: ts.Node, desc: string): never {\n throw new CodeError(`${desc} are not supported in ARC4 struct definitions`, {\n sourceLocation: this.sourceLocation(node),\n })\n }\n\n visitClassStaticBlockDeclaration(node: ts.ClassStaticBlockDeclaration) {\n this.throwStructNotSupported(node, 'Class static block declarations')\n }\n visitConstructor(node: ts.ConstructorDeclaration) {\n this.throwStructNotSupported(node, 'Constructor declarations')\n }\n visitGetAccessor(node: ts.GetAccessorDeclaration) {\n this.throwStructNotSupported(node, 'Property declarations')\n }\n visitIndexSignature(node: ts.IndexSignatureDeclaration) {\n this.throwStructNotSupported(node, 'Index signature declarations')\n }\n visitMethodDeclaration(node: ts.MethodDeclaration) {\n this.throwStructNotSupported(node, 'Method declarations')\n }\n visitPropertyDeclaration(node: ts.PropertyDeclaration) {\n this.throwStructNotSupported(node, 'Property declarations')\n }\n visitSemicolonClassElement(node: ts.SemicolonClassElement) {\n // Ignore\n }\n visitSetAccessor(node: ts.SetAccessorDeclaration) {\n this.throwStructNotSupported(node, 'Property declarations')\n }\n}\n","import type ts from 'typescript'\nimport * as awst from '../../awst/nodes'\nimport { FunctionVisitor } from './function-visitor'\nimport { visitInChildContext } from './util'\n\nexport class SubroutineVisitor extends FunctionVisitor {\n constructor(node: ts.FunctionDeclaration) {\n super(node)\n }\n\n get result() {\n const sourceLocation = this.sourceLocation(this.node)\n\n const { args, body, documentation } = this.buildFunctionAwst()\n\n return new awst.Subroutine({\n id: this._functionType.fullName,\n name: this._functionType.name,\n sourceLocation,\n args,\n returnType: this._functionType.returnType.wtypeOrThrow,\n body,\n documentation,\n inline: null,\n })\n }\n\n public static buildSubroutine(node: ts.FunctionDeclaration) {\n return visitInChildContext(SubroutineVisitor, node)\n }\n}\n","import ts from 'typescript'\nimport { isConstant } from '../../awst'\nimport type * as awst from '../../awst/nodes'\nimport { TemplateVar } from '../../awst/nodes'\nimport { CodeError } from '../../errors'\nimport { logger, patchErrorLocation } from '../../logger'\nimport { codeInvariant, expandMaybeArray, invariant } from '../../util'\nimport type { ModuleStatements } from '../../visitor/syntax-names'\nimport type { Visitor } from '../../visitor/visitor'\nimport { accept } from '../../visitor/visitor'\nimport { requireExpressionOfType } from '../eb/util'\nimport { ContractClassPType, LibClassType, LogicSigPType } from '../ptypes'\nimport { ARC4StructType } from '../ptypes/arc4-types'\nimport { BaseVisitor } from './base-visitor'\nimport { ContractVisitor } from './contract-visitor'\nimport { LogicSigVisitor } from './logic-sig-visitor'\nimport { StructVisitor } from './struct-visitor'\nimport { SubroutineVisitor } from './subroutine-visitor'\n\ntype NodeOrDeferred = awst.AWST[] | awst.AWST | (() => awst.AWST[] | awst.AWST)\n\nexport class SourceFileVisitor extends BaseVisitor implements Visitor<ModuleStatements, NodeOrDeferred> {\n private _moduleStatements: NodeOrDeferred[] = []\n private accept = <TNode extends ts.Node>(node: TNode) => accept<SourceFileVisitor, TNode>(this, node)\n\n constructor(sourceFile: ts.SourceFile) {\n super()\n\n for (const statement of sourceFile.statements) {\n try {\n this._moduleStatements.push(this.accept(statement))\n } catch (e) {\n invariant(e instanceof Error, 'Only errors should be thrown')\n logger.error(e)\n }\n }\n }\n\n visitInterfaceDeclaration(node: ts.InterfaceDeclaration): NodeOrDeferred {\n // Ignore these for now\n return []\n }\n\n visitTypeAliasDeclaration(_node: ts.TypeAliasDeclaration): NodeOrDeferred {\n // Ignore these for now - but maybe we need to do something with them when it comes to structs\n return []\n }\n\n visitFunctionDeclaration(node: ts.FunctionDeclaration): NodeOrDeferred {\n const sourceLocation = this.sourceLocation(node)\n return this.context.runInChildContext(() => patchErrorLocation(SubroutineVisitor.buildSubroutine(node), sourceLocation))\n }\n\n buildModule(): awst.AWST[] {\n return Array.from(this.gatherStatements())\n }\n\n private *gatherStatements(): Generator<awst.AWST, void, void> {\n for (const statements of this._moduleStatements) {\n try {\n if (typeof statements === 'function') {\n for (const s of expandMaybeArray(statements())) {\n yield s\n }\n } else {\n for (const s of expandMaybeArray(statements)) {\n yield s\n }\n }\n } catch (e) {\n invariant(e instanceof Error, 'Only errors should be thrown')\n logger.error(e)\n }\n }\n }\n\n visitVariableStatement(node: ts.VariableStatement): NodeOrDeferred {\n const sourceLocation = this.sourceLocation(node)\n if (!(node.declarationList.flags & ts.NodeFlags.Const)) {\n logger.error(new CodeError(`Module level variable declarations must use the 'const' keyword.`, { sourceLocation }))\n }\n\n return node.declarationList.declarations.flatMap((dec) => {\n if (!dec.initializer) {\n throw new CodeError(`Module level variable declarations must be initialized with a value.`, { sourceLocation })\n }\n if (!ts.isIdentifier(dec.name)) {\n throw new CodeError(`Module level variable declarations must use plain identifiers.`, { sourceLocation })\n }\n const ptype = this.context.getPTypeForNode(dec.name)\n\n const initializerBuilder = this.accept(dec.initializer)\n\n if (ptype instanceof LibClassType) {\n invariant(initializerBuilder.ptype?.equals(ptype), 'Initializer type must match target type')\n return []\n }\n\n const value = requireExpressionOfType(initializerBuilder, ptype)\n\n codeInvariant(isConstant(value) || value instanceof TemplateVar, 'Module level assignments must be compile time constants')\n\n this.context.addConstant(dec.name, value)\n\n return []\n })\n }\n visitImportDeclaration(_node: ts.ImportDeclaration): NodeOrDeferred {\n return []\n }\n visitClassDeclaration(node: ts.ClassDeclaration): NodeOrDeferred {\n const sourceLocation = this.sourceLocation(node)\n const ptype = this.context.getPTypeForNode(node)\n\n if (ptype instanceof ContractClassPType) {\n return patchErrorLocation(ContractVisitor.buildContract(node, ptype), sourceLocation)\n } else if (ptype instanceof ARC4StructType) {\n return patchErrorLocation(() => StructVisitor.buildStructDef(node, ptype), sourceLocation)()\n } else if (ptype instanceof LogicSigPType) {\n return patchErrorLocation(LogicSigVisitor.buildLogicSig(node, ptype), sourceLocation)\n } else {\n logger.warn(sourceLocation, `Ignoring class declaration ${ptype.fullName}`)\n return []\n }\n }\n}\n","import { ContractReference } from '../../awst/models'\nimport { nodeFactory } from '../../awst/node-factory'\nimport { SourceLocation } from '../../awst/source-location'\nimport { wtypes } from '../../awst/wtypes'\nimport { Constants } from '../../constants'\nimport { AwstBuildContext } from '../context/awst-build-context'\nimport { ContractClassModel } from '../models/contract-class-model'\nimport { arc4BaseContractType, baseContractType } from '../ptypes'\n\nexport function buildLibAwst() {\n const contractCref = ContractReference.fromPType(arc4BaseContractType)\n const baseContractCref = ContractReference.fromPType(baseContractType)\n\n const baseContract = new ContractClassModel({\n type: baseContractType,\n isAbstract: true,\n propertyInitialization: [],\n ctor: nodeFactory.contractMethod({\n memberName: Constants.constructorMethodName,\n cref: baseContractCref,\n args: [],\n arc4MethodConfig: null,\n sourceLocation: SourceLocation.None,\n returnType: wtypes.voidWType,\n documentation: nodeFactory.methodDocumentation(),\n body: nodeFactory.block({ sourceLocation: SourceLocation.None }),\n inline: true,\n }),\n methods: [],\n appState: [],\n options: undefined,\n description: null,\n sourceLocation: SourceLocation.None,\n approvalProgram: null,\n clearProgram: nodeFactory.contractMethod({\n memberName: Constants.clearStateProgramMethodName,\n cref: baseContractCref,\n args: [],\n arc4MethodConfig: null,\n sourceLocation: SourceLocation.None,\n returnType: wtypes.boolWType,\n documentation: nodeFactory.methodDocumentation(),\n body: nodeFactory.block(\n {\n sourceLocation: SourceLocation.None,\n },\n nodeFactory.returnStatement({\n sourceLocation: SourceLocation.None,\n value: nodeFactory.boolConstant({ value: true, sourceLocation: SourceLocation.None }),\n }),\n ),\n inline: null,\n }),\n })\n AwstBuildContext.current.addToCompilationSet(baseContractCref, baseContract)\n const contract = new ContractClassModel({\n type: arc4BaseContractType,\n isAbstract: true,\n propertyInitialization: [],\n ctor: null,\n methods: [],\n appState: [],\n options: undefined,\n description: null,\n clearProgram: null,\n sourceLocation: SourceLocation.None,\n approvalProgram: nodeFactory.contractMethod({\n memberName: Constants.approvalProgramMethodName,\n cref: contractCref,\n args: [],\n arc4MethodConfig: null,\n sourceLocation: SourceLocation.None,\n returnType: wtypes.boolWType,\n documentation: nodeFactory.methodDocumentation(),\n body: nodeFactory.block(\n {\n sourceLocation: SourceLocation.None,\n },\n nodeFactory.returnStatement({\n sourceLocation: SourceLocation.None,\n value: nodeFactory.aRC4Router({ sourceLocation: SourceLocation.None, wtype: wtypes.boolWType }),\n }),\n ),\n inline: null,\n }),\n })\n AwstBuildContext.current.addToCompilationSet(contractCref, contract)\n}\n","import { jsonSerializeAwst } from '../awst/json-serialize-awst'\nimport type { AWST } from '../awst/nodes'\nimport { ToCodeVisitor } from '../awst/to-code-visitor'\nimport { logger } from '../logger'\nimport type { CompileOptions } from '../options'\nimport type { CreateProgramResult } from '../parser'\nimport { invariant } from '../util'\nimport { ArtifactKind, writeArtifact } from '../write-artifact'\nimport { SourceFileVisitor } from './ast-visitors/source-file-visitor'\nimport { AwstBuildContext } from './context/awst-build-context'\nimport { buildLibAwst } from './lib'\nimport type { CompilationSet } from './models/contract-class-model'\n\ntype BuildAwstOptions = Pick<CompileOptions, 'filePaths' | 'outputAwst' | 'outputAwstJson'>\n\nexport function buildAwst({ program, sourceFiles }: CreateProgramResult, options: BuildAwstOptions): [AWST[], CompilationSet] {\n return AwstBuildContext.run(program, () => {\n buildLibAwst()\n const moduleAwst: AWST[] = []\n for (const [sourcePath, sourceFile] of Object.entries(sourceFiles)) {\n try {\n AwstBuildContext.current.runInChildContext(() => {\n const visitor = new SourceFileVisitor(sourceFile)\n const algoFile = options.filePaths.find((p) => p.sourceFile === sourcePath)\n\n const module = visitor.buildModule()\n\n if (options.outputAwst && algoFile) {\n writeArtifact({\n sourceFile: sourceFile.fileName,\n outDir: algoFile.outDir,\n kind: ArtifactKind.Awst,\n obj: module,\n buildArtifact(module): string {\n const toCode = new ToCodeVisitor()\n return module.flatMap((s) => s.accept(toCode)).join('\\n')\n },\n })\n }\n if (options.outputAwstJson && algoFile) {\n writeArtifact({\n sourceFile: sourceFile.fileName,\n outDir: algoFile.outDir,\n kind: ArtifactKind.AwstJson,\n obj: module,\n buildArtifact(module): string {\n return jsonSerializeAwst(module)\n },\n })\n }\n moduleAwst.push(...module)\n })\n } catch (e) {\n invariant(e instanceof Error, 'Only errors should be thrown')\n logger.error(e)\n }\n }\n return [moduleAwst, AwstBuildContext.current.compilationSet]\n })\n}\n","import ts from 'typescript'\nimport { logger } from '../logger'\n\nexport function resolveModuleNameLiterals(\n moduleLiterals: readonly ts.StringLiteralLike[],\n containingFile: string,\n redirectedReference: ts.ResolvedProjectReference | undefined,\n options: ts.CompilerOptions,\n): readonly ts.ResolvedModuleWithFailedLookupLocations[] {\n return moduleLiterals.map(({ text: moduleName }) => {\n const result = ts.resolveModuleName(\n moduleName,\n containingFile,\n options,\n {\n fileExists: ts.sys.fileExists,\n readFile: ts.sys.readFile,\n },\n undefined,\n redirectedReference,\n )\n if (!result.resolvedModule && !containingFile.endsWith('.d.ts')) {\n logger.warn(undefined, `Could not resolve typings for module ${moduleName} referenced by file ${containingFile}. `)\n }\n\n return result\n })\n}\n","import ts from 'typescript'\nimport { SourceLocation } from '../awst/source-location'\nimport { logger, LoggingContext } from '../logger'\nimport type { AlgoFile, CompileOptions } from '../options'\nimport type { DeliberateAny } from '../typescript-helpers'\nimport { normalisePath } from '../util'\nimport { resolveModuleNameLiterals } from './resolve-module-name-literals'\n\nexport type SourceFileMapping = Record<string, ts.SourceFile>\nexport type CreateProgramResult = {\n sourceFiles: SourceFileMapping\n program: ts.Program\n programDirectory: string\n}\n\nexport function createTsProgram(options: Pick<CompileOptions, 'filePaths'>): CreateProgramResult {\n const compilerOptions: ts.CompilerOptions = {\n allowJs: false,\n strict: true,\n // Lib names need to be the full file name from the typescript package 'lib' folder.\n lib: ['lib.es2023.d.ts'],\n libReplacement: false,\n target: ts.ScriptTarget.ES2023,\n module: ts.ModuleKind.ESNext,\n moduleResolution: ts.ModuleResolutionKind.Bundler,\n }\n\n const host = ts.createCompilerHost(compilerOptions)\n\n const fileMap = options.filePaths.reduce((acc, cur) => acc.set(cur.sourceFile, cur), new Map<string, AlgoFile>())\n const { fileExists, readFile } = host\n host.fileExists = function (fileName): boolean {\n return fileMap.has(fileName) || fileExists(fileName)\n }\n host.readFile = function (fileName): string | undefined {\n const matchedFile = fileMap.get(fileName)\n if (matchedFile?.fileContents) {\n return matchedFile.fileContents\n }\n return readFile(fileName)\n }\n host.resolveModuleNameLiterals = resolveModuleNameLiterals\n\n const program = ts.createProgram(\n options.filePaths.map((p) => p.sourceFile),\n compilerOptions,\n host,\n )\n const programDirectory = program.getCurrentDirectory()\n\n const sourceFiles = Object.fromEntries(\n program\n .getSourceFiles()\n .filter((f) => !f.isDeclarationFile)\n .map((f) => {\n if (!(f as DeliberateAny)['externalModuleIndicator']) {\n logger.warn(\n SourceLocation.fromFile(f, programDirectory),\n 'File is being interpreted as a script because it has no import or export statements. Containing statements will be evaluated in a global context.',\n )\n }\n return [normalisePath(f.fileName, programDirectory), f]\n }),\n )\n\n LoggingContext.current.sourcesByPath = Object.fromEntries(\n Object.entries(sourceFiles).map(([path, file]) => {\n return [path, file.getFullText().replace(/\\r\\n/g, '\\n').split(/\\n/g)]\n }),\n )\n\n reportDiagnostics(program)\n return {\n sourceFiles,\n program,\n programDirectory: program.getCurrentDirectory(),\n }\n}\n\nfunction reportDiagnostics(program: ts.Program) {\n function reportDiagnostic(diagnostic: ts.Diagnostic) {\n if (isDiagnosticWithLocation(diagnostic)) {\n const sourceLocation = SourceLocation.fromDiagnostic(diagnostic, program.getCurrentDirectory())\n const text = typeof diagnostic.messageText === 'string' ? diagnostic.messageText : diagnostic.messageText.messageText\n switch (diagnostic.category) {\n case ts.DiagnosticCategory.Error:\n logger.error(sourceLocation, text)\n break\n case ts.DiagnosticCategory.Warning:\n logger.warn(sourceLocation, text)\n break\n }\n }\n }\n\n function isDiagnosticWithLocation(d: ts.Diagnostic): d is ts.DiagnosticWithLocation {\n return Object.hasOwn(d, 'file')\n }\n\n program.getSemanticDiagnostics().forEach(reportDiagnostic)\n program.getSyntacticDiagnostics().forEach(reportDiagnostic)\n}\n","import path from 'node:path'\nimport ts from 'typescript'\nimport type { SourceFileMapping } from './index'\n\nexport function jsonSerializeSourceFiles(sourceFiles: SourceFileMapping, programDirectory: string) {\n return JSON.stringify(\n Object.fromEntries(Object.entries(sourceFiles).map(([key, value]) => [path.join(programDirectory, key), value] as const)),\n (key, value) => {\n if (ts.isSourceFile(value)) {\n return value.getFullText().replace(/\\r\\n/g, '\\n').split(/\\n/g)\n }\n return value\n },\n 2,\n )\n}\n","import { randomUUID } from 'crypto'\nimport fs from 'fs'\nimport { globIterateSync } from 'glob'\nimport type { WriteFileOptions } from 'node:fs'\nimport os from 'os'\nimport upath from 'upath'\nimport { mkDirIfNotExists } from './index'\n\nexport type TempFile = {\n writeFileSync(data: NodeJS.ArrayBufferView, options?: WriteFileOptions): void\n writeFileSync(data: string, options?: WriteFileOptions): void\n readonly filePath: string\n} & Disposable\n\nfunction ensureTempDir(): string {\n const tempDir = upath.join(os.tmpdir(), 'puya-ts')\n mkDirIfNotExists(tempDir)\n return tempDir\n}\n\nexport function generateTempFile(options?: { ext?: string }): TempFile {\n const { ext = 'tmp' } = options ?? {}\n const filePath = upath.join(ensureTempDir(), `${randomUUID()}.${ext}`)\n\n return {\n get filePath() {\n return filePath\n },\n writeFileSync(data: string | NodeJS.ArrayBufferView, options?: WriteFileOptions) {\n fs.writeFileSync(filePath, data, options)\n },\n [Symbol.dispose]() {\n fs.rmSync(filePath)\n },\n }\n}\nexport type TempDir = {\n readonly dirPath: string\n files(): IterableIterator<string>\n} & Disposable\n\nexport function generateTempDir(): TempDir {\n const dirPath = upath.join(ensureTempDir(), `${randomUUID()}`)\n mkDirIfNotExists(dirPath)\n\n return {\n get dirPath() {\n return dirPath\n },\n *files(): IterableIterator<string> {\n for (const p of globIterateSync(upath.join(dirPath, '**'), {\n nodir: true,\n })) {\n yield p\n }\n },\n [Symbol.dispose]() {\n fs.rmSync(dirPath, { recursive: true, force: true })\n },\n }\n}\n","import type { AWST } from '../awst/nodes'\nimport type { CompilationSet } from '../awst_build/models/contract-class-model'\nimport type { AlgoFile, CompilationSetMapping } from '../options'\nimport { mkDirIfNotExists } from '../util'\n\nexport function buildCompilationSetMapping({\n awst,\n inputPaths,\n compilationSet,\n}: {\n awst: AWST[]\n inputPaths: AlgoFile[]\n compilationSet: CompilationSet\n}): CompilationSetMapping {\n const setIds = new Set(compilationSet.compilationOutputSet.map((s) => s.id))\n\n return awst.reduce((acc, cur) => {\n if (setIds.has(cur.id.toString())) {\n const matchedPath = inputPaths.find((p) => p.sourceFile === cur.sourceLocation.file)\n if (matchedPath) {\n mkDirIfNotExists(matchedPath.outDir)\n acc[cur.id.toString()] = matchedPath.outDir\n }\n }\n return acc\n }, {} as CompilationSetMapping)\n}\n","import { spawn } from 'cross-spawn'\n\ntype InvokeCliOptions = {\n command: string\n args: string[]\n cwd?: string\n onReceiveLine?(line: string): void\n dontThrowOnNonzeroCode?: boolean\n}\n\ntype InvokeCliResponse = {\n lines: string[]\n code: number\n}\n\nclass InvokeCliError extends Error {\n constructor(public exit: { code?: number | null; signal?: NodeJS.Signals | null }) {\n if (exit.code) {\n super(`Exited with code ${exit.code}`)\n } else if (exit.signal) {\n super(`Exited with signal ${exit.signal}`)\n } else {\n super('Exited with unknown cause')\n }\n }\n}\n\nexport function invokeCli(options: InvokeCliOptions): Promise<InvokeCliResponse> {\n return new Promise<InvokeCliResponse>((resolve, reject) => {\n const lineAggregator = new LineAggregator(options.onReceiveLine)\n const process = spawn(options.command, options.args, {\n stdio: 'pipe',\n })\n\n process.stdout.on('data', (data) => lineAggregator.aggregate(data))\n process.once('close', (code) => {\n if (code !== 0 && !options.dontThrowOnNonzeroCode) {\n reject(new InvokeCliError({ code }))\n }\n lineAggregator.flush()\n resolve({\n code: code ?? 0,\n lines: lineAggregator.lines,\n })\n })\n process.once('exit', (code, signal) => {\n if (signal !== null) {\n reject(new InvokeCliError({ signal }))\n }\n if (code !== 0 && !options.dontThrowOnNonzeroCode) {\n reject(new InvokeCliError({ code }))\n }\n lineAggregator.flush()\n resolve({\n code: code ?? 0,\n lines: lineAggregator.lines,\n })\n })\n process.once('error', reject)\n })\n}\n\nclass LineAggregator {\n #line = ''\n #lines: string[] = []\n constructor(private readonly onLine?: (line: string) => void) {}\n\n aggregate(chunk: Buffer<ArrayBufferLike> | null | undefined) {\n if (chunk === undefined || chunk === null) return\n const text = chunk.toString('utf-8')\n for (const c of text) {\n switch (c) {\n case '\\n':\n this.flushLine()\n break\n case '\\r':\n continue\n default:\n this.#line += c\n break\n }\n }\n }\n\n flush() {\n if (this.#line) this.flushLine()\n }\n\n private flushLine() {\n this.#lines.push(this.#line)\n this.onLine?.(this.#line)\n this.#line = ''\n }\n\n get lines() {\n return this.#lines\n }\n}\n","import { logger } from '../logger'\nimport { invokeCli } from '../util/invoke-cli'\n\nexport async function runPuya({\n command,\n args,\n cwd,\n onOutput,\n}: {\n command: string\n args: string[]\n cwd?: string\n onOutput: (line: string) => void\n}) {\n const result = await invokeCli({\n command,\n args,\n cwd,\n onReceiveLine: onOutput,\n dontThrowOnNonzeroCode: true,\n })\n\n if (result.code !== 0) {\n logger.critical(undefined, `Compilation exited with status ${result.code}`)\n }\n}\n","import { Constants } from '../constants'\nimport { logger } from '../logger'\nimport { runPuya } from './run-puya'\n\nexport enum VersionCompareVerdict {\n ExactMatch = 'ExactMatch',\n Inconclusive = 'Inconclusive',\n MajorMismatch = 'MajorMismatch',\n MinorMismatch = 'MinorMismatch',\n OlderRevision = 'OlderRevision',\n NewerRevision = 'NewerRevision',\n}\n\nexport async function comparePuyaVersion(): Promise<{\n target: string\n found?: string\n verdict: VersionCompareVerdict\n}> {\n const target = Constants.targetedPuyaVersion\n\n const versionParser = new VersionParser()\n await runPuya({\n command: 'puya',\n args: ['--version'],\n onOutput: (line) => versionParser.receiveLine(line),\n })\n\n if (!versionParser.version) return { target, verdict: VersionCompareVerdict.Inconclusive }\n const ver = versionParser.version\n\n // Compare\n const [major, minor, rev] = target.split('.').map((x) => Number(x))\n if (ver.major !== major) return { verdict: VersionCompareVerdict.MajorMismatch, target, found: ver.formatted }\n if (ver.minor !== minor) return { verdict: VersionCompareVerdict.MinorMismatch, target, found: ver.formatted }\n if (ver.rev < rev) return { verdict: VersionCompareVerdict.OlderRevision, target, found: ver.formatted }\n if (ver.rev > rev) return { verdict: VersionCompareVerdict.NewerRevision, target, found: ver.formatted }\n return { verdict: VersionCompareVerdict.ExactMatch, target, found: ver.formatted }\n}\n\nexport async function checkPuyaVersion() {\n const result = await comparePuyaVersion()\n switch (result.verdict) {\n case VersionCompareVerdict.Inconclusive:\n logger.warn(undefined, `Unable to verify installed puya version. Please ensure version ${result.target} is available`)\n break\n case VersionCompareVerdict.MajorMismatch:\n case VersionCompareVerdict.MinorMismatch:\n logger.warn(\n undefined,\n `Installed version of puya (${result.found}) does not match targeted version for puya-ts (${result.target}). There may be compatability issues.`,\n )\n break\n case VersionCompareVerdict.OlderRevision:\n logger.warn(\n undefined,\n `Installed revision of puya (${result.found}) is older than the targeted revision for puya-ts (${Constants.targetedPuyaVersion})`,\n )\n break\n case VersionCompareVerdict.NewerRevision:\n logger.debug(\n undefined,\n `Installed revision of puya (${result.found}) is newer than the targeted revision for puya-ts (${Constants.targetedPuyaVersion})`,\n )\n break\n }\n}\n\ntype SemVer = {\n major: number\n minor: number\n rev: number\n formatted: string\n}\n\nclass VersionParser {\n #ver: SemVer | undefined\n\n receiveLine(line: string): void {\n const matched = /^puya ((\\d+)\\.(\\d+)\\.(\\d+))$/.exec(line)\n if (!matched) {\n logger.debug(undefined, `'puya --version' command returned unexpected output: \"${line}\"`)\n } else {\n this.#ver = {\n formatted: matched[1],\n major: Number(matched[2]),\n minor: Number(matched[3]),\n rev: Number(matched[4]),\n }\n }\n }\n\n get version(): undefined | SemVer {\n return this.#ver\n }\n}\n","import which from 'which'\nimport { EnvironmentError } from '../errors'\n\nexport function ensurePuyaExists() {\n if (\n which.sync('puya', {\n nothrow: true,\n })\n )\n return\n throw new EnvironmentError(\n `Failed to resolve command path, 'puya' wasn't found. Please ensure puya compiler has been installed and is available on your PATH.`,\n )\n}\n","import upath from 'upath'\nimport { z } from 'zod'\nimport { SourceLocation } from '../awst/source-location'\nimport { logger, LogLevel } from '../logger'\n\nconst puyaLog = z.object({\n level: z.nativeEnum(LogLevel),\n location: z\n .object({\n file: z.string(),\n line: z.number(),\n end_line: z.number().or(z.null()),\n column: z.number(),\n end_column: z.number().or(z.null()),\n })\n .or(z.null()),\n message: z.string(),\n})\n\nexport function deserializeAndLog(logText: string) {\n try {\n const log = puyaLog.parse(JSON.parse(logText))\n\n const sourceLocation = log.location\n ? new SourceLocation({\n file: upath.normalize(log.location.file),\n line: log.location.line,\n endLine: log.location.end_line ?? log.location.line + 1,\n column: log.location.column,\n endColumn: log.location.end_column ?? log.location.column,\n scope: 'range',\n })\n : undefined\n logger.addLog(log.level, sourceLocation, log.message)\n } catch (e) {\n logger.error(undefined, `Could not parse log output from puya cli ${e}`)\n }\n}\n","import { AwstSerializer, SnakeCaseSerializer } from '../awst/json-serialize-awst'\nimport type { AWST } from '../awst/nodes'\nimport type { CompilationSet } from '../awst_build/models/contract-class-model'\nimport { logger, LogLevel } from '../logger'\nimport type { CompileOptions } from '../options'\nimport type { SourceFileMapping } from '../parser'\nimport { jsonSerializeSourceFiles } from '../parser/json-serialize-source-files'\nimport { generateTempFile } from '../util/generate-temp-file'\nimport { buildCompilationSetMapping } from './build-compilation-set-mapping'\nimport { checkPuyaVersion } from './check-puya-version'\nimport { ensurePuyaExists } from './ensure-puya-exists'\nimport { deserializeAndLog } from './log-deserializer'\nimport { runPuya } from './run-puya'\n\nexport async function invokePuya({\n moduleAwst,\n programDirectory,\n sourceFiles,\n options,\n compilationSet,\n}: {\n moduleAwst: AWST[]\n programDirectory: string\n sourceFiles: SourceFileMapping\n options: CompileOptions\n compilationSet: CompilationSet\n}) {\n ensurePuyaExists()\n if (!options.skipVersionCheck) {\n await checkPuyaVersion()\n }\n // Write AWST file\n using moduleAwstFile = generateTempFile()\n logger.debug(undefined, `Writing awst to ${moduleAwstFile.filePath}`)\n const serializer = new AwstSerializer({\n programDirectory: programDirectory,\n sourcePaths: 'absolute',\n })\n moduleAwstFile.writeFileSync(serializer.serialize(moduleAwst), 'utf-8')\n\n // Write source annotations\n using moduleSourceFile = generateTempFile()\n logger.debug(undefined, `Write source to ${moduleSourceFile.filePath}`)\n moduleSourceFile.writeFileSync(jsonSerializeSourceFiles(sourceFiles, programDirectory), 'utf-8')\n\n // Write puya options\n const puyaOptions = options.buildPuyaOptions(\n buildCompilationSetMapping({\n awst: moduleAwst,\n inputPaths: options.filePaths,\n compilationSet,\n }),\n )\n using optionsFile = generateTempFile()\n logger.debug(undefined, `Write options to ${optionsFile.filePath}`)\n optionsFile.writeFileSync(new SnakeCaseSerializer().serialize(puyaOptions))\n\n logger.debug(\n undefined,\n `Invoking puya: puya --options ${optionsFile.filePath} --awst ${moduleAwstFile.filePath} --source-annotations ${moduleSourceFile.filePath}`,\n )\n await runPuya({\n command: 'puya',\n args: [\n '--options',\n optionsFile.filePath,\n `--awst`,\n moduleAwstFile.filePath,\n `--source-annotations`,\n moduleSourceFile.filePath,\n '--log-level',\n getPuyaLogLevel(options.logLevel),\n '--log-format',\n 'json',\n ],\n cwd: programDirectory,\n onOutput: deserializeAndLog,\n })\n}\n\nfunction getPuyaLogLevel(logLevel: LogLevel): string {\n switch (logLevel) {\n case LogLevel.Debug:\n return 'debug'\n case LogLevel.Info:\n return 'info'\n case LogLevel.Warning:\n return 'warning'\n case LogLevel.Error:\n return 'error'\n case LogLevel.Critical:\n return 'critical'\n }\n}\n","import type ts from 'typescript'\nimport type { AWST } from './awst/nodes'\nimport { validateAwst } from './awst/validation'\nimport { buildAwst } from './awst_build'\nimport type { CompilationSet } from './awst_build/models/contract-class-model'\nimport { registerPTypes } from './awst_build/ptypes/register'\nimport { typeRegistry } from './awst_build/type-registry'\nimport { logger, LoggingContext } from './logger'\nimport type { CompileOptions } from './options'\nimport { createTsProgram } from './parser'\nimport { invokePuya } from './puya'\n\nexport type CompileResult = {\n programDirectory: string\n awst?: AWST[]\n ast?: Record<string, ts.SourceFile>\n compilationSet?: CompilationSet\n}\n\nexport async function compile(options: CompileOptions): Promise<CompileResult> {\n const loggerCtx = LoggingContext.current\n registerPTypes(typeRegistry)\n const programResult = createTsProgram(options)\n if (loggerCtx.hasErrors()) {\n logger.info(undefined, 'Compilation halted due to parse errors')\n return {\n programDirectory: programResult.programDirectory,\n ast: programResult.sourceFiles,\n }\n }\n const [moduleAwst, compilationSet] = buildAwst(programResult, options)\n validateAwst(moduleAwst)\n\n if (loggerCtx.hasErrors()) {\n logger.info(undefined, 'Compilation halted due to errors')\n return {\n programDirectory: programResult.programDirectory,\n awst: moduleAwst,\n ast: programResult.sourceFiles,\n compilationSet,\n }\n }\n if (!options.dryRun) {\n await invokePuya({\n options,\n moduleAwst,\n programDirectory: programResult.programDirectory,\n compilationSet,\n sourceFiles: programResult.sourceFiles,\n })\n }\n\n return {\n programDirectory: programResult.programDirectory,\n awst: moduleAwst,\n ast: programResult.sourceFiles,\n compilationSet,\n }\n}\n","import { minimatch } from 'minimatch'\nimport upath from 'upath'\n\nexport function determineOutDir(inputPath: string, sourceFile: string, outDir: string) {\n const outDirBase = findMinimalMatch(inputPath, sourceFile)\n\n const subPath = upath.dirname(sourceFile.slice(outDirBase.length))\n\n if (upath.isAbsolute(outDir)) {\n return upath.normalizeTrim(upath.join(outDir, subPath))\n }\n return upath.normalizeTrim(upath.join(outDirBase, outDir, subPath))\n}\n\nfunction trimCurrentDir(path: string) {\n return path.startsWith('./') ? path.slice(2) : path\n}\n\nfunction findMinimalMatch(inputPath: string, testPath: string): string {\n const [matchedPath] = minimatch.match([trimCurrentDir(testPath)], trimCurrentDir(inputPath))\n if (matchedPath) {\n if (matchedPath.endsWith('.algo.ts')) {\n return upath.dirname(matchedPath)\n }\n return matchedPath\n }\n return findMinimalMatch(inputPath, upath.dirname(testPath))\n}\n","import { globSync } from 'glob'\nimport fs from 'node:fs'\nimport upath from 'upath'\nimport { PuyaError } from '../errors'\nimport { logger } from '../logger'\nimport type { AlgoFile } from '../options'\nimport { normalisePath } from '../util'\nimport { determineOutDir } from './determine-out-dir'\n\nexport const processInputPaths = ({\n paths,\n workingDirectory = process.cwd(),\n outDir = 'out',\n}: {\n paths: string[]\n outDir?: string\n workingDirectory?: string\n}): AlgoFile[] => {\n const filePaths: AlgoFile[] = []\n\n for (const p of paths.map((p) => upath.normalizeTrim(p))) {\n if (p.endsWith('.algo.ts')) {\n if (fs.existsSync(p)) {\n const sourceFile = normalisePath(p, workingDirectory)\n\n filePaths.push({\n sourceFile,\n outDir: determineOutDir(p, sourceFile, outDir),\n })\n } else {\n logger.warn(undefined, `File ${p} could not be found`)\n }\n } else if (p.endsWith('.ts')) {\n logger.warn(undefined, `Ignoring path ${p} as it does use the .algo.ts extension`)\n } else {\n const matches = globSync(upath.join(p, '**/*.algo.ts'))\n if (matches.length) {\n for (const match of matches) {\n const sourceFile = normalisePath(match, workingDirectory)\n filePaths.push({\n sourceFile,\n outDir: determineOutDir(p, sourceFile, outDir),\n })\n }\n } else {\n logger.warn(undefined, `Path '${p}' did not match any .algo.ts files`)\n }\n }\n }\n if (filePaths.length === 0) {\n throw new PuyaError('Input paths did not match any .algo.ts files')\n }\n\n return filePaths.map(replaceOutDirTokens)\n}\n\nfunction replaceOutDirTokens(algoFile: AlgoFile): AlgoFile {\n const replacements = {\n name: upath.basename(algoFile.sourceFile).replace('.algo.ts', ''),\n }\n\n return {\n ...algoFile,\n outDir: algoFile.outDir.replaceAll('[name]', replacements.name),\n }\n}\n","import { LogLevel } from './logger'\nimport type { Props } from './typescript-helpers'\n\nexport interface AlgoFile {\n sourceFile: string\n outDir: string\n fileContents?: string\n}\n\nexport class CompileOptions {\n public readonly filePaths: AlgoFile[]\n public readonly logLevel: LogLevel\n public readonly outputAwst: boolean\n public readonly outputAwstJson: boolean\n public readonly skipVersionCheck: boolean\n /**\n * Don't generate artifacts for puya, or invoke puya\n */\n public readonly dryRun: boolean\n public readonly outputTeal: boolean\n public readonly outputArc32: boolean\n public readonly outputArc56: boolean\n public readonly outputSsaIr: boolean\n public readonly outputOptimizationIr: boolean\n public readonly outputDestructuredIr: boolean\n public readonly outputMemoryIr: boolean\n public readonly outputBytecode: boolean\n public readonly outputSourceMap: boolean\n public readonly debugLevel: number\n public readonly optimizationLevel: number\n public readonly targetAvmVersion: number\n public readonly cliTemplateDefinitions: Record<string, Uint8Array | bigint>\n public readonly templateVarsPrefix: string\n public readonly localsCoalescingStrategy: LocalsCoalescingStrategy\n constructor(options: Partial<Props<CompileOptions>> & { filePaths: AlgoFile[] }) {\n this.filePaths = options.filePaths\n this.logLevel = options.logLevel ?? LogLevel.Info\n this.outputAwst = options.outputAwst ?? false\n this.outputAwstJson = options.outputAwstJson ?? false\n this.skipVersionCheck = options.skipVersionCheck ?? false\n this.dryRun = options.dryRun ?? false\n this.outputTeal = options.outputTeal ?? false\n this.outputArc32 = options.outputArc32 ?? false\n this.outputArc56 = options.outputArc56 ?? false\n this.outputSsaIr = options.outputSsaIr ?? false\n this.outputOptimizationIr = options.outputOptimizationIr ?? false\n this.outputDestructuredIr = options.outputDestructuredIr ?? false\n this.outputMemoryIr = options.outputMemoryIr ?? false\n this.outputBytecode = options.outputBytecode ?? false\n this.outputSourceMap = options.outputSourceMap ?? false\n this.debugLevel = options.debugLevel ?? defaultPuyaOptions.debugLevel\n this.optimizationLevel = options.optimizationLevel ?? defaultPuyaOptions.optimizationLevel\n this.targetAvmVersion = options.targetAvmVersion ?? defaultPuyaOptions.targetAvmVersion\n this.cliTemplateDefinitions = options.cliTemplateDefinitions ?? defaultPuyaOptions.cliTemplateDefinitions\n this.templateVarsPrefix = options.templateVarsPrefix ?? defaultPuyaOptions.templateVarsPrefix\n this.localsCoalescingStrategy = options.localsCoalescingStrategy ?? defaultPuyaOptions.localsCoalescingStrategy\n }\n\n buildPuyaOptions(compilationSet: CompilationSetMapping) {\n return new PuyaOptions({ ...this, compilationSet })\n }\n}\n\nexport enum LocalsCoalescingStrategy {\n root_operand = 'root_operand',\n root_operand_excluding_args = 'root_operand_excluding_args',\n aggressive = 'aggressive',\n}\nexport type CompilationSetMapping = Record<string, string>\n\nexport const defaultPuyaOptions: PuyaPassThroughOptions = {\n outputTeal: true,\n outputArc32: true,\n outputArc56: true,\n outputSsaIr: false,\n outputSourceMap: true,\n outputOptimizationIr: false,\n outputDestructuredIr: false,\n outputMemoryIr: false,\n outputBytecode: false,\n debugLevel: 1,\n optimizationLevel: 1,\n targetAvmVersion: 10,\n cliTemplateDefinitions: {},\n templateVarsPrefix: 'TMPL_',\n localsCoalescingStrategy: LocalsCoalescingStrategy.root_operand,\n}\nexport type PuyaPassThroughOptions = Omit<PuyaOptions, 'compilationSet'>\n\nexport class PuyaOptions {\n outputTeal: boolean\n outputArc32: boolean\n outputArc56: boolean\n outputSsaIr: boolean\n outputOptimizationIr: boolean\n outputDestructuredIr: boolean\n outputMemoryIr: boolean\n outputBytecode: boolean\n outputSourceMap: boolean\n debugLevel: number\n optimizationLevel: number\n targetAvmVersion: number\n cliTemplateDefinitions: Record<string, Uint8Array | bigint>\n templateVarsPrefix: string\n localsCoalescingStrategy: LocalsCoalescingStrategy\n\n compilationSet: CompilationSetMapping\n constructor(options: Props<PuyaOptions>) {\n this.compilationSet = options.compilationSet\n this.outputTeal = options.outputTeal\n this.outputArc32 = options.outputArc32\n this.outputArc56 = options.outputArc56\n this.outputSsaIr = options.outputSsaIr\n this.outputOptimizationIr = options.outputOptimizationIr\n this.outputDestructuredIr = options.outputDestructuredIr\n this.outputMemoryIr = options.outputMemoryIr\n this.outputBytecode = options.outputBytecode\n this.debugLevel = options.debugLevel\n this.optimizationLevel = options.optimizationLevel\n this.targetAvmVersion = options.targetAvmVersion\n this.cliTemplateDefinitions = options.cliTemplateDefinitions\n this.templateVarsPrefix = options.templateVarsPrefix\n this.localsCoalescingStrategy = options.localsCoalescingStrategy\n this.outputSourceMap = options.outputSourceMap\n }\n}\n"],"names":["fs","integer","arc4Types.UintNType","arc4Types.UFixedNxMType","arc4Types.arc4ByteAlias","arc4Types.arc4StringType","arc4Types.arc4BooleanType","arc4Types.arc4AddressAlias","arc4Types.ARC4TupleType","arc4Types.DynamicArrayType","arc4Types.StaticArrayType","awst.VarExpression","awst.FieldExpression","awst.IndexExpression","awst.TupleExpression","awst.AppStateExpression","awst.AppAccountStateExpression","awst.BoxValueExpression","awst.ReinterpretCast","awst.IntegerConstant","ConcatExpressionBuilder","awst.StringConstant","ConcatFunctionBuilder","ptypes.accountPType","ptypes.uint64PType","ptypes.TuplePType","ptypes.boolPType","ptypes.bytesPType","ptypes.voidPType","ptypes.applicationPType","ptypes.assetPType","ptypes.base64PType","ptypes.biguintPType","ptypes.ecPType","ptypes.ecdsaPType","ptypes.mimcConfigurationsPType","ptypes.vrfVerifyPType","IndexedTransactionFieldFunctionBuilder","nodes.AssignmentExpression","awst.ContractMethod","awst.Subroutine"],"mappings":"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"}
|