@algorandfoundation/puya-ts 1.0.0-beta.2 → 1.0.0-beta.4
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/awst_build/eb/arc28/arc-28-emit-function-builder.d.ts +1 -1
- package/awst_build/ptypes/arc4-types.d.ts +2 -2
- package/bin/run-cli.mjs +2 -1
- package/bin/run-cli.mjs.map +1 -1
- package/cli.mjs +3 -2
- package/cli.mjs.map +1 -1
- package/{index-D4-4PUG7.js → index-Cg8BBwmU.js} +230 -18
- package/index-Cg8BBwmU.js.map +1 -0
- package/index.mjs +2 -1
- package/index.mjs.map +1 -1
- package/node_modules/typescript/lib/_tsc.js +35 -22
- package/node_modules/typescript/lib/typescript.js +35 -22
- package/node_modules/typescript/package.json +2 -2
- package/package.json +2 -1
- package/util/arc4-signature-parser.d.ts +6 -0
- package/index-D4-4PUG7.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-Cg8BBwmU.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/util/base-85.ts","../src/awst/models.ts","../src/awst/nodes.ts","../src/awst/util.ts","../src/awst/json-serialize-awst.ts","../src/awst/wtypes.ts","../src/awst/to-code-visitor.ts","../src/write-artifact.ts","../src/awst/node-factory.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/type-registry.ts","../src/awst_build/eb/index.ts","../src/visitor/syntax-names.ts","../src/visitor/visitor.ts","../src/awst_build/ptypes/arc4-types.ts","../src/awst_build/eb/literal-expression-builder.ts","../src/awst_build/eb/util/index.ts","../src/awst/intrinsic-factory.ts","../src/awst_build/eb/util/arg-parsing.ts","../src/awst_build/eb/boolean-expression-builder.ts","../src/awst_build/eb/tuple-expression-builder.ts","../src/awst_build/eb/literal/array-literal-expression-builder.ts","../src/awst_build/eb/folding.ts","../src/awst_build/eb/literal/big-int-literal-expression-builder.ts","../src/awst_build/eb/literal/conditional-expression-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/namespace-builder.ts","../src/awst_build/eb/omitted-expression-builder.ts","../src/awst_build/eb/util/compare-uint64.ts","../src/awst_build/eb/util/string-to-bigint.ts","../src/awst_build/eb/uint64-expression-builder.ts","../src/awst_build/eb/string-expression-builder.ts","../src/awst_build/ast-visitors/text-visitor.ts","../src/awst_build/ast-visitors/base-visitor.ts","../src/awst_build/eb/free-subroutine-expression-builder.ts","../src/awst_build/eb/util/avm-version.ts","../src/awst_build/eb/void-expression-builder.ts","../src/awst_build/eb/contract-builder.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/custom-key-map.ts","../src/util/intersect-sets.ts","../src/awst_build/models/logic-sig-class-model.ts","../src/awst_build/models/contract-class-model.ts","../src/awst_build/arc4-util.ts","../src/awst_build/ast-visitors/decorator-visitor.ts","../src/awst_build/eb/native-array-expression-builder.ts","../src/awst_build/ptypes/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/constant-store.ts","../src/awst_build/symbol-name.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/lib/index.ts","../src/awst_build/index.ts","../src/util/arc4-signature-parser.ts","../src/awst_build/eb/arc28/arc-28-emit-function-builder.ts","../src/awst_build/eb/util/require-constant-value.ts","../src/awst_build/eb/arc4-bare-method-decorator-builder.ts","../src/awst_build/eb/iterable-iterator-expression-builder.ts","../src/awst_build/eb/util/compare-bytes.ts","../src/awst_build/eb/reference/base.ts","../src/awst_build/eb/reference/account.ts","../src/awst_build/eb/util/get-bigint-or-uint64-expr.ts","../src/awst_build/eb/shared/at-function-builder.ts","../src/awst_build/eb/shared/slice-function-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/eb/arc4/util.ts","../src/awst_build/eb/assert-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/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/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/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/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/puya/options.ts","../src/puya/log-deserializer.ts","../src/puya/run-puya.ts","../src/puya/index.ts","../src/awst_build/ptypes/for-export.ts","../src/index.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 opTypesModuleName: `${algoTsPackage}/op-types.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 arc4BareDecoratorName: 'arc4.baremethod',\n arc4AbiDecoratorName: 'arc4.abimethod',\n contractOptionsDecoratorName: 'contract',\n logicSigOptionsDecoratorName: 'logicsig',\n constructorMethodName: 'constructor',\n logicSigProgramMethodName: 'program',\n defaultCreateMethodName: '__algots__.defaultCreate',\n addressLength: 32,\n encodedAddressLength: 58,\n zeroAddressEncoded: 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY5HFKQ',\n\n supportedAvmVersions: [10n, 11n],\n mainNetAvmVersion: [10n],\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\n/**\n * Thrown when the awst visitor cannot return a meaningful value\n */\nexport class AwstBuildFailureError extends Error {\n constructor() {\n super('AWST build failure. See previous errors')\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\nexport class CodeError extends PuyaError {\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}\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\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 Error {}\nexport function invariant(condition: unknown, message: string): asserts condition {\n if (!condition) {\n throw new InvariantError(message)\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 const maxBytes = fixedSize === 'dynamic' ? 64 : 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","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 { SourceLocation } from '../awst/source-location'\nimport { AwstBuildFailureError, CodeError, PuyaError } 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 const stack = source instanceof CodeError ? '' : `\\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 logPuyaExceptions = <T>(action: () => T, sourceLocation: SourceLocation): T => {\n try {\n return action()\n } catch (e) {\n if (e instanceof PuyaError) {\n logger.error(e.sourceLocation ?? sourceLocation, e.message)\n } else {\n throw e\n }\n throw new AwstBuildFailureError()\n }\n}\n\nexport class LoggingContext implements Disposable {\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 private static contexts: LoggingContext[] = []\n\n static create(): Disposable & LoggingContext {\n const ctx = new LoggingContext()\n this.contexts.push(ctx)\n return ctx\n }\n static get current() {\n const top = LoggingContext.contexts.at(-1)\n if (!top) {\n throw new Error('There is no current context')\n }\n return top\n }\n\n [Symbol.dispose]() {\n const top = LoggingContext.contexts.pop()\n if (top !== this) throw new Error('Parent context is being disposed before a child context')\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 type { ContractClassPType, LogicSigPType } from '../awst_build/ptypes'\nimport type { Props } from '../typescript-helpers'\nimport type { SourceLocation } from './source-location'\n\nexport enum OnCompletionAction {\n NoOp = 0,\n OptIn = 1,\n CloseOut = 2,\n ClearState = 3,\n UpdateApplication = 4,\n DeleteApplication = 5,\n}\n\nexport enum ARC4CreateOption {\n Allow = 1,\n Require = 2,\n Disallow = 3,\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 ARC4BareMethodConfig extends ModelBase {\n readonly sourceLocation: SourceLocation | undefined\n readonly allowedCompletionTypes: OnCompletionAction[]\n readonly create: ARC4CreateOption\n readonly isBare = true\n constructor(props: Omit<Props<ARC4BareMethodConfig>, 'isBare'>) {\n super()\n this.sourceLocation = props.sourceLocation\n this.allowedCompletionTypes = props.allowedCompletionTypes\n this.create = props.create\n }\n}\n\nexport type DefaultArgumentSource =\n | {\n source: 'constant'\n value: string | bigint | number | boolean | Uint8Array\n }\n | {\n source: 'global-state'\n memberName: string\n }\n | {\n source: 'local-state'\n memberName: string\n }\n | {\n source: 'abi-method'\n memberName: string\n }\n\nexport class ARC4ABIMethodConfig extends ModelBase {\n readonly sourceLocation: SourceLocation | undefined\n readonly name: string\n readonly isBare = false\n readonly create: ARC4CreateOption\n readonly readonly: boolean\n readonly allowedCompletionTypes: OnCompletionAction[]\n readonly defaultArgs: Record<string, DefaultArgumentSource>\n readonly structs: Record<string, ARC32StructDef>\n constructor(props: Omit<Props<ARC4ABIMethodConfig>, 'isBare'>) {\n super()\n this.sourceLocation = props.sourceLocation\n this.name = props.name\n this.create = props.create\n this.readonly = props.readonly\n this.allowedCompletionTypes = props.allowedCompletionTypes\n this.defaultArgs = props.defaultArgs\n this.structs = props.structs\n }\n}\n\nexport interface ARC32StructDef {\n name: string\n elements: [...[string, string][]]\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","/* AUTOGENERATED FILE - DO NOT EDIT (see puya/scripts/generate_ts_nodes.py) */\nimport { classes } from 'polytype'\nimport type { Props } from '../typescript-helpers'\nimport type { ARC4ABIMethodConfig, ARC4BareMethodConfig, ContractReference, LogicSigReference } from './models'\nimport type { SourceLocation } from './source-location'\nimport type { TxnField } from './txn-fields'\nimport type { wtypes } from './wtypes'\n\nexport class SubroutineID {\n constructor(props: Props<SubroutineID>) {\n this.target = props.target\n }\n target: string\n}\nexport abstract class Node {\n constructor(props: Props<Node>) {\n this.sourceLocation = props.sourceLocation\n }\n 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 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 expr: Expression\n 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 body: Array<Statement>\n label: string | null\n 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 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 condition: Expression\n ifBranch: Block\n 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 value: Expression\n cases: Map<Expression, Block>\n 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 condition: Expression\n 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 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 condition: Expression | null\n errorMessage: string | null\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 value: bigint\n 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 declare wtype: wtypes.ARC4UFixedNxM\n 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 value: boolean\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 value: Uint8Array\n 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 value: string\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 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 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 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 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 value: Expression\n declare 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 value: Expression\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 }\n left: Expression\n right: Expression\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitArrayConcat(this)\n }\n}\nexport class ArrayPop extends Expression {\n constructor(props: Props<ArrayPop>) {\n super(props)\n this.base = props.base\n }\n base: Expression\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitArrayPop(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 }\n base: Expression\n other: Expression\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitArrayExtend(this)\n }\n}\nexport class ARC4Decode extends Expression {\n constructor(props: Props<ARC4Decode>) {\n super(props)\n this.value = props.value\n }\n 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 opCode: string\n immediates: Array<string | bigint>\n 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 declare wtype: wtypes.WInnerTransactionFields\n 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 itxn: Expression\n fields: Map<TxnField, Expression>\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 index: Expression\n declare 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 expr: Expression\n comment: string\n 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 items: Array<Expression>\n declare 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 base: Expression\n index: bigint\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 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 itxn: Expression\n field: TxnField\n 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 itxns: Array<Expression>\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 base: Expression\n name: string\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 base: Expression\n 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 base: Expression\n beginIndex: Expression | null\n 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 base: Expression\n beginIndex: Expression | bigint | null\n 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 key: Expression\n 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 key: Expression\n existsAssertionMessage: string | null\n 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 key: Expression\n 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 source: Expression\n id: symbol\n 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 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 declare wtype: wtypes.WArray | wtypes.ARC4Array\n values: Array<Expression>\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitNewArray(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 condition: Expression\n trueExpr: Expression\n falseExpr: Expression\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 target:\n | VarExpression\n | FieldExpression\n | IndexExpression\n | TupleExpression\n | AppStateExpression\n | AppAccountStateExpression\n | BoxValueExpression\n 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 target:\n | VarExpression\n | FieldExpression\n | IndexExpression\n | TupleExpression\n | AppStateExpression\n | AppAccountStateExpression\n | BoxValueExpression\n value: Expression\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 lhs: Expression\n operator: NumericComparison\n 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 lhs: Expression\n operator: EqualityComparison\n rhs: Expression\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitBytesComparisonExpression(this)\n }\n}\nexport class InstanceMethodTarget {\n constructor(props: Props<InstanceMethodTarget>) {\n this.memberName = props.memberName\n }\n memberName: string\n}\nexport class InstanceSuperMethodTarget {\n constructor(props: Props<InstanceSuperMethodTarget>) {\n this.memberName = props.memberName\n }\n memberName: string\n}\nexport class ContractMethodTarget {\n constructor(props: Props<ContractMethodTarget>) {\n this.cref = props.cref\n this.memberName = props.memberName\n }\n cref: ContractReference\n memberName: string\n}\nexport class CallArg {\n constructor(props: Props<CallArg>) {\n this.name = props.name\n this.value = props.value\n }\n name: string | null\n 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 target: SubroutineID | InstanceMethodTarget | InstanceSuperMethodTarget | ContractMethodTarget\n 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 id: string\n params: Map<string, wtypes.WType>\n 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 func: PuyaLibFunction\n args: Array<CallArg>\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 op: UInt64UnaryOperator\n expr: Expression\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 op: UInt64PostfixUnaryOperator\n target:\n | VarExpression\n | FieldExpression\n | IndexExpression\n | TupleExpression\n | AppStateExpression\n | AppAccountStateExpression\n | BoxValueExpression\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 op: BigUIntPostfixUnaryOperator\n target: Expression\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 op: BytesUnaryOperator\n expr: Expression\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 left: Expression\n op: UInt64BinaryOperator\n right: Expression\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 left: Expression\n op: BigUIntBinaryOperator\n right: Expression\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 left: Expression\n op: BytesBinaryOperator\n right: Expression\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 left: Expression\n op: BinaryBooleanOperator\n right: Expression\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 expr: Expression\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 target:\n | VarExpression\n | FieldExpression\n | IndexExpression\n | TupleExpression\n | AppStateExpression\n | AppAccountStateExpression\n | BoxValueExpression\n op: UInt64BinaryOperator\n 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 target:\n | VarExpression\n | FieldExpression\n | IndexExpression\n | TupleExpression\n | AppStateExpression\n | AppAccountStateExpression\n | BoxValueExpression\n op: BigUIntBinaryOperator\n 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 target:\n | VarExpression\n | FieldExpression\n | IndexExpression\n | TupleExpression\n | AppStateExpression\n | AppAccountStateExpression\n | BoxValueExpression\n op: BytesBinaryOperator\n 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 signature: string\n value: Expression\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 start: Expression\n stop: Expression\n 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 expr: Expression\n declare 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 expr: Expression\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 sequence: Expression\n items:\n | VarExpression\n | FieldExpression\n | IndexExpression\n | TupleExpression\n | AppStateExpression\n | AppAccountStateExpression\n | BoxValueExpression\n 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 field: AppStateExpression | AppAccountStateExpression | BoxValueExpression\n default: Expression\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 field: AppStateExpression | AppAccountStateExpression | BoxValueExpression\n declare 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 field: AppStateExpression | AppAccountStateExpression | BoxValueExpression\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 field: AppStateExpression | AppAccountStateExpression | BoxValueExpression\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 declare wtype: wtypes.WStructType | wtypes.ARC4Struct\n 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.wtype = props.wtype\n this.sourceLocation = props.sourceLocation\n }\n name: string\n wtype: wtypes.WType\n sourceLocation: SourceLocation | null\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 description: string | null\n args: Map<string, string>\n 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 }\n args: Array<SubroutineArgument>\n returnType: wtypes.WType\n body: Block\n documentation: MethodDocumentation\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 id: string\n 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 cref: ContractReference\n memberName: string\n 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 memberName: string\n kind: AppStorageKind\n storageWtype: wtypes.WType\n keyWtype: wtypes.WType | null\n key: BytesConstant\n 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.avmVersion = props.avmVersion\n }\n id: LogicSigReference\n shortName: string\n program: Subroutine\n docstring: string | null\n 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 contract: ContractReference\n allocationOverrides: Map<TxnField, Expression>\n prefix: string | null\n 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 logicSig: LogicSigReference\n prefix: string | null\n 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 globalUints: bigint | null\n localUints: bigint | null\n globalBytes: bigint | null\n localBytes: bigint | null\n}\nexport class ARC4Router extends Expression {\n constructor(props: Props<ARC4Router>) {\n super(props)\n this.wtype = props.wtype\n }\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 id: ContractReference\n name: string\n description: string | null\n methodResolutionOrder: Array<ContractReference>\n approvalProgram: ContractMethod\n clearProgram: ContractMethod\n methods: Array<ContractMethod>\n appState: Array<AppStorageDefinition>\n stateTotals: StateTotals | null\n reservedScratchSpace: Set<bigint>\n avmVersion: bigint | null\n accept<T>(visitor: RootNodeVisitor<T>): T {\n return visitor.visitContract(this)\n }\n}\nexport type LValue = VarExpression | FieldExpression | IndexExpression | TupleExpression | AppStateExpression | AppAccountStateExpression\nexport type Constant = IntegerConstant | BoolConstant | BytesConstant | StringConstant\nexport type AWST = Contract | LogicSignature | Subroutine\nexport const concreteNodes = {\n subroutineID: SubroutineID,\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 arrayPop: ArrayPop,\n arrayExtend: ArrayExtend,\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 conditionalExpression: ConditionalExpression,\n assignmentStatement: AssignmentStatement,\n assignmentExpression: AssignmentExpression,\n numericComparisonExpression: NumericComparisonExpression,\n bytesComparisonExpression: BytesComparisonExpression,\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 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 visitArrayPop(expression: ArrayPop): T\n visitArrayExtend(expression: ArrayExtend): 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 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 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 { snakeCase } from 'change-case'\nimport path from 'node:path'\nimport { Constants } from '../constants'\nimport { InternalError } from '../errors'\nimport { logger } from '../logger'\nimport { invariant } from '../util'\nimport { buildBase85Encoder } from '../util/base-85'\nimport { ARC4ABIMethodConfig, ContractReference, LogicSigReference } from './models'\nimport type { RootNode } from './nodes'\nimport { IntrinsicCall, SingleEvaluation } from './nodes'\nimport { SourceLocation } from './source-location'\nimport { SymbolToNumber } from './util'\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\n protected serializerFunction(key: string, value: unknown): unknown {\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 private b85 = buildBase85Encoder()\n\n protected serializerFunction(key: string, value: unknown): unknown {\n if (typeof value === 'bigint') {\n return `${value}`\n }\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 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 if (i <= Number.MAX_SAFE_INTEGER) {\n return Number(i)\n } else {\n throw new InternalError(\n 'Intrinsic call with integer immediate arg cannot be serialized as it is larger than Number.MAX_SAFE_INTEGER',\n { sourceLocation: value.sourceLocation },\n )\n }\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 if (value instanceof ARC4ABIMethodConfig) {\n // TODO: This can be removed once puya has been updated to support a more advanced default args schema\n return {\n _type: value.constructor.name,\n ...(super.serializerFunction(key, value) as object),\n default_args: Object.fromEntries(\n Object.entries(value.defaultArgs).flatMap(([key, v]) => {\n if (v.source === 'constant') {\n logger.warn(value.sourceLocation, `Ignoring constant default value for ${key} as puya does not support this yet`)\n return []\n } else {\n return [[key, v.memberName]]\n }\n }),\n ),\n }\n }\n if (value instanceof Uint8Array) {\n return this.b85.encode(value)\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 { 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 class WArray extends WType {\n readonly elementType: WType\n constructor(props: { itemType: WType; immutable: boolean }) {\n super({\n name: 'WArray',\n scalarType: null,\n immutable: props.immutable,\n })\n this.elementType = props.itemType\n }\n }\n\n export class WEnumeration extends WType {\n readonly sequenceType: WType\n constructor(props: { sequenceType: WType }) {\n super({\n name: 'WArray',\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 })\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","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 throw new Error('Method not implemented.')\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 if (expression.key instanceof nodes.BytesConstant) {\n return `Box[${expression.key.accept(this)}].value`\n }\n return `${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 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_DEL(${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 { CodeError } from '../errors'\nimport type { DeliberateAny, Props } from '../typescript-helpers'\nimport { codeInvariant, instanceOfAny, invariant } from '../util'\nimport type { Expression, Statement } from './nodes'\nimport {\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} 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 type { wtypes } from '../../awst/wtypes'\nimport { CodeError } from '../../errors'\nimport type { DeliberateAny } from '../../typescript-helpers'\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 other instanceof this.constructor && this.fullName === other.fullName\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","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} 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-types.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-types.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-types.d.ts`,\n members: [\n ['Secp256k1', 'Secp256k1'],\n ['Secp256r1', 'Secp256r1'],\n ],\n})\nexport const vrfVerifyPType = new IntrinsicEnumType({\n name: 'VrfVerify',\n module: `${Constants.algoTsPackage}/op-types.d.ts`,\n members: [['VrfAlgorand', 'VrfAlgorand']],\n})\nexport const ALL_OP_ENUMS = [base64PType, ecPType, ecdsaPType, 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, zipStrict } from '../../util'\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 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 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.opTypesModuleName\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.opTypesModuleName\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\n constructor(props: { name: string; module: string; returnType: PType; parameters: Array<readonly [string, PType]> }) {\n super()\n this.name = props.name\n this.module = props.module\n if (props.returnType instanceof ObjectPType && props.returnType.isAnonymous) {\n this.returnType = new ObjectPType({\n name: `${props.name}Result`,\n module: props.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 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 const itemType = UnionPType.fromTypes(this.items)\n\n return new ArrayPType({\n immutable: false,\n itemType,\n })\n }\n\n getTupleType(): TuplePType {\n return new TuplePType({\n items: this.items,\n })\n }\n\n equals(other: PType): boolean {\n return (\n other instanceof ArrayLiteralPType &&\n this.items.length === other.items.length &&\n zipStrict(this.items, other.items).every(([a, b]) => a.equals(b))\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\n equals(other: PType): boolean {\n return (\n other instanceof TuplePType &&\n this.items.length === other.items.length &&\n zipStrict(this.items, other.items).every(([a, b]) => a.equals(b))\n )\n }\n}\nexport class ArrayPType extends TransientType {\n readonly itemType: PType\n readonly immutable: boolean\n\n get fullName() {\n return `${this.module}::Array<${this.itemType.fullName}>`\n }\n constructor(props: { itemType: PType; immutable?: boolean }) {\n const name = `Array<${props.itemType.name}>`\n super({\n name,\n typeMessage: transientTypeErrors.arrays(name).usedAsType,\n expressionMessage: transientTypeErrors.arrays(name).usedInExpression,\n module: 'lib.d.ts',\n singleton: false,\n })\n this.itemType = props.itemType\n this.immutable = props.immutable ?? true\n }\n\n get wtype() {\n return new wtypes.WArray({\n itemType: this.itemType.wtypeOrThrow,\n immutable: this.immutable,\n })\n }\n\n equals(other: PType): boolean {\n return other instanceof ArrayPType && this.immutable === other.immutable && this.itemType.equals(other.itemType)\n }\n}\n\ntype ObjectPTypeArgs =\n | { module: string; name: string; description: string | undefined; properties: Record<string, PType>; isAnonymous?: false }\n | { module?: undefined; name?: undefined; properties: Record<string, PType>; isAnonymous: true; description?: undefined }\n\nexport class ObjectPType extends PType {\n readonly name: string\n readonly module: string\n readonly description: string | undefined\n readonly properties: Record<string, PType>\n readonly singleton = false\n readonly isAnonymous: boolean\n\n constructor(props: ObjectPTypeArgs) {\n super()\n this.name = props.name ?? ''\n this.module = props.module ?? ''\n this.properties = props.properties\n this.isAnonymous = props.isAnonymous ?? false\n this.description = props.description\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 isAnonymous: true,\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.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 equals(other: PType): boolean {\n if (!(other instanceof ObjectPType)) return false\n const thisProps = this.orderedProperties()\n const otherProps = other.orderedProperties()\n return (\n this.name === other.name &&\n thisProps.length === otherProps.length &&\n zipStrict(thisProps, otherProps).every(\n ([[left_prop, left_type], [right_prop, right_type]]) => left_prop === right_prop && left_type.equals(right_type),\n )\n )\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})\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})\n\nexport const ApprovalProgram = new FunctionPType({\n name: Constants.approvalProgramMethodName,\n module: Constants.arc4ModuleName,\n returnType: boolPType,\n parameters: [],\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 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})\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 name: 'CompiledContract',\n module: Constants.compiledModuleName,\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 name: 'CompiledLogicSig',\n module: Constants.compiledModuleName,\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","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 { 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 resolvableToPType(ptype: PTypeOrClass): boolean {\n return this.ptype.equalsOrInstanceOf(ptype)\n }\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\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 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 | 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 type ts from 'typescript'\nimport type { AwstBuildContext } from '../awst_build/context/awst-build-context'\nimport { AwstBuildFailureError } from '../errors'\nimport { logger, logPuyaExceptions } 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 logPuyaExceptions(() => Object.getPrototypeOf(visitor)[visitFunction].call(visitor, node), sourceLocation)\n } else {\n logger.error(sourceLocation, `Unsupported syntax visitor ${nodeName}`)\n }\n } else {\n logger.error(sourceLocation, `Unknown syntax kind ${node.kind}`)\n }\n throw new AwstBuildFailureError()\n}\n","import type { SourceLocation } from '../../awst/source-location'\nimport { wtypes } from '../../awst/wtypes'\nimport { Constants } from '../../constants'\nimport { codeInvariant, zipStrict } 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}\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 constructor({ wtype, nativeType, name }: { wtype: wtypes.ARC4Type; name: string; nativeType: PType }) {\n super()\n this.wtype = wtype\n this.name = name\n this.nativeType = nativeType\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})\n\nexport const arc4StringType = new ARC4InstanceType({\n name: 'Str',\n wtype: wtypes.arc4StringAliasWType,\n nativeType: stringPType,\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 constructor({\n name,\n module,\n fields,\n description,\n sourceLocation,\n }: {\n name: string\n module: string\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.fields = fields\n this.description = description\n this.sourceLocation = sourceLocation\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: false,\n })\n }\n\n get signature(): string {\n return `${this.name}${this.wtype.arc4Name}`\n }\n\n equals(other: PType): boolean {\n if (!(other instanceof ARC4StructType)) return false\n const thisProps = Object.entries(this.fields)\n const otherProps = Object.entries(other.fields)\n return (\n this.name === other.name &&\n thisProps.length === otherProps.length &&\n zipStrict(thisProps, otherProps).every(\n ([[left_prop, left_type], [right_prop, right_type]]) => left_prop === right_prop && left_type.equals(right_type),\n )\n )\n }\n}\n\nexport const arc4StructBaseType = new ARC4StructType({\n name: 'StructBase',\n module: Constants.arc4EncodedTypesModuleName,\n fields: {},\n description: undefined,\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\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 }\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\n equals(other: PType): boolean {\n return (\n other instanceof ARC4TupleType &&\n this.items.length === other.items.length &&\n zipStrict(this.items, other.items).every(([a, b]) => a.equals(b))\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 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 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 ARC4EncodedType {\n readonly module = Constants.arc4EncodedTypesModuleName\n readonly elementType: ARC4EncodedType\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\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 this.immutable = immutable ?? false\n this.elementType = elementType\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 ARC4EncodedType {\n static baseFullName = `${Constants.arc4EncodedTypesModuleName}::StaticArray`\n readonly module = Constants.arc4EncodedTypesModuleName\n readonly elementType: ARC4EncodedType\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\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\n super()\n this.immutable = immutable ?? false\n this.elementType = elementType\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 }\n}\nexport const arc4AddressAlias = new StaticArrayType({\n arraySize: BigInt(Constants.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})\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 { 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 type { awst, ConstantValue } from '../../../awst'\nimport { isConstant } from '../../../awst'\nimport type { Expression } from '../../../awst/nodes'\nimport { BoolConstant, IntegerConstant, StringConstant } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport { CodeError } from '../../../errors'\nimport { codeInvariant } from '../../../util'\nimport type { PType, PTypeOrClass } from '../../ptypes'\nimport { bigIntPType, biguintPType, boolPType, bytesPType, numberPType, stringPType, uint64PType } from '../../ptypes'\nimport { UFixedNxMType, UintNType } from '../../ptypes/arc4-types'\nimport type { NodeBuilder } from '../index'\nimport { InstanceBuilder } from '../index'\nimport { LiteralExpressionBuilder } from '../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 requireExpressionsOfType<const TPTypes extends [...PType[]]>(\n builders: ReadonlyArray<NodeBuilder>,\n ptypes: TPTypes,\n sourceLocation: SourceLocation,\n): Array<awst.Expression> {\n if (builders.length === ptypes.length) {\n return builders.map((builder, i) => requireExpressionOfType(builder, ptypes[i]))\n }\n throw new CodeError(`Expected ${ptypes.length} args with types ${ptypes.join(', ')}`, { 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 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 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 { BytesEncoding } from './nodes'\nimport type { SourceLocation } from './source-location'\nimport { wtypes } from './wtypes'\n\nexport const intrinsicFactory = {\n bytesConcat({\n left,\n right,\n sourceLocation,\n }: {\n left: awst.Expression\n right: awst.Expression\n sourceLocation: SourceLocation\n }): awst.IntrinsicCall {\n // invariant(left.wtype.equals(right.wtype), 'left and right operand wtypes must match')\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 { 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 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 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 type { SourceLocation } from '../../awst/source-location'\nimport { codeInvariant, invariant } from '../../util'\nimport type { PType } from '../ptypes'\nimport { TuplePType, uint64PType } from '../ptypes'\nimport { instanceEb } from '../type-registry'\nimport type { InstanceBuilder, NodeBuilder } from './index'\nimport { InstanceExpressionBuilder } from './index'\nimport { requireIntegerConstant } from './util'\n\nexport class TupleExpressionBuilder extends InstanceExpressionBuilder<TuplePType> {\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 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 getItemBuilders(): 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 { TupleExpressionBuilder } from '../tuple-expression-builder'\nimport { requireIntegerConstant } from '../util'\n\nexport class ArrayLiteralExpressionBuilder extends InstanceBuilder {\n readonly ptype: ArrayLiteralPType\n constructor(\n sourceLocation: SourceLocation,\n private readonly items: InstanceBuilder[],\n ) {\n super(sourceLocation)\n this.ptype = new ArrayLiteralPType({ items: items.map((i) => i.ptype) })\n }\n\n resolve(): Expression {\n const arrayType = 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 // return nodeFactory.tupleExpression({\n // items: this.items.map((i) => i.resolveLValue()),\n // sourceLocation: this.sourceLocation,\n // })\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 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.itemType)),\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.itemType))\n }\n return false\n }\n\n getItemBuilders(): InstanceBuilder[] {\n return this.items\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 { 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'\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 if (this.ptype instanceof NumericLiteralPType || this.ptype.equals(numberPType)) {\n return ptype.equals(biguintPType) || ptype.equals(uint64PType) || ptype.equals(numberPType) || ptype.equals(this.ptype)\n } else if (this.ptype instanceof BigIntLiteralPType || this.ptype.equals(bigIntPType)) {\n return ptype.equals(biguintPType) || ptype.equals(uint64PType) || 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 { 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 { 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 } 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 private readonly generateDiscardedVarName: () => string,\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.orderedProperties().map(([p, propPType]) => this.memberAccess(p, this.sourceLocation).resolveLValue()),\n sourceLocation: this.sourceLocation,\n wtype: this.ptype.wtype,\n })\n }\n memberAccess(name: string, sourceLocation: SourceLocation): InstanceBuilder {\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 requireInstanceBuilder(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 isAnonymous: true,\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 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 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 { 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 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 { 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 ptype.equals(bytesPType) || super.resolvableToPType(ptype)\n }\n\n resolveToPType(ptype: PTypeOrClass): InstanceBuilder {\n if (ptype.equals(bytesPType)) {\n return instanceEb(this.toBytes(this.sourceLocation), bytesPType)\n }\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 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 * as ts from 'typescript'\nimport { NotSupported } from '../../errors'\nimport type { Visitor } from '../../visitor/visitor'\nimport { accept } from '../../visitor/visitor'\nimport type { AwstBuildContext } from '../context/awst-build-context'\n\ntype ObjectNames = ts.PropertyName | ts.PseudoLiteralToken\n\nexport class TextVisitor implements Visitor<ObjectNames, string> {\n constructor(public context: AwstBuildContext) {}\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 type { 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 type { 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 { StringExpressionBuilder, StringFunctionBuilder } from '../eb/string-expression-builder'\nimport { requireExpressionOfType, requireInstanceBuilder } from '../eb/util'\nimport type { PType } from '../ptypes'\nimport {\n ArrayLiteralPType,\n ArrayPType,\n BigIntLiteralPType,\n bigIntPType,\n biguintPType,\n boolPType,\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\n protected constructor(public context: AwstBuildContext) {\n this.textVisitor = new TextVisitor(context)\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, () => this.context.generateDiscardedVarName())\n }\n\n visitArrayLiteralExpression(node: ts.ArrayLiteralExpression): NodeBuilder {\n const sourceLocation = this.sourceLocation(node)\n return new ArrayLiteralExpressionBuilder(\n sourceLocation,\n node.elements.map((e) => requireInstanceBuilder(this.baseAccept(e))),\n )\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.map((a) => this.baseAccept(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 = node.arguments?.map((a) => this.baseAccept(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.itemType, i, sourceLocation).equals(targetType.itemType),\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 name: targetType.name,\n module: targetType.module,\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 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.getItemBuilders()\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(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 { nodeFactory } from '../../awst/node-factory'\nimport type { 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\nabstract class SubroutineExpressionBuilder extends FunctionBuilder {\n protected constructor(\n sourceLocation: SourceLocation,\n public readonly ptype: FunctionPType,\n protected readonly target: SubroutineID | InstanceMethodTarget | InstanceSuperMethodTarget,\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\nexport class ContractMethodExpressionBuilder extends SubroutineExpressionBuilder {\n constructor(sourceLocation: SourceLocation, ptype: FunctionPType) {\n super(\n sourceLocation,\n ptype,\n nodeFactory.instanceMethodTarget({\n memberName: ptype.name,\n }),\n )\n }\n}\n\nexport class BaseContractMethodExpressionBuilder extends SubroutineExpressionBuilder {\n constructor(sourceLocation: SourceLocation, ptype: FunctionPType, baseContractPType: ContractClassPType) {\n super(\n sourceLocation,\n ptype,\n nodeFactory.instanceSuperMethodTarget({\n memberName: ptype.name,\n }),\n )\n }\n}\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 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 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 { 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 type { AwstBuildContext } from '../context/awst-build-context'\nimport type { ContractOptionsDecoratorData } from '../models/decorator-data'\nimport type { PType } from '../ptypes'\nimport {\n arc4BaseContractType,\n baseContractType,\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 type { NodeBuilder } from './index'\nimport { DecoratorDataBuilder, FunctionBuilder, InstanceBuilder } from './index'\nimport { ArrayLiteralExpressionBuilder } from './literal/array-literal-expression-builder'\nimport { BigIntLiteralExpressionBuilder } from './literal/big-int-literal-expression-builder'\nimport { requireStringConstant } from './util'\nimport { parseFunctionArgs } from './util/arg-parsing'\nimport { requireAvmVersion } from './util/avm-version'\nimport { VoidExpressionBuilder } from './void-expression-builder'\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(\n ptype: ContractClassPType,\n sourceLocation: SourceLocation,\n protected context: AwstBuildContext,\n ) {\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 = this.context.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)\n }\n return super.memberAccess(name, sourceLocation)\n }\n}\n\nexport class ContractSuperBuilder extends ContractThisBuilder {\n constructor(ptype: ContractClassPType, sourceLocation: SourceLocation, context: AwstBuildContext) {\n super(ptype, sourceLocation, context)\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n if (this.ptype.equals(baseContractType) || this.ptype.equals(arc4BaseContractType)) {\n // Contract base types have no code to execute so we can just return void\n return new VoidExpressionBuilder(nodeFactory.voidConstant({ sourceLocation }))\n }\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 const method = this.ptype.methods[name]\n if (method) {\n return new BaseContractMethodExpressionBuilder(sourceLocation, method, this.ptype)\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\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 getRangeProp(builder: NodeBuilder, name: string): bigint {\n if (builder.hasProperty(name)) {\n return getLiteralNumber(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\nfunction getLiteralNumber(builder: NodeBuilder) {\n codeInvariant(builder instanceof BigIntLiteralExpressionBuilder, 'Expected numeric literal', builder.sourceLocation)\n return builder.value\n}\n\nfunction 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.getItemBuilders()) {\n if (item.resolvableToPType(numberPType)) {\n slots.add(getLiteralNumber(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 buildStateTotals(builder: NodeBuilder): ContractOptionsDecoratorData['stateTotals'] {\n function tryGetProp(name: string): bigint | undefined {\n if (builder.hasProperty(name)) {\n return getLiteralNumber(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 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\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 { VoidExpressionBuilder } from '../../void-expression-builder'\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 '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(\n boxValue,\n (expr) =>\n new VoidExpressionBuilder(\n nodeFactory.stateDelete({\n sourceLocation,\n field: boxValue,\n wtype: wtypes.voidWType,\n }),\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 { 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, BoxMapPType, bytesPType, stringPType, TuplePType } from '../../../ptypes'\nimport { instanceEb } from '../../../type-registry'\nimport { FunctionBuilder, type NodeBuilder } from '../../index'\nimport { parseFunctionArgs } from '../../util/arg-parsing'\nimport { VoidExpressionBuilder } from '../../void-expression-builder'\nimport { extractKey } from '../util'\nimport { boxExists, boxLength, BoxProxyExpressionBuilder, BoxValueExpressionBuilder } from './base'\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 memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n switch (name) {\n case 'set':\n return new BoxMapSetFunctionBuilder(this._expr, this.ptype, sourceLocation)\n case 'delete':\n return new BoxMapDeleteFunctionBuilder(this._expr, this.ptype, sourceLocation)\n case 'get':\n return new BoxMapGetFunctionBuilder(this._expr, this.ptype, sourceLocation)\n case 'has':\n return new BoxMapHasFunctionBuilder(this._expr, this.ptype, sourceLocation)\n case 'maybe':\n return new BoxMapMaybeFunctionBuilder(this._expr, this.ptype, sourceLocation)\n case 'length':\n return new BoxMapLengthFunctionBuilder(this._expr, this.ptype, sourceLocation)\n }\n return super.memberAccess(name, sourceLocation)\n }\n}\n\nabstract class BoxMapFunctionBuilderBase extends FunctionBuilder {\n #mapPType: BoxMapPType\n #boxMapExpr: Expression\n constructor(boxMapExpr: Expression, mapPType: BoxMapPType, sourceLocation: SourceLocation) {\n super(sourceLocation)\n this.#mapPType = mapPType\n this.#boxMapExpr = boxMapExpr\n }\n protected get contentType() {\n return this.#mapPType.contentType\n }\n protected get keyType() {\n return this.#mapPType.keyType\n }\n protected boxValueExpression(key: Expression): BoxValueExpression {\n const keyBytes = instanceEb(key, this.keyType).toBytes(this.sourceLocation)\n\n return nodeFactory.boxValueExpression({\n sourceLocation: this.sourceLocation,\n existsAssertionMessage: 'Box must have value',\n key: intrinsicFactory.bytesConcat({\n left: this.#boxMapExpr,\n right: keyBytes,\n sourceLocation: this.sourceLocation,\n }),\n wtype: this.contentType.wtypeOrThrow,\n })\n }\n}\nclass BoxMapHasFunctionBuilder extends BoxMapFunctionBuilderBase {\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [key],\n } = parseFunctionArgs({\n args,\n typeArgs,\n funcName: 'BoxMap.has',\n callLocation: sourceLocation,\n genericTypeArgs: 0,\n argSpec: (a) => [a.required(this.keyType)],\n })\n return boxExists(this.boxValueExpression(key.resolve()), sourceLocation)\n }\n}\n\nclass BoxMapGetFunctionBuilder extends BoxMapFunctionBuilderBase {\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [key, { default: defaultValue }],\n } = parseFunctionArgs({\n args,\n typeArgs,\n funcName: 'BoxMap.get',\n callLocation: sourceLocation,\n genericTypeArgs: 0,\n argSpec: (a) => [a.required(this.keyType), 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.boxValueExpression(key.resolve()),\n }),\n this.contentType,\n )\n } else {\n return new BoxValueExpressionBuilder(this.boxValueExpression(key.resolve()), this.contentType)\n }\n }\n}\nclass BoxMapSetFunctionBuilder extends BoxMapFunctionBuilderBase {\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [key, value],\n } = parseFunctionArgs({\n args,\n typeArgs,\n funcName: 'BoxMap.set',\n callLocation: sourceLocation,\n genericTypeArgs: 0,\n argSpec: (a) => [a.required(this.keyType), a.required(this.contentType)],\n })\n\n return instanceEb(\n nodeFactory.assignmentExpression({\n target: this.boxValueExpression(key.resolve()),\n sourceLocation,\n value: value.resolve(),\n }),\n this.contentType,\n )\n }\n}\nclass BoxMapMaybeFunctionBuilder extends BoxMapFunctionBuilderBase {\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [key],\n } = parseFunctionArgs({\n args,\n typeArgs,\n funcName: 'BoxMap.maybe',\n callLocation: sourceLocation,\n genericTypeArgs: 0,\n argSpec: (a) => [a.required(this.keyType)],\n })\n const type = new TuplePType({ items: [this.contentType, boolPType] })\n\n return instanceEb(\n nodeFactory.stateGetEx({\n field: this.boxValueExpression(key.resolve()),\n sourceLocation,\n wtype: type.wtype,\n }),\n type,\n )\n }\n}\nclass BoxMapLengthFunctionBuilder extends BoxMapFunctionBuilderBase {\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [key],\n } = parseFunctionArgs({\n args,\n typeArgs,\n funcName: 'BoxMap.length',\n callLocation: sourceLocation,\n genericTypeArgs: 0,\n argSpec: (a) => [a.required(this.keyType)],\n })\n\n return boxLength(this.boxValueExpression(key.resolve()), sourceLocation)\n }\n}\nclass BoxMapDeleteFunctionBuilder extends BoxMapFunctionBuilderBase {\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [key],\n } = parseFunctionArgs({\n args,\n typeArgs,\n funcName: 'BoxMap.delete',\n callLocation: sourceLocation,\n genericTypeArgs: 0,\n argSpec: (a) => [a.required(this.keyType)],\n })\n\n return new VoidExpressionBuilder(\n nodeFactory.stateDelete({\n field: this.boxValueExpression(key.resolve()),\n sourceLocation,\n wtype: wtypes.voidWType,\n }),\n )\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, 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 '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 'length': {\n return boxLength(boxValueExpr, sourceLocation)\n }\n case 'value':\n return new BoxValueExpressionBuilder(boxValueExpr, this.ptype.contentType)\n }\n return super.memberAccess(name, sourceLocation)\n }\n}\n\nexport abstract class BoxRefBaseFunctionBuilder extends FunctionBuilder {\n constructor(protected readonly boxValue: BoxValueExpression) {\n super(boxValue.sourceLocation)\n }\n}\n\nexport class 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}\nexport class 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}\nexport class 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}\nexport class 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}\n\nexport class 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}\nexport class 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","import { nodeFactory } from '../../../awst/node-factory'\nimport type { AppStateExpression, Expression, LValue } from '../../../awst/nodes'\nimport { BytesConstant } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport { wtypes } from '../../../awst/wtypes'\n\nimport { CodeError } from '../../../errors'\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, InstanceBuilder, InstanceExpressionBuilder } from '../index'\nimport { parseFunctionArgs } from '../util/arg-parsing'\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\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 'value':\n return typeRegistry.getInstanceEb(this.buildField(sourceLocation), this.ptype.contentType)\n case 'hasValue':\n return new BooleanExpressionBuilder(\n nodeFactory.stateExists({\n field: this.buildField(sourceLocation),\n wtype: boolPType.wtype,\n sourceLocation,\n }),\n )\n }\n return super.memberAccess(name, sourceLocation)\n }\n\n private buildField(sourceLocation: SourceLocation): AppStateExpression {\n return nodeFactory.appStateExpression({\n key: this._expr,\n wtype: this.ptype.contentType.wtypeOrThrow,\n existsAssertionMessage: 'check GlobalState exists',\n sourceLocation,\n })\n }\n}\n\nexport class GlobalStateFunctionResultBuilder extends InstanceBuilder<GlobalStateType> {\n resolve(): Expression {\n codeInvariant(\n this._expr,\n 'Global 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 private _ptype: GlobalStateType\n private _expr: Expression | undefined\n public readonly initialValue: Expression | undefined\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(sourceLocation)\n invariant(ptype instanceof GlobalStateType, 'ptype must be GlobalStateType')\n this._ptype = ptype\n this._expr = expr\n this.initialValue = config.initialValue\n }\n\n get ptype(): GlobalStateType {\n return this._ptype\n }\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 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 { 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 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","export function intersectSets<T>(...sets: Set<T>[]): Set<T> {\n return new Set<T>(sets.flatMap((s) => [...s]))\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 })\n }\n}\n","import type { awst } from '../../awst'\nimport type { LogicSigReference } from '../../awst/models'\nimport { ARC4BareMethodConfig, ARC4CreateOption, ContractReference, OnCompletionAction } from '../../awst/models'\nimport { nodeFactory } from '../../awst/node-factory'\nimport type { AppStorageDefinition, ContractMethod, Statement } from '../../awst/nodes'\nimport { 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 { intersectSets } from '../../util/intersect-sets'\nimport type { ContractClassPType } from '../ptypes'\nimport type { ContractOptionsDecoratorData } from './decorator-data'\nimport { LogicSigClassModel } from './logic-sig-class-model'\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 bases: Array<ContractReference>\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.bases = props.bases\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 if (this.ctor) methods.push(this.ctor)\n const methodResolutionOrder: ContractReference[] = []\n let firstBaseWithStateTotals: ContractClassModel | undefined = undefined\n let reservedScratchSpace = new Set<bigint>()\n\n for (const baseType of this.type.allBases()) {\n const cref = ContractReference.fromPType(baseType)\n const baseClass = compilationSet.getContractClass(cref)\n if (baseClass.hasExplicitStateTotals() && firstBaseWithStateTotals === undefined) {\n firstBaseWithStateTotals = baseClass\n }\n if (baseClass.options?.scratchSlots) {\n reservedScratchSpace = intersectSets(reservedScratchSpace, baseClass.options.scratchSlots)\n }\n methodResolutionOrder.push(cref)\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) methods.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) => m.arc4MethodConfig?.isBare === true && 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 = intersectSets(reservedScratchSpace, this.options.scratchSlots)\n }\n\n return nodeFactory.contract({\n name: this.options?.name ?? this.name,\n id: this.id,\n description: this.description,\n approvalProgram: ContractClassModel.patchApprovalToCallCtor(approvalProgram, methods),\n clearProgram,\n methodResolutionOrder,\n methods,\n appState: this.appState,\n stateTotals,\n reservedScratchSpace: reservedScratchSpace,\n sourceLocation: this.sourceLocation,\n avmVersion: this.options?.avmVersion ?? null,\n })\n }\n\n private static patchApprovalToCallCtor(approval: ContractMethod, methods: ContractMethod[]): ContractMethod {\n // Only need to call ctor if there is at least 1 constructor in the inheritance chain\n if (methods.every((m) => m.memberName !== Constants.constructorMethodName)) {\n return approval\n }\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 })\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 type { ARC32StructDef } from '../awst/models'\nimport type { SourceLocation } from '../awst/source-location'\nimport { CodeError } from '../errors'\nimport { logger } from '../logger'\nimport type { FunctionPType, PType } from './ptypes'\nimport {\n accountPType,\n applicationPType,\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 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\n return false\n}\nexport function ptypeToArc4EncodedType(ptype: TuplePType, sourceLocation: SourceLocation): ARC4TupleType\nexport function ptypeToArc4EncodedType(ptype: ObjectPType, sourceLocation: SourceLocation): ARC4StructType\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 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.name,\n module: ptype.module,\n description: ptype.description,\n fields: Object.fromEntries(ptype.orderedProperties().map(([p, pt]) => [p, ptypeToArc4EncodedType(pt, sourceLocation)])),\n })\n\n throw new CodeError(`${ptype} cannot be encoded to an ARC4 type`, { sourceLocation })\n}\n\nexport function getFunctionTypes(ptype: FunctionPType, sourceLocation: SourceLocation): Record<string, PType> {\n const result: Record<string, PType> = {}\n for (const [param, paramType] of ptype.parameters) {\n result[param] = paramType\n }\n if ('output' in result) {\n logger.error(sourceLocation, 'for compatibility with ARC-32, ARC-4 methods cannot have an argument named output')\n }\n\n result['output'] = ptype.returnType\n\n return result\n}\n\nexport function getArc4StructDef(ptype: ARC4StructType): ARC32StructDef {\n return {\n name: ptype.name,\n elements: Object.entries(ptype.fields).map(([f, t]) => [f, t.wtype.arc4Name]),\n }\n}\n","import ts from 'typescript'\nimport { AwstBuildFailureError } from '../../errors'\nimport { logger } from '../../logger'\nimport { invariant, isIn } from '../../util'\nimport { accept } from '../../visitor/visitor'\nimport type { 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(context: AwstBuildContext, node: ts.Decorator) {\n super(context)\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(context: AwstBuildContext, node: { modifiers?: ts.NodeArray<ts.ModifierLike> }): DecoratorData[] {\n return (\n node.modifiers?.flatMap((modifier) => {\n if (!ts.isDecorator(modifier)) return []\n try {\n return new DecoratorVisitor(context.createChildContext(), modifier).result\n } catch (e) {\n if (e instanceof AwstBuildFailureError) {\n return []\n }\n throw e\n }\n }) ?? []\n )\n }\n\n static buildContractData(context: AwstBuildContext, target: ts.ClassDeclaration) {\n const data = DecoratorVisitor.buildDecoratorData(context, 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(context: AwstBuildContext, target: ts.ClassDeclaration) {\n const data = DecoratorVisitor.buildDecoratorData(context, 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(context: AwstBuildContext, target: ts.MethodDeclaration) {\n const data = DecoratorVisitor.buildDecoratorData(context, 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 { Expression, LValue } from '../../awst/nodes'\nimport { CodeError } from '../../errors'\nimport { invariant } from '../../util'\nimport type { PType } from '../ptypes'\nimport { ArrayPType } from '../ptypes'\nimport { InstanceExpressionBuilder } from './index'\n\nexport class NativeArrayExpressionBuilder extends InstanceExpressionBuilder<ArrayPType> {\n resolveLValue(): LValue {\n throw new CodeError(this.ptype.typeMessage, { sourceLocation: this.sourceLocation })\n }\n\n constructor(expr: Expression, ptype: PType) {\n invariant(ptype instanceof ArrayPType, 'ptype must be instance of ArrayPType')\n super(expr, ptype)\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, 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.itemType\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', { sourceLocation: sequenceLocation })\n}\n\nexport const ptypeIn = (target: PType, ...ptypes: [PType, ...PType[]]): boolean => {\n return ptypes.some((t) => t.equals(target))\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 { AwstBuildFailureError, 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 { AwstBuildContext } from '../context/awst-build-context'\nimport type { InstanceBuilder } 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'\n\n// noinspection JSUnusedGlobalSymbols\nexport 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(ctx: AwstBuildContext, node: ts.MethodDeclaration | ts.FunctionDeclaration | ts.ConstructorDeclaration) {\n super(ctx)\n const type = ctx.getPTypeForNode(node)\n invariant(type instanceof FunctionPType, 'type of function must be FunctionPType')\n this._functionType = type\n }\n\n protected buildFunctionAwst(node: ts.MethodDeclaration | ts.FunctionDeclaration | ts.ConstructorDeclaration): {\n args: awst.SubroutineArgument[]\n documentation: awst.MethodDocumentation\n body: awst.Block\n } {\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(\n sourceLocation,\n ptype,\n [{ type: 'properties', properties: Object.fromEntries(props) }],\n () => this.context.generateDiscardedVarName(),\n )\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 ctx.continueTarget,\n incrementor,\n ),\n }),\n 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), ctx.continueTarget),\n }),\n 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 ctx.continueTarget,\n nodeFactory.ifElse({\n condition: this.evaluateCondition(node.expression, true),\n sourceLocation,\n ifBranch: nodeFactory.block({ sourceLocation }, nodeFactory.goto({ sourceLocation, target: ctx.breakTarget.label })),\n elseBranch: null,\n }),\n ),\n }),\n 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), ctx.continueTarget),\n }),\n 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))\n codeInvariant(subject.ptype, 'The subject of a switch statement must have a resolvable ptype', this.sourceLocation(node.expression))\n\n let defaultCase: Block | null = null\n const cases = new Map<awst.Expression, awst.Block>()\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 = requireExpressionOfType(this.accept(clause.expression), subject.ptype)\n cases.set(clauseExpr, caseBlock)\n }\n }\n const switchStatement = nodeFactory.switch({\n value: subject.resolve(),\n sourceLocation,\n cases,\n defaultCase,\n })\n if (!ctx.hasBreaks) {\n return switchStatement\n }\n return nodeFactory.block(\n {\n sourceLocation,\n },\n switchStatement,\n 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 if (e instanceof AwstBuildFailureError) return []\n throw e\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 type { DefaultArgumentSource } from '../../awst/models'\nimport { ARC4ABIMethodConfig, ARC4BareMethodConfig, ARC4CreateOption, ContractReference, OnCompletionAction } from '../../awst/models'\nimport * as awst from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { Constants } from '../../constants'\nimport { CodeError } from '../../errors'\nimport { logger } from '../../logger'\nimport { codeInvariant, isIn } from '../../util'\nimport { getArc4StructDef, getFunctionTypes, ptypeToArc4PType } from '../arc4-util'\nimport type { AwstBuildContext } from '../context/awst-build-context'\nimport type { NodeBuilder } from '../eb'\nimport { ContractSuperBuilder, ContractThisBuilder } from '../eb/contract-builder'\nimport { isValidLiteralForPType } from '../eb/util'\nimport type { Arc4AbiDecoratorData, DecoratorData } from '../models/decorator-data'\nimport type { FunctionPType } from '../ptypes'\nimport { ContractClassPType, GlobalStateType } from '../ptypes'\nimport { ARC4StructType } from '../ptypes/arc4-types'\nimport { DecoratorVisitor } from './decorator-visitor'\nimport { FunctionVisitor } from './function-visitor'\n\nexport class ContractMethodBaseVisitor extends FunctionVisitor {\n visitSuperKeyword(node: ts.SuperExpression): NodeBuilder {\n const sourceLocation = this.sourceLocation(node)\n const ptype = this.context.getPTypeForNode(node)\n if (ptype instanceof ContractClassPType) {\n return new ContractSuperBuilder(ptype, sourceLocation, this.context)\n }\n throw new CodeError(`'super' keyword is not valid outside of a contract type`, { sourceLocation })\n }\n\n visitThisKeyword(node: ts.ThisExpression): NodeBuilder {\n const sourceLocation = this.sourceLocation(node)\n const ptype = this.context.getPTypeForNode(node)\n if (ptype instanceof ContractClassPType) {\n return new ContractThisBuilder(ptype, sourceLocation, this.context)\n }\n throw new CodeError(`'this' keyword is not valid outside of a contract type`, { sourceLocation })\n }\n}\n\nexport class ContractMethodVisitor extends ContractMethodBaseVisitor {\n private readonly _result: awst.ContractMethod\n private readonly _contractType: ContractClassPType\n\n constructor(ctx: AwstBuildContext, node: ts.MethodDeclaration, contractType: ContractClassPType) {\n super(ctx, node)\n this._contractType = contractType\n const sourceLocation = this.sourceLocation(node)\n const { args, body, documentation } = this.buildFunctionAwst(node)\n const cref = ContractReference.fromPType(this._contractType)\n\n const decorator = DecoratorVisitor.buildContractMethodData(ctx, node)\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 this._result = new awst.ContractMethod({\n arc4MethodConfig: arc4MethodConfig ?? null,\n memberName: this._functionType.name,\n sourceLocation,\n args,\n returnType: this._functionType.returnType.wtypeOrThrow,\n body,\n cref,\n documentation,\n })\n }\n\n get result() {\n return this._result\n }\n\n public static buildContractMethod(\n parentCtx: AwstBuildContext,\n node: ts.MethodDeclaration,\n contractType: ContractClassPType,\n ): awst.ContractMethod {\n return new ContractMethodVisitor(parentCtx.createChildContext(), node, contractType).result\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.ContractMethod['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 const funcTypes = getFunctionTypes(functionType, methodLocation)\n\n const mappedTypes = Object.entries(funcTypes).map(([n, t]) => [n, ptypeToArc4PType(t, methodLocation)])\n\n const structs = Object.fromEntries(\n mappedTypes\n .filter((mappedType): mappedType is [string, ARC4StructType] => mappedType[1] instanceof ARC4StructType)\n .map(([p, t]) => [p, getArc4StructDef(t)]),\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: Object.fromEntries(\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 structs,\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: {},\n structs,\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 }): DefaultArgumentSource {\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 codeInvariant(isValidLiteralForPType(config.value, paramType), `Literal cannot be converted to type ${paramType}`, decoratorLocation)\n\n return {\n source: 'constant',\n value: config.value,\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 {\n source: 'abi-method',\n memberName: config.name,\n }\n }\n const propertyType = this._contractType.properties[config.name]\n if (propertyType instanceof GlobalStateType) {\n codeInvariant(\n propertyType.contentType.equals(paramType),\n `Default argument specification for '${parameterName}' does not match parameter type`,\n decoratorLocation,\n )\n return {\n source: 'global-state',\n memberName: 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 { AwstBuildFailureError } from '../../errors'\nimport { codeInvariant, invariant } from '../../util'\nimport type { AwstBuildContext } from '../context/awst-build-context'\nimport { voidPType } from '../ptypes'\nimport { ContractMethodBaseVisitor } from './contract-method-visitor'\n\nexport interface ConstructorInfo {\n propertyInitializerStatements: awst.Statement[]\n cref: ContractReference\n}\n\nexport class ConstructorVisitor extends ContractMethodBaseVisitor {\n private readonly _result: awst.ContractMethod\n private _foundSuperCall = false\n private readonly _propertyInitializerStatements: awst.Statement[]\n constructor(ctx: AwstBuildContext, node: ts.ConstructorDeclaration, contractInfo: ConstructorInfo) {\n super(ctx, node)\n this._propertyInitializerStatements = contractInfo.propertyInitializerStatements\n const sourceLocation = this.sourceLocation(node)\n\n const { args, body, documentation } = this.buildFunctionAwst(node)\n\n this._result = new awst.ContractMethod({\n arc4MethodConfig: null,\n memberName: this._functionType.name,\n sourceLocation,\n args,\n returnType: voidPType.wtype,\n body,\n cref: contractInfo.cref,\n documentation,\n })\n }\n\n get result() {\n return this._result\n }\n\n public static buildConstructor(parentCtx: AwstBuildContext, node: ts.ConstructorDeclaration, constructorMethodInfo: ConstructorInfo) {\n const result = new ConstructorVisitor(parentCtx.createChildContext(), node, constructorMethodInfo).result\n invariant(result instanceof awst.ContractMethod, \"result must be ContractMethod'\")\n return result\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._propertyInitializerStatements,\n )\n }\n return statement\n } catch (e) {\n if (e instanceof AwstBuildFailureError) return []\n throw e\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 { AwstBuildFailureError } 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 { AwstBuildContext } from '../context/awst-build-context'\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 { ContractClassPType } from '../ptypes'\nimport { BaseVisitor } from './base-visitor'\nimport { ConstructorVisitor } from './constructor-visitor'\nimport { ContractMethodVisitor } from './contract-method-visitor'\nimport { DecoratorVisitor } from './decorator-visitor'\n\nexport class ContractVisitor extends BaseVisitor implements Visitor<ClassElements, void> {\n private _ctor?: ContractMethod\n private _methods: ContractMethod[] = []\n private _approvalProgram: ContractMethod | null = null\n private _clearStateProgram: ContractMethod | null = null\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 constructor(ctx: AwstBuildContext, classDec: ts.ClassDeclaration, ptype: ContractClassPType) {\n super(ctx)\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(ctx, 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 if (this._approvalProgram && this._contractPType.isARC4) {\n logger.error(this._approvalProgram.sourceLocation, 'ARC4 contracts cannot define their own approval methods.')\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: this._ctor ?? this.makeDefaultConstructor(sourceLocation),\n methods: this._methods,\n bases: this._contractPType.baseTypes.map((bt) => ContractReference.fromPType(bt)),\n description: this.getNodeDescription(classDec),\n approvalProgram: this._contractPType.isARC4 ? null : this._approvalProgram,\n clearProgram: this._clearStateProgram,\n options: contractOptions,\n sourceLocation: sourceLocation,\n })\n this.context.addToCompilationSet(contract.id, contract)\n }\n\n private getContract(): [] | [awst.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 // Ignore this error and continue visiting other members, so we can show additional errors\n if (!(e instanceof AwstBuildFailureError)) {\n throw e\n }\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, this.context).call([], [], sourceLocation),\n ).resolve(),\n }),\n ...this._propertyInitialization,\n ),\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(this.context, node, {\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 const contractMethod = ContractMethodVisitor.buildContractMethod(this.context, node, this._contractPType)\n switch (contractMethod.memberName) {\n case Constants.approvalProgramMethodName:\n this._approvalProgram = contractMethod\n break\n case Constants.clearStateProgramMethodName:\n this._clearStateProgram = contractMethod\n break\n default:\n this._methods.push(contractMethod)\n }\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\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(ctx: AwstBuildContext, classDec: ts.ClassDeclaration, ptype: ContractClassPType): [] | [awst.Contract] {\n return new ContractVisitor(ctx, classDec, ptype).getContract()\n }\n}\n","import type ts from 'typescript'\nimport * as awst from '../../awst/nodes'\nimport { invariant } from '../../util'\nimport type { AwstBuildContext } from '../context/awst-build-context'\nimport { FunctionVisitor } from './function-visitor'\n\nexport class LogicSigProgramVisitor extends FunctionVisitor {\n private readonly _result: awst.Subroutine\n\n constructor(ctx: AwstBuildContext, node: ts.MethodDeclaration) {\n super(ctx, node)\n const sourceLocation = this.sourceLocation(node)\n const { args, body, documentation } = this.buildFunctionAwst(node)\n\n this._result = 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 })\n }\n\n get result() {\n return this._result\n }\n\n public static buildLogicSigProgram(parentCtx: AwstBuildContext, node: ts.MethodDeclaration): awst.Subroutine {\n const result = new LogicSigProgramVisitor(parentCtx.createChildContext(), node).result\n invariant(result instanceof awst.Subroutine, \"result must be Subroutine'\")\n return result\n }\n}\n","import type ts from 'typescript'\nimport { LogicSigReference } from '../../awst/models'\nimport type * as awst from '../../awst/nodes'\nimport type { Subroutine } from '../../awst/nodes'\nimport { Constants } from '../../constants'\nimport { AwstBuildFailureError, 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 type { AwstBuildContext } from '../context/awst-build-context'\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'\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 private getLogicSig(): [] | [awst.LogicSignature] {\n const logicSigClass = this.context.compilationSet.getLogicSig(LogicSigReference.fromPType(this._logicSigPType))\n return [logicSigClass.buildLogicSignature()]\n }\n\n static buildLogicSig(ctx: AwstBuildContext, classDec: ts.ClassDeclaration, ptype: LogicSigPType) {\n return new LogicSigVisitor(ctx, classDec, ptype).getLogicSig()\n }\n\n private program: Subroutine | null = null\n\n constructor(\n ctx: AwstBuildContext,\n classDec: ts.ClassDeclaration,\n private _logicSigPType: LogicSigPType,\n ) {\n super(ctx)\n const sourceLocation = this.sourceLocation(classDec)\n\n const options = DecoratorVisitor.buildLogicSigData(ctx, classDec)\n\n for (const member of classDec.members) {\n try {\n this.accept(member)\n } catch (e) {\n // Ignore this error and continue visiting other members, so we can show additional errors\n if (!(e instanceof AwstBuildFailureError)) {\n throw e\n }\n }\n }\n\n if (!this.program) {\n throw new CodeError('Logic signature class must implement a valid program method', { sourceLocation })\n }\n\n const logicSig = new LogicSigClassModel({\n bases: [],\n sourceLocation,\n program: this.program,\n type: this._logicSigPType,\n description: this.getNodeDescription(classDec),\n options,\n })\n\n this.context.addToCompilationSet(logicSig.id, logicSig)\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(this.context.createChildContext(), 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 { AwstBuildFailureError, CodeError } from '../../errors'\nimport type { ClassElements } from '../../visitor/syntax-names'\nimport type { Visitor } from '../../visitor/visitor'\nimport { accept } from '../../visitor/visitor'\nimport type { 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(ctx: AwstBuildContext, classDec: ts.ClassDeclaration, ptype: ARC4StructType) {\n new StructVisitor(ctx, classDec, ptype)\n return []\n }\n\n constructor(ctx: AwstBuildContext, classDec: ts.ClassDeclaration, ptype: ARC4StructType) {\n super(ctx)\n\n for (const member of classDec.members) {\n try {\n this.accept(member)\n } catch (e) {\n // Ignore this error and continue visiting other members, so we can show additional errors\n if (!(e instanceof AwstBuildFailureError)) {\n throw e\n }\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 { invariant } from '../../util'\nimport type { AwstBuildContext } from '../context/awst-build-context'\nimport { FunctionVisitor } from './function-visitor'\n\nexport class SubroutineVisitor extends FunctionVisitor {\n private readonly _result: awst.Subroutine\n\n constructor(ctx: AwstBuildContext, node: ts.FunctionDeclaration) {\n super(ctx, node)\n const sourceLocation = this.sourceLocation(node)\n const { args, body, documentation } = this.buildFunctionAwst(node)\n\n this._result = 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 })\n }\n\n get result() {\n return this._result\n }\n\n public static buildSubroutine(parentCtx: AwstBuildContext, node: ts.FunctionDeclaration): awst.Subroutine {\n const result = new SubroutineVisitor(parentCtx.createChildContext(), node).result\n invariant(result instanceof awst.Subroutine, \"result must be Subroutine'\")\n return result\n }\n}\n","import ts from 'typescript'\nimport type * as awst from '../../awst/nodes'\nimport { AwstBuildFailureError, CodeError } from '../../errors'\nimport { logger, logPuyaExceptions } from '../../logger'\nimport { expandMaybeArray, invariant } from '../../util'\nimport type { ModuleStatements } from '../../visitor/syntax-names'\nimport type { Visitor } from '../../visitor/visitor'\nimport { accept } from '../../visitor/visitor'\n\nimport type { AwstBuildContext } from '../context/awst-build-context'\nimport { requireConstantOfType } 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(context: AwstBuildContext, sourceFile: ts.SourceFile) {\n super(context)\n\n for (const statement of sourceFile.statements) {\n try {\n this._moduleStatements.push(this.accept(statement))\n } catch (e) {\n // Ignore this error and continue visiting other members, so we can show additional errors\n if (!(e instanceof AwstBuildFailureError)) {\n throw e\n }\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 return () => logPuyaExceptions(() => SubroutineVisitor.buildSubroutine(this.context, node), this.sourceLocation(node))\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 // Ignore this error and continue visiting other statements, so we can show additional errors\n if (!(e instanceof AwstBuildFailureError)) {\n throw e\n }\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 = requireConstantOfType(initializerBuilder, ptype, 'Module level assignments must be compile time constants')\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 if (ptype instanceof ContractClassPType) {\n return () => logPuyaExceptions(() => ContractVisitor.buildContract(this.context.createChildContext(), node, ptype), sourceLocation)\n } else if (ptype instanceof ARC4StructType) {\n return () => logPuyaExceptions(() => StructVisitor.buildStructDef(this.context.createChildContext(), node, ptype), sourceLocation)\n } else if (ptype instanceof LogicSigPType) {\n return () => logPuyaExceptions(() => LogicSigVisitor.buildLogicSig(this.context.createChildContext(), node, ptype), sourceLocation)\n } else {\n logger.warn(sourceLocation, `Ignoring class declaration ${ptype.fullName}`)\n return []\n }\n }\n}\n","import ts, { SymbolFlags } from 'typescript'\nimport type { Constant } 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>()\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, 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","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 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 type { AppStorageType, PType } from './ptypes'\nimport {\n anyPType,\n ApprovalProgram,\n arc4BaseContractType,\n ArrayPType,\n baseContractType,\n BigIntLiteralPType,\n bigIntPType,\n boolPType,\n ClearStateProgram,\n ContractClassPType,\n FunctionPType,\n logicSigBaseType,\n LogicSigPType,\n NamespacePType,\n neverPType,\n nullPType,\n numberPType,\n NumericLiteralPType,\n ObjectPType,\n StorageProxyPType,\n stringPType,\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.6.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 const [declaration] = type.symbol.declarations ?? []\n return this.resolve(declaration, sourceLocation)\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 (isIntersectionType(tsType)) {\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.fullName === arc4StructBaseType.fullName)) {\n return arc4StructBaseType\n }\n }\n if (isUnionType(tsType)) {\n return UnionPType.fromTypes(tsType.types.map((t) => this.resolveType(t, sourceLocation)))\n }\n if (tsType.flags === ts.TypeFlags.Undefined) {\n return undefinedPType\n }\n if (hasFlags(tsType.flags, ts.TypeFlags.Null)) {\n return nullPType\n }\n if (hasFlags(tsType.flags, ts.TypeFlags.Any)) {\n return anyPType\n }\n if (intersectsFlags(tsType.flags, ts.TypeFlags.Boolean | ts.TypeFlags.BooleanLiteral)) {\n return boolPType\n }\n if (tsType.flags === ts.TypeFlags.Void) {\n return voidPType\n }\n if (intersectsFlags(tsType.flags, ts.TypeFlags.String | ts.TypeFlags.StringLiteral)) {\n return stringPType\n }\n if (tsType.flags === ts.TypeFlags.Never) {\n return neverPType\n }\n if (hasFlags(tsType.flags, ts.TypeFlags.Unknown)) {\n return unknownPType\n }\n if (intersectsFlags(tsType.flags, ts.TypeFlags.Number | ts.TypeFlags.NumberLiteral) && tsType.getSymbol() === undefined) {\n if (tsType.isNumberLiteral()) {\n return new NumericLiteralPType({ literalValue: BigInt(tsType.value) })\n }\n return numberPType\n }\n if (intersectsFlags(tsType.flags, ts.TypeFlags.BigInt | ts.TypeFlags.BigIntLiteral) && tsType.getSymbol() === undefined) {\n if (tsType.isLiteral() && typeof tsType.value === 'object') {\n return new BigIntLiteralPType({ literalValue: BigInt(tsType.value.base10Value) * (tsType.value.negative ? -1n : 1n) })\n }\n return bigIntPType\n }\n if (isTupleReference(tsType)) {\n codeInvariant(tsType.target.fixedLength, 'Tuple types should have a fixed length', sourceLocation)\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\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 === arc4StructBaseType.fullName) return arc4StructBaseType\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 itemType: itemPType,\n immutable: false,\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({ ...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 })\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', 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 })\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 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 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 the algo ts package, otherwise use the\n // unaliased symbol\n if (name.module.startsWith(Constants.algoTsPackage)) return name\n }\n invariant(type.symbol, 'Type must have a symbol')\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 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 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 ts from 'typescript'\nimport type { awst } from '../../awst'\nimport type { ContractReference, LogicSigReference } from '../../awst/models'\nimport { nodeFactory } from '../../awst/node-factory'\nimport type { AppStorageDefinition, Constant } 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 { 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 interface AwstBuildContext {\n /**\n * Get the source location of a node in the current source file\n * @param node\n */\n getSourceLocation(node: ts.Node): SourceLocation\n\n /**\n * Get NodeBuilder instance for the given identifier.\n * @param node\n */\n getBuilderForNode(node: ts.Identifier): NodeBuilder\n\n /**\n * Reflect the PType of the given node\n * @param node\n */\n getPTypeForNode(node: ts.Node): PType\n\n /**\n * Reflect generic type parameters for a call expression\n * @param node\n */\n 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 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 resolveDestructuredParamName(node: ts.ParameterDeclaration): string\n\n /**\n * Generate a unique variable name for a discarded value.\n */\n 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 addConstant(identifier: ts.Identifier, value: awst.Constant): void\n\n /**\n * Retrieve the evaluation context\n */\n get evaluationCtx(): EvaluationContext\n\n /**\n * Retrieve the switch loop context\n */\n get switchLoopCtx(): SwitchLoopContext\n\n /**\n * Create a child context from this context. Used when entering a child parsing context such as a class or function.\n */\n createChildContext(): AwstBuildContext\n\n addStorageDeclaration(declaration: AppStorageDeclaration): void\n\n getStorageDeclaration(contractType: ContractClassPType, memberName: string): AppStorageDeclaration | undefined\n\n getStorageDefinitionsForContract(contractType: ContractClassPType): AppStorageDefinition[]\n\n addToCompilationSet(compilationTarget: ContractReference, contract: ContractClassModel): void\n addToCompilationSet(compilationTarget: LogicSigReference, logicSig: LogicSigClassModel): void\n\n get compilationSet(): CompilationSet\n}\n\nexport function buildContextForProgram(program: ts.Program): AwstBuildContext {\n return AwstBuildContextImpl.forProgram(program)\n}\n\nclass AwstBuildContextImpl implements 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 compilationSet: CompilationSet,\n ) {\n this.typeChecker = program.getTypeChecker()\n this.typeResolver = new TypeResolver(this.typeChecker, this.program.getCurrentDirectory())\n this.#compilationSet = compilationSet\n }\n\n static forProgram(program: ts.Program): AwstBuildContext {\n return new AwstBuildContextImpl(program, new ConstantStore(program), new UniqueNameResolver(), new Map(), new CompilationSet())\n }\n\n addConstant(identifier: ts.Identifier, value: Constant) {\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.#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 for (const baseType of contractType.baseTypes) {\n for (const definition of this.getStorageDefinitionsForContract(baseType)) {\n if (result.has(definition.memberName)) {\n logger.error(\n definition.sourceLocation,\n `Redefinition of app storage member, original declared in ${result.get(definition.memberName)?.sourceLocation}`,\n )\n }\n result.set(definition.memberName, definition)\n }\n }\n const localDeclarations = this.storageDeclarations.get(contractType.fullName)\n if (localDeclarations) {\n for (const [member, declaration] of localDeclarations) {\n if (result.has(member)) {\n logger.error(\n declaration.sourceLocation,\n `Redefinition of app storage member, original declared in ${result.get(member)?.sourceLocation}`,\n )\n }\n result.set(member, 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 { SourceLocation } from '../../awst/source-location'\nimport { wtypes } from '../../awst/wtypes'\nimport { Constants } from '../../constants'\nimport type { AwstBuildContext } from '../context/awst-build-context'\nimport { ContractClassModel } from '../models/contract-class-model'\nimport { arc4BaseContractType, baseContractType } from '../ptypes'\n\nexport function buildLibAwst(context: AwstBuildContext) {\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: null,\n bases: [],\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 }),\n })\n context.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 bases: [baseContractCref],\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 }),\n })\n context.addToCompilationSet(contractCref, contract)\n}\n","import { jsonSerializeAwst } from '../awst/json-serialize-awst'\nimport type { AWST } from '../awst/nodes'\nimport { SourceLocation } from '../awst/source-location'\nimport { ToCodeVisitor } from '../awst/to-code-visitor'\nimport type { CompileOptions } from '../compile-options'\nimport { AwstBuildFailureError } from '../errors'\nimport { logger } from '../logger'\nimport type { CreateProgramResult } from '../parser'\nimport { ArtifactKind, writeArtifact } from '../write-artifact'\nimport { SourceFileVisitor } from './ast-visitors/source-file-visitor'\nimport { buildContextForProgram } from './context/awst-build-context'\nimport { buildLibAwst } from './lib'\nimport type { CompilationSet } from './models/contract-class-model'\n\nexport function buildAwst({ program, sourceFiles }: CreateProgramResult, options: CompileOptions): [AWST[], CompilationSet] {\n const awstBuildContext = buildContextForProgram(program)\n buildLibAwst(awstBuildContext)\n const moduleAwst: AWST[] = []\n for (const [sourcePath, sourceFile] of Object.entries(sourceFiles)) {\n try {\n const visitor = new SourceFileVisitor(awstBuildContext.createChildContext(), sourceFile)\n const algoFile = options.getFileFromSource(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 } catch (e) {\n if (e instanceof AwstBuildFailureError) {\n logger.error(SourceLocation.fromFile(sourceFile, program.getCurrentDirectory()), e.message)\n } else if (e instanceof Error) {\n logger.error(e)\n } else {\n logger.error(undefined, `Unknown error: ${e}`)\n }\n }\n }\n return [moduleAwst, awstBuildContext.compilationSet]\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 { 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 })\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.isAnonymous) {\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 // 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 type { ConstantValue } from '../../../awst'\nimport { isConstant } from '../../../awst'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport { codeInvariant } from '../../../util'\nimport type { NodeBuilder } from '../index'\nimport { BigIntLiteralExpressionBuilder } from '../literal/big-int-literal-expression-builder'\nimport { requireInstanceBuilder } from './index'\n\nexport function requireConstantValue(builder: NodeBuilder, sourceLocation: SourceLocation): ConstantValue {\n if (builder instanceof BigIntLiteralExpressionBuilder) {\n return builder.value\n }\n const value = requireInstanceBuilder(builder).resolve()\n codeInvariant(isConstant(value), 'Expected compile time constant')\n return value.value\n}\n","import { ARC4CreateOption, OnCompletionAction } from '../../awst/models'\nimport type { Expression } from '../../awst/nodes'\nimport { 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, requireStringConstant } from './util'\nimport { parseFunctionArgs } from './util/arg-parsing'\nimport { requireConstantValue } from './util/require-constant-value'\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({ itemType: stringPType, immutable: true })),\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({ itemType: stringPType, immutable: true })),\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: requireConstantValue(paramConfig.memberAccess('constant', sourceLocation), 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 { 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 { 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 { 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, uint64PType } from '../../ptypes'\nimport { BooleanExpressionBuilder } from '../boolean-expression-builder'\nimport type { BuilderComparisonOp, InstanceBuilder, NodeBuilder } from '../index'\nimport { FunctionBuilder } from '../index'\nimport { requireExpressionOfType } 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: [addressBytes],\n } = parseFunctionArgs({\n args,\n typeArgs,\n callLocation: sourceLocation,\n funcName: 'Account function',\n genericTypeArgs: 0,\n argSpec: (a) => [a.optional(bytesPType)],\n })\n\n if (addressBytes) {\n return new AccountExpressionBuilder(\n nodeFactory.reinterpretCast({\n expr: addressBytes.resolve(),\n wtype: accountPType.wtype,\n sourceLocation,\n }),\n )\n } else {\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 }\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 { 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')\n return builder.value\n } else {\n invariant(builder.ptype.equals(uint64PType), 'Builder must be uint64 if not number')\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 type { SourceLocation } from '../../../awst/source-location'\nimport type { wtypes } from '../../../awst/wtypes'\n\nimport { logger } from '../../../logger'\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 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 const indexParam = getBigIntOrUint64Expr(index)\n let indexExpr: Expression\n\n if (typeof indexParam === 'bigint') {\n if (typeof this.exprLength === 'bigint') {\n let indexValue = indexParam < 0 ? this.exprLength + indexParam : indexParam\n if (indexValue < 0n || indexValue >= this.exprLength) {\n logger.error(index.sourceLocation, 'Index access out of bounds')\n indexValue = 0n\n }\n indexExpr = nodeFactory.uInt64Constant({\n value: indexValue,\n sourceLocation: index.sourceLocation,\n })\n } else {\n indexExpr = nodeFactory.uInt64BinaryOperation({\n op: UInt64BinaryOperator.sub,\n left: this.exprLength,\n right: nodeFactory.uInt64Constant({\n value: indexParam * -1n,\n sourceLocation: index.sourceLocation,\n }),\n sourceLocation: index.sourceLocation,\n })\n }\n } else {\n indexExpr = indexParam\n }\n\n return instanceEb(\n nodeFactory.indexExpression({\n base: this.expr,\n sourceLocation: sourceLocation,\n index: indexExpr,\n wtype: this.itemPType.wtype,\n }),\n this.itemPType,\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 { 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 StringConstant,\n} from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { wtypes } from '../../awst/wtypes'\n\nimport { CodeError, 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 { ArrayLiteralExpressionBuilder } from './literal/array-literal-expression-builder'\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 { UInt64ExpressionBuilder } from './uint64-expression-builder'\nimport { requireExpressionOfType, requireExpressionsOfType } 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(numberPType, bigIntPType, uint64PType, biguintPType, stringPType, bytesPType, new ArrayPType({ itemType: uint64PType })),\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 // Array\n if (initialValue instanceof ArrayLiteralExpressionBuilder) {\n const bytes: number[] = []\n for (const item of initialValue.getItemBuilders()) {\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 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)\n case 'fromBase32':\n return new FromEncodingBuilder(sourceLocation, base32ToUint8Array, BytesEncoding.base32)\n case 'fromBase64':\n return new FromEncodingBuilder(sourceLocation, base64ToUint8Array, BytesEncoding.base64)\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 ) {\n super(sourceLocation)\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const [value] = requireExpressionsOfType(args, [stringPType], sourceLocation)\n\n if (value instanceof StringConstant) {\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 throw CodeError.expectedCompileTimeConstant({ sourceLocation })\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 [other] = requireExpressionsOfType(args, [bytesPType], sourceLocation)\n return new BytesExpressionBuilder(\n intrinsicFactory.bytesConcat({\n left: this.expr,\n right: other,\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 { nodeFactory } from '../../../awst/node-factory'\nimport type { Expression } from '../../../awst/nodes'\nimport { BytesConstant, IntegerConstant, 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 { AtFunctionBuilder } from '../shared/at-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 { 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.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)],\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 = initialValue.resolve()\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 return instanceEb(\n nodeFactory.aRC4Encode({\n value: initialValue.resolve(),\n sourceLocation,\n wtype: resultPType.wtype,\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)],\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 const value = initialValue.resolve()\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 const indexExpr = requireExpressionOfType(index, uint64PType)\n if (indexExpr instanceof IntegerConstant && this.ptype instanceof StaticArrayType && indexExpr.value >= this.ptype.arraySize) {\n logger.error(index.sourceLocation, 'Index access out of bounds')\n }\n return instanceEb(\n nodeFactory.indexExpression({\n base: this.resolve(),\n sourceLocation: sourceLocation,\n index: indexExpr,\n wtype: this.ptype.elementType.wtype,\n }),\n this.ptype.elementType,\n )\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n switch (name) {\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 CopyFunctionBuilder(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 CopyFunctionBuilder 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, genericTypeArgs: 0, argSpec: (a) => [], funcName: 'copy', callLocation: sourceLocation })\n return instanceEb(\n nodeFactory.copy({\n value: this.arrayBuilder.resolve(),\n sourceLocation,\n }),\n this.arrayBuilder.ptype,\n )\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 'length':\n return new UInt64ExpressionBuilder(\n nodeFactory.intrinsicCall({\n opCode: 'extract_uint16',\n immediates: [],\n stackArgs: [this._expr, nodeFactory.uInt64Constant({ value: 0n, sourceLocation })],\n sourceLocation,\n wtype: wtypes.uint64WType,\n }),\n )\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 memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n switch (name) {\n case 'length':\n return new UInt64ExpressionBuilder(nodeFactory.uInt64Constant({ value: this.ptype.arraySize, sourceLocation }))\n }\n return super.memberAccess(name, sourceLocation)\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(this.toBytes(sourceLocation))\n }\n return super.memberAccess(name, sourceLocation)\n }\n}\n\nexport class ArrayPushFunctionBuilder extends FunctionBuilder {\n constructor(private arrayBuilder: ArrayExpressionBuilder<DynamicArrayType>) {\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: this.arrayBuilder.ptype.wtype,\n }),\n this.arrayBuilder.ptype,\n )\n }\n}\nexport class ArrayPopFunctionBuilder extends FunctionBuilder {\n constructor(private arrayBuilder: ArrayExpressionBuilder<DynamicArrayType>) {\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: 'at',\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.wtype,\n }),\n elementType,\n )\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 { 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 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 { isValidLiteralForPType, requireStringConstant } from '../util'\nimport { parseFunctionArgs } from '../util/arg-parsing'\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 { isValidLiteralForPType } from '../util'\nimport { parseFunctionArgs } from '../util/arg-parsing'\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 { nodeFactory } from '../../../awst/node-factory'\nimport type { BytesConstant, Expression } from '../../../awst/nodes'\nimport { EqualityComparison } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport { wtypes } from '../../../awst/wtypes'\nimport { logger } from '../../../logger'\nimport { codeInvariant, hexToUint8Array } from '../../../util'\nimport { isArc4EncodableType, ptypeToArc4EncodedType } from '../../arc4-util'\nimport type { PType } from '../../ptypes'\nimport { bytesPType, stringPType } from '../../ptypes'\nimport {\n ARC4EncodedType,\n decodeArc4Function,\n encodeArc4Function,\n interpretAsArc4Function,\n methodSelectorFunction,\n} 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 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\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.required(stringPType)],\n })\n\n const signature = requireStringConstant(methodSignature).value\n\n return instanceEb(\n nodeFactory.methodConstant({\n value: signature,\n wtype: wtypes.bytesWType,\n sourceLocation,\n }),\n bytesPType,\n )\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 { intrinsicFactory } from '../../awst/intrinsic-factory'\nimport { 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 { assertMatchFunction, ObjectPType, stringPType, TuplePType, uint64PType } from '../ptypes'\nimport { instanceEb } from '../type-registry'\nimport type { InstanceBuilder } from './index'\nimport { BuilderComparisonOp, NodeBuilder } from './index'\nimport { requireBuilderOfType, requireInstanceBuilder, 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 codeInvariant(tests.ptype instanceof ObjectPType, 'Test conditions must be an object type', tests.sourceLocation)\n\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 subjectType = subjectProperty.ptype\n const testProperty = requireInstanceBuilder(tests.memberAccess(propName, sourceLocation))\n if (testProperty.resolvableToPType(subjectType)) {\n return combineConditions(\n acc,\n subjectProperty.compare(testProperty, BuilderComparisonOp.eq, sourceLocation).resolve(),\n sourceLocation,\n )\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(\n requireBuilderOfType(range.indexAccess(zeroIndex, sourceLocation), subjectType),\n BuilderComparisonOp.gte,\n sourceLocation,\n )\n .resolve()\n\n const oneIndex = instanceEb(nodeFactory.uInt64Constant({ value: 1n, sourceLocation }), uint64PType)\n const lte = subjectProperty\n .compare(\n requireBuilderOfType(range.indexAccess(oneIndex, sourceLocation), subjectType),\n BuilderComparisonOp.lte,\n sourceLocation,\n )\n .resolve()\n\n return combineConditions(acc, combineConditions(lte, gte, sourceLocation), sourceLocation)\n } else {\n const [op, operand] = getComparisonOpAndOperand(testProperty, subjectType)\n return combineConditions(acc, subjectProperty.compare(operand, op, sourceLocation).resolve(), sourceLocation)\n }\n }, undefined)\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\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 { 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 { 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'\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 }],\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 }),\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 })\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 extract: {\n type: 'op-mapping',\n op: 'extract3',\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 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: 'gtxn',\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: 'gtxn',\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: 'gtxn',\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: 'gtxn',\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: 'gtxn',\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: 'gtxn',\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: 'gtxn',\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: 'gtxn',\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: 'gtxn',\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: 'gtxn',\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: 'gtxn',\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: 'gtxn',\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: 'gtxn',\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: 'gtxn',\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: 'gtxn',\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: 'gtxn',\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: 'gtxn',\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: 'gtxn',\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: 'gtxn',\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: 'gtxn',\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: 'gtxn',\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: 'gtxn',\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: 'gtxn',\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: 'gtxn',\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: 'gtxn',\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: 'gtxn',\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: '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: 'gtxn',\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: '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: 'gtxn',\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: 'gtxn',\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: 'gtxn',\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: 'gtxn',\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: 'gtxn',\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: 'gtxn',\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: 'gtxn',\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: 'gtxn',\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: 'gtxn',\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: 'gtxn',\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: 'gtxn',\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: 'gtxn',\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: 'gtxn',\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: 'gtxn',\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: 'gtxn',\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: 'gtxn',\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: 'gtxn',\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: 'gtxn',\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: 'gtxn',\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: '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: 'gtxn',\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: '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: 'gtxn',\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: 'gtxn',\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: 'gtxn',\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: 'gtxn',\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: 'gtxn',\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: 'gtxn',\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: 'gtxn',\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: '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: 'gtxn',\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: 'gtxn',\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: 'gtxn',\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: 'gtxn',\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: 'gtxn',\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: '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: 'gtxn',\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: '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: 'gtxn',\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 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 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 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 { nodeFactory } from '../../awst/node-factory'\nimport { Expression, IntegerConstant, StringConstant } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { CodeError, InternalError } from '../../errors'\nimport { enumerate, invariant } from '../../util'\nimport type { IntrinsicOpGrouping, IntrinsicOpMapping } from '../op-metadata'\nimport { OP_METADATA } from '../op-metadata'\nimport type { PType } from '../ptypes'\nimport { IntrinsicEnumType, IntrinsicFunctionGroupType, IntrinsicFunctionType, stringPType, voidPType } from '../ptypes'\nimport { typeRegistry } from '../type-registry'\nimport { FunctionBuilder, InstanceExpressionBuilder, NodeBuilder } from './index'\nimport { requestConstantOfType, requestExpressionOfType } from './util'\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 call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\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 decimal: ['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 { SourceLocation } from '../../awst/source-location'\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 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\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] 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}\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 Record<string, readonly [TxnField, PType]>\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 Record<string, readonly [TxnField, PType]>\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 Record<string, readonly [TxnField, PType]>\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 Record<string, readonly [TxnField, PType]>\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 Record<string, readonly [TxnField, PType]>\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 * Number of Approval Program pages\n */\n numApprovalProgramPages: [TxnField.NumApprovalProgramPages, uint64PType] as const,\n\n /**\n * Number of Clear State Program pages\n */\n numClearStateProgramPages: [TxnField.NumClearStateProgramPages, uint64PType] 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} satisfies Record<string, readonly [TxnField, PType]>\n\nexport const anyTxnFields = {\n ...paymentTxnFields,\n ...keyRegistrationTxnFields,\n ...assetConfigTxnFields,\n ...assetTransferTxnFields,\n ...assetFreezeTxnFields,\n ...applicationCallTxnFields,\n} satisfies Record<string, readonly [TxnField, PType]>\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 type { SourceLocation } from '../../../awst/source-location'\nimport type { TxnFieldData } from '../../../awst/txn-fields'\nimport { TxnFields } from '../../../awst/txn-fields'\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: [groupIndex],\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\n return new GroupTransactionExpressionBuilder(\n nodeFactory.reinterpretCast({\n expr: groupIndex.resolve(),\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 { ArrayLiteralExpressionBuilder } from '../literal/array-literal-expression-builder'\nimport { TupleExpressionBuilder } from '../tuple-expression-builder'\nimport { requireExpressionOfType } from '../util'\nimport { parseFunctionArgs } from '../util/arg-parsing'\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(\n propValue instanceof ArrayLiteralExpressionBuilder || propValue instanceof TupleExpressionBuilder,\n 'Unsupported expression for appArgs',\n propValue.sourceLocation,\n )\n mappedFields.set(\n txnField,\n nodeFactory.tupleExpression({\n items: propValue.getItemBuilders().map((i) => i.toBytes(propValue.sourceLocation)),\n sourceLocation: propValue.sourceLocation,\n }),\n )\n } else if (txnFieldData.numValues > 1) {\n if (propValue instanceof ArrayLiteralExpressionBuilder || propValue instanceof TupleExpressionBuilder) {\n mappedFields.set(\n txnField,\n nodeFactory.tupleExpression({\n items: propValue.getItemBuilders().map((i) => requireExpressionOfType(i, fieldType)),\n sourceLocation: propValue.sourceLocation,\n }),\n )\n } else if (txnFieldData.arrayPromote) {\n mappedFields.set(\n txnField,\n nodeFactory.tupleExpression({\n items: [requireExpressionOfType(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, requireExpressionOfType(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 InnerTransactionExpressionBuilder(\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 { InstanceBuilder } from './index'\nimport { InstanceExpressionBuilder, NodeBuilder } from './index'\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 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 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 { 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 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 NamespacePType,\n neverPType,\n ObjectPType,\n onCompleteActionType,\n opUpFeeSourceType,\n paymentGtxnType,\n paymentItxnFn,\n paymentItxnParamsType,\n paymentItxnType,\n PaymentTxnFunction,\n PromiseGeneric,\n PromiseType,\n StringFunction,\n stringPType,\n submitGroupItxnFunction,\n TemplateVarFunction,\n TransactionFunction,\n transactionTypeType,\n TuplePType,\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 // 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\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: 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\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\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 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 type { CompileOptions } from '../compile-options'\nimport { logger, LoggingContext } from '../logger'\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: CompileOptions): CreateProgramResult {\n const compilerOptions: ts.CompilerOptions = {\n allowJs: false,\n strict: true,\n target: ts.ScriptTarget.ES2022,\n module: ts.ModuleKind.ESNext,\n moduleResolution: ts.ModuleResolutionKind.Bundler,\n }\n\n const host = ts.createCompilerHost(compilerOptions)\n const program = ts.createProgram(\n options.filePaths.map((p) => p.sourceFile),\n compilerOptions,\n {\n ...host,\n resolveModuleNameLiterals,\n },\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\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 } from '../compile-options'\nimport { mkDirIfNotExists } from '../util'\nimport type { CompilationSetMapping } from './options'\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","export 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: false,\n outputOptimizationIr: false,\n outputDestructuredIr: false,\n outputMemoryIr: false,\n outputBytecode: false,\n matchAlgodBytecode: 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 matchAlgodBytecode: boolean\n debugLevel: number\n optimizationLevel: number\n targetAvmVersion: number\n cliTemplateDefinitions: string[]\n templateVarsPrefix: string\n localsCoalescingStrategy: LocalsCoalescingStrategy\n\n compilationSet: CompilationSetMapping\n constructor({\n passThroughOptions,\n compilationSet,\n }: {\n passThroughOptions: PuyaPassThroughOptions\n compilationSet: CompilationSetMapping\n }) {\n this.compilationSet = compilationSet\n this.outputTeal = passThroughOptions.outputTeal\n this.outputArc32 = passThroughOptions.outputArc32\n this.outputArc56 = passThroughOptions.outputArc56\n this.outputSsaIr = passThroughOptions.outputSsaIr\n this.outputOptimizationIr = passThroughOptions.outputOptimizationIr\n this.outputDestructuredIr = passThroughOptions.outputDestructuredIr\n this.outputMemoryIr = passThroughOptions.outputMemoryIr\n this.outputBytecode = passThroughOptions.outputBytecode\n this.matchAlgodBytecode = passThroughOptions.matchAlgodBytecode\n this.debugLevel = passThroughOptions.debugLevel\n this.optimizationLevel = passThroughOptions.optimizationLevel\n this.targetAvmVersion = passThroughOptions.targetAvmVersion\n this.cliTemplateDefinitions = passThroughOptions.cliTemplateDefinitions\n this.templateVarsPrefix = passThroughOptions.templateVarsPrefix\n this.localsCoalescingStrategy = passThroughOptions.localsCoalescingStrategy\n this.outputSourceMap = passThroughOptions.outputSourceMap\n }\n}\n","import { 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: 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 { sync } from 'cross-spawn'\nimport { logger } from '../logger'\nimport { deserializeAndLog } from './log-deserializer'\n\nexport function runPuya({ command, args, cwd }: { command: string; args: string[]; cwd?: string }) {\n const proc = sync(command, args, {\n // forward all stdin/stdout/stderr to current handlers, with correct interleaving\n stdio: 'pipe',\n cwd,\n })\n\n let line = ''\n for (const chunk of proc.output) {\n if (chunk === undefined || chunk === null) continue\n const text = chunk.toString('utf-8')\n for (const c of text) {\n switch (c) {\n case '\\n':\n deserializeAndLog(line)\n line = ''\n break\n case '\\r':\n continue\n default:\n line += c\n break\n }\n }\n }\n if (line) deserializeAndLog(line)\n\n if (proc.error) {\n // only happens during invocation error, not error return status\n if ('code' in proc.error && proc.error.code === 'ENOENT') {\n logger.critical(undefined, `Could not find ${command}. Please ensure it is installed and available on your PATH`)\n } else {\n throw proc.error\n }\n }\n if (proc.status !== 0) {\n logger.critical(undefined, `Compilation exited with status ${proc.status}`)\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 type { CompileOptions } from '../compile-options'\nimport { logger, LogLevel } from '../logger'\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 type { PuyaPassThroughOptions } from './options'\nimport { PuyaOptions } from './options'\nimport { runPuya } from './run-puya'\n\nexport function invokePuya({\n moduleAwst,\n programDirectory,\n sourceFiles,\n compileOptions,\n compilationSet,\n passThroughOptions,\n}: {\n moduleAwst: AWST[]\n programDirectory: string\n sourceFiles: SourceFileMapping\n compileOptions: CompileOptions\n compilationSet: CompilationSet\n passThroughOptions: PuyaPassThroughOptions\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 = new PuyaOptions({\n passThroughOptions: passThroughOptions,\n compilationSet: buildCompilationSetMapping({\n awst: moduleAwst,\n inputPaths: compileOptions.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 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(compileOptions.logLevel),\n '--log-format',\n 'json',\n ],\n cwd: programDirectory,\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","/* This file aggregates all ptypes into a single export for external consumption of the compiler api */\nexport * from './index'\nexport * from './arc4-types'\n","import type ts from 'typescript'\nimport type { AWST } from './awst/nodes'\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 type { CompileOptions } from './compile-options'\nimport { logger, LoggingContext } from './logger'\nimport type { CreateProgramResult } from './parser'\nimport { createTsProgram } from './parser'\nimport { invokePuya } from './puya'\nimport type { PuyaPassThroughOptions } from './puya/options'\nimport {\n base32ToUint8Array,\n base64ToUint8Array,\n bigIntToUint8Array,\n hexToUint8Array,\n uint8ArrayToBase32,\n uint8ArrayToBase64,\n uint8ArrayToBigInt,\n uint8ArrayToHex,\n uint8ArrayToUtf8,\n utf8ToUint8Array,\n} from './util'\n\nexport { SourceLocation } from './awst/source-location'\nexport * as ptypes from './awst_build/ptypes/for-export'\nexport { registerPTypes } from './awst_build/ptypes/register'\nexport { typeRegistry } from './awst_build/type-registry'\nexport { TypeResolver } from './awst_build/type-resolver'\n\nexport const encodingUtil = {\n utf8ToUint8Array,\n bigIntToUint8Array,\n hexToUint8Array,\n base32ToUint8Array,\n base64ToUint8Array,\n\n uint8ArrayToUtf8,\n uint8ArrayToHex,\n uint8ArrayToBase32,\n uint8ArrayToBase64,\n uint8ArrayToBigInt,\n}\n\nexport type CompileResult = {\n programDirectory: string\n awst?: AWST[]\n ast?: Record<string, ts.SourceFile>\n compilationSet?: CompilationSet\n}\n\ntype Hooks = {\n /**\n * Called after TypeScript parsing, but before AWST build. Use this hook to add or remove TS AST nodes before AWST build\n *\n * If implemented, this method should return true to continue compilation or false to stop\n * @param createProgramResult The result of TypeScript compilation\n */\n onProgramCreated(createProgramResult: CreateProgramResult): boolean\n /**\n * Called after AWST build, but before invocation of puya. Use this hook to add or remove AWST nodes before puya build\n *\n * If implemented, this method should return true to continue compilation or false to stop\n * @param moduleAwst All AWST nodes of the build\n * @param compilationSet An array of references to AWST nodes which should result in compilation output.\n */\n onAwstBuilt(moduleAwst: AWST[], compilationSet: CompilationSet): boolean\n}\n\nexport function compile(options: CompileOptions, passThroughOptions: PuyaPassThroughOptions, hooks?: Partial<Hooks>): CompileResult {\n const loggerCtx = LoggingContext.current\n registerPTypes(typeRegistry)\n const programResult = createTsProgram(options)\n if (loggerCtx.hasErrors()) {\n logger.critical(undefined, 'TypeScript parse failure')\n return {\n programDirectory: programResult.programDirectory,\n ast: programResult.sourceFiles,\n }\n }\n if (hooks?.onProgramCreated?.(programResult) === false) {\n throw new Error('Compilation halted by onProgramCreated hook')\n }\n const [moduleAwst, compilationSet] = buildAwst(programResult, options)\n if (loggerCtx.hasErrors()) {\n logger.critical(undefined, 'AWST build failure')\n return {\n programDirectory: programResult.programDirectory,\n awst: moduleAwst,\n ast: programResult.sourceFiles,\n compilationSet,\n }\n }\n if (hooks?.onAwstBuilt?.(moduleAwst, compilationSet) === false) {\n throw new Error('Compilation halted by onAwstBuilt hook')\n }\n if (!options.dryRun) {\n invokePuya({\n passThroughOptions,\n compileOptions: 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"],"names":["fs","nodes.BytesConstant","nodes.AssignmentExpression","awst.VarExpression","awst.FieldExpression","awst.IndexExpression","awst.TupleExpression","awst.AppStateExpression","awst.AppAccountStateExpression","awst.BoxValueExpression","awst.ReinterpretCast","awst.IntegerConstant","ConcatExpressionBuilder","awst.StringConstant","awst.ContractMethod","awst.Subroutine","arc4Types.UintNType","arc4Types.UFixedNxMType","arc4Types.arc4ByteAlias","arc4Types.arc4StringType","arc4Types.arc4BooleanType","arc4Types.arc4AddressAlias","arc4Types.ARC4TupleType","arc4Types.DynamicArrayType","arc4Types.StaticArrayType","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.vrfVerifyPType","IndexedTransactionFieldFunctionBuilder"],"mappings":"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"}
|