@algorandfoundation/puya-ts 1.0.0-alpha.76 → 1.0.0-alpha.78
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/ast-visitors/decorator-visitor.d.ts +2 -2
- package/awst_build/eb/arc4/util.d.ts +1 -1
- package/awst_build/eb/arc4-method-decorator-builder.d.ts +7 -3
- package/awst_build/eb/index.d.ts +1 -1
- package/awst_build/models/decorator-data.d.ts +8 -3
- package/awst_build/ptypes/arc4-types.d.ts +1 -1
- package/awst_build/ptypes/index.d.ts +1 -0
- package/bin/download-puya-binary.mjs +2 -2
- package/bin/puyats-ls.mjs +3 -3
- package/bin/run-cli.mjs +4 -4
- package/{check-node-version-ZyGkyCLd.js → check-node-version-8aEfSGwC.js} +2 -2
- package/{check-node-version-ZyGkyCLd.js.map → check-node-version-8aEfSGwC.js.map} +1 -1
- package/cli.mjs +4 -4
- package/{console-log-sink-CfAhr7OE.js → console-log-sink-BTGmdQzW.js} +2 -2
- package/{console-log-sink-CfAhr7OE.js.map → console-log-sink-BTGmdQzW.js.map} +1 -1
- package/constants.d.ts +1 -0
- package/index.mjs +6 -5
- package/index.mjs.map +1 -1
- package/{options-Bl9Dfnsn.js → options--REGWlBH.js} +99 -28
- package/options--REGWlBH.js.map +1 -0
- package/package.json +2 -2
- package/{resolve-puya-path-BhHWvo7r.js → resolve-puya-path-CaVLCfDd.js} +2 -1
- package/resolve-puya-path-CaVLCfDd.js.map +1 -0
- package/options-Bl9Dfnsn.js.map +0 -1
- package/resolve-puya-path-BhHWvo7r.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"options--REGWlBH.js","sources":["../src/util/base-16.ts","../src/awst/models.ts","../src/awst/wtypes.ts","../src/awst_build/symbol-name.ts","../src/awst_build/ptypes/base.ts","../src/awst_build/ptypes/transient-type-errors.ts","../src/awst_build/ptypes/util.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/eb/transactions/util.ts","../src/awst/nodes.ts","../src/awst/constant-evaluation.ts","../src/awst/node-factory.ts","../src/awst_build/ptypes/arc4-types.ts","../src/awst_build/arc4-util.ts","../src/util/arc4-signature-parser.ts","../src/awst_build/type-registry.ts","../src/awst/util.ts","../src/awst_build/ptypes/visitors/default-visitor.ts","../src/awst_build/ptypes/visitors/contains-mutable-visitor.ts","../src/awst_build/eb/index.ts","../src/awst_build/eb/literal-expression-builder.ts","../src/awst_build/eb/folding.ts","../src/awst_build/eb/util/is-valid-literal-for-ptype.ts","../src/awst_build/eb/literal/numeric-literal-expression-builder.ts","../src/awst_build/eb/util/index.ts","../src/awst_build/eb/util/arg-parsing.ts","../src/awst_build/eb/arc28/arc-28-emit-function-builder.ts","../src/awst_build/ptypes/visitors/index-type-visitor.ts","../src/awst_build/ptypes/visitors/spreadable-properties.ts","../src/awst_build/eb/objects/util.ts","../src/awst_build/eb/objects/resolved-object-literal-expression-builder.ts","../src/awst_build/eb/literal/object-literal-expression-builder.ts","../src/awst_build/eb/arc4-method-decorator-builder.ts","../src/awst/intrinsic-factory.ts","../src/awst_build/eb/optional-expression-builder.ts","../src/awst_build/eb/util/get-bigint-or-uint64-expr.ts","../src/awst_build/eb/util/translate-negative-index.ts","../src/awst_build/eb/shared/at-function-builder.ts","../src/awst_build/eb/shared/pop-function-builder.ts","../src/awst_build/eb/shared/push-function-builder.ts","../src/awst_build/eb/shared/slice-function-builder.ts","../src/awst_build/eb/literal/big-int-literal-expression-builder.ts","../src/awst_build/eb/boolean-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/util/array/concat.ts","../src/awst_build/ptypes/visitors/iterator-type-visitor.ts","../src/awst_build/eb/iterable-iterator-expression-builder.ts","../src/awst_build/eb/traits/static-iterator.ts","../src/awst_build/eb/util/array/length.ts","../src/awst_build/eb/util/array/entries.ts","../src/awst_build/eb/util/array/index-access.ts","../src/awst_build/eb/util/resolve-compat-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/txn-fields.ts","../src/util/default-map.ts","../src/util/evolve.ts","../src/awst_build/constant-store.ts","../src/util/custom-key-map.ts","../src/awst_build/models/logic-sig-class-model.ts","../src/awst_build/models/contract-class-model.ts","../src/visitor/syntax-names.ts","../src/awst_build/type-resolver.ts","../src/awst_build/context/evaluation-context.ts","../src/util/default-record.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/txn-fields.ts","../src/awst_build/eb/compiled/compile-function.ts","../src/awst_build/eb/free-subroutine-expression-builder.ts","../src/awst_build/eb/transactions/inner-transactions.ts","../src/awst_build/eb/transactions/inner-transaction-params.ts","../src/awst_build/eb/arc4/util.ts","../src/awst_build/eb/arc4/c2c.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/array-like/arrays.ts","../src/awst_build/eb/array-like/mutable-tuple-expression-builder.ts","../src/awst_build/eb/array-like/readonly-tuple-expression-builder.ts","../src/awst_build/eb/array-like/util.ts","../src/awst_build/eb/array-like/resolved-array-literal-expression-builder.ts","../src/awst_build/eb/void-expression-builder.ts","../src/awst_build/eb/assert-function-builder.ts","../src/awst_build/eb/match-function-builder.ts","../src/awst_build/eb/assert-match-function-builder.ts","../src/awst_build/eb/biguint-expression-builder.ts","../src/awst_build/eb/string-expression-builder.ts","../src/awst_build/eb/util/compare-bytes.ts","../src/awst_build/eb/bytes-expression-builder.ts","../src/awst_build/eb/clone-function-builder.ts","../src/awst_build/eb/util/avm-version.ts","../src/awst_build/eb/literal/array-literal-expression-builder.ts","../src/awst_build/eb/util/scratch-slots.ts","../src/awst_build/eb/contract-builder.ts","../src/awst_build/eb/ensure-budget.ts","../src/awst_build/eb/intrinsic-enum-builder.ts","../src/awst_build/eb/log-function-builder.ts","../src/awst_build/eb/logic-sig-builder.ts","../src/awst_build/eb/namespace-builder.ts","../src/awst_build/eb/never-expression-builder.ts","../src/awst_build/eb/object-with-optional-fields.ts","../src/awst_build/eb/objects/mutable-object.ts","../src/awst_build/eb/objects/object-expression-builder.ts","../src/awst_build/op-metadata.ts","../src/awst_build/eb/op-module-builder.ts","../src/awst_build/eb/reference-arrays.ts","../src/awst_build/eb/reference/base.ts","../src/awst_build/eb/reference/account.ts","../src/awst_build/eb/reference/application.ts","../src/awst_build/eb/reference/asset.ts","../src/awst_build/eb/storage/util.ts","../src/awst_build/models/app-storage-declaration.ts","../src/awst_build/eb/storage/value-proxy.ts","../src/awst_build/eb/storage/box/base.ts","../src/awst_build/eb/storage/box/box-ref.ts","../src/awst_build/eb/storage/box/box.ts","../src/awst_build/eb/storage/box/box-map.ts","../src/awst_build/eb/storage/global-state.ts","../src/awst_build/eb/storage/local-state.ts","../src/util/template-var-cli-parser.ts","../src/awst_build/eb/template-var.ts","../src/awst_build/eb/transactions/group-transactions.ts","../src/awst_build/eb/transactions/itxn-compose.ts","../src/awst_build/eb/uint64-enum-type-builder.ts","../src/awst_build/eb/unresolvable-expression-builder.ts","../src/awst_build/eb/urange-function.ts","../src/awst_build/ptypes/register.ts","../src/awst/validation/awst-traverser.ts","../src/awst/validation/arc4-approval-calls-router.ts","../src/awst/validation/index.ts","../src/util/base-85.ts","../src/awst/nodes-meta.ts","../src/awst/json-serialize-awst.ts","../src/awst/to-code-visitor.ts","../src/write-artifact.ts","../src/visitor/visitor.ts","../src/awst_build/eb/literal/conditional-expression-builder.ts","../src/awst_build/eb/omitted-expression-builder.ts","../src/awst_build/eb/spread-expression-builder.ts","../src/awst_build/ast-visitors/assignments.ts","../src/awst_build/ast-visitors/text-visitor.ts","../src/awst_build/ast-visitors/base-visitor.ts","../src/awst_build/ast-visitors/class-definition-visitor.ts","../src/awst_build/ast-visitors/decorator-visitor.ts","../src/awst_build/ast-visitors/util.ts","../src/awst_build/ast-visitors/function-visitor.ts","../src/awst_build/ast-visitors/contract-method-visitor.ts","../src/awst_build/ast-visitors/constructor-visitor.ts","../src/awst_build/ast-visitors/contract-visitor.ts","../src/awst_build/ast-visitors/logic-sig-program-visitor.ts","../src/awst_build/ast-visitors/logic-sig-visitor.ts","../src/awst_build/ast-visitors/struct-visitor.ts","../src/awst_build/ast-visitors/subroutine-visitor.ts","../src/awst_build/ast-visitors/source-file-visitor.ts","../src/awst_build/lib/index.ts","../src/awst_build/index.ts","../src/parser/resolve-module-name-literals.ts","../src/parser/index.ts","../src/parser/json-serialize-source-files.ts","../src/puya/build-compilation-set-mapping.ts","../src/util/invoke-cli.ts","../src/puya/run-puya.ts","../src/puya/check-puya-version.ts","../src/puya/log-deserializer.ts","../src/puya/index.ts","../src/compile.ts","../src/input-paths/determine-out-dir.ts","../src/input-paths/process-input-paths.ts","../src/options.ts"],"sourcesContent":["/*\n * Base 16 encode to/decode from Uint8Array type.\n *\n * We don't use Node's Uint8Array.from(Buffer.from(value, 'hex')) as it ignores invalid characters rather than erroring!\n */\n\nconst charToNum = {\n 0: 0,\n 1: 1,\n 2: 2,\n 3: 3,\n 4: 4,\n 5: 5,\n 6: 6,\n 7: 7,\n 8: 8,\n 9: 9,\n A: 10,\n a: 10,\n B: 11,\n b: 11,\n C: 12,\n c: 12,\n D: 13,\n d: 13,\n E: 14,\n e: 14,\n F: 15,\n f: 15,\n}\nconst numToChar: Record<number, string> = {\n 0: '0',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 10: 'A',\n 11: 'B',\n 12: 'C',\n 13: 'D',\n 14: 'E',\n 15: 'F',\n}\n\nfunction getNum(c: string, pos: number): number {\n if (c in charToNum) {\n return charToNum[c as keyof typeof charToNum]\n }\n throw new Error(`Invalid character ${c} at position ${pos}`)\n}\n\nexport function uint8ArrayToHex(input: Uint8Array): string {\n let result = ''\n for (const byte of input) {\n const l = numToChar[byte & 0x0f]\n const h = numToChar[(byte & 0xf0) >> 4]\n result += `${h}${l}`\n }\n return result\n}\n\nexport function hexToUint8Array(input: string): Uint8Array {\n const len = input.length / 2\n if (len % 1 !== 0) {\n throw new Error('Invalid length for base16 string')\n }\n const res = new Uint8Array(len)\n let writeIndex = 0\n for (let readIndex = 0; readIndex < input.length; readIndex++) {\n const h = getNum(input[readIndex], readIndex)\n const l = getNum(input[++readIndex], readIndex)\n res[writeIndex++] = (h << 4) + l\n }\n return res\n}\n","import type { ContractClassPType, LogicSigPType } from '../awst_build/ptypes'\n\nexport enum OnCompletionAction {\n NoOp = 0,\n OptIn = 1,\n CloseOut = 2,\n ClearState = 3,\n UpdateApplication = 4,\n DeleteApplication = 5,\n}\n\nclass ModelBase {\n /**\n * This field prevents us from accidentally passing an object literal with structural equality to\n * a model class instead of any instance of the class, which would stuff up the serialization\n * @private\n */\n #isModel = true\n}\n\nexport class ContractReference extends ModelBase {\n constructor({ className, moduleName }: { className: string; moduleName: string }) {\n super()\n this.className = className\n this.moduleName = moduleName\n }\n readonly className: string\n readonly moduleName: string\n\n get id() {\n return `${this.moduleName}::${this.className}`\n }\n\n toString(): string {\n return this.id\n }\n\n static fromPType(contractPType: ContractClassPType): ContractReference {\n return new ContractReference({\n className: contractPType.name,\n moduleName: contractPType.module,\n })\n }\n}\nexport class LogicSigReference extends ModelBase {\n constructor({ name, moduleName }: { name: string; moduleName: string }) {\n super()\n this.name = name\n this.moduleName = moduleName\n }\n readonly name: string\n readonly moduleName: string\n\n get id() {\n return `${this.moduleName}::${this.name}`\n }\n\n toString(): string {\n return this.id\n }\n\n static fromPType(logicSigPType: LogicSigPType): LogicSigReference {\n return new LogicSigReference({\n name: logicSigPType.name,\n moduleName: logicSigPType.module,\n })\n }\n}\n\nexport enum TransactionKind {\n pay = 1,\n keyreg = 2,\n acfg = 3,\n axfer = 4,\n afrz = 5,\n appl = 6,\n}\n","import { invariant } from '../util'\nimport { TransactionKind } from './models'\nimport type { SourceLocation } from './source-location'\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace wtypes {\n export class WType {\n constructor(props: { name: string; immutable?: boolean }) {\n this.name = props.name\n this.immutable = props.immutable ?? true\n }\n\n readonly name: string\n readonly immutable: boolean\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\n export const voidWType = new WType({\n name: 'void',\n })\n export const boolWType = new WType({\n name: 'bool',\n })\n export const uint64WType = new WType({\n name: 'uint64',\n })\n export const uint64RangeWType = new WType({\n name: 'uint64_range',\n })\n\n export const stateKeyWType = new WType({\n name: 'state_key',\n })\n export const boxKeyWType = new WType({\n name: 'box_key',\n })\n export const stringWType = new WType({\n name: 'string',\n })\n export const biguintWType = new WType({\n name: 'biguint',\n })\n export const assetWType = new WType({\n name: 'asset',\n })\n\n export const accountWType = new WType({\n name: 'account',\n })\n export const applicationWType = new WType({\n name: 'application',\n })\n\n export class BytesWType extends WType {\n readonly length: bigint | null\n\n constructor(args?: { length: bigint | null }) {\n const length = args?.length ?? null\n super({\n name: length === null ? 'bytes' : `bytes[${length}]`,\n immutable: true,\n })\n this.length = length\n }\n }\n export const bytesWType = new BytesWType()\n\n export class ARC4Type extends WType {\n /**\n * Override the default name of this type with a valid arc4 alias.\n *\n * eg uint8 can be aliased with byte, byte[32] can be aliased with address\n */\n readonly arc4Alias: string | null\n constructor({ arc4Alias, ...rest }: { arc4Alias?: string | null; name: string; immutable?: boolean }) {\n super({ ...rest })\n this.arc4Alias = arc4Alias ?? null\n }\n }\n\n export class WTuple extends WType {\n types: WType[]\n names: string[] | undefined\n constructor(props: { names?: string[]; types: WType[]; name?: string }) {\n super({\n name: props.name ?? 'tuple',\n immutable: true,\n })\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 ' : ''}[${this.types.join(', ')}]`\n }\n }\n\n export abstract class NativeArray extends WType {\n readonly elementType: WType\n readonly sourceLocation: SourceLocation | null\n protected constructor(props: { name: string; itemType: WType; sourceLocation?: SourceLocation }) {\n super({\n name: props.name,\n })\n this.elementType = props.itemType\n this.sourceLocation = props.sourceLocation ?? null\n }\n }\n\n export class ReferenceArray extends NativeArray {\n readonly immutable = false\n constructor(props: { itemType: WType; immutable: boolean; sourceLocation?: SourceLocation }) {\n super({\n name: `ref_array<${props.itemType.name}>`,\n ...props,\n })\n }\n }\n\n export class WEnumeration extends WType {\n readonly sequenceType: WType\n constructor(props: { sequenceType: WType }) {\n super({\n name: `enumeration<${props.sequenceType.name}>`,\n 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 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 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 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, arc4Alias }: { n: bigint; arc4Alias?: string }) {\n super({\n name: arc4Alias ? `arc4.${arc4Alias}` : `arc4.uint${n}`,\n arc4Alias,\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 })\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, WType>\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, WType>\n sourceLocation?: SourceLocation\n }) {\n super({\n name,\n immutable: frozen && Object.values(fields).every((t) => t.immutable),\n })\n this.sourceLocation = sourceLocation ?? null\n this.fields = fields\n this.frozen = frozen\n this.desc = desc\n }\n }\n export class ARC4Tuple extends ARC4Type {\n readonly types: WType[]\n readonly sourceLocation: SourceLocation | null\n readonly immutable: boolean\n\n constructor({ types, sourceLocation, immutable }: { types: WType[]; sourceLocation?: SourceLocation; immutable: boolean }) {\n const typesStr = types.map((t) => t.name).join(',')\n super({\n name: `arc4.tuple<${typesStr}>`,\n })\n this.sourceLocation = sourceLocation ?? null\n this.types = types\n this.immutable = immutable\n }\n }\n\n export abstract class ARC4Array extends ARC4Type {\n readonly elementType: WType\n protected constructor(props: { arc4Alias: string | null; name: string; elementType: WType; immutable?: boolean }) {\n super({\n ...props,\n immutable: props.immutable ?? false,\n })\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 arc4Alias,\n immutable,\n }: {\n elementType: WType\n sourceLocation?: SourceLocation\n arc4Alias?: string\n immutable?: boolean\n }) {\n super({\n elementType,\n name: `arc4.dynamic_array<${elementType.name}>`,\n arc4Alias: arc4Alias ?? null,\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 arc4Alias,\n immutable,\n }: {\n arraySize: bigint\n elementType: WType\n sourceLocation?: SourceLocation\n arc4Alias?: string\n immutable?: boolean\n }) {\n super({\n elementType,\n name: `arc4.static_array<${elementType.name}>`,\n arc4Alias: arc4Alias ?? null,\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 arc4Alias: 'byte',\n })\n export const arc4AddressAliasWType = new ARC4StaticArray({\n arraySize: 32n,\n immutable: true,\n elementType: arc4ByteAliasWType,\n arc4Alias: 'address',\n })\n\n export const arc4BooleanWType = new ARC4Type({\n name: 'arc4.bool',\n immutable: true,\n })\n\n export const arc4StringAliasWType = new ARC4DynamicArray({\n arc4Alias: 'string',\n elementType: arc4ByteAliasWType,\n immutable: true,\n })\n}\n","export class SymbolName {\n public readonly module: string\n public readonly name: string\n\n constructor(props: { module: string; name: string }) {\n this.module = props.module\n this.name = props.name\n }\n\n get fullName() {\n return `${this.module}::${this.name}`\n }\n\n toString() {\n return this.fullName\n }\n}\n","import { wtypes } from '../../awst/wtypes'\nimport { CodeError } from '../../errors'\nimport type { DeliberateAny } from '../../typescript-helpers'\nimport { zipStrict } from '../../util'\nimport type { PTypeVisitor } from './visitor'\n\nconst PTypeId = Symbol('PTypeId')\n\n/**\n * Represents a public type visible to a developer of AlgoTS\n */\nexport abstract class PType {\n static readonly IdSymbol: typeof PTypeId = PTypeId\n /**\n * Since TypeScript is structurally typed, different PTypes with compatible\n * structures will often be assignable to one and another and this is generally\n * not desirable. The PTypeId property should be used to declare a literal value\n * (usually the class name) on each distinct PType class to ensure they are\n * structurally different.\n */\n abstract readonly [PTypeId]: string\n\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 abstract accept<T>(visitor: PTypeVisitor<T>): T\n\n get fullName() {\n return `${this.module}::${this.name}`\n }\n\n get wtypeOrThrow(): wtypes.WType {\n if (!this.wtype) {\n throw new CodeError(`${this.fullName} does not have a wtype`)\n }\n return this.wtype\n }\n\n equals(other: PType): boolean {\n return ptypesAreEqual(this, other)\n }\n\n equalsOneOf(...others: PType[]): boolean {\n return others.some((o) => ptypesAreEqual(this, o))\n }\n\n static equals(other: PType): boolean {\n return other.constructor === 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 static typeDescription?: string\n\n static toString() {\n return this?.typeDescription ?? this.constructor.name\n }\n}\n\nexport interface ABICompatiblePType extends PType {\n readonly abiTypeSignature: string\n}\n\nexport class GenericPType<T extends PType = PType> extends PType {\n accept<T>(visitor: PTypeVisitor<T>): T {\n return visitor.visitGeneric(this)\n }\n readonly [PTypeId] = 'GenericPType'\n readonly name: string\n readonly module: string\n readonly singleton = true\n readonly wtype = undefined\n readonly parameterise: (typeArgs: readonly PType[]) => T\n constructor(props: { name: string; module: string; parameterise: (typeArgs: readonly PType[]) => T }) {\n super()\n this.name = props.name\n this.module = props.module\n this.parameterise = props.parameterise\n }\n}\n\nexport type PTypeOrClass = PType | { new (...args: DeliberateAny[]): PType; equals(other: PType): boolean }\n\nfunction ptypesAreEqual(left: PType, right: PType): boolean {\n if (right.constructor !== left.constructor) {\n return false\n }\n return compareProperties(left, right)\n}\n\nconst ignoredProperties = new Set(['sourceLocation', 'wtype'])\n\nfunction notIgnored(key: string): boolean {\n return !ignoredProperties.has(key)\n}\n\nfunction compareProperties(left: object, right: object) {\n const leftProps = Object.entries(left).filter(([key]) => notIgnored(key))\n const rightProps = Object.entries(right).filter(([key]) => notIgnored(key))\n if (leftProps.length !== rightProps.length) return false\n\n return zipStrict(leftProps, rightProps).every(([[lKey, lValue], [rKey, rValue]]) => {\n if (lKey !== rKey) return false\n return compareValues(lValue, rValue)\n })\n}\n\nfunction compareValues(left: unknown, right: unknown): boolean {\n // Handle primitive comparison\n if (typeof left !== 'object' || left === right) {\n return left === right\n }\n if (left === null) {\n return right === null\n }\n // Recursively compare array items\n if (Array.isArray(left)) {\n return Array.isArray(right) && left.length === right.length && left.every((v, i) => compareValues(v, right[i]))\n }\n // Recursively compare ptypes\n if (left instanceof PType) {\n return right instanceof PType && ptypesAreEqual(left, right)\n }\n if (left instanceof wtypes.WType) {\n return right instanceof wtypes.WType && left.equals(right)\n }\n return typeof right === 'object' && right !== null && compareProperties(left, right)\n}\n","type TransientTypeError = {\n usedAsType: string\n usedInExpression: string\n}\n\nexport const transientTypeErrors = {\n nativeNumeric: (typeName) => ({\n usedAsType: `\\`${typeName}\\` is not valid as a variable, parameter, return, or property type. Please use an algo-ts type such as \\`biguint\\` or \\`uint64\\``,\n usedInExpression: `Expression of type \\`${typeName}\\` must be explicitly converted to an algo-ts type, for example by wrapping the expression in \\`Uint64(...)\\` or \\`BigUint(...)\\``,\n }),\n unionTypes: (typeName) => ({\n usedAsType: `Union types are not valid as a variable, parameter, return, or property type. Expression type is ${typeName}`,\n usedInExpression: `Union types are only valid in boolean expressions. Expression type is ${typeName}`,\n }),\n intersectionTypes: (typeName) => ({\n usedAsType: `Intersection types are not valid as a variable, parameter, return, or property type. Expression type is ${typeName}`,\n usedInExpression: `Intersection types not valid here. Expression type is ${typeName}`,\n }),\n optionalFields: (typeName) => ({\n usedAsType: `${typeName} type should not be used explicitly as it contains optional fields which cannot be interrogated at runtime. Either remove the type annotation or use \\`EXPRESSION satisfies ${typeName}\\``,\n usedInExpression: `${typeName} type should not be used explicitly as it contains optional fields which cannot be interrogated at runtime.`,\n }),\n} satisfies Record<string, (typeName: string) => TransientTypeError>\n","import * as crypto from 'node:crypto'\nimport type { PType } from './base'\n\nexport const ptypeIn = (target: PType, ...ptypes: [PType, ...PType[]]): boolean => {\n return ptypes.some((t) => t.equals(target))\n}\n\nexport function generateObjectHash(objectProperties: Record<string, PType>) {\n const signature = Object.entries(objectProperties)\n .map(([k, v]) => `${k}:${v}`)\n .join(';')\n const hash = crypto.createHash('sha512')\n hash.update(signature, 'utf8')\n return hash.digest('hex').substring(0, 8).toUpperCase()\n}\n","import { PType } from './base'\nimport type { PTypeVisitor } from './visitor'\n\nexport class IntrinsicEnumType extends PType {\n readonly [PType.IdSymbol] = 'IntrinsicEnumType'\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 accept<T>(visitor: PTypeVisitor<T>): T {\n return visitor.visitIntrinsicEnumType(this)\n }\n}\n","/* THIS FILE IS GENERATED BY ~/scripts/generate-op-ptypes.ts - DO NOT MODIFY DIRECTLY */\nimport { IntrinsicEnumType } from './intrinsic-enum-type'\nimport { Constants } from '../../constants'\n\nexport const base64PType = new IntrinsicEnumType({\n name: 'Base64',\n module: `${Constants.algoTsPackage}/op.d.ts`,\n members: [\n ['URLEncoding', 'URLEncoding'],\n ['StdEncoding', 'StdEncoding'],\n ],\n})\nexport const ecPType = new IntrinsicEnumType({\n name: 'Ec',\n module: `${Constants.algoTsPackage}/op.d.ts`,\n members: [\n ['BN254g1', 'BN254g1'],\n ['BN254g2', 'BN254g2'],\n ['BLS12_381g1', 'BLS12_381g1'],\n ['BLS12_381g2', 'BLS12_381g2'],\n ],\n})\nexport const ecdsaPType = new IntrinsicEnumType({\n name: 'Ecdsa',\n module: `${Constants.algoTsPackage}/op.d.ts`,\n members: [\n ['Secp256k1', 'Secp256k1'],\n ['Secp256r1', 'Secp256r1'],\n ],\n})\nexport const mimcConfigurationsPType = new IntrinsicEnumType({\n name: 'MimcConfigurations',\n module: `${Constants.algoTsPackage}/op.d.ts`,\n members: [\n ['BN254Mp110', 'BN254Mp110'],\n ['BLS12_381Mp111', 'BLS12_381Mp111'],\n ],\n})\nexport const vrfVerifyPType = new IntrinsicEnumType({\n name: 'VrfVerify',\n module: `${Constants.algoTsPackage}/op.d.ts`,\n members: [['VrfAlgorand', 'VrfAlgorand']],\n})\nexport const ALL_OP_ENUMS = [base64PType, ecPType, ecdsaPType, mimcConfigurationsPType, vrfVerifyPType]\n","import { TransactionKind } from '../../awst/models'\nimport { SourceLocation } from '../../awst/source-location'\nimport { wtypes } from '../../awst/wtypes'\n\nimport { Constants } from '../../constants'\nimport { CodeError, InternalError, NotSupported, throwError } from '../../errors'\nimport { codeInvariant, distinctByEquality, instanceOfAny, invariant, sortBy, zipStrict } from '../../util'\nimport { SymbolName } from '../symbol-name'\nimport type { ABICompatiblePType, PTypeOrClass } from './base'\nimport { GenericPType, PType } from './base'\n\nimport { transientTypeErrors } from './transient-type-errors'\nimport { generateObjectHash } from './util'\nimport type { PTypeVisitor } from './visitor'\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 accept<T>(visitor: PTypeVisitor<T>): T {\n return visitor.visitTransientType(this)\n }\n}\n\nexport class UnsupportedType extends PType {\n readonly [PType.IdSymbol] = 'UnsupportedType'\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 accept<T>(visitor: PTypeVisitor<T>): T {\n return visitor.visitUnsupportedType(this)\n }\n}\n\nexport class ObjectWithOptionalFieldsType extends TransientType {\n readonly [PType.IdSymbol] = 'ObjectWithOptionalFieldsType'\n constructor({ name, module }: { name: string; module: string }) {\n const errors = transientTypeErrors.optionalFields(name)\n super({\n name,\n module,\n singleton: false,\n expressionMessage: errors.usedInExpression,\n typeMessage: errors.usedAsType,\n })\n }\n}\n\nexport class LogicSigPType extends PType {\n readonly [PType.IdSymbol] = 'LogicSigPType'\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 accept<T>(visitor: PTypeVisitor<T>): T {\n return visitor.visitLogicSigPType(this)\n }\n}\n\nexport const logicSigBaseType = new LogicSigPType({\n name: 'LogicSig',\n module: Constants.moduleNames.algoTs.logicSig,\n sourceLocation: SourceLocation.None,\n})\n\nexport class ContractClassPType extends PType {\n readonly [PType.IdSymbol] = 'ContractClassPType'\n readonly wtype = undefined\n readonly name: string\n readonly module: string\n readonly properties: Record<string, AppStorageType>\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 accept<T>(visitor: PTypeVisitor<T>): T {\n return visitor.visitContractClassPType(this)\n }\n}\n\nexport class ClusteredContractClassType extends ContractClassPType {\n constructor(props: { methods: Record<string, FunctionPType>; baseTypes: ContractClassPType[]; sourceLocation: SourceLocation }) {\n super({\n ...props,\n name: `ClusteredContract<${props.baseTypes.map((t) => t.fullName).join(',')}>`,\n module: Constants.moduleNames.polytype,\n methods: Object.assign({}, ...props.baseTypes.toReversed().map((t) => t.methods)),\n properties: Object.assign({}, ...props.baseTypes.toReversed().map((t) => t.properties)),\n })\n }\n}\n\nexport class BaseContractClassType extends ContractClassPType {\n readonly _isArc4: boolean\n get isARC4(): boolean {\n return this._isArc4\n }\n\n constructor({\n isArc4,\n ...rest\n }: {\n isArc4: boolean\n module: string\n name: string\n properties: Record<string, AppStorageType>\n methods: Record<string, FunctionPType>\n baseTypes: ContractClassPType[]\n sourceLocation: SourceLocation\n }) {\n super(rest)\n this._isArc4 = isArc4\n }\n}\n\nexport class IntersectionPType extends TransientType {\n readonly [PType.IdSymbol] = 'IntersectionPType'\n get fullName() {\n return this.types.map((t) => t).join(' & ')\n }\n readonly singleton = false\n readonly types: PType[]\n\n private constructor({ types }: { types: PType[] }) {\n const name = types.map((t) => t).join(' & ')\n super({\n name,\n module: 'lib.d.ts',\n singleton: false,\n typeMessage: transientTypeErrors.intersectionTypes(name).usedAsType,\n expressionMessage: transientTypeErrors.unionTypes(name).usedInExpression,\n })\n this.types = types\n }\n\n static fromTypes(types: PType[]) {\n if (types.length === 0) {\n throw new InternalError('Cannot create intersection of zero types')\n }\n const distinctTypes = types.filter(distinctByEquality((a, b) => a.equals(b))).toSorted(sortBy((t) => t.fullName))\n if (distinctTypes.length === 1) {\n return distinctTypes[0]\n }\n return new IntersectionPType({\n types: distinctTypes,\n })\n }\n}\n\nexport class UnionPType extends TransientType {\n readonly [PType.IdSymbol] = 'UnionPType'\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 (instanceOfAny(transientType, BigIntLiteralPType, NumericLiteralPType, BigIntPType, NumberPType)) {\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\nabstract 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.moduleNames.algoTs.state,\n parameterise(typeArgs: readonly 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 readonly [PType.IdSymbol] = 'GlobalStateType'\n static readonly baseName = 'GlobalState'\n static readonly baseFullName = `${Constants.moduleNames.algoTs.state}::${GlobalStateType.baseName}`\n readonly module: string = Constants.moduleNames.algoTs.state\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\n accept<T>(visitor: PTypeVisitor<T>): T {\n return visitor.visitGlobalStateType(this)\n }\n}\nexport const LocalStateGeneric = new GenericPType({\n name: 'LocalState',\n module: Constants.moduleNames.algoTs.state,\n parameterise(typeArgs: readonly 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 readonly [PType.IdSymbol] = 'LocalStateType'\n static readonly baseName = 'LocalState'\n static readonly baseFullName = `${Constants.moduleNames.algoTs.state}::${LocalStateType.baseName}`\n readonly module: string = Constants.moduleNames.algoTs.state\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\n accept<T>(visitor: PTypeVisitor<T>): T {\n return visitor.visitLocalStateType(this)\n }\n}\nexport const BoxGeneric = new GenericPType({\n name: 'Box',\n module: Constants.moduleNames.algoTs.box,\n parameterise(typeArgs: readonly 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 [PType.IdSymbol] = 'BoxPType'\n readonly module: string = Constants.moduleNames.algoTs.box\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\n accept<T>(visitor: PTypeVisitor<T>): T {\n return visitor.visitBoxPType(this)\n }\n}\nexport const BoxMapGeneric = new GenericPType({\n name: 'BoxMap',\n module: Constants.moduleNames.algoTs.box,\n parameterise(typeArgs: readonly 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 [PType.IdSymbol] = 'BoxMapPType'\n readonly module: string = Constants.moduleNames.algoTs.box\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\n accept<T>(visitor: PTypeVisitor<T>): T {\n return visitor.visitBoxMapPType(this)\n }\n}\nexport class BoxRefPType extends StorageProxyPType {\n readonly [PType.IdSymbol] = 'BoxRefPType'\n readonly module = Constants.moduleNames.algoTs.box\n get name() {\n return 'BoxRef'\n }\n constructor() {\n super({ keyWType: wtypes.boxKeyWType, content: bytesPType })\n }\n\n accept<T>(visitor: PTypeVisitor<T>): T {\n return visitor.visitBoxRefPType(this)\n }\n}\nexport type AppStorageType = GlobalStateType | LocalStateType | BoxPType | BoxRefPType | BoxMapPType\n\n/**\n * An open generic type parameter\n */\nexport class TypeParameterType extends PType {\n readonly [PType.IdSymbol] = 'TypeParameterType'\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 accept<T>(visitor: PTypeVisitor<T>): T {\n return visitor.visitTypeParameterType(this)\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 [PType.IdSymbol] = 'InternalType'\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 accept<T>(visitor: PTypeVisitor<T>): T {\n return visitor.visitInternalType(this)\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 readonly [PType.IdSymbol] = 'AnyPType'\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 accept<T>(visitor: PTypeVisitor<T>): T {\n return visitor.visitAnyPType(this)\n }\n}\n\nexport class InstanceType extends PType {\n readonly [PType.IdSymbol] = 'InstanceType'\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 accept<T>(visitor: PTypeVisitor<T>): T {\n return visitor.visitInstanceType(this)\n }\n}\n\nexport class ABICompatibleInstanceType extends InstanceType implements ABICompatiblePType {\n readonly abiTypeSignature: string\n constructor({ abiTypeSignature, ...props }: { name: string; module: string; wtype: wtypes.WType; abiTypeSignature: string }) {\n super(props)\n this.abiTypeSignature = abiTypeSignature\n }\n}\n\nexport class LibFunctionType extends PType {\n readonly [PType.IdSymbol] = 'LibFunctionType'\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 accept<T>(visitor: PTypeVisitor<T>): T {\n return visitor.visitLibFunctionType(this)\n }\n}\nexport class LibClassType extends PType {\n readonly [PType.IdSymbol] = 'LibClassType'\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 accept<T>(visitor: PTypeVisitor<T>): T {\n return visitor.visitLibClassType(this)\n }\n}\nexport class LibObjType extends PType {\n readonly [PType.IdSymbol] = 'LibObjType'\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 accept<T>(visitor: PTypeVisitor<T>): T {\n return visitor.visitLibObjType(this)\n }\n}\n\nexport class IntrinsicFunctionGroupType extends PType {\n readonly [PType.IdSymbol] = 'IntrinsicFunctionGroupType'\n readonly wtype: undefined\n readonly name: string\n readonly module: string = Constants.moduleNames.algoTs.op\n readonly singleton = true\n\n constructor({ name }: { name: string }) {\n super()\n this.name = name\n }\n\n accept<T>(visitor: PTypeVisitor<T>): T {\n return visitor.visitIntrinsicFunctionGroupType(this)\n }\n}\nexport class IntrinsicFunctionGroupTypeType extends PType {\n readonly [PType.IdSymbol] = 'IntrinsicFunctionGroupTypeType'\n readonly wtype: undefined\n readonly name: string\n readonly module: string = Constants.moduleNames.algoTs.op\n readonly singleton = false\n\n constructor({ name }: { name: string }) {\n super()\n this.name = name\n }\n\n accept<T>(visitor: PTypeVisitor<T>): T {\n return visitor.visitIntrinsicFunctionGroupTypeType(this)\n }\n}\nexport class IntrinsicFunctionType extends PType {\n readonly [PType.IdSymbol] = 'IntrinsicFunctionType'\n readonly wtype: undefined\n readonly name: string\n readonly module: string = Constants.moduleNames.algoTs.op\n readonly singleton = true\n\n constructor({ name }: { name: string }) {\n super()\n this.name = name\n }\n\n accept<T>(visitor: PTypeVisitor<T>): T {\n return visitor.visitIntrinsicFunctionType(this)\n }\n}\nexport class IntrinsicFunctionTypeType extends PType {\n readonly [PType.IdSymbol] = 'IntrinsicFunctionTypeType'\n readonly wtype: undefined\n readonly name: string\n readonly module: string = Constants.moduleNames.algoTs.op\n readonly singleton = false\n\n constructor({ name }: { name: string }) {\n super()\n this.name = name\n }\n\n accept<T>(visitor: PTypeVisitor<T>): T {\n return visitor.visitIntrinsicFunctionTypeType(this)\n }\n}\n\nexport class NamespacePType extends PType {\n readonly [PType.IdSymbol] = 'NamespacePType'\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 accept<T>(visitor: PTypeVisitor<T>): T {\n return visitor.visitNamespacePType(this)\n }\n}\n\nexport class FunctionPType extends PType {\n readonly [PType.IdSymbol] = 'FunctionPType'\n readonly wtype: undefined\n readonly name: string\n readonly module: string\n readonly returnType: PType\n readonly parameters: Array<readonly [string, PType]>\n readonly singleton = true\n readonly sourceLocation: SourceLocation | undefined\n\n constructor(props: {\n name: string\n module: string\n returnType: PType\n parameters: Array<readonly [string, PType]>\n sourceLocation: SourceLocation | undefined\n }) {\n super()\n this.name = props.name\n this.module = props.module\n this.sourceLocation = props.sourceLocation\n this.returnType = props.returnType\n this.parameters = props.parameters\n }\n\n accept<T>(visitor: PTypeVisitor<T>): T {\n return visitor.visitFunctionPType(this)\n }\n}\nexport class ArrayLiteralPType extends PType {\n readonly [PType.IdSymbol] = 'ArrayLiteralPType'\n\n get fullName() {\n return `${this.module}::[${this.items.map((i) => i).join(', ')}]`\n }\n\n get elementType() {\n return this.items.length ? UnionPType.fromTypes(this.items) : neverPType\n }\n\n readonly singleton = false\n readonly name: string\n readonly module = Constants.moduleNames.typescript.es5\n readonly items: PType[]\n constructor(props: { items: PType[] }) {\n super()\n this.name = `[${props.items.map((i) => i.name).join(', ')}]`\n\n this.items = props.items\n }\n\n get wtype() {\n return this.getReadonlyTupleType().wtype\n }\n\n accept<T>(visitor: PTypeVisitor<T>): T {\n return visitor.visitArrayLiteralPType(this)\n }\n\n getArrayType(): ArrayPType {\n return new ArrayPType({\n elementType: this.elementType,\n })\n }\n\n getReadonlyTupleType(): ReadonlyTuplePType {\n return new ReadonlyTuplePType({\n items: this.items,\n })\n }\n getMutableTupleType(): MutableTuplePType {\n return new MutableTuplePType({\n items: this.items,\n })\n }\n}\n\nexport class MutableTuplePType extends PType {\n readonly [PType.IdSymbol] = 'MutableTuplePType'\n readonly module: string = 'lib.d.ts'\n\n get name() {\n return `[${this.items.map((i) => i.name).join(', ')}]`\n }\n get fullName() {\n return `${this.module}::[${this.items.map((i) => i.fullName).join(', ')}]`\n }\n\n readonly items: PType[]\n readonly singleton = false\n constructor(props: { items: PType[] }) {\n super()\n this.items = props.items\n }\n\n get wtype(): wtypes.ARC4Tuple {\n return new wtypes.ARC4Tuple({\n types: this.items.map((i) => i.wtypeOrThrow),\n immutable: false,\n })\n }\n\n accept<T>(visitor: PTypeVisitor<T>): T {\n return visitor.visitMutableTuplePType(this)\n }\n}\nexport class ReadonlyTuplePType extends PType {\n readonly [PType.IdSymbol] = 'ReadonlyTuplePType'\n readonly module: string = 'lib.d.ts'\n\n get name() {\n return `readonly [${this.items.map((i) => i.name).join(', ')}]`\n }\n get fullName() {\n return `${this.module}::readonly [${this.items.map((i) => i.fullName).join(', ')}]`\n }\n\n readonly items: PType[]\n readonly singleton = false\n constructor(props: { items: PType[] }) {\n super()\n this.items = props.items\n }\n\n get wtype(): wtypes.WTuple {\n return new wtypes.WTuple({\n types: this.items.map((i) => i.wtypeOrThrow),\n })\n }\n\n accept<T>(visitor: PTypeVisitor<T>): T {\n return visitor.visitReadonlyTuplePType(this)\n }\n}\nexport const ArrayGeneric = new GenericPType({\n name: 'Array',\n module: Constants.moduleNames.typescript.es5,\n parameterise(typeArgs) {\n codeInvariant(typeArgs.length === 1, 'Array expects exactly 1 type argument')\n return new ArrayPType({ elementType: typeArgs[0] })\n },\n})\nexport class ArrayPType extends PType {\n readonly [PType.IdSymbol] = 'ArrayPType'\n readonly elementType: PType\n readonly immutable = false\n readonly singleton = false\n readonly name: string\n readonly module: string = Constants.moduleNames.typescript.es5\n get fullName() {\n return `${this.module}::Array<${this.elementType.fullName}>`\n }\n constructor(props: { elementType: PType }) {\n super()\n this.name = `Array<${props.elementType.name}>`\n this.elementType = props.elementType\n }\n\n get wtype() {\n return new wtypes.ARC4DynamicArray({\n elementType: this.elementType.wtypeOrThrow,\n immutable: this.immutable,\n })\n }\n\n accept<T>(visitor: PTypeVisitor<T>): T {\n return visitor.visitArrayPType(this)\n }\n}\nexport const ReadonlyArrayGeneric = new GenericPType({\n name: 'ReadonlyArray',\n module: Constants.moduleNames.typescript.es5,\n parameterise(typeArgs) {\n codeInvariant(typeArgs.length === 1, 'ReadonlyArray expects exactly 1 type argument')\n return new ReadonlyArrayPType({ elementType: typeArgs[0] })\n },\n})\nexport class ReadonlyArrayPType extends PType {\n readonly [PType.IdSymbol] = 'ReadonlyArrayPType'\n readonly elementType: PType\n readonly singleton = false\n readonly immutable = true\n readonly name: string\n readonly module: string = Constants.moduleNames.typescript.es5\n get fullName() {\n return `${this.module}::ReadonlyArray<${this.elementType.fullName}>`\n }\n constructor(props: { elementType: PType }) {\n super()\n this.elementType = props.elementType\n this.name = `ReadonlyArray<${props.elementType.name}>`\n }\n\n get wtype() {\n return new wtypes.ARC4DynamicArray({\n elementType: this.elementType.wtypeOrThrow,\n immutable: this.immutable,\n })\n }\n\n accept<T>(visitor: PTypeVisitor<T>): T {\n return visitor.visitReadonlyArrayPType(this)\n }\n}\n\nexport const FixedArrayGeneric = new GenericPType({\n name: 'FixedArray',\n module: Constants.moduleNames.algoTs.arrays,\n parameterise(typeArgs) {\n codeInvariant(typeArgs.length === 2, 'FixedArray type expects exactly one type parameters')\n const [elementType, arraySize] = typeArgs\n codeInvariant(\n arraySize instanceof NumericLiteralPType,\n `Array size generic type param for FixedArray must be a literal number. Inferred type is ${arraySize.name}`,\n )\n if (elementType instanceof TransientType) {\n throw new CodeError(elementType.typeMessage)\n }\n return new FixedArrayPType({ elementType, arraySize: arraySize.literalValue })\n },\n})\n\nexport class FixedArrayPType extends PType {\n readonly [PType.IdSymbol] = 'FixedArrayPType'\n readonly elementType: PType\n readonly immutable: boolean = false\n readonly singleton = false\n readonly name: string\n readonly module: string = Constants.moduleNames.algoTs.arrays\n readonly arraySize: bigint\n get fullName() {\n return `${this.module}::FixedArray<${this.elementType.fullName}>`\n }\n constructor(props: { elementType: PType; arraySize: bigint }) {\n super()\n this.elementType = props.elementType\n this.name = `FixedArray<${props.elementType.name}, ${props.arraySize}>`\n this.arraySize = props.arraySize\n }\n get wtype() {\n return new wtypes.ARC4StaticArray({\n elementType: this.elementType.wtypeOrThrow,\n arraySize: this.arraySize,\n immutable: false,\n })\n }\n\n accept<T>(visitor: PTypeVisitor<T>): T {\n return visitor.visitFixedArrayPType(this)\n }\n}\nexport const ReadonlyGeneric = new GenericPType({\n name: 'Readonly',\n module: Constants.moduleNames.typescript.es5,\n parameterise([obj, ...rest]) {\n codeInvariant(obj instanceof MutableObjectPType && !rest.length, 'Readonly expects exactly 1 generic type arg that is an object type')\n\n return obj.toImmutable()\n },\n})\n\nabstract class ObjectPType extends PType {\n readonly name: string\n readonly module: string = 'lib.d.ts'\n readonly alias: SymbolName | null\n readonly description: string | undefined\n readonly properties: Record<string, PType>\n readonly singleton = false\n readonly immutable: boolean\n\n constructor(props: {\n alias?: SymbolName | null\n properties: Record<string, PType>\n description?: string\n namePrefix: string\n immutable: boolean\n }) {\n super()\n this.name = `${props.namePrefix}${generateObjectHash(props.properties)}`\n this.properties = props.properties\n this.description = props.description\n this.alias = props.alias ?? null\n this.immutable = props.immutable\n }\n\n orderedProperties() {\n return Object.entries(this.properties)\n }\n\n toString(): string {\n return `{${this.orderedProperties()\n .map((p) => `${this.immutable ? 'readonly ' : ''}${p[0]}:${p[1].name}`)\n .join(',')}}`\n }\n\n hasSameStructure(other: ObjectPType): boolean {\n return zipStrict(this.orderedProperties(), other.orderedProperties()).every(\n ([[leftProp, leftType], [rightProp, rightType]]) => leftProp === rightProp && leftType.equals(rightType),\n )\n }\n}\n\nexport class ObjectLiteralPType extends ObjectPType {\n readonly [PType.IdSymbol] = 'ObjectLiteralPType'\n\n constructor(props: { properties: Record<string, PType> }) {\n super({\n ...props,\n namePrefix: `ObjectLiteral`,\n immutable: false,\n })\n }\n\n accept<T>(visitor: PTypeVisitor<T>): T {\n return visitor.visitObjectLiteralPType(this)\n }\n\n getImmutable(): ImmutableObjectPType {\n return new ImmutableObjectPType({\n alias: this.alias,\n properties: this.properties,\n description: this.description,\n })\n }\n getMutable(): MutableObjectPType {\n return new MutableObjectPType({\n alias: this.alias,\n properties: this.properties,\n description: this.description,\n })\n }\n\n get wtype(): wtypes.WTuple {\n const tupleTypes: wtypes.WType[] = []\n const tupleNames: string[] = []\n for (const [propName, propType] of this.orderedProperties()) {\n if (propType instanceof TransientType) {\n throw new CodeError(`Property '${propName}' of ${this.name} has an unsupported type: ${propType.typeMessage}`)\n }\n tupleTypes.push(propType.wtypeOrThrow)\n tupleNames.push(propName)\n }\n return new wtypes.WTuple({\n name: this.alias?.fullName ?? this.toString(),\n names: tupleNames,\n types: tupleTypes,\n })\n }\n}\n\nexport class ImmutableObjectPType extends ObjectPType {\n readonly [PType.IdSymbol] = 'ImmutableObjectPType'\n\n constructor(props: { alias?: SymbolName | null; properties: Record<string, PType>; description?: string }) {\n super({\n ...props,\n namePrefix: `ReadonlyObject`,\n immutable: 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.alias?.fullName ?? this.name,\n names: tupleNames,\n types: tupleTypes,\n })\n }\n\n accept<T>(visitor: PTypeVisitor<T>): T {\n return visitor.visitImmutableObjectPType(this)\n }\n}\n\nexport class MutableObjectPType extends ObjectPType {\n readonly [PType.IdSymbol] = 'MutableObjectPType'\n\n constructor(props: { alias?: SymbolName | null; properties: Record<string, PType>; description?: string }) {\n super({\n ...props,\n namePrefix: `Object`,\n immutable: false,\n })\n }\n\n get wtype(): wtypes.ARC4Struct {\n return new wtypes.ARC4Struct({\n name: this.alias?.fullName ?? this.name,\n fields: Object.fromEntries(Object.entries(this.properties).map(([f, t]) => [f, t.wtypeOrThrow])),\n desc: this.description ?? null,\n frozen: false,\n })\n }\n\n toImmutable(): ImmutableObjectPType {\n return new ImmutableObjectPType({\n alias: this.alias,\n properties: this.properties,\n description: this.description,\n })\n }\n\n accept<T>(visitor: PTypeVisitor<T>): T {\n return visitor.visitMutableObjectPType(this)\n }\n}\n\nexport function isObjectType(ptype: PTypeOrClass): ptype is MutableObjectPType | ImmutableObjectPType | ObjectLiteralPType {\n return instanceOfAny(ptype, MutableObjectPType, ImmutableObjectPType, ObjectLiteralPType)\n}\n\nexport function isArrayType(ptype: PTypeOrClass): ptype is ArrayPType | ReadonlyArrayPType {\n return instanceOfAny(ptype, ArrayPType, ReadonlyArrayPType)\n}\n\nexport function isTupleLike(ptype: PTypeOrClass): ptype is MutableTuplePType | ReadonlyTuplePType | ArrayLiteralPType {\n return instanceOfAny(ptype, ReadonlyTuplePType, MutableTuplePType, ArrayLiteralPType)\n}\n\nexport const voidPType = new ABICompatibleInstanceType({\n name: 'void',\n module: 'lib.d.ts',\n wtype: wtypes.voidWType,\n abiTypeSignature: 'void',\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 esSymbol = new UnsupportedType({\n name: 'symbol',\n module: 'lib.d.ts',\n fullName: 'symbol',\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: readonly 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 BigIntPType extends TransientType {\n readonly [PType.IdSymbol] = 'BigIntPType'\n}\n\nexport class NumberPType extends TransientType {\n readonly [PType.IdSymbol] = 'NumberPType'\n}\n\nexport const bigIntPType = new BigIntPType({\n name: 'bigint',\n module: 'lib.d.ts',\n singleton: false,\n typeMessage: transientTypeErrors.nativeNumeric('bigint').usedAsType,\n expressionMessage: transientTypeErrors.nativeNumeric('bigint').usedInExpression,\n})\n\nexport const stringPType = new InstanceType({\n name: 'string',\n module: 'lib.d.ts',\n wtype: wtypes.stringWType,\n})\nexport const StringFunction = new LibFunctionType({\n name: 'String',\n module: 'typescript/lib/lib.es5.d.ts',\n})\n\nexport const uint64PType = new InstanceType({\n name: 'uint64',\n module: Constants.moduleNames.algoTs.primitives,\n wtype: wtypes.uint64WType,\n})\nexport const biguintPType = new InstanceType({\n name: 'biguint',\n module: Constants.moduleNames.algoTs.primitives,\n wtype: wtypes.biguintWType,\n})\nexport class NumericLiteralPType extends TransientType {\n readonly [PType.IdSymbol] = 'NumericLiteralPType'\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\n static typeDescription = 'numeric literal'\n}\nexport class BigIntLiteralPType extends TransientType {\n readonly [PType.IdSymbol] = 'BigIntLiteralPType'\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\n static typeDescription = 'bigint literal'\n}\nexport const numberPType = new NumberPType({\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.moduleNames.algoTs.primitives,\n})\n\nexport const BigUintFunction = new LibFunctionType({\n name: 'BigUint',\n module: Constants.moduleNames.algoTs.primitives,\n})\nexport class BytesPType extends PType {\n readonly [PType.IdSymbol] = 'BytesPType'\n readonly wtype: wtypes.WType\n readonly name: string\n readonly module: string\n readonly singleton = false\n readonly length: bigint | null\n\n constructor({ length }: { length: bigint | null }) {\n super()\n this.length = length\n this.name = length === null ? 'bytes' : `bytes<${length}>`\n this.wtype = new wtypes.BytesWType({ length })\n this.module = Constants.moduleNames.algoTs.primitives\n }\n\n accept<T>(visitor: PTypeVisitor<T>): T {\n return visitor.visitBytesPType(this)\n }\n}\nexport const BytesGeneric = new GenericPType({\n name: 'bytes',\n module: Constants.moduleNames.algoTs.primitives,\n parameterise(typeArgs: readonly PType[]): BytesPType {\n codeInvariant(typeArgs.length === 1, `${this.name} type expects exactly one type parameter`)\n const bytesSize = typeArgs[0]\n if (bytesSize.equals(uint64PType)) {\n return new BytesPType({\n length: null,\n })\n }\n codeInvariant(\n bytesSize instanceof NumericLiteralPType,\n `Bytes size generic type param for bytes type must be a literal number. Inferred type is ${bytesSize.name}`,\n )\n return new BytesPType({\n length: bytesSize.literalValue,\n })\n },\n})\nexport const bytesPType = new BytesPType({ length: null })\nexport const BytesFunction = new LibFunctionType({\n name: 'Bytes',\n module: Constants.moduleNames.algoTs.primitives,\n})\n\nexport const logFunction = new LibFunctionType({\n name: 'log',\n module: Constants.moduleNames.algoTs.util,\n})\nexport const assertFunction = new LibFunctionType({\n name: 'assert',\n module: Constants.moduleNames.algoTs.util,\n})\n\nexport const errFunction = new LibFunctionType({\n name: 'err',\n module: Constants.moduleNames.algoTs.util,\n})\n\nexport const assetPType = new ABICompatibleInstanceType({\n name: 'Asset',\n wtype: wtypes.assetWType,\n module: Constants.moduleNames.algoTs.reference,\n abiTypeSignature: 'asset',\n})\nexport const AssetFunction = new LibFunctionType({\n name: 'Asset',\n module: Constants.moduleNames.algoTs.reference,\n})\nexport const accountPType = new ABICompatibleInstanceType({\n name: 'Account',\n wtype: wtypes.accountWType,\n module: Constants.moduleNames.algoTs.reference,\n abiTypeSignature: 'account',\n})\nexport const AccountFunction = new LibFunctionType({\n name: 'Account',\n module: Constants.moduleNames.algoTs.reference,\n})\nexport const applicationPType = new ABICompatibleInstanceType({\n name: 'Application',\n wtype: wtypes.applicationWType,\n module: Constants.moduleNames.algoTs.reference,\n abiTypeSignature: 'application',\n})\nexport const ApplicationFunctionType = new LibFunctionType({\n name: 'Application',\n module: Constants.moduleNames.algoTs.reference,\n})\nexport const BoxRefFunction = new LibFunctionType({\n name: 'BoxRef',\n module: Constants.moduleNames.algoTs.box,\n})\nexport const boxRefType = new BoxRefPType()\n\nexport const ClearStateProgram = new FunctionPType({\n name: Constants.symbolNames.clearStateProgramMethodName,\n module: Constants.moduleNames.algoTs.baseContract,\n returnType: uint64PType,\n parameters: [],\n sourceLocation: undefined,\n})\n\nexport const ApprovalProgram = new FunctionPType({\n name: Constants.symbolNames.approvalProgramMethodName,\n module: Constants.moduleNames.algoTs.arc4.index,\n returnType: boolPType,\n parameters: [],\n sourceLocation: undefined,\n})\n\nexport const baseContractType = new BaseContractClassType({\n module: Constants.moduleNames.algoTs.baseContract,\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.moduleNames.algoTs.arc4.index,\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})\nexport const itoaMethod = new LibFunctionType({\n module: 'puya-ts',\n name: 'itoa',\n})\nexport const arc4BareMethodDecorator = new LibFunctionType({\n module: Constants.moduleNames.algoTs.arc4.index,\n name: 'baremethod',\n})\nexport const arc4AbiMethodDecorator = new LibFunctionType({\n module: Constants.moduleNames.algoTs.arc4.index,\n name: 'abimethod',\n})\nexport const readonlyDecorator = new LibFunctionType({\n module: Constants.moduleNames.algoTs.arc4.index,\n name: 'readonly',\n})\n\nexport const contractOptionsDecorator = new LibFunctionType({\n module: Constants.moduleNames.algoTs.baseContract,\n name: 'contract',\n})\n\nexport const logicSigOptionsDecorator = new LibFunctionType({\n module: Constants.moduleNames.algoTs.logicSig,\n name: 'logicsig',\n})\n\nexport class GroupTransactionPType extends PType implements ABICompatiblePType {\n readonly [PType.IdSymbol] = 'GroupTransactionPType'\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.moduleNames.algoTs.gtxn\n readonly singleton = false\n readonly abiTypeSignature: string\n\n constructor({ kind, name }: { kind?: TransactionKind; name: string }) {\n super()\n this.name = name\n this.kind = kind\n this.abiTypeSignature = kind !== undefined ? TransactionKind[kind] : 'txn'\n }\n\n accept<T>(visitor: PTypeVisitor<T>): T {\n return visitor.visitGroupTransactionPType(this)\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.moduleNames.algoTs.gtxn,\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.moduleNames.algoTs.gtxn,\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.moduleNames.algoTs.gtxn,\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.moduleNames.algoTs.gtxn,\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.moduleNames.algoTs.gtxn,\n kind: TransactionKind.afrz,\n})\nexport const applicationCallGtxnType = new GroupTransactionPType({\n name: 'ApplicationCallTxn',\n kind: TransactionKind.appl,\n})\nexport const ApplicationTxnFunction = new TransactionFunctionType({\n name: 'ApplicationCallTxn',\n module: Constants.moduleNames.algoTs.gtxn,\n kind: TransactionKind.appl,\n})\n\nexport const anyGtxnType = new GroupTransactionPType({\n name: 'Transaction',\n kind: undefined,\n})\nexport const TransactionFunction = new TransactionFunctionType({\n name: 'Transaction',\n module: Constants.moduleNames.algoTs.gtxn,\n kind: undefined,\n})\n\nexport const assertMatchFunction = new LibFunctionType({\n name: 'assertMatch',\n module: Constants.moduleNames.algoTs.util,\n})\nexport const matchFunction = new LibFunctionType({\n name: 'match',\n module: Constants.moduleNames.algoTs.util,\n})\n\nexport class Uint64EnumMemberType extends PType {\n readonly [PType.IdSymbol] = 'Uint64EnumMemberType'\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 accept<T>(visitor: PTypeVisitor<T>): T {\n return visitor.visitUint64EnumMemberType(this)\n }\n}\n\nexport class Uint64EnumMemberLiteralType extends Uint64EnumMemberType {\n readonly wtype = wtypes.uint64WType\n readonly member: string\n readonly value: bigint\n\n constructor(enumType: Uint64EnumType, member: string | bigint) {\n super(enumType)\n if (typeof member === 'bigint') {\n ;[this.member, this.value] =\n Object.entries(enumType.members).find(([n, v]) => v === member) ??\n throwError(new InternalError(`${member} is not a valid member for ${enumType.name}`))\n } else {\n invariant(member in enumType.members, `${member} is not a valid member for ${enumType.name}`)\n this.member = member\n this.value = enumType.members[member]\n }\n }\n}\n\nexport class Uint64EnumType extends PType {\n readonly [PType.IdSymbol] = 'Uint64EnumType'\n readonly memberType: Uint64EnumMemberType\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 this.memberType = new Uint64EnumMemberType(this)\n }\n\n getMemberLiteral(member: string | bigint) {\n return new Uint64EnumMemberLiteralType(this, member)\n }\n\n hasMember(member: string | bigint) {\n return Object.entries(this.members).some((m) => m[0] === member || m[1] === member)\n }\n\n accept<T>(visitor: PTypeVisitor<T>): T {\n return visitor.visitUint64EnumType(this)\n }\n}\n\nexport const transactionTypeType = new Uint64EnumType({\n module: Constants.moduleNames.algoTs.transactions,\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.moduleNames.algoTs.onCompleteAction,\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.moduleNames.algoTs.util,\n})\nexport const opUpFeeSourceType = new Uint64EnumType({\n module: Constants.moduleNames.algoTs.util,\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.moduleNames.algoTs.util,\n})\nexport const IterableIteratorGeneric = new GenericPType({\n name: 'IterableIterator',\n module: 'typescript/lib/lib.es2015.iterable.d.ts',\n parameterise(typeArgs: readonly 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 [PType.IdSymbol] = 'IterableIteratorType'\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 accept<T>(visitor: PTypeVisitor<T>): T {\n return visitor.visitIterableIterator(this)\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.moduleNames.algoTs.itxn,\n kind: TransactionKind.pay,\n})\nexport const keyRegistrationItxnFn = new TransactionFunctionType({\n name: 'keyRegistration',\n module: Constants.moduleNames.algoTs.itxn,\n kind: TransactionKind.keyreg,\n})\nexport const assetConfigItxnFn = new TransactionFunctionType({\n name: 'assetConfig',\n module: Constants.moduleNames.algoTs.itxn,\n kind: TransactionKind.acfg,\n})\nexport const assetTransferItxnFn = new TransactionFunctionType({\n name: 'assetTransfer',\n module: Constants.moduleNames.algoTs.itxn,\n kind: TransactionKind.axfer,\n})\nexport const assetFreezeItxnFn = new TransactionFunctionType({\n name: 'assetFreeze',\n module: Constants.moduleNames.algoTs.itxn,\n kind: TransactionKind.afrz,\n})\nexport const applicationCallItxnFn = new TransactionFunctionType({\n name: 'applicationCall',\n module: Constants.moduleNames.algoTs.itxn,\n kind: TransactionKind.appl,\n})\n\nexport class InnerTransactionPType extends PType {\n readonly [PType.IdSymbol] = 'InnerTransactionPType'\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.moduleNames.algoTs.itxn\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 accept<T>(visitor: PTypeVisitor<T>): T {\n return visitor.visitInnerTransactionPType(this)\n }\n}\nexport class ItxnParamsPType extends PType {\n readonly [PType.IdSymbol] = 'ItxnParamsPType'\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.moduleNames.algoTs.itxn\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 accept<T>(visitor: PTypeVisitor<T>): T {\n return visitor.visitItxnParamsPType(this)\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: 'ApplicationCallInnerTxn',\n kind: TransactionKind.appl,\n})\nexport const anyItxnParamsType = new ItxnParamsPType({\n name: 'AnyItxnParams',\n})\n\nexport const anyItxnType = new InnerTransactionPType({\n name: 'InnerTxn',\n})\n\nexport const inputOnlyObjects = ['Payment', 'KeyRegistration', 'AssetConfig', 'AssetTransfer', 'AssetFreeze', 'ApplicationCall'].flatMap(\n (txnKind) => [\n new ObjectWithOptionalFieldsType({\n name: `${txnKind}Fields`,\n module: Constants.moduleNames.algoTs.itxn,\n }),\n new ObjectWithOptionalFieldsType({\n name: `${txnKind}ComposeFields`,\n module: Constants.moduleNames.algoTs.itxnCompose,\n }),\n ],\n)\n\nexport const submitGroupItxnFunction = new LibFunctionType({\n name: 'submitGroup',\n module: Constants.moduleNames.algoTs.itxn,\n})\n\nexport const TemplateVarFunction = new LibFunctionType({\n name: 'TemplateVar',\n module: Constants.moduleNames.algoTs.templateVar,\n})\n\nexport const compileFunctionType = new LibFunctionType({\n name: 'compile',\n module: Constants.moduleNames.algoTs.compiled,\n})\n\nexport const compiledContractType = new ImmutableObjectPType({\n alias: new SymbolName({\n name: 'CompiledContract',\n module: Constants.moduleNames.algoTs.compiled,\n }),\n description: 'Provides compiled programs and state allocation values for a Contract. Created by calling `compile(ExampleContractType)`',\n properties: {\n approvalProgram: new ReadonlyTuplePType({ items: [bytesPType, bytesPType] }),\n clearStateProgram: new ReadonlyTuplePType({ items: [bytesPType, bytesPType] }),\n extraProgramPages: uint64PType,\n globalUints: uint64PType,\n globalBytes: uint64PType,\n localUints: uint64PType,\n localBytes: uint64PType,\n },\n})\nexport const compiledLogicSigType = new ImmutableObjectPType({\n alias: new SymbolName({\n name: 'CompiledLogicSig',\n module: Constants.moduleNames.algoTs.compiled,\n }),\n description: 'Provides account for a Logic Signature. Created by calling `compile(LogicSigType)``',\n properties: {\n account: accountPType,\n },\n})\n\nexport const arc28EmitFunction = new LibFunctionType({\n name: 'emit',\n module: Constants.moduleNames.algoTs.arc28,\n})\n\nexport const SuperPrototypeSelectorGeneric = new GenericPType({\n name: 'SuperPrototypeSelector',\n module: Constants.moduleNames.polytype,\n parameterise(ptypes: readonly PType[]) {\n return new SuperPrototypeSelector({ bases: ptypes })\n },\n})\nexport class SuperPrototypeSelector extends PType {\n readonly [PType.IdSymbol] = 'SuperPrototypeSelector'\n readonly bases: readonly PType[]\n readonly name = 'SuperPrototypeSelector'\n readonly singleton = false\n readonly wtype = undefined\n readonly module = Constants.moduleNames.polytype\n constructor({ bases }: { bases: readonly PType[] }) {\n super()\n this.bases = bases\n }\n\n accept<T>(visitor: PTypeVisitor<T>): T {\n return visitor.visitSuperPrototypeSelector(this)\n }\n}\nexport const ClusteredPrototype = new InternalType({\n name: 'ClusteredPrototype',\n module: Constants.moduleNames.polytype,\n})\nexport const PolytypeClassMethodHelper = new LibFunctionType({\n name: 'class',\n module: Constants.moduleNames.polytype,\n})\nexport const ReferenceArrayGeneric = new GenericPType({\n name: 'ReferenceArray',\n module: Constants.moduleNames.algoTs.referenceArray,\n parameterise: (typeArgs: readonly PType[]): ReferenceArrayType => {\n codeInvariant(typeArgs.length === 1, 'ReferenceArray type expects exactly one type parameter')\n const [elementType] = typeArgs\n\n return new ReferenceArrayType({ elementType: elementType })\n },\n})\nexport class ReferenceArrayType extends PType {\n readonly [PType.IdSymbol] = 'ReferenceArrayType'\n readonly module = Constants.moduleNames.algoTs.referenceArray\n readonly name: string\n readonly singleton = false\n readonly sourceLocation: SourceLocation | undefined\n readonly elementType: PType\n\n constructor({\n elementType,\n sourceLocation,\n name,\n }: {\n elementType: PType\n sourceLocation?: SourceLocation\n name?: string\n immutable?: boolean\n }) {\n super()\n this.name = name ?? `ReferenceArray<${elementType}>`\n this.sourceLocation = sourceLocation\n this.elementType = elementType\n }\n\n get wtype() {\n return new wtypes.ReferenceArray({\n itemType: this.elementType.wtypeOrThrow,\n sourceLocation: this.sourceLocation,\n immutable: false,\n })\n }\n accept<T>(visitor: PTypeVisitor<T>): T {\n return visitor.visitReferenceArrayType(this)\n }\n}\n\nexport const itxnComposePType = new LibObjType({\n module: Constants.moduleNames.algoTs.itxnCompose,\n name: 'itxnCompose',\n})\n\nexport const cloneFunctionPType = new LibFunctionType({\n name: 'clone',\n module: Constants.moduleNames.algoTs.util,\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): 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 }\n}\nexport function getItxnParamsType(kind: TransactionKind): 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 }\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","/* AUTOGENERATED FILE - DO NOT EDIT (see puya/scripts/generate_ts_nodes.py) */\nimport { classes } from 'polytype'\nimport type { Props } from '../typescript-helpers'\nimport type { ContractReference, LogicSigReference, OnCompletionAction } from './models'\nimport type { SourceLocation } from './source-location'\nimport type { TxnField } from './txn-fields'\nimport type { wtypes } from './wtypes'\nexport abstract class Node {\n constructor(props: Props<Node>) {\n this.sourceLocation = props.sourceLocation\n }\n readonly sourceLocation: SourceLocation\n}\nexport abstract class Statement extends Node {\n constructor(props: Props<Statement>) {\n super(props)\n }\n abstract accept<T>(visitor: StatementVisitor<T>): T\n}\nexport abstract class Expression extends Node {\n constructor(props: Props<Expression>) {\n super(props)\n this.wtype = props.wtype\n }\n readonly wtype: wtypes.WType\n abstract accept<T>(visitor: ExpressionVisitor<T>): T\n}\nexport class ExpressionStatement extends Statement {\n constructor(props: Props<ExpressionStatement>) {\n super(props)\n this.expr = props.expr\n this.sourceLocation = props.sourceLocation\n }\n readonly expr: Expression\n readonly sourceLocation: SourceLocation\n accept<T>(visitor: StatementVisitor<T>): T {\n return visitor.visitExpressionStatement(this)\n }\n}\nexport class Block extends Statement {\n constructor(props: Props<Block>) {\n super(props)\n this.body = props.body\n this.label = props.label\n this.comment = props.comment\n }\n readonly body: Array<Statement>\n readonly label: string | null\n readonly comment: string | null\n accept<T>(visitor: StatementVisitor<T>): T {\n return visitor.visitBlock(this)\n }\n}\nexport class Goto extends Statement {\n constructor(props: Props<Goto>) {\n super(props)\n this.target = props.target\n }\n readonly target: string\n accept<T>(visitor: StatementVisitor<T>): T {\n return visitor.visitGoto(this)\n }\n}\nexport class IfElse extends Statement {\n constructor(props: Props<IfElse>) {\n super(props)\n this.condition = props.condition\n this.ifBranch = props.ifBranch\n this.elseBranch = props.elseBranch\n }\n readonly condition: Expression\n readonly ifBranch: Block\n readonly elseBranch: Block | null\n accept<T>(visitor: StatementVisitor<T>): T {\n return visitor.visitIfElse(this)\n }\n}\nexport class Switch extends Statement {\n constructor(props: Props<Switch>) {\n super(props)\n this.value = props.value\n this.cases = props.cases\n this.defaultCase = props.defaultCase\n }\n readonly value: Expression\n readonly cases: Map<Expression, Block>\n readonly defaultCase: Block | null\n accept<T>(visitor: StatementVisitor<T>): T {\n return visitor.visitSwitch(this)\n }\n}\nexport class WhileLoop extends Statement {\n constructor(props: Props<WhileLoop>) {\n super(props)\n this.condition = props.condition\n this.loopBody = props.loopBody\n }\n readonly condition: Expression\n readonly loopBody: Block\n accept<T>(visitor: StatementVisitor<T>): T {\n return visitor.visitWhileLoop(this)\n }\n}\nexport class LoopExit extends Statement {\n constructor(props: Props<LoopExit>) {\n super(props)\n }\n accept<T>(visitor: StatementVisitor<T>): T {\n return visitor.visitLoopExit(this)\n }\n}\nexport class LoopContinue extends Statement {\n constructor(props: Props<LoopContinue>) {\n super(props)\n }\n accept<T>(visitor: StatementVisitor<T>): T {\n return visitor.visitLoopContinue(this)\n }\n}\nexport class ReturnStatement extends Statement {\n constructor(props: Props<ReturnStatement>) {\n super(props)\n this.value = props.value\n }\n readonly value: Expression | null\n accept<T>(visitor: StatementVisitor<T>): T {\n return visitor.visitReturnStatement(this)\n }\n}\nexport class AssertExpression extends Expression {\n constructor(props: Props<AssertExpression>) {\n super(props)\n this.condition = props.condition\n this.errorMessage = props.errorMessage\n this.wtype = props.wtype\n }\n readonly condition: Expression | null\n readonly errorMessage: string | null\n readonly wtype: wtypes.WType\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitAssertExpression(this)\n }\n}\nexport class IntegerConstant extends Expression {\n constructor(props: Props<IntegerConstant>) {\n super(props)\n this.wtype = props.wtype\n this.value = props.value\n this.tealAlias = props.tealAlias\n }\n readonly wtype: wtypes.WType\n readonly value: bigint\n readonly tealAlias: string | null\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitIntegerConstant(this)\n }\n}\nexport class DecimalConstant extends Expression {\n constructor(props: Props<DecimalConstant>) {\n super(props)\n this.wtype = props.wtype\n this.value = props.value\n }\n readonly wtype: wtypes.ARC4UFixedNxM\n readonly value: string\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitDecimalConstant(this)\n }\n}\nexport class BoolConstant extends Expression {\n constructor(props: Props<BoolConstant>) {\n super(props)\n this.value = props.value\n this.wtype = props.wtype\n }\n readonly value: boolean\n readonly wtype: wtypes.WType\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitBoolConstant(this)\n }\n}\nexport enum BytesEncoding {\n unknown = 'unknown',\n base16 = 'base16',\n base32 = 'base32',\n base64 = 'base64',\n utf8 = 'utf8',\n}\nexport class BytesConstant extends Expression {\n constructor(props: Props<BytesConstant>) {\n super(props)\n this.value = props.value\n this.wtype = props.wtype\n this.encoding = props.encoding\n }\n readonly value: Uint8Array\n readonly wtype: wtypes.WType\n readonly encoding: BytesEncoding\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitBytesConstant(this)\n }\n}\nexport class StringConstant extends Expression {\n constructor(props: Props<StringConstant>) {\n super(props)\n this.value = props.value\n this.wtype = props.wtype\n }\n readonly value: string\n readonly wtype: wtypes.WType\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitStringConstant(this)\n }\n}\nexport class VoidConstant extends Expression {\n constructor(props: Props<VoidConstant>) {\n super(props)\n this.wtype = props.wtype\n }\n readonly wtype: wtypes.WType\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitVoidConstant(this)\n }\n}\nexport class TemplateVar extends Expression {\n constructor(props: Props<TemplateVar>) {\n super(props)\n this.wtype = props.wtype\n this.name = props.name\n }\n readonly wtype: wtypes.WType\n readonly name: string\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitTemplateVar(this)\n }\n}\nexport class MethodConstant extends Expression {\n constructor(props: Props<MethodConstant>) {\n super(props)\n this.wtype = props.wtype\n this.value = props.value\n }\n readonly wtype: wtypes.WType\n readonly value: string\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitMethodConstant(this)\n }\n}\nexport class AddressConstant extends Expression {\n constructor(props: Props<AddressConstant>) {\n super(props)\n this.wtype = props.wtype\n this.value = props.value\n }\n readonly wtype: wtypes.WType\n readonly value: string\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitAddressConstant(this)\n }\n}\nexport class ARC4Encode extends Expression {\n constructor(props: Props<ARC4Encode>) {\n super(props)\n this.value = props.value\n this.wtype = props.wtype\n this.errorMessage = props.errorMessage\n }\n readonly value: Expression\n readonly wtype: wtypes.ARC4Type\n readonly errorMessage: string | null\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitARC4Encode(this)\n }\n}\nexport class ARC4Decode extends Expression {\n constructor(props: Props<ARC4Decode>) {\n super(props)\n this.value = props.value\n this.errorMessage = props.errorMessage\n }\n readonly value: Expression\n readonly errorMessage: string | null\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitARC4Decode(this)\n }\n}\nexport class ConvertArray extends Expression {\n constructor(props: Props<ConvertArray>) {\n super(props)\n this.expr = props.expr\n this.wtype = props.wtype\n }\n readonly expr: Expression\n readonly wtype: wtypes.ARC4DynamicArray | wtypes.ARC4StaticArray | wtypes.ReferenceArray\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitConvertArray(this)\n }\n}\nexport class Copy extends Expression {\n constructor(props: Props<Copy>) {\n super(props)\n this.value = props.value\n this.wtype = props.wtype\n }\n readonly value: Expression\n readonly wtype: wtypes.WType\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitCopy(this)\n }\n}\nexport class ArrayConcat extends Expression {\n constructor(props: Props<ArrayConcat>) {\n super(props)\n this.left = props.left\n this.right = props.right\n this.wtype = props.wtype\n }\n readonly left: Expression\n readonly right: Expression\n readonly wtype: wtypes.ARC4DynamicArray\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitArrayConcat(this)\n }\n}\nexport class ArrayExtend extends Expression {\n constructor(props: Props<ArrayExtend>) {\n super(props)\n this.base = props.base\n this.other = props.other\n this.wtype = props.wtype\n }\n readonly base: Expression\n readonly other: Expression\n readonly wtype: wtypes.WType\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitArrayExtend(this)\n }\n}\nexport class ArrayPop extends Expression {\n constructor(props: Props<ArrayPop>) {\n super(props)\n this.base = props.base\n this.wtype = props.wtype\n }\n readonly base: Expression\n readonly wtype: wtypes.WType\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitArrayPop(this)\n }\n}\nexport class ArrayReplace extends Expression {\n constructor(props: Props<ArrayReplace>) {\n super(props)\n this.base = props.base\n this.index = props.index\n this.value = props.value\n this.wtype = props.wtype\n }\n readonly base: Expression\n readonly index: Expression\n readonly value: Expression\n readonly wtype: wtypes.ARC4Array\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitArrayReplace(this)\n }\n}\nexport class SizeOf extends Expression {\n constructor(props: Props<SizeOf>) {\n super(props)\n this.sizeWtype = props.sizeWtype\n this.wtype = props.wtype\n }\n readonly sizeWtype: wtypes.WType\n readonly wtype: wtypes.WType\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitSizeOf(this)\n }\n}\nexport class IntrinsicCall extends Expression {\n constructor(props: Props<IntrinsicCall>) {\n super(props)\n this.opCode = props.opCode\n this.immediates = props.immediates\n this.stackArgs = props.stackArgs\n }\n readonly opCode: string\n readonly immediates: Array<string | bigint>\n readonly stackArgs: Array<Expression>\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitIntrinsicCall(this)\n }\n}\nexport class CreateInnerTransaction extends Expression {\n constructor(props: Props<CreateInnerTransaction>) {\n super(props)\n this.wtype = props.wtype\n this.fields = props.fields\n }\n readonly wtype: wtypes.WInnerTransactionFields\n readonly fields: Map<TxnField, Expression>\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitCreateInnerTransaction(this)\n }\n}\nexport class UpdateInnerTransaction extends Expression {\n constructor(props: Props<UpdateInnerTransaction>) {\n super(props)\n this.itxn = props.itxn\n this.fields = props.fields\n this.wtype = props.wtype\n }\n readonly itxn: Expression\n readonly fields: Map<TxnField, Expression>\n readonly wtype: wtypes.WType\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitUpdateInnerTransaction(this)\n }\n}\nexport class GroupTransactionReference extends Expression {\n constructor(props: Props<GroupTransactionReference>) {\n super(props)\n this.index = props.index\n this.wtype = props.wtype\n }\n readonly index: Expression\n readonly wtype: wtypes.WGroupTransaction\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitGroupTransactionReference(this)\n }\n}\nexport class CheckedMaybe extends Expression {\n constructor(props: Props<CheckedMaybe>) {\n super(props)\n this.expr = props.expr\n this.comment = props.comment\n this.wtype = props.wtype\n this.sourceLocation = props.sourceLocation\n }\n readonly expr: Expression\n readonly comment: string\n readonly wtype: wtypes.WType\n readonly sourceLocation: SourceLocation\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitCheckedMaybe(this)\n }\n}\nexport class TupleExpression extends Expression {\n constructor(props: Props<TupleExpression>) {\n super(props)\n this.items = props.items\n this.wtype = props.wtype\n }\n readonly items: Array<Expression>\n readonly wtype: wtypes.WTuple\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitTupleExpression(this)\n }\n}\nexport class TupleItemExpression extends Expression {\n constructor(props: Props<TupleItemExpression>) {\n super(props)\n this.base = props.base\n this.index = props.index\n this.wtype = props.wtype\n }\n readonly base: Expression\n readonly index: bigint\n readonly wtype: wtypes.WType\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitTupleItemExpression(this)\n }\n}\nexport class VarExpression extends Expression {\n constructor(props: Props<VarExpression>) {\n super(props)\n this.name = props.name\n }\n readonly name: string\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitVarExpression(this)\n }\n}\nexport class InnerTransactionField extends Expression {\n constructor(props: Props<InnerTransactionField>) {\n super(props)\n this.itxn = props.itxn\n this.field = props.field\n this.arrayIndex = props.arrayIndex\n }\n readonly itxn: Expression\n readonly field: TxnField\n readonly arrayIndex: Expression | null\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitInnerTransactionField(this)\n }\n}\nexport class SetInnerTransactionFields extends Expression {\n constructor(props: Props<SetInnerTransactionFields>) {\n super(props)\n this.itxns = props.itxns\n this.startWithBegin = props.startWithBegin\n this.wtype = props.wtype\n }\n readonly itxns: Array<Expression>\n readonly startWithBegin: boolean\n readonly wtype: wtypes.WType\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitSetInnerTransactionFields(this)\n }\n}\nexport class SubmitInnerTransaction extends Expression {\n constructor(props: Props<SubmitInnerTransaction>) {\n super(props)\n this.itxns = props.itxns\n this.wtype = props.wtype\n }\n readonly itxns: Array<Expression>\n readonly wtype: wtypes.WType\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitSubmitInnerTransaction(this)\n }\n}\nexport class FieldExpression extends Expression {\n constructor(props: Props<FieldExpression>) {\n super(props)\n this.base = props.base\n this.name = props.name\n this.wtype = props.wtype\n }\n readonly base: Expression\n readonly name: string\n readonly wtype: wtypes.WType\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitFieldExpression(this)\n }\n}\nexport class IndexExpression extends Expression {\n constructor(props: Props<IndexExpression>) {\n super(props)\n this.base = props.base\n this.index = props.index\n this.wtype = props.wtype\n }\n readonly base: Expression\n readonly index: Expression\n readonly wtype: wtypes.WType\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 this.wtype = props.wtype\n }\n readonly base: Expression\n readonly beginIndex: Expression | null\n readonly endIndex: Expression | null\n readonly wtype: wtypes.WType\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 this.wtype = props.wtype\n }\n readonly base: Expression\n readonly beginIndex: Expression | bigint | null\n readonly endIndex: Expression | bigint | null\n readonly wtype: wtypes.WType\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitIntersectionSliceExpression(this)\n }\n}\nexport enum AppStorageKind {\n appGlobal = 1,\n accountLocal = 2,\n box = 3,\n}\nexport class AppStateExpression extends Expression {\n constructor(props: Props<AppStateExpression>) {\n super(props)\n this.key = props.key\n this.existsAssertionMessage = props.existsAssertionMessage\n }\n readonly key: Expression\n readonly existsAssertionMessage: string | null\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitAppStateExpression(this)\n }\n}\nexport class AppAccountStateExpression extends Expression {\n constructor(props: Props<AppAccountStateExpression>) {\n super(props)\n this.key = props.key\n this.existsAssertionMessage = props.existsAssertionMessage\n this.account = props.account\n }\n readonly key: Expression\n readonly existsAssertionMessage: string | null\n readonly account: Expression\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitAppAccountStateExpression(this)\n }\n}\nexport class BoxPrefixedKeyExpression extends Expression {\n constructor(props: Props<BoxPrefixedKeyExpression>) {\n super(props)\n this.prefix = props.prefix\n this.key = props.key\n this.wtype = props.wtype\n }\n readonly prefix: Expression\n readonly key: Expression\n readonly wtype: wtypes.WType\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitBoxPrefixedKeyExpression(this)\n }\n}\nexport class BoxValueExpression extends Expression {\n constructor(props: Props<BoxValueExpression>) {\n super(props)\n this.key = props.key\n this.existsAssertionMessage = props.existsAssertionMessage\n }\n readonly key: Expression\n readonly existsAssertionMessage: string | null\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitBoxValueExpression(this)\n }\n}\nexport class SingleEvaluation extends Expression {\n constructor(props: Props<SingleEvaluation>) {\n super(props)\n this.source = props.source\n this.id = props.id\n this.wtype = props.wtype\n this.sourceLocation = props.sourceLocation\n }\n readonly source: Expression\n readonly id: symbol\n readonly wtype: wtypes.WType\n readonly sourceLocation: SourceLocation\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitSingleEvaluation(this)\n }\n}\nexport class ReinterpretCast extends Expression {\n constructor(props: Props<ReinterpretCast>) {\n super(props)\n this.expr = props.expr\n }\n readonly expr: Expression\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitReinterpretCast(this)\n }\n}\nexport class NewArray extends Expression {\n constructor(props: Props<NewArray>) {\n super(props)\n this.wtype = props.wtype\n this.values = props.values\n }\n readonly wtype: wtypes.ARC4DynamicArray | wtypes.ARC4StaticArray | wtypes.ReferenceArray\n readonly values: Array<Expression>\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitNewArray(this)\n }\n}\nexport class ArrayLength extends Expression {\n constructor(props: Props<ArrayLength>) {\n super(props)\n this.array = props.array\n this.wtype = props.wtype\n }\n readonly array: Expression\n readonly wtype: wtypes.WType\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitArrayLength(this)\n }\n}\nexport class ConditionalExpression extends Expression {\n constructor(props: Props<ConditionalExpression>) {\n super(props)\n this.condition = props.condition\n this.trueExpr = props.trueExpr\n this.falseExpr = props.falseExpr\n this.wtype = props.wtype\n }\n readonly condition: Expression\n readonly trueExpr: Expression\n readonly falseExpr: Expression\n readonly wtype: wtypes.WType\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitConditionalExpression(this)\n }\n}\nexport class AssignmentStatement extends Statement {\n constructor(props: Props<AssignmentStatement>) {\n super(props)\n this.target = props.target\n this.value = props.value\n }\n readonly target:\n | VarExpression\n | FieldExpression\n | IndexExpression\n | TupleExpression\n | AppStateExpression\n | AppAccountStateExpression\n | BoxValueExpression\n readonly value: Expression\n accept<T>(visitor: StatementVisitor<T>): T {\n return visitor.visitAssignmentStatement(this)\n }\n}\nexport class AssignmentExpression extends Expression {\n constructor(props: Props<AssignmentExpression>) {\n super(props)\n this.target = props.target\n this.value = props.value\n this.wtype = props.wtype\n }\n readonly target:\n | VarExpression\n | FieldExpression\n | IndexExpression\n | TupleExpression\n | AppStateExpression\n | AppAccountStateExpression\n | BoxValueExpression\n readonly value: Expression\n readonly wtype: wtypes.WType\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitAssignmentExpression(this)\n }\n}\nexport class CommaExpression extends Expression {\n constructor(props: Props<CommaExpression>) {\n super(props)\n this.expressions = props.expressions\n this.wtype = props.wtype\n }\n readonly expressions: Array<Expression>\n readonly wtype: wtypes.WType\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitCommaExpression(this)\n }\n}\nexport enum EqualityComparison {\n eq = '==',\n ne = '!=',\n}\nexport enum NumericComparison {\n eq = '==',\n ne = '!=',\n lt = '<',\n lte = '<=',\n gt = '>',\n gte = '>=',\n}\nexport class NumericComparisonExpression extends Expression {\n constructor(props: Props<NumericComparisonExpression>) {\n super(props)\n this.wtype = props.wtype\n this.lhs = props.lhs\n this.operator = props.operator\n this.rhs = props.rhs\n }\n readonly wtype: wtypes.WType\n readonly lhs: Expression\n readonly operator: NumericComparison\n readonly rhs: Expression\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitNumericComparisonExpression(this)\n }\n}\nexport class BytesComparisonExpression extends Expression {\n constructor(props: Props<BytesComparisonExpression>) {\n super(props)\n this.wtype = props.wtype\n this.lhs = props.lhs\n this.operator = props.operator\n this.rhs = props.rhs\n }\n readonly wtype: wtypes.WType\n readonly lhs: Expression\n readonly operator: EqualityComparison\n readonly rhs: Expression\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitBytesComparisonExpression(this)\n }\n}\nexport class SubroutineID {\n constructor(props: Props<SubroutineID>) {\n this.target = props.target\n }\n readonly target: string\n}\nexport class InstanceMethodTarget {\n constructor(props: Props<InstanceMethodTarget>) {\n this.memberName = props.memberName\n }\n readonly memberName: string\n}\nexport class InstanceSuperMethodTarget {\n constructor(props: Props<InstanceSuperMethodTarget>) {\n this.memberName = props.memberName\n }\n readonly memberName: string\n}\nexport class ContractMethodTarget {\n constructor(props: Props<ContractMethodTarget>) {\n this.cref = props.cref\n this.memberName = props.memberName\n }\n readonly cref: ContractReference\n readonly memberName: string\n}\nexport class CallArg {\n constructor(props: Props<CallArg>) {\n this.name = props.name\n this.value = props.value\n }\n readonly name: string | null\n readonly value: Expression\n}\nexport class SubroutineCallExpression extends Expression {\n constructor(props: Props<SubroutineCallExpression>) {\n super(props)\n this.target = props.target\n this.args = props.args\n }\n readonly target: SubroutineID | InstanceMethodTarget | InstanceSuperMethodTarget | ContractMethodTarget\n readonly args: Array<CallArg>\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitSubroutineCallExpression(this)\n }\n}\nexport class PuyaLibData {\n constructor(props: Props<PuyaLibData>) {\n this.id = props.id\n this.params = props.params\n this.wtype = props.wtype\n }\n readonly id: string\n readonly params: Map<string, wtypes.WType>\n readonly wtype: wtypes.WType\n}\nexport enum PuyaLibFunction {\n ensureBudget = 'ensure_budget',\n isSubstring = 'is_substring',\n}\nexport class PuyaLibCall extends Expression {\n constructor(props: Props<PuyaLibCall>) {\n super(props)\n this.func = props.func\n this.args = props.args\n this.wtype = props.wtype\n }\n readonly func: PuyaLibFunction\n readonly args: Array<CallArg>\n readonly wtype: wtypes.WType\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitPuyaLibCall(this)\n }\n}\nexport enum UInt64BinaryOperator {\n add = '+',\n sub = '-',\n mult = '*',\n floorDiv = '//',\n mod = '%',\n pow = '**',\n lshift = '<<',\n rshift = '>>',\n bitOr = '|',\n bitXor = '^',\n bitAnd = '&',\n}\nexport enum BigUIntBinaryOperator {\n add = '+',\n sub = '-',\n mult = '*',\n floorDiv = '//',\n mod = '%',\n bitOr = '|',\n bitXor = '^',\n bitAnd = '&',\n}\nexport enum BytesBinaryOperator {\n add = '+',\n bitOr = '|',\n bitXor = '^',\n bitAnd = '&',\n}\nexport enum BytesUnaryOperator {\n bitInvert = '~',\n}\nexport enum UInt64UnaryOperator {\n bitInvert = '~',\n}\nexport enum UInt64PostfixUnaryOperator {\n increment = '++',\n decrement = '--',\n}\nexport class UInt64UnaryOperation extends Expression {\n constructor(props: Props<UInt64UnaryOperation>) {\n super(props)\n this.op = props.op\n this.expr = props.expr\n this.wtype = props.wtype\n }\n readonly op: UInt64UnaryOperator\n readonly expr: Expression\n readonly wtype: wtypes.WType\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitUInt64UnaryOperation(this)\n }\n}\nexport class UInt64PostfixUnaryOperation extends Expression {\n constructor(props: Props<UInt64PostfixUnaryOperation>) {\n super(props)\n this.op = props.op\n this.target = props.target\n this.wtype = props.wtype\n }\n readonly op: UInt64PostfixUnaryOperator\n readonly target:\n | VarExpression\n | FieldExpression\n | IndexExpression\n | TupleExpression\n | AppStateExpression\n | AppAccountStateExpression\n | BoxValueExpression\n readonly wtype: wtypes.WType\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitUInt64PostfixUnaryOperation(this)\n }\n}\nexport enum BigUIntPostfixUnaryOperator {\n increment = '++',\n decrement = '--',\n}\nexport class BigUIntPostfixUnaryOperation extends Expression {\n constructor(props: Props<BigUIntPostfixUnaryOperation>) {\n super(props)\n this.op = props.op\n this.target = props.target\n this.wtype = props.wtype\n }\n readonly op: BigUIntPostfixUnaryOperator\n readonly target:\n | VarExpression\n | FieldExpression\n | IndexExpression\n | TupleExpression\n | AppStateExpression\n | AppAccountStateExpression\n | BoxValueExpression\n readonly wtype: wtypes.WType\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitBigUIntPostfixUnaryOperation(this)\n }\n}\nexport class BytesUnaryOperation extends Expression {\n constructor(props: Props<BytesUnaryOperation>) {\n super(props)\n this.op = props.op\n this.expr = props.expr\n this.wtype = props.wtype\n }\n readonly op: BytesUnaryOperator\n readonly expr: Expression\n readonly wtype: wtypes.WType\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitBytesUnaryOperation(this)\n }\n}\nexport class UInt64BinaryOperation extends Expression {\n constructor(props: Props<UInt64BinaryOperation>) {\n super(props)\n this.left = props.left\n this.op = props.op\n this.right = props.right\n this.wtype = props.wtype\n }\n readonly left: Expression\n readonly op: UInt64BinaryOperator\n readonly right: Expression\n readonly wtype: wtypes.WType\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitUInt64BinaryOperation(this)\n }\n}\nexport class BigUIntBinaryOperation extends Expression {\n constructor(props: Props<BigUIntBinaryOperation>) {\n super(props)\n this.left = props.left\n this.op = props.op\n this.right = props.right\n this.wtype = props.wtype\n }\n readonly left: Expression\n readonly op: BigUIntBinaryOperator\n readonly right: Expression\n readonly wtype: wtypes.WType\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitBigUIntBinaryOperation(this)\n }\n}\nexport class BytesBinaryOperation extends Expression {\n constructor(props: Props<BytesBinaryOperation>) {\n super(props)\n this.left = props.left\n this.op = props.op\n this.right = props.right\n this.wtype = props.wtype\n }\n readonly left: Expression\n readonly op: BytesBinaryOperator\n readonly right: Expression\n readonly wtype: wtypes.WType\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitBytesBinaryOperation(this)\n }\n}\nexport enum BinaryBooleanOperator {\n and = 'and',\n or = 'or',\n}\nexport class BooleanBinaryOperation extends Expression {\n constructor(props: Props<BooleanBinaryOperation>) {\n super(props)\n this.left = props.left\n this.op = props.op\n this.right = props.right\n this.wtype = props.wtype\n }\n readonly left: Expression\n readonly op: BinaryBooleanOperator\n readonly right: Expression\n readonly wtype: wtypes.WType\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitBooleanBinaryOperation(this)\n }\n}\nexport class Not extends Expression {\n constructor(props: Props<Not>) {\n super(props)\n this.expr = props.expr\n this.wtype = props.wtype\n }\n readonly expr: Expression\n readonly wtype: wtypes.WType\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitNot(this)\n }\n}\nexport class UInt64AugmentedAssignment extends Statement {\n constructor(props: Props<UInt64AugmentedAssignment>) {\n super(props)\n this.target = props.target\n this.op = props.op\n this.value = props.value\n }\n readonly target:\n | VarExpression\n | FieldExpression\n | IndexExpression\n | TupleExpression\n | AppStateExpression\n | AppAccountStateExpression\n | BoxValueExpression\n readonly op: UInt64BinaryOperator\n readonly value: Expression\n accept<T>(visitor: StatementVisitor<T>): T {\n return visitor.visitUInt64AugmentedAssignment(this)\n }\n}\nexport class BigUIntAugmentedAssignment extends Statement {\n constructor(props: Props<BigUIntAugmentedAssignment>) {\n super(props)\n this.target = props.target\n this.op = props.op\n this.value = props.value\n }\n readonly target:\n | VarExpression\n | FieldExpression\n | IndexExpression\n | TupleExpression\n | AppStateExpression\n | AppAccountStateExpression\n | BoxValueExpression\n readonly op: BigUIntBinaryOperator\n readonly value: Expression\n accept<T>(visitor: StatementVisitor<T>): T {\n return visitor.visitBigUIntAugmentedAssignment(this)\n }\n}\nexport class BytesAugmentedAssignment extends Statement {\n constructor(props: Props<BytesAugmentedAssignment>) {\n super(props)\n this.target = props.target\n this.op = props.op\n this.value = props.value\n }\n readonly target:\n | VarExpression\n | FieldExpression\n | IndexExpression\n | TupleExpression\n | AppStateExpression\n | AppAccountStateExpression\n | BoxValueExpression\n readonly op: BytesBinaryOperator\n readonly value: Expression\n accept<T>(visitor: StatementVisitor<T>): T {\n return visitor.visitBytesAugmentedAssignment(this)\n }\n}\nexport class Emit extends Expression {\n constructor(props: Props<Emit>) {\n super(props)\n this.signature = props.signature\n this.value = props.value\n this.wtype = props.wtype\n }\n readonly signature: string\n readonly value: Expression\n readonly wtype: wtypes.WType\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitEmit(this)\n }\n}\nexport class Range extends Expression {\n constructor(props: Props<Range>) {\n super(props)\n this.wtype = props.wtype\n this.start = props.start\n this.stop = props.stop\n this.step = props.step\n }\n readonly wtype: wtypes.WType\n readonly start: Expression\n readonly stop: Expression\n readonly step: Expression\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitRange(this)\n }\n}\nexport class Enumeration extends Expression {\n constructor(props: Props<Enumeration>) {\n super(props)\n this.expr = props.expr\n this.wtype = props.wtype\n }\n readonly expr: Expression\n readonly wtype: wtypes.WEnumeration\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitEnumeration(this)\n }\n}\nexport class Reversed extends Expression {\n constructor(props: Props<Reversed>) {\n super(props)\n this.expr = props.expr\n this.wtype = props.wtype\n }\n readonly expr: Expression\n readonly wtype: wtypes.WType\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitReversed(this)\n }\n}\nexport class ForInLoop extends Statement {\n constructor(props: Props<ForInLoop>) {\n super(props)\n this.sequence = props.sequence\n this.items = props.items\n this.loopBody = props.loopBody\n }\n readonly sequence: Expression\n readonly items:\n | VarExpression\n | FieldExpression\n | IndexExpression\n | TupleExpression\n | AppStateExpression\n | AppAccountStateExpression\n | BoxValueExpression\n readonly loopBody: Block\n accept<T>(visitor: StatementVisitor<T>): T {\n return visitor.visitForInLoop(this)\n }\n}\nexport class StateGet extends Expression {\n constructor(props: Props<StateGet>) {\n super(props)\n this.field = props.field\n this.default = props.default\n this.wtype = props.wtype\n }\n readonly field: AppStateExpression | AppAccountStateExpression | BoxValueExpression\n readonly default: Expression\n readonly wtype: wtypes.WType\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitStateGet(this)\n }\n}\nexport class StateGetEx extends Expression {\n constructor(props: Props<StateGetEx>) {\n super(props)\n this.field = props.field\n this.wtype = props.wtype\n }\n readonly field: AppStateExpression | AppAccountStateExpression | BoxValueExpression\n readonly wtype: wtypes.WTuple\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitStateGetEx(this)\n }\n}\nexport class StateExists extends Expression {\n constructor(props: Props<StateExists>) {\n super(props)\n this.field = props.field\n this.wtype = props.wtype\n }\n readonly field: AppStateExpression | AppAccountStateExpression | BoxValueExpression\n readonly wtype: wtypes.WType\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitStateExists(this)\n }\n}\nexport class StateDelete extends Expression {\n constructor(props: Props<StateDelete>) {\n super(props)\n this.field = props.field\n this.wtype = props.wtype\n }\n readonly field: AppStateExpression | AppAccountStateExpression | BoxValueExpression\n readonly wtype: wtypes.WType\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitStateDelete(this)\n }\n}\nexport class NewStruct extends Expression {\n constructor(props: Props<NewStruct>) {\n super(props)\n this.wtype = props.wtype\n this.values = props.values\n }\n readonly wtype: wtypes.ARC4Struct\n readonly values: Map<string, Expression>\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitNewStruct(this)\n }\n}\nexport abstract class RootNode extends Node {\n constructor(props: Props<RootNode>) {\n super(props)\n }\n abstract accept<T>(visitor: RootNodeVisitor<T>): T\n}\nexport class SubroutineArgument {\n constructor(props: Props<SubroutineArgument>) {\n this.name = props.name\n this.sourceLocation = props.sourceLocation\n this.wtype = props.wtype\n }\n readonly name: string\n readonly sourceLocation: SourceLocation\n readonly wtype: wtypes.WType\n}\nexport class MethodDocumentation {\n constructor(props: Props<MethodDocumentation>) {\n this.description = props.description\n this.args = props.args\n this.returns = props.returns\n }\n readonly description: string | null\n readonly args: Map<string, string>\n readonly returns: string | null\n}\nexport abstract class _Function extends Node {\n constructor(props: Props<_Function>) {\n super(props)\n this.args = props.args\n this.returnType = props.returnType\n this.body = props.body\n this.documentation = props.documentation\n this.inline = props.inline\n }\n readonly args: Array<SubroutineArgument>\n readonly returnType: wtypes.WType\n readonly body: Block\n readonly documentation: MethodDocumentation\n readonly inline: boolean | null\n}\nexport class Subroutine extends classes(_Function, RootNode) {\n constructor(props: Props<Subroutine>) {\n super([props], [props])\n this.id = props.id\n this.name = props.name\n }\n readonly id: string\n readonly name: string\n accept<T>(visitor: RootNodeVisitor<T>): T {\n return visitor.visitSubroutine(this)\n }\n}\nexport abstract class ContractMemberNode extends Node {\n constructor(props: Props<ContractMemberNode>) {\n super(props)\n }\n abstract accept<T>(visitor: ContractMemberNodeVisitor<T>): T\n}\nexport class ContractMethod extends classes(_Function, ContractMemberNode) {\n constructor(props: Props<ContractMethod>) {\n super([props], [props])\n this.cref = props.cref\n this.memberName = props.memberName\n this.arc4MethodConfig = props.arc4MethodConfig\n }\n readonly cref: ContractReference\n readonly memberName: string\n readonly arc4MethodConfig: ARC4BareMethodConfig | ARC4ABIMethodConfig | null\n accept<T>(visitor: ContractMemberNodeVisitor<T>): T {\n return visitor.visitContractMethod(this)\n }\n}\nexport class AppStorageDefinition extends ContractMemberNode {\n constructor(props: Props<AppStorageDefinition>) {\n super(props)\n this.memberName = props.memberName\n this.kind = props.kind\n this.storageWtype = props.storageWtype\n this.keyWtype = props.keyWtype\n this.key = props.key\n this.description = props.description\n }\n readonly memberName: string\n readonly kind: AppStorageKind\n readonly storageWtype: wtypes.WType\n readonly keyWtype: wtypes.WType | null\n readonly key: BytesConstant\n readonly description: string | null\n accept<T>(visitor: ContractMemberNodeVisitor<T>): T {\n return visitor.visitAppStorageDefinition(this)\n }\n}\nexport class LogicSignature extends RootNode {\n constructor(props: Props<LogicSignature>) {\n super(props)\n this.id = props.id\n this.shortName = props.shortName\n this.program = props.program\n this.docstring = props.docstring\n this.reservedScratchSpace = props.reservedScratchSpace\n this.avmVersion = props.avmVersion\n }\n readonly id: LogicSigReference\n readonly shortName: string\n readonly program: Subroutine\n readonly docstring: string | null\n readonly reservedScratchSpace: Set<bigint>\n readonly avmVersion: bigint | null\n accept<T>(visitor: RootNodeVisitor<T>): T {\n return visitor.visitLogicSignature(this)\n }\n}\nexport class CompiledContract extends Expression {\n constructor(props: Props<CompiledContract>) {\n super(props)\n this.contract = props.contract\n this.allocationOverrides = props.allocationOverrides\n this.prefix = props.prefix\n this.templateVariables = props.templateVariables\n }\n readonly contract: ContractReference\n readonly allocationOverrides: Map<TxnField, Expression>\n readonly prefix: string | null\n readonly templateVariables: Map<string, Expression>\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitCompiledContract(this)\n }\n}\nexport class CompiledLogicSig extends Expression {\n constructor(props: Props<CompiledLogicSig>) {\n super(props)\n this.logicSig = props.logicSig\n this.prefix = props.prefix\n this.templateVariables = props.templateVariables\n }\n readonly logicSig: LogicSigReference\n readonly prefix: string | null\n readonly templateVariables: Map<string, Expression>\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitCompiledLogicSig(this)\n }\n}\nexport class StateTotals {\n constructor(props: Props<StateTotals>) {\n this.globalUints = props.globalUints\n this.localUints = props.localUints\n this.globalBytes = props.globalBytes\n this.localBytes = props.localBytes\n }\n readonly globalUints: bigint | null\n readonly localUints: bigint | null\n readonly globalBytes: bigint | null\n readonly localBytes: bigint | null\n}\nexport class ARC4Router extends Expression {\n constructor(props: Props<ARC4Router>) {\n super(props)\n this.wtype = props.wtype\n }\n readonly wtype: wtypes.WType\n accept<T>(visitor: ExpressionVisitor<T>): T {\n return visitor.visitARC4Router(this)\n }\n}\nexport class Contract extends RootNode {\n constructor(props: Props<Contract>) {\n super(props)\n this.id = props.id\n this.name = props.name\n this.description = props.description\n this.methodResolutionOrder = props.methodResolutionOrder\n this.approvalProgram = props.approvalProgram\n this.clearProgram = props.clearProgram\n this.methods = props.methods\n this.appState = props.appState\n this.stateTotals = props.stateTotals\n this.reservedScratchSpace = props.reservedScratchSpace\n this.avmVersion = props.avmVersion\n }\n readonly id: ContractReference\n readonly name: string\n readonly description: string | null\n readonly methodResolutionOrder: Array<ContractReference>\n readonly approvalProgram: ContractMethod\n readonly clearProgram: ContractMethod\n readonly methods: Array<ContractMethod>\n readonly appState: Array<AppStorageDefinition>\n readonly stateTotals: StateTotals | null\n readonly reservedScratchSpace: Set<bigint>\n readonly avmVersion: bigint | null\n accept<T>(visitor: RootNodeVisitor<T>): T {\n return visitor.visitContract(this)\n }\n}\nexport enum ARC4CreateOption {\n allow = 1,\n require = 2,\n disallow = 3,\n}\nexport class ARC4BareMethodConfig {\n constructor(props: Props<ARC4BareMethodConfig>) {\n this.sourceLocation = props.sourceLocation\n this.allowedCompletionTypes = props.allowedCompletionTypes\n this.create = props.create\n }\n readonly sourceLocation: SourceLocation\n readonly allowedCompletionTypes: Array<OnCompletionAction>\n readonly create: ARC4CreateOption\n}\nexport class ABIMethodArgConstantDefault {\n constructor(props: Props<ABIMethodArgConstantDefault>) {\n this.value = props.value\n }\n readonly value: Expression\n}\nexport class ABIMethodArgMemberDefault {\n constructor(props: Props<ABIMethodArgMemberDefault>) {\n this.name = props.name\n }\n readonly name: string\n}\nexport class ARC4ABIMethodConfig {\n constructor(props: Props<ARC4ABIMethodConfig>) {\n this.sourceLocation = props.sourceLocation\n this.allowedCompletionTypes = props.allowedCompletionTypes\n this.create = props.create\n this.name = props.name\n this.resourceEncoding = props.resourceEncoding\n this.readonly = props.readonly\n this.defaultArgs = props.defaultArgs\n }\n readonly sourceLocation: SourceLocation\n readonly allowedCompletionTypes: Array<OnCompletionAction>\n readonly create: ARC4CreateOption\n readonly name: string\n readonly resourceEncoding: 'index' | 'value'\n readonly readonly: boolean\n readonly defaultArgs: Map<string, ABIMethodArgMemberDefault | ABIMethodArgConstantDefault>\n}\nexport type Constant = IntegerConstant | DecimalConstant | BoolConstant | BytesConstant | AddressConstant | MethodConstant\nexport type LValue =\n | VarExpression\n | FieldExpression\n | IndexExpression\n | TupleExpression\n | AppStateExpression\n | AppAccountStateExpression\n | BoxValueExpression\nexport type ARC4MethodConfig = ARC4BareMethodConfig | ARC4ABIMethodConfig\nexport type AWST = Subroutine | LogicSignature | Contract\nexport const concreteNodes = {\n expressionStatement: ExpressionStatement,\n block: Block,\n goto: Goto,\n ifElse: IfElse,\n switch: Switch,\n whileLoop: WhileLoop,\n loopExit: LoopExit,\n loopContinue: LoopContinue,\n returnStatement: ReturnStatement,\n assertExpression: AssertExpression,\n integerConstant: IntegerConstant,\n decimalConstant: DecimalConstant,\n boolConstant: BoolConstant,\n bytesConstant: BytesConstant,\n stringConstant: StringConstant,\n voidConstant: VoidConstant,\n templateVar: TemplateVar,\n methodConstant: MethodConstant,\n addressConstant: AddressConstant,\n aRC4Encode: ARC4Encode,\n aRC4Decode: ARC4Decode,\n convertArray: ConvertArray,\n copy: Copy,\n arrayConcat: ArrayConcat,\n arrayExtend: ArrayExtend,\n arrayPop: ArrayPop,\n arrayReplace: ArrayReplace,\n sizeOf: SizeOf,\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 setInnerTransactionFields: SetInnerTransactionFields,\n submitInnerTransaction: SubmitInnerTransaction,\n fieldExpression: FieldExpression,\n indexExpression: IndexExpression,\n sliceExpression: SliceExpression,\n intersectionSliceExpression: IntersectionSliceExpression,\n appStateExpression: AppStateExpression,\n appAccountStateExpression: AppAccountStateExpression,\n boxPrefixedKeyExpression: BoxPrefixedKeyExpression,\n boxValueExpression: BoxValueExpression,\n singleEvaluation: SingleEvaluation,\n reinterpretCast: ReinterpretCast,\n newArray: NewArray,\n arrayLength: ArrayLength,\n conditionalExpression: ConditionalExpression,\n assignmentStatement: AssignmentStatement,\n assignmentExpression: AssignmentExpression,\n commaExpression: CommaExpression,\n numericComparisonExpression: NumericComparisonExpression,\n bytesComparisonExpression: BytesComparisonExpression,\n subroutineID: SubroutineID,\n instanceMethodTarget: InstanceMethodTarget,\n instanceSuperMethodTarget: InstanceSuperMethodTarget,\n contractMethodTarget: ContractMethodTarget,\n callArg: CallArg,\n subroutineCallExpression: SubroutineCallExpression,\n puyaLibData: PuyaLibData,\n puyaLibCall: PuyaLibCall,\n uInt64UnaryOperation: UInt64UnaryOperation,\n uInt64PostfixUnaryOperation: UInt64PostfixUnaryOperation,\n bigUIntPostfixUnaryOperation: BigUIntPostfixUnaryOperation,\n bytesUnaryOperation: BytesUnaryOperation,\n uInt64BinaryOperation: UInt64BinaryOperation,\n bigUIntBinaryOperation: BigUIntBinaryOperation,\n bytesBinaryOperation: BytesBinaryOperation,\n booleanBinaryOperation: BooleanBinaryOperation,\n not: Not,\n uInt64AugmentedAssignment: UInt64AugmentedAssignment,\n bigUIntAugmentedAssignment: BigUIntAugmentedAssignment,\n bytesAugmentedAssignment: BytesAugmentedAssignment,\n emit: Emit,\n range: Range,\n enumeration: Enumeration,\n reversed: Reversed,\n forInLoop: ForInLoop,\n stateGet: StateGet,\n stateGetEx: StateGetEx,\n stateExists: StateExists,\n stateDelete: StateDelete,\n newStruct: NewStruct,\n subroutineArgument: SubroutineArgument,\n methodDocumentation: MethodDocumentation,\n subroutine: Subroutine,\n contractMethod: ContractMethod,\n appStorageDefinition: AppStorageDefinition,\n logicSignature: LogicSignature,\n compiledContract: CompiledContract,\n compiledLogicSig: CompiledLogicSig,\n stateTotals: StateTotals,\n aRC4Router: ARC4Router,\n contract: Contract,\n aRC4BareMethodConfig: ARC4BareMethodConfig,\n aBIMethodArgConstantDefault: ABIMethodArgConstantDefault,\n aBIMethodArgMemberDefault: ABIMethodArgMemberDefault,\n aRC4ABIMethodConfig: ARC4ABIMethodConfig,\n uInt64Constant: IntegerConstant,\n bigUIntConstant: IntegerConstant,\n} as const\nexport interface 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 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 visitARC4Decode(expression: ARC4Decode): T\n visitConvertArray(expression: ConvertArray): T\n visitCopy(expression: Copy): T\n visitArrayConcat(expression: ArrayConcat): T\n visitArrayExtend(expression: ArrayExtend): T\n visitArrayPop(expression: ArrayPop): T\n visitArrayReplace(expression: ArrayReplace): T\n visitSizeOf(expression: SizeOf): 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 visitSetInnerTransactionFields(expression: SetInnerTransactionFields): 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 visitBoxPrefixedKeyExpression(expression: BoxPrefixedKeyExpression): T\n visitBoxValueExpression(expression: BoxValueExpression): T\n visitSingleEvaluation(expression: SingleEvaluation): T\n visitReinterpretCast(expression: ReinterpretCast): T\n visitNewArray(expression: NewArray): T\n visitArrayLength(expression: ArrayLength): T\n visitConditionalExpression(expression: ConditionalExpression): T\n visitAssignmentExpression(expression: AssignmentExpression): T\n visitCommaExpression(expression: CommaExpression): 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 RootNodeVisitor<T> {\n visitSubroutine(rootNode: Subroutine): T\n visitLogicSignature(rootNode: LogicSignature): T\n visitContract(rootNode: Contract): T\n}\nexport interface ContractMemberNodeVisitor<T> {\n visitContractMethod(contractMemberNode: ContractMethod): T\n visitAppStorageDefinition(contractMemberNode: AppStorageDefinition): T\n}\n","import { BigUIntBinaryOperator, BinaryBooleanOperator, UInt64BinaryOperator } from './nodes'\n\nexport const constantEvaluation = {\n booleanBinary(op: BinaryBooleanOperator, left: boolean, right: boolean) {\n switch (op) {\n case BinaryBooleanOperator.and:\n return left && right\n case BinaryBooleanOperator.or:\n return left || right\n }\n },\n uint64Binary(op: UInt64BinaryOperator, left: bigint, right: bigint) {\n switch (op) {\n case UInt64BinaryOperator.add:\n return left + right\n case UInt64BinaryOperator.sub:\n return left - right\n case UInt64BinaryOperator.mult:\n return left * right\n case UInt64BinaryOperator.floorDiv:\n return left / right\n case UInt64BinaryOperator.mod:\n return left % right\n case UInt64BinaryOperator.pow:\n return left ** right\n case UInt64BinaryOperator.lshift:\n return left << right\n case UInt64BinaryOperator.rshift:\n return left >> right\n case UInt64BinaryOperator.bitOr:\n return left | right\n case UInt64BinaryOperator.bitXor:\n return left ^ right\n case UInt64BinaryOperator.bitAnd:\n return left & right\n }\n },\n biguintBinary(op: BigUIntBinaryOperator, left: bigint, right: bigint) {\n switch (op) {\n case BigUIntBinaryOperator.add:\n return left + right\n case BigUIntBinaryOperator.sub:\n return left - right\n case BigUIntBinaryOperator.mult:\n return left * right\n case BigUIntBinaryOperator.floorDiv:\n return left / right\n case BigUIntBinaryOperator.mod:\n return left % right\n case BigUIntBinaryOperator.bitOr:\n return left | right\n case BigUIntBinaryOperator.bitXor:\n return left ^ right\n case BigUIntBinaryOperator.bitAnd:\n return left & right\n }\n },\n}\n","import { getInnerTransactionType } from '../awst_build/eb/transactions/util'\nimport { anyItxnType } from '../awst_build/ptypes'\nimport { CodeError } from '../errors'\nimport type { DeliberateAny, Props } from '../typescript-helpers'\nimport { codeInvariant, instanceOfAny, invariant } from '../util'\nimport { constantEvaluation } from './constant-evaluation'\nimport type { Expression, Statement } from './nodes'\nimport {\n ARC4Decode,\n ARC4Encode,\n ArrayLength,\n ArrayReplace,\n AssignmentExpression,\n AssignmentStatement,\n BigUIntBinaryOperation,\n Block,\n BoolConstant,\n BooleanBinaryOperation,\n BytesComparisonExpression,\n BytesConstant,\n BytesEncoding,\n CheckedMaybe,\n CommaExpression,\n concreteNodes,\n Copy,\n ExpressionStatement,\n IntegerConstant,\n MethodDocumentation,\n Not,\n NumericComparisonExpression,\n ReinterpretCast,\n SingleEvaluation,\n StringConstant,\n SubmitInnerTransaction,\n TupleExpression,\n TupleItemExpression,\n UInt64BinaryOperation,\n VoidConstant,\n} from './nodes'\nimport type { SourceLocation } from './source-location'\nimport { wtypes } from './wtypes'\nimport WInnerTransactionFields = wtypes.WInnerTransactionFields\nimport WTuple = wtypes.WTuple\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 | IntegerConstant {\n if (props.left instanceof IntegerConstant && props.right instanceof IntegerConstant) {\n invariant(props.left.wtype.equals(wtypes.uint64WType) && props.right.wtype.equals(wtypes.uint64WType), 'left & right must be uint64')\n return new IntegerConstant({\n value: constantEvaluation.uint64Binary(props.op, props.left.value, props.right.value),\n tealAlias: null,\n sourceLocation: props.sourceLocation,\n wtype: wtypes.uint64WType,\n })\n }\n return new UInt64BinaryOperation({\n ...props,\n wtype: wtypes.uint64WType,\n })\n },\n bigUIntBinaryOperation(props: Omit<Props<BigUIntBinaryOperation>, 'wtype'>): BigUIntBinaryOperation | IntegerConstant {\n if (props.left instanceof IntegerConstant && props.right instanceof IntegerConstant) {\n invariant(\n props.left.wtype.equals(wtypes.biguintWType) && props.right.wtype.equals(wtypes.biguintWType),\n 'left & right must be biguint',\n )\n return new IntegerConstant({\n value: constantEvaluation.biguintBinary(props.op, props.left.value, props.right.value),\n tealAlias: null,\n sourceLocation: props.sourceLocation,\n wtype: wtypes.biguintWType,\n })\n }\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 // Replace ExpressionStatement(AssignmentExpression) with AssignmentStatement\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 if (props.left instanceof BoolConstant && props.right instanceof BoolConstant) {\n return new BoolConstant({\n value: constantEvaluation.booleanBinary(props.op, props.left.value, props.right.value),\n sourceLocation: props.sourceLocation,\n wtype: wtypes.boolWType,\n })\n }\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) }),\n })\n },\n methodDocumentation(props?: { description?: string | null; args?: Map<string, string>; returns?: string | null }) {\n return new MethodDocumentation({\n args: props?.args ?? new Map(),\n description: props?.description ?? null,\n returns: props?.returns ?? null,\n })\n },\n copy({ value, sourceLocation }: { value: Expression; sourceLocation: SourceLocation }) {\n return new Copy({\n value,\n sourceLocation,\n wtype: value.wtype,\n })\n },\n checkedMaybe({ expr, comment }: { expr: Expression; comment: string }) {\n invariant(expr.wtype instanceof wtypes.WTuple && expr.wtype.types.length === 2, 'expr WType must be WTuple of 2')\n invariant(expr.wtype.types[1].equals(wtypes.boolWType), '2nd tuple item type must be bool')\n return new CheckedMaybe({\n expr,\n comment,\n sourceLocation: expr.sourceLocation,\n wtype: expr.wtype.types[0],\n })\n },\n tupleItemExpression(props: Omit<Props<TupleItemExpression>, 'wtype'>) {\n invariant(\n instanceOfAny(props.base.wtype, wtypes.WTuple, wtypes.ARC4Tuple) && props.base.wtype.types.length > Number(props.index),\n 'expr.base must be tuple type with length greater than index',\n )\n return new TupleItemExpression({\n ...props,\n wtype: props.base.wtype.types[Number(props.index)],\n })\n },\n reinterpretCast({ expr, wtype, sourceLocation }: { expr: Expression; wtype: wtypes.WType; sourceLocation: SourceLocation }) {\n if (expr instanceof BytesConstant) {\n return new BytesConstant({\n ...expr,\n wtype,\n sourceLocation,\n })\n }\n\n return new ReinterpretCast({\n expr,\n wtype,\n sourceLocation,\n })\n },\n arrayLength({ array, sourceLocation }: { array: Expression; sourceLocation: SourceLocation }) {\n return new ArrayLength({\n array,\n sourceLocation,\n wtype: wtypes.uint64WType,\n })\n },\n arrayReplace({\n base,\n index,\n value,\n sourceLocation,\n }: {\n base: Expression\n index: Expression\n value: Expression\n sourceLocation: SourceLocation\n }) {\n invariant(base.wtype instanceof wtypes.ARC4DynamicArray, 'base must have wtype of ARC4DynamicArray', base.sourceLocation)\n return new ArrayReplace({\n base,\n index,\n value,\n sourceLocation,\n wtype: base.wtype,\n })\n },\n submitInnerTransaction({ itxns, sourceLocation }: Omit<Props<SubmitInnerTransaction>, 'wtype'>) {\n const itxnWTypes = itxns.map(({ wtype }, index) => {\n invariant(\n wtype instanceof WInnerTransactionFields,\n `WType at index ${index} must be WInnerTransactionFields with type`,\n sourceLocation,\n )\n return wtype.transactionType === null ? anyItxnType.wtype : getInnerTransactionType(wtype.transactionType).wtype\n })\n return new SubmitInnerTransaction({\n itxns,\n sourceLocation,\n wtype: itxnWTypes.length === 1 ? itxnWTypes[0] : new WTuple({ types: itxnWTypes }),\n })\n },\n commaExpression({ expressions, sourceLocation }: Omit<Props<CommaExpression>, 'wtype'>) {\n const wtype = expressions.at(-1)?.wtype\n\n invariant(wtype, 'Must have at least 1 expression')\n\n return new CommaExpression({\n expressions,\n sourceLocation,\n wtype,\n })\n },\n aRC4Encode(props: Omit<Props<ARC4Encode>, 'errorMessage'>) {\n return new ARC4Encode({\n ...props,\n errorMessage: null,\n })\n },\n aRC4Decode(props: Omit<Props<ARC4Decode>, 'errorMessage'>) {\n return new ARC4Decode({\n ...props,\n errorMessage: null,\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 { SourceLocation } from '../../awst/source-location'\nimport { wtypes } from '../../awst/wtypes'\nimport { Constants } from '../../constants'\nimport { codeInvariant, invariant } from '../../util'\nimport { GenericPType, PType } from './base'\nimport {\n accountPType,\n applicationItxnType,\n ArrayPType,\n biguintPType,\n boolPType,\n bytesPType,\n compiledContractType,\n ContractClassPType,\n ImmutableObjectPType,\n LibClassType,\n LibFunctionType,\n MutableObjectPType,\n MutableTuplePType,\n NumericLiteralPType,\n ReadonlyArrayPType,\n ReadonlyTuplePType,\n stringPType,\n uint64PType,\n voidPType,\n} from './index'\nimport type { PTypeVisitor } from './visitor'\n\nexport const ByteClass = new LibClassType({\n name: 'Byte',\n module: Constants.moduleNames.algoTs.arc4.encodedTypes,\n})\nexport const UintN8Class = new LibClassType({\n name: 'Uint8',\n module: Constants.moduleNames.algoTs.arc4.encodedTypes,\n})\nexport const UintN16Class = new LibClassType({\n name: 'Uint16',\n module: Constants.moduleNames.algoTs.arc4.encodedTypes,\n})\nexport const UintN32Class = new LibClassType({\n name: 'Uint32',\n module: Constants.moduleNames.algoTs.arc4.encodedTypes,\n})\nexport const UintN64Class = new LibClassType({\n name: 'Uint64',\n module: Constants.moduleNames.algoTs.arc4.encodedTypes,\n})\nexport const UintN128Class = new LibClassType({\n name: 'Uint128',\n module: Constants.moduleNames.algoTs.arc4.encodedTypes,\n})\nexport const UintN256Class = new LibClassType({\n name: 'Uint256',\n module: Constants.moduleNames.algoTs.arc4.encodedTypes,\n})\nexport abstract class ARC4EncodedType extends PType {\n abstract readonly wtype: wtypes.ARC4Type\n abstract readonly nativeType: PType | undefined\n abstract readonly abiTypeSignature: string\n\n protected static buildAbiTupleSignature(types: ARC4EncodedType[]): string {\n return `(${types.map((t) => t.abiTypeSignature).join(',')})`\n }\n}\n\nexport abstract class ARC4ArrayType extends ARC4EncodedType {\n readonly elementType: ARC4EncodedType\n constructor({ elementType }: { elementType: ARC4EncodedType }) {\n super()\n this.elementType = elementType\n }\n}\n\nexport class ARC4InstanceType extends ARC4EncodedType {\n readonly [PType.IdSymbol] = 'ARC4InstanceType'\n readonly wtype: wtypes.ARC4Type\n readonly name: string\n readonly module = Constants.moduleNames.algoTs.arc4.encodedTypes\n readonly singleton = false\n readonly nativeType: PType\n\n readonly abiTypeSignature: string\n constructor({ wtype, nativeType, name, abiName }: { wtype: wtypes.ARC4Type; name: string; nativeType: PType; abiName: string }) {\n super()\n this.wtype = wtype\n this.name = name\n this.nativeType = nativeType\n this.abiTypeSignature = abiName\n }\n\n accept<T>(visitor: PTypeVisitor<T>): T {\n return visitor.visitARC4InstanceType(this)\n }\n}\n\nexport const ARC4BoolClass = new LibClassType({\n name: 'Bool',\n module: Constants.moduleNames.algoTs.arc4.encodedTypes,\n})\n\nexport const ARC4StrClass = new LibClassType({\n name: 'Str',\n module: Constants.moduleNames.algoTs.arc4.encodedTypes,\n})\n\nexport const arc4BooleanType = new ARC4InstanceType({\n name: 'Bool',\n wtype: wtypes.arc4BooleanWType,\n nativeType: boolPType,\n abiName: 'bool',\n})\n\nexport const arc4StringType = new ARC4InstanceType({\n name: 'Str',\n wtype: wtypes.arc4StringAliasWType,\n nativeType: stringPType,\n abiName: 'string',\n})\n\nexport class ARC4StructClass extends PType {\n readonly [PType.IdSymbol] = 'ARC4StructClass'\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 accept<T>(visitor: PTypeVisitor<T>): T {\n return visitor.visitARC4StructClass(this)\n }\n}\n\nexport class ARC4StructType extends ARC4EncodedType {\n readonly [PType.IdSymbol] = 'ARC4StructType'\n readonly name: string\n readonly module: string\n readonly description: string | undefined\n readonly singleton = false\n readonly fields: Record<string, ARC4EncodedType>\n readonly sourceLocation: SourceLocation | undefined\n readonly frozen: boolean\n\n readonly abiTypeSignature: string\n constructor({\n name,\n frozen,\n module,\n fields,\n description,\n sourceLocation,\n }: {\n name: string\n module: string\n frozen: boolean\n description: string | undefined\n fields: Record<string, ARC4EncodedType>\n sourceLocation?: SourceLocation\n }) {\n super()\n this.name = name\n this.module = module\n this.frozen = frozen\n this.fields = fields\n this.description = description\n this.sourceLocation = sourceLocation\n\n this.abiTypeSignature = ARC4EncodedType.buildAbiTupleSignature(Object.values(fields))\n }\n\n get nativeType(): MutableObjectPType {\n return new MutableObjectPType({ properties: this.fields })\n }\n\n get wtype(): wtypes.ARC4Struct {\n return new wtypes.ARC4Struct({\n name: this.name,\n fields: Object.fromEntries(Object.entries(this.fields).map(([f, t]) => [f, t.wtype])),\n sourceLocation: this.sourceLocation,\n desc: this.description ?? null,\n frozen: this.frozen,\n })\n }\n\n accept<T>(visitor: PTypeVisitor<T>): T {\n return visitor.visitARC4StructType(this)\n }\n}\n\nexport const arc4StructBaseType = new ARC4StructType({\n name: 'StructBase',\n module: Constants.moduleNames.algoTs.arc4.encodedTypes,\n fields: {},\n description: undefined,\n frozen: false,\n})\n\nexport const Arc4TupleGeneric = new GenericPType({\n name: 'Tuple',\n module: Constants.moduleNames.algoTs.arc4.encodedTypes,\n parameterise([tupleType, ...rest]: readonly PType[]) {\n codeInvariant(tupleType && !rest.length, `${this.name} expects 1 generic parameter`)\n codeInvariant(\n tupleType instanceof ReadonlyTuplePType || tupleType instanceof MutableTuplePType,\n `${this.name} generic parameter must be a native tuple type`,\n )\n const encodedTypes = tupleType.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 [PType.IdSymbol] = 'ARC4TupleType'\n readonly name: string\n readonly module = Constants.moduleNames.algoTs.arc4.encodedTypes\n readonly singleton = false\n readonly items: ARC4EncodedType[]\n readonly sourceLocation: SourceLocation | undefined\n\n readonly nativeType: ReadonlyTuplePType\n readonly abiTypeSignature: string\n\n constructor({ types, sourceLocation }: { types: ARC4EncodedType[]; sourceLocation?: SourceLocation }) {\n super()\n this.items = types\n this.name = `Tuple<${this.items.map((i) => i.name).join(',')}>`\n this.sourceLocation = sourceLocation\n this.nativeType = new ReadonlyTuplePType({ items: this.items })\n\n this.abiTypeSignature = ARC4EncodedType.buildAbiTupleSignature(types)\n }\n\n get wtype(): wtypes.ARC4Tuple {\n return new wtypes.ARC4Tuple({\n types: this.items.map((t) => t.wtype),\n sourceLocation: this.sourceLocation,\n immutable: false,\n })\n }\n\n accept<T>(visitor: PTypeVisitor<T>): T {\n return visitor.visitARC4TupleType(this)\n }\n}\nexport const UintNGeneric = new GenericPType({\n name: 'Uint',\n module: Constants.moduleNames.algoTs.arc4.encodedTypes,\n parameterise(typeArgs: readonly 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 [PType.IdSymbol] = 'UintNType'\n readonly module = Constants.moduleNames.algoTs.arc4.encodedTypes\n readonly n: bigint\n readonly name: string\n readonly singleton = false\n readonly wtype: wtypes.ARC4UIntN\n readonly abiTypeSignature: string\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\n this.name = name ?? `Uint<${n}>`\n this.wtype = wtype ?? new wtypes.ARC4UIntN({ n: this.n })\n this.abiTypeSignature = wtype?.arc4Alias ?? `uint${n}`\n }\n\n accept<T>(visitor: PTypeVisitor<T>): T {\n return visitor.visitUintNType(this)\n }\n}\nexport const arc4Uint64 = new UintNType({ n: 64n })\nexport const UFixedNxMGeneric = new GenericPType({\n name: 'UFixed',\n module: Constants.moduleNames.algoTs.arc4.encodedTypes,\n parameterise(typeArgs: readonly 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 [PType.IdSymbol] = 'UFixedNxMType'\n readonly module = Constants.moduleNames.algoTs.arc4.encodedTypes\n readonly n: bigint\n readonly m: bigint\n readonly name: string\n readonly singleton = false\n readonly wtype: wtypes.ARC4UFixedNxM\n readonly abiTypeSignature: string\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\n this.name = `${UFixedNxMGeneric.name}<${n}, ${m}>`\n this.wtype = new wtypes.ARC4UFixedNxM({ n: this.n, m: this.m })\n this.abiTypeSignature = `ufixed${n}x${m}`\n }\n\n accept<T>(visitor: PTypeVisitor<T>): T {\n return visitor.visitUFixedNxMType(this)\n }\n}\n\nexport const arc4ByteAlias = new UintNType({ n: 8n, wtype: wtypes.arc4ByteAliasWType, name: 'Byte' })\n\nexport const DynamicArrayGeneric = new GenericPType({\n name: 'DynamicArray',\n module: Constants.moduleNames.algoTs.arc4.encodedTypes,\n parameterise: (typeArgs: readonly PType[]): DynamicArrayType => {\n codeInvariant(typeArgs.length === 1, 'DynamicArray type expects exactly one type parameter')\n const [elementType] = typeArgs\n codeInvariant(\n elementType instanceof ARC4EncodedType,\n `Generic type param for DynamicArray must be an ARC4 encoded type. Inferred type is ${elementType.name}`,\n )\n\n return new DynamicArrayType({ elementType: elementType })\n },\n})\nexport class DynamicArrayType extends ARC4ArrayType {\n readonly [PType.IdSymbol] = 'DynamicArrayType'\n readonly module = Constants.moduleNames.algoTs.arc4.encodedTypes\n\n readonly immutable: boolean\n readonly name: string\n readonly singleton = false\n readonly sourceLocation: SourceLocation | undefined\n readonly nativeType: PType\n readonly wtype: wtypes.ARC4DynamicArray\n readonly abiTypeSignature: string\n\n constructor({\n elementType,\n nativeType,\n sourceLocation,\n name,\n immutable,\n }: {\n elementType: ARC4EncodedType\n sourceLocation?: SourceLocation\n name?: string\n immutable?: boolean\n nativeType?: PType\n }) {\n super({\n elementType,\n })\n this.immutable = immutable ?? false\n this.nativeType = nativeType ?? new ArrayPType({ elementType })\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 })\n this.abiTypeSignature = `${this.elementType.abiTypeSignature}[]`\n }\n\n accept<T>(visitor: PTypeVisitor<T>): T {\n return visitor.visitDynamicArrayType(this)\n }\n}\n\nexport const StaticArrayGeneric = new GenericPType({\n name: 'StaticArray',\n module: Constants.moduleNames.algoTs.arc4.encodedTypes,\n parameterise: (typeArgs: readonly PType[]): StaticArrayType => {\n codeInvariant(typeArgs.length === 2, 'StaticArray type expects exactly one type parameters')\n const [elementType, arraySize] = typeArgs\n codeInvariant(\n elementType instanceof ARC4EncodedType,\n `Element type generic type param for StaticArray must be an ARC4 encoded type. Inferred type is ${elementType.name}`,\n )\n codeInvariant(\n arraySize instanceof NumericLiteralPType,\n `Array size generic type param for StaticArray must be a literal number. Inferred type is ${arraySize.name}`,\n )\n\n return new StaticArrayType({ arraySize: arraySize.literalValue, elementType })\n },\n})\nexport class StaticArrayType extends ARC4ArrayType {\n readonly [PType.IdSymbol] = 'StaticArrayType'\n readonly module = Constants.moduleNames.algoTs.arc4.encodedTypes\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\n\n readonly abiTypeSignature: string\n constructor({\n elementType,\n arraySize,\n sourceLocation,\n wtype,\n name,\n immutable,\n nativeType,\n arc4Alias,\n }: {\n immutable?: boolean\n elementType: ARC4EncodedType\n arraySize: bigint\n sourceLocation?: SourceLocation\n wtype?: wtypes.ARC4StaticArray\n name?: string\n nativeType?: PType\n arc4Alias?: string\n }) {\n codeInvariant(arraySize >= 0, 'StaticArray length must be greater than or equal to 0')\n super({ elementType })\n this.immutable = immutable ?? false\n this.arraySize = arraySize\n this.name = name ?? `StaticArray<${elementType}, ${arraySize}>`\n this.sourceLocation = sourceLocation\n this.nativeType = nativeType ?? (this.immutable ? new ReadonlyArrayPType({ elementType }) : new ArrayPType({ elementType }))\n this.wtype =\n wtype ??\n new wtypes.ARC4StaticArray({\n elementType: this.elementType.wtype,\n arraySize: this.arraySize,\n immutable: this.immutable,\n })\n\n this.abiTypeSignature = arc4Alias ?? `${this.elementType.abiTypeSignature}[${this.arraySize}]`\n }\n\n accept<T>(visitor: PTypeVisitor<T>): T {\n return visitor.visitStaticArrayType(this)\n }\n}\nexport const arc4AddressAlias = new StaticArrayType({\n arraySize: BigInt(Constants.algo.addressLength),\n elementType: arc4ByteAlias,\n wtype: wtypes.arc4AddressAliasWType,\n nativeType: accountPType,\n immutable: true,\n arc4Alias: 'address',\n name: 'Address',\n})\n\nexport const AddressClass = new LibClassType({\n name: 'Address',\n module: Constants.moduleNames.algoTs.arc4.encodedTypes,\n})\n\nexport const StaticBytesGeneric = new GenericPType({\n name: 'StaticBytes',\n module: Constants.moduleNames.algoTs.arc4.encodedTypes,\n parameterise: (typeArgs: readonly 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 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.moduleNames.algoTs.arc4.encodedTypes,\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.moduleNames.algoTs.arc4.index,\n})\n\nexport const encodeArc4Function = new LibFunctionType({\n name: 'encodeArc4',\n module: Constants.moduleNames.algoTs.arc4.index,\n})\nexport const sizeOfFunction = new LibFunctionType({\n name: 'sizeOf',\n module: Constants.moduleNames.algoTs.arc4.index,\n})\n\nexport const decodeArc4Function = new LibFunctionType({\n name: 'decodeArc4',\n module: Constants.moduleNames.algoTs.arc4.index,\n})\n\nexport const methodSelectorFunction = new LibFunctionType({\n name: 'methodSelector',\n module: Constants.moduleNames.algoTs.arc4.index,\n})\n\nexport const abiCallFunction = new LibFunctionType({\n name: 'abiCall',\n module: Constants.moduleNames.algoTs.arc4.c2c,\n})\nexport const compileArc4Function = new LibFunctionType({\n name: 'compileArc4',\n module: Constants.moduleNames.algoTs.arc4.c2c,\n})\n\nexport const ContractProxyGeneric = new GenericPType({\n name: 'ContractProxy',\n module: Constants.moduleNames.algoTs.arc4.c2c,\n parameterise(args: readonly PType[]) {\n invariant(args.length === 1, 'ContractProxy expects exactly 1 type arg')\n const [typeArg] = args\n invariant(typeArg instanceof ContractClassPType && typeArg.isARC4, 'Contract Proxy generic type arg must extend arc4 Contract type')\n return new ContractProxyType({ contractType: typeArg })\n },\n})\n\nexport class ContractProxyType extends PType {\n readonly [PType.IdSymbol] = 'ContractProxyType'\n readonly name: string\n readonly module = Constants.moduleNames.algoTs.arc4.c2c\n readonly wtype: wtypes.WTuple\n readonly singleton = false\n readonly contractType: ContractClassPType\n constructor({ contractType }: { contractType: ContractClassPType }) {\n super()\n this.name = `ContractProxy<${contractType.name}>`\n\n this.wtype = compiledContractType.wtype\n this.contractType = contractType\n }\n\n accept<T>(visitor: PTypeVisitor<T>): T {\n return visitor.visitContractProxyType(this)\n }\n}\n\nexport const TypedApplicationCallResponseGeneric = new GenericPType({\n name: 'TypedApplicationCallResponse',\n module: Constants.moduleNames.algoTs.arc4.c2c,\n parameterise(args: readonly PType[]) {\n invariant(args.length === 1, 'TypedApplicationCallResponse expects exactly 1 type arg')\n const [typeArg] = args\n return new TypedApplicationCallResponseType({ returnValue: typeArg })\n },\n})\n\nexport class TypedApplicationCallResponseType extends ImmutableObjectPType {\n readonly name: string\n readonly module = Constants.moduleNames.algoTs.arc4.c2c\n readonly singleton = false\n readonly returnValue: PType\n\n constructor({ returnValue }: { returnValue: PType }) {\n super({\n properties: returnValue.equals(voidPType)\n ? { itxn: applicationItxnType }\n : {\n itxn: applicationItxnType,\n returnValue,\n },\n })\n this.name = `TypedApplicationCallResponseType<${returnValue.name}>`\n this.returnValue = returnValue\n }\n}\n","import type { ResourceEncoding } from '../awst'\nimport { nodeFactory } from '../awst/node-factory'\nimport type { ARC4ABIMethodConfig } 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 type { ABICompatiblePType, FunctionPType, PType } from './ptypes'\nimport {\n ABICompatibleInstanceType,\n accountPType,\n applicationPType,\n ArrayPType,\n assetPType,\n biguintPType,\n boolPType,\n BytesPType,\n FixedArrayPType,\n GroupTransactionPType,\n ImmutableObjectPType,\n MutableObjectPType,\n MutableTuplePType,\n ReadonlyArrayPType,\n ReadonlyTuplePType,\n stringPType,\n TransientType,\n uint64PType,\n voidPType,\n} from './ptypes'\nimport {\n arc4AddressAlias,\n arc4BooleanType,\n ARC4EncodedType,\n arc4StringType,\n ARC4StructType,\n ARC4TupleType,\n arc4Uint64,\n DynamicArrayType,\n DynamicBytesType,\n StaticArrayType,\n StaticBytesType,\n UintNType,\n} from './ptypes/arc4-types'\n\n/**\n * For a given ptype, return the equivalent ABI compatible type - or error if there is no compatible type\n * @param ptype The type of the parameter\n * @param direction The direction of the parameter (in for method args, out for method returns)\n * @param resourceEncoding The encoding strategy for the foreign resource types (App, Asset, Account)\n * @param sourceLocation The location of the method or parameter, for use in error metadata\n */\nexport function ptypeToAbiPType(\n ptype: PType,\n direction: 'in' | 'out',\n resourceEncoding: ResourceEncoding,\n sourceLocation: SourceLocation,\n): ABICompatiblePType {\n if (ptype instanceof ARC4EncodedType) return ptype\n if (ptype instanceof GroupTransactionPType) {\n codeInvariant(direction === 'in', `${ptype.name} cannot be used as an ABI return type`, sourceLocation)\n return ptype\n }\n if (ptype.equalsOneOf(applicationPType, assetPType)) {\n invariant(ptype instanceof ABICompatibleInstanceType, 'application and asset are all ABICompatibleInstanceType')\n if (resourceEncoding === 'index' && direction === 'in') {\n return ptype\n }\n return arc4Uint64\n }\n if (ptype.equals(accountPType)) {\n invariant(ptype instanceof ABICompatibleInstanceType, 'account is ABICompatibleInstanceType')\n if (resourceEncoding === 'index' && direction === 'in') {\n return ptype\n }\n return arc4AddressAlias\n }\n if (ptype.equals(voidPType)) {\n codeInvariant(direction === 'out', `${ptype.name} cannot be used as an ABI param type`, sourceLocation)\n return voidPType\n }\n if (isArc4EncodableType(ptype)) {\n return ptypeToArc4EncodedType(ptype, sourceLocation)\n }\n throw new CodeError(`${ptype} cannot be used as an ABI ${direction === 'in' ? 'param' : 'return'} type`, { sourceLocation })\n}\n\n/**\n * Generate a methodConstant node for the given function, making use of the ARC4ABIMethodConfig\n * @param functionType The function ptype\n * @param arc4Config ARC4 method config\n * @param sourceLocation The source location of the code generating the constant,\n */\nexport function buildArc4MethodConstant(functionType: FunctionPType, arc4Config: ARC4ABIMethodConfig, sourceLocation: SourceLocation) {\n const params = functionType.parameters\n .map(([_, ptype]) => getABITypeName(ptype, 'in', arc4Config.resourceEncoding, sourceLocation))\n .join(',')\n const returnType = getABITypeName(functionType.returnType, 'out', arc4Config.resourceEncoding, sourceLocation)\n return nodeFactory.methodConstant({\n value: `${arc4Config.name}(${params})${returnType}`,\n wtype: new wtypes.BytesWType({ length: 4n }),\n sourceLocation,\n })\n}\n\n/**\n * Get the ARC4 type name for a ptype, or throw if the ptype is not usable in an ABI method.\n * @param ptype The ptype of the parameter\n * @param direction The direction of the parameter (in for method args, out for method returns)\n * @param resourceEncoding The encoding strategy for the foreign resource types (App, Asset, Account)\n * @param sourceLocation The location of the method or parameter, for use in error metadata\n */\nexport function getABITypeName(\n ptype: PType,\n direction: 'in' | 'out',\n resourceEncoding: ResourceEncoding,\n sourceLocation: SourceLocation,\n): string {\n return ptypeToAbiPType(ptype, direction, resourceEncoding, sourceLocation).abiTypeSignature\n}\n\n/**\n * Is the given type an ARC4 encoded type, or can it be encoded to one\n * @param ptype The type to check\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 instanceof BytesPType) return true\n if (ptype.equals(stringPType)) return true\n if (ptype.equals(assetPType)) return true\n if (ptype.equals(applicationPType)) return true\n if (ptype.equals(accountPType)) return true\n if (ptype instanceof ReadonlyTuplePType) return ptype.items.every((i) => isArc4EncodableType(i))\n if (ptype instanceof MutableTuplePType) return ptype.items.every((i) => isArc4EncodableType(i))\n if (ptype instanceof ImmutableObjectPType) return ptype.orderedProperties().every(([, pt]) => isArc4EncodableType(pt))\n if (ptype instanceof MutableObjectPType) return ptype.orderedProperties().every(([, pt]) => isArc4EncodableType(pt))\n if (ptype instanceof ArrayPType || ptype instanceof FixedArrayPType || ptype instanceof ReadonlyArrayPType)\n return isArc4EncodableType(ptype.elementType)\n return false\n}\n\n/**\n * For a given type, return the arc4 encoded version of that type\n * @param ptype The type to be encoded\n * @param sourceLocation The source location triggering the conversion\n */\nexport function ptypeToArc4EncodedType(ptype: ReadonlyTuplePType, sourceLocation: SourceLocation): ARC4TupleType\nexport function ptypeToArc4EncodedType(ptype: MutableTuplePType, sourceLocation: SourceLocation): ARC4TupleType\nexport function ptypeToArc4EncodedType(ptype: ImmutableObjectPType, sourceLocation: SourceLocation): ARC4StructType\nexport function ptypeToArc4EncodedType(ptype: ArrayPType, sourceLocation: SourceLocation): DynamicArrayType\nexport function ptypeToArc4EncodedType(ptype: ReadonlyArrayPType, sourceLocation: SourceLocation): DynamicArrayType\nexport function ptypeToArc4EncodedType(ptype: FixedArrayPType, sourceLocation: SourceLocation): StaticArrayType\nexport function ptypeToArc4EncodedType<T extends ARC4EncodedType>(ptype: T, sourceLocation: SourceLocation): T\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 instanceof BytesPType) return ptype.length === null ? DynamicBytesType : new StaticBytesType({ length: ptype.length })\n if (ptype.equals(stringPType)) return arc4StringType\n if (ptype.equals(assetPType)) return arc4Uint64\n if (ptype.equals(applicationPType)) return arc4Uint64\n if (ptype.equals(accountPType)) return arc4AddressAlias\n if (ptype instanceof TransientType) {\n throw new CodeError(ptype.expressionMessage, { sourceLocation })\n }\n if (ptype instanceof ArrayPType)\n return new DynamicArrayType({\n elementType: ptypeToArc4EncodedType(ptype.elementType, sourceLocation),\n immutable: false,\n })\n if (ptype instanceof ReadonlyArrayPType)\n return new DynamicArrayType({\n elementType: ptypeToArc4EncodedType(ptype.elementType, sourceLocation),\n immutable: true,\n })\n if (ptype instanceof FixedArrayPType)\n return new StaticArrayType({\n elementType: ptypeToArc4EncodedType(ptype.elementType, sourceLocation),\n arraySize: ptype.arraySize,\n immutable: false,\n })\n\n if (ptype instanceof ReadonlyTuplePType)\n return new ARC4TupleType({ types: ptype.items.map((i) => ptypeToArc4EncodedType(i, sourceLocation)) })\n if (ptype instanceof MutableTuplePType)\n return new ARC4TupleType({ types: ptype.items.map((i) => ptypeToArc4EncodedType(i, sourceLocation)) })\n\n if (ptype instanceof ImmutableObjectPType)\n return new ARC4StructType({\n name: ptype.alias?.name ?? ptype.name,\n module: ptype.module,\n description: ptype.description,\n fields: Object.fromEntries(ptype.orderedProperties().map(([p, pt]) => [p, ptypeToArc4EncodedType(pt, sourceLocation)])),\n frozen: true,\n })\n if (ptype instanceof MutableObjectPType)\n return new ARC4StructType({\n name: ptype.alias?.name ?? ptype.name,\n module: ptype.module,\n description: ptype.description,\n fields: Object.fromEntries(ptype.orderedProperties().map(([p, pt]) => [p, ptypeToArc4EncodedType(pt, sourceLocation)])),\n frozen: false,\n })\n\n throw new CodeError(`${ptype} cannot be encoded to an ARC4 type`, { sourceLocation })\n}\n","import type { Parser } from 'arcsecond'\nimport * as A from 'arcsecond'\nimport type { ABICompatiblePType, PType } from '../awst_build/ptypes'\nimport {\n accountPType,\n anyGtxnType,\n applicationCallGtxnType,\n applicationPType,\n assetConfigGtxnType,\n assetFreezeGtxnType,\n assetPType,\n assetTransferGtxnType,\n keyRegistrationGtxnType,\n paymentGtxnType,\n voidPType,\n} from '../awst_build/ptypes'\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 = <T extends PType>(name: string, ptype: T) => A.str(name).map(() => ptype)\n\nconst methodName = A.regex(/^[^ (]+/)\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])\n\nconst resourceTypes = A.choice([\n simpleType('account', accountPType),\n simpleType('asset', assetPType),\n simpleType('application', applicationPType),\n])\nconst txnTypes = A.choice([\n simpleType('txn', anyGtxnType),\n simpleType('appl', applicationCallGtxnType),\n simpleType('acfg', assetConfigGtxnType),\n simpleType('axfer', assetTransferGtxnType),\n simpleType('afrz', assetFreezeGtxnType),\n simpleType('keyreg', keyRegistrationGtxnType),\n simpleType('pay', paymentGtxnType),\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(): arc4Types.ARC4EncodedType {\n if (this.#stack.length > 1) {\n throw new Error(`Tuple has not been closed`)\n }\n if (this.workingSet.length === 0) {\n throw new Error('Sequence contained no types')\n }\n if (this.workingSet.length !== 1) {\n throw new Error(`Sequence contained more than one type`)\n }\n return this.workingSet[0]\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<arc4Types.ARC4EncodedType>((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 state = States.ArrayBrackets\n continue\n case ')':\n if (typeBuilder.hasOpenTuple) {\n state = States.EndTuple\n continue\n }\n break\n case ',':\n if (typeBuilder.hasOpenTuple) {\n parse(A.char(','))\n state = States.TypeOrBeginTuple\n continue\n }\n break\n }\n return typeBuilder.result\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})\nconst voidType = simpleType('void', voidPType)\nconst abiReturn = A.choice([voidType, arc4Type]).errorMap(updateErrorMessage('ABI return type'))\nconst abiParam = A.choice([resourceTypes, txnTypes, arc4Type]).errorMap(updateErrorMessage('ABI parameter type'))\n\ntype ARC4MethodSignature = { name: string; parameters: ABICompatiblePType[]; returnType: ABICompatiblePType }\n\nconst arc4Method = A.coroutine<ARC4MethodSignature>((parse) => {\n try {\n const name = parse(methodName)\n parse(A.str('('))\n const parameters: ABICompatiblePType[] = []\n while (true) {\n const peekNext = parse(A.possibly(peek))\n if (peekNext !== ')') {\n parameters.push(parse(abiParam))\n }\n const readNext = parse(A.choice([A.char(')'), A.char(',')]))\n if (readNext === ')') {\n break\n }\n }\n\n const returnType = parse(abiReturn)\n return {\n name,\n parameters,\n returnType,\n } satisfies ARC4MethodSignature\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}\n\nconst parseError = A.sequenceOf([\n A.str('ParseError '),\n A.possibly(A.regex(/^'[^']+' /)),\n A.sequenceOf([A.str('(position '), A.digits, A.str('): ')]),\n A.many(A.anyCharExcept(A.char(','))).map((chars) => chars.join('')),\n A.str(', '),\n A.many(A.anyChar).map((chars) => chars.join('')),\n]).map((parts) => ({\n expectedMessage: parts[3],\n butGotMessage: parts[5],\n}))\n\nfunction updateErrorMessage(expectedEntity: string) {\n return <D>(error: A.Err<string, D>) => {\n // Error message will generally look like\n // ParserError (position 5): Expected string 'example', but got ...\n return parseError.fork(\n error.error,\n () => error.error,\n (match) => `Expected ${expectedEntity}, ${match.butGotMessage}`,\n )\n }\n}\n\nfunction createParserFunction<T>(parser: Parser<T>): (text: string) => T {\n return (text) => {\n const parseResult = parser.run(text)\n if (parseResult.isError) {\n const maybeErrorMessage = /^ParseError ('[^']+' )?\\(position \\d+\\): (.*)/.exec(parseResult.error)\n const message = maybeErrorMessage ? maybeErrorMessage[2] : parseResult.error\n throw new Arc4ParseError(message, parseResult.index)\n } else {\n return parseResult.result\n }\n }\n}\n\nexport const parseArc4Type = createParserFunction<arc4Types.ARC4EncodedType>(A.sequenceOf([arc4Type, A.endOfInput]).map(([t]) => t))\n\nexport const parseArc4Method = createParserFunction<ARC4MethodSignature>(A.sequenceOf([arc4Method, A.endOfInput]).map(([t]) => t))\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 registerGenericTypeOnly({ generic }: { generic: GenericPType }) {\n if (this.genericTypes.has(generic)) throw new InternalError(`${generic} has already been registered`)\n this.genericTypes.add(generic)\n }\n\n registerGeneric<T extends PType>({\n generic,\n ptype,\n instanceEb,\n singletonEb,\n }: {\n generic: GenericPType<T>\n ptype: PTypeClass<T>\n instanceEb: ValueExpressionBuilderCtor<PType>\n singletonEb?: SingletonExpressionBuilderCtor\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 if (singletonEb) {\n this.singletonEbs.set(generic, singletonEb)\n }\n }\n\n /**\n * Try to resolve a symbol name to a singleton ptype\n * @param symbolName The name of the symbol\n */\n tryResolveSingletonName(symbolName: SymbolName): PType | undefined {\n for (const v of this.singletonEbs.keys()) if (v instanceof PType && v.fullName === symbolName.fullName) return v\n return undefined\n }\n\n /**\n * Try to resolve a symbol name to an instance ptype\n * @param symbolName The name of the symbol\n */\n tryResolveInstancePType(symbolName: SymbolName): PType | undefined {\n for (const v of this.instanceEbs.keys()) {\n if (v instanceof PType && v.fullName === symbolName.fullName) return v\n }\n return undefined\n }\n\n resolveInstancePType(symbolName: SymbolName, sourceLocation: SourceLocation): PType {\n const ptype = this.tryResolveInstancePType(symbolName)\n if (!ptype) {\n if (symbolName.module.startsWith('typescript/lib')) {\n throw new CodeError(`${symbolName} type is not supported`, { sourceLocation })\n }\n throw new InternalError(`Cannot resolve ptype for symbol ${symbolName}`, {\n sourceLocation,\n })\n }\n return ptype\n }\n\n tryGetSingletonEb(ptype: PType, sourceLocation: SourceLocation): NodeBuilder | undefined {\n const eb = this.singletonEbs.get(ptype)\n if (eb) {\n return new eb(sourceLocation, ptype)\n }\n for (const [pt, eb] of this.singletonEbs.entries()) {\n if (typeof pt === 'function' && ptype instanceof pt) {\n return new eb(sourceLocation, ptype)\n }\n }\n\n return undefined\n }\n\n getSingletonEb(ptype: PType, sourceLocation: SourceLocation): NodeBuilder {\n return (\n this.tryGetSingletonEb(ptype, sourceLocation) ??\n throwError(\n new InternalError(`No singleton eb registered for ${ptype}`, {\n sourceLocation,\n }),\n )\n )\n }\n getInstanceEb(expression: awst.Expression, ptype: PType): InstanceBuilder {\n return (\n this.tryGetInstanceEb(expression, ptype) ??\n throwError(\n new InternalError(`No InstanceBuilder registered for ${ptype}`, {\n sourceLocation: expression.sourceLocation,\n }),\n )\n )\n }\n tryGetInstanceEb(expression: awst.Expression, ptype: PType): InstanceBuilder | undefined {\n const eb = this.instanceEbs.get(ptype)\n if (eb) {\n return new eb(expression, ptype)\n }\n for (const [pt, eb] of this.instanceEbs.entries()) {\n if (typeof pt === 'function' && ptype instanceof pt) {\n return new eb(expression, ptype)\n }\n }\n return undefined\n }\n\n resolveGenericPType(symbolName: SymbolName, typeArgs: PType[], sourceLocation: SourceLocation) {\n const genericType = this.tryResolveGenericPType(symbolName, typeArgs)\n if (genericType) return genericType\n throw new CodeError(`${symbolName} could not be resolved to a generic type`, { sourceLocation })\n }\n tryResolveGenericPType(symbolName: SymbolName, typeArgs: PType[]): PType | undefined {\n for (const pt of this.genericTypes.values()) {\n if (pt.fullName === symbolName.fullName) {\n return pt.parameterise(typeArgs)\n }\n }\n return undefined\n }\n}\nexport const typeRegistry = new TypeRegistry()\n\nexport function instanceEb(expr: awst.Expression, ptype: PType) {\n return typeRegistry.getInstanceEb(expr, ptype)\n}\n","import type { Constant, Expression } from './nodes'\nimport {\n AddressConstant,\n BoolConstant,\n BytesConstant,\n DecimalConstant,\n IntegerConstant,\n MethodConstant,\n StringConstant,\n TemplateVar,\n} from './nodes'\n\nexport function isConstant(expr: Expression): expr is Constant {\n return (\n expr instanceof StringConstant ||\n expr instanceof BytesConstant ||\n expr instanceof IntegerConstant ||\n expr instanceof BoolConstant ||\n expr instanceof AddressConstant ||\n expr instanceof MethodConstant ||\n expr instanceof DecimalConstant\n )\n}\n\nexport function isConstantOrTemplateVar(expr: Expression): expr is Constant | TemplateVar {\n return isConstant(expr) || expr instanceof TemplateVar\n}\n\nexport class SymbolToNumber {\n #symbols = new Map<symbol, number>()\n\n forSymbol(sym: symbol): { id: number; isNew: boolean } {\n let val = this.#symbols.get(sym)\n if (val !== undefined) {\n return { id: val, isNew: false }\n }\n val = this.#symbols.size\n this.#symbols.set(sym, val)\n return { id: val, isNew: true }\n }\n}\n","import type {\n AnyPType,\n ArrayLiteralPType,\n ArrayPType,\n BoxMapPType,\n BoxPType,\n BoxRefPType,\n BytesPType,\n ContractClassPType,\n FixedArrayPType,\n FunctionPType,\n GlobalStateType,\n GroupTransactionPType,\n ImmutableObjectPType,\n InnerTransactionPType,\n InstanceType,\n InternalType,\n IntrinsicFunctionGroupType,\n IntrinsicFunctionGroupTypeType,\n IntrinsicFunctionType,\n IntrinsicFunctionTypeType,\n IterableIteratorType,\n ItxnParamsPType,\n LibClassType,\n LibFunctionType,\n LibObjType,\n LocalStateType,\n LogicSigPType,\n MutableObjectPType,\n MutableTuplePType,\n NamespacePType,\n ObjectLiteralPType,\n ReadonlyArrayPType,\n ReadonlyTuplePType,\n ReferenceArrayType,\n SuperPrototypeSelector,\n TransientType,\n TypeParameterType,\n Uint64EnumMemberType,\n Uint64EnumType,\n UnsupportedType,\n} from '..'\nimport type {\n ARC4InstanceType,\n ARC4StructClass,\n ARC4StructType,\n ARC4TupleType,\n ContractProxyType,\n DynamicArrayType,\n StaticArrayType,\n UFixedNxMType,\n UintNType,\n} from '../arc4-types'\nimport type { GenericPType, PType } from '../base'\nimport type { IntrinsicEnumType } from '../intrinsic-enum-type'\n\nimport type { PTypeVisitor } from '../visitor'\n\nexport abstract class DefaultVisitor<T> implements PTypeVisitor<T> {\n abstract defaultReturn(ptype: PType): T\n\n visitIterableIterator(ptype: IterableIteratorType): T {\n return this.defaultReturn(ptype)\n }\n visitGeneric(ptype: GenericPType): T {\n return this.defaultReturn(ptype)\n }\n visitMutableObjectPType(ptype: MutableObjectPType): T {\n return this.defaultReturn(ptype)\n }\n\n visitObjectLiteralPType(ptype: ObjectLiteralPType): T {\n return this.defaultReturn(ptype)\n }\n\n visitIntrinsicEnumType(ptype: IntrinsicEnumType): T {\n return this.defaultReturn(ptype)\n }\n visitReferenceArrayType(ptype: ReferenceArrayType): T {\n return this.defaultReturn(ptype)\n }\n visitUnsupportedType(ptype: UnsupportedType): T {\n return this.defaultReturn(ptype)\n }\n visitTransientType(ptype: TransientType): T {\n return this.defaultReturn(ptype)\n }\n visitARC4InstanceType(ptype: ARC4InstanceType): T {\n return this.defaultReturn(ptype)\n }\n visitARC4StructClass(ptype: ARC4StructClass): T {\n return this.defaultReturn(ptype)\n }\n visitARC4StructType(ptype: ARC4StructType): T {\n return this.defaultReturn(ptype)\n }\n visitARC4TupleType(ptype: ARC4TupleType): T {\n return this.defaultReturn(ptype)\n }\n visitUintNType(ptype: UintNType): T {\n return this.defaultReturn(ptype)\n }\n visitUFixedNxMType(ptype: UFixedNxMType): T {\n return this.defaultReturn(ptype)\n }\n visitDynamicArrayType(ptype: DynamicArrayType): T {\n return this.defaultReturn(ptype)\n }\n visitStaticArrayType(ptype: StaticArrayType): T {\n return this.defaultReturn(ptype)\n }\n visitContractProxyType(ptype: ContractProxyType): T {\n return this.defaultReturn(ptype)\n }\n visitImmutableObjectPType(ptype: ImmutableObjectPType): T {\n return this.defaultReturn(ptype)\n }\n visitLogicSigPType(ptype: LogicSigPType): T {\n return this.defaultReturn(ptype)\n }\n visitItxnParamsPType(ptype: ItxnParamsPType): T {\n return this.defaultReturn(ptype)\n }\n visitInnerTransactionPType(ptype: InnerTransactionPType): T {\n return this.defaultReturn(ptype)\n }\n visitSuperPrototypeSelector(ptype: SuperPrototypeSelector): T {\n return this.defaultReturn(ptype)\n }\n visitUint64EnumType(ptype: Uint64EnumType): T {\n return this.defaultReturn(ptype)\n }\n visitUint64EnumMemberType(ptype: Uint64EnumMemberType): T {\n return this.defaultReturn(ptype)\n }\n visitLibFunctionType(ptype: LibFunctionType): T {\n return this.defaultReturn(ptype)\n }\n visitGroupTransactionPType(ptype: GroupTransactionPType): T {\n return this.defaultReturn(ptype)\n }\n visitBytesPType(ptype: BytesPType): T {\n return this.defaultReturn(ptype)\n }\n visitFixedArrayPType(ptype: FixedArrayPType): T {\n return this.defaultReturn(ptype)\n }\n visitReadonlyArrayPType(ptype: ReadonlyArrayPType): T {\n return this.defaultReturn(ptype)\n }\n visitArrayPType(ptype: ArrayPType): T {\n return this.defaultReturn(ptype)\n }\n visitReadonlyTuplePType(ptype: ReadonlyTuplePType): T {\n return this.defaultReturn(ptype)\n }\n visitMutableTuplePType(ptype: MutableTuplePType): T {\n return this.defaultReturn(ptype)\n }\n visitArrayLiteralPType(ptype: ArrayLiteralPType): T {\n return this.defaultReturn(ptype)\n }\n visitFunctionPType(ptype: FunctionPType): T {\n return this.defaultReturn(ptype)\n }\n visitNamespacePType(ptype: NamespacePType): T {\n return this.defaultReturn(ptype)\n }\n visitIntrinsicFunctionTypeType(ptype: IntrinsicFunctionTypeType): T {\n return this.defaultReturn(ptype)\n }\n visitIntrinsicFunctionType(ptype: IntrinsicFunctionType): T {\n return this.defaultReturn(ptype)\n }\n visitIntrinsicFunctionGroupTypeType(ptype: IntrinsicFunctionGroupTypeType): T {\n return this.defaultReturn(ptype)\n }\n visitIntrinsicFunctionGroupType(ptype: IntrinsicFunctionGroupType): T {\n return this.defaultReturn(ptype)\n }\n visitLibObjType(ptype: LibObjType): T {\n return this.defaultReturn(ptype)\n }\n visitLibClassType(ptype: LibClassType): T {\n return this.defaultReturn(ptype)\n }\n visitInstanceType(ptype: InstanceType): T {\n return this.defaultReturn(ptype)\n }\n visitContractClassPType(ptype: ContractClassPType): T {\n return this.defaultReturn(ptype)\n }\n visitGlobalStateType(ptype: GlobalStateType): T {\n return this.defaultReturn(ptype)\n }\n visitLocalStateType(ptype: LocalStateType): T {\n return this.defaultReturn(ptype)\n }\n visitBoxPType(ptype: BoxPType): T {\n return this.defaultReturn(ptype)\n }\n visitBoxMapPType(ptype: BoxMapPType): T {\n return this.defaultReturn(ptype)\n }\n visitBoxRefPType(ptype: BoxRefPType): T {\n return this.defaultReturn(ptype)\n }\n visitTypeParameterType(ptype: TypeParameterType): T {\n return this.defaultReturn(ptype)\n }\n visitInternalType(ptype: InternalType): T {\n return this.defaultReturn(ptype)\n }\n visitAnyPType(ptype: AnyPType): T {\n return this.defaultReturn(ptype)\n }\n}\n","import type { ARC4StructType, ARC4TupleType, DynamicArrayType, StaticArrayType } from '../arc4-types'\nimport type { PType } from '../base'\nimport type {\n ArrayLiteralPType,\n ArrayPType,\n FixedArrayPType,\n ImmutableObjectPType,\n MutableObjectPType,\n MutableTuplePType,\n ReadonlyArrayPType,\n ReadonlyTuplePType,\n ReferenceArrayType,\n} from '../index'\nimport { DefaultVisitor } from './default-visitor'\n\nexport function isMutableType(ptype: PType) {\n return ptype.accept(new IsMutableVisitor())\n}\n\nexport function containsMutableType(ptype: PType) {\n return ptype.accept(new ContainsMutableVisitor())\n}\n\nexport function isOrContainsMutableType(ptype: PType) {\n return isMutableType(ptype) || containsMutableType(ptype)\n}\n\nclass ContainsMutableVisitor extends DefaultVisitor<boolean> {\n readonly isMutableVisitor = new IsMutableVisitor()\n\n constructor() {\n super()\n }\n\n /**\n * Does this ptype contain a mutable type\n *\n * @param ptype\n */\n static accept(ptype: PType): boolean {\n return ptype.accept(new ContainsMutableVisitor())\n }\n\n defaultReturn(ptype: PType): boolean {\n return false\n }\n\n visitARC4StructType(ptype: ARC4StructType): boolean {\n return Object.values(ptype.fields).some((t) => t.accept(this) || t.accept(this.isMutableVisitor))\n }\n\n visitARC4TupleType(ptype: ARC4TupleType): boolean {\n return ptype.items.some((t) => t.accept(this) || t.accept(this.isMutableVisitor))\n }\n\n visitImmutableObjectPType(ptype: ImmutableObjectPType): boolean {\n return Object.values(ptype.properties).some((t) => t.accept(this) || t.accept(this.isMutableVisitor))\n }\n\n visitMutableObjectPType(ptype: MutableObjectPType): boolean {\n return Object.values(ptype.properties).some((t) => t.accept(this) || t.accept(this.isMutableVisitor))\n }\n\n visitReferenceArrayType(ptype: ReferenceArrayType): boolean {\n return ptype.elementType.accept(this) || ptype.elementType.accept(this.isMutableVisitor)\n }\n\n visitDynamicArrayType(ptype: DynamicArrayType): boolean {\n return ptype.elementType.accept(this) || ptype.elementType.accept(this.isMutableVisitor)\n }\n\n visitStaticArrayType(ptype: StaticArrayType): boolean {\n return ptype.elementType.accept(this) || ptype.elementType.accept(this.isMutableVisitor)\n }\n\n visitFixedArrayPType(ptype: FixedArrayPType): boolean {\n return ptype.elementType.accept(this) || ptype.elementType.accept(this.isMutableVisitor)\n }\n\n visitReadonlyArrayPType(ptype: ReadonlyArrayPType): boolean {\n return ptype.elementType.accept(this) || ptype.elementType.accept(this.isMutableVisitor)\n }\n\n visitArrayPType(ptype: ArrayPType): boolean {\n return ptype.elementType.accept(this) || ptype.elementType.accept(this.isMutableVisitor)\n }\n\n visitReadonlyTuplePType(ptype: ReadonlyTuplePType): boolean {\n return ptype.items.some((t) => t.accept(this) || t.accept(this.isMutableVisitor))\n }\n\n visitMutableTuplePType(ptype: MutableTuplePType): boolean {\n return ptype.items.some((t) => t.accept(this) || t.accept(this.isMutableVisitor))\n }\n\n visitArrayLiteralPType(ptype: ArrayLiteralPType): boolean {\n return ptype.items.some((t) => t.accept(this) || t.accept(this.isMutableVisitor))\n }\n}\n\nclass IsMutableVisitor extends DefaultVisitor<boolean> {\n /**\n * Is this ptype a mutable type\n *\n * @param ptype\n */\n static accept(ptype: PType): boolean {\n return ptype.accept(new ContainsMutableVisitor())\n }\n\n defaultReturn(ptype: PType): boolean {\n return false\n }\n\n visitARC4StructType(ptype: ARC4StructType): boolean {\n return !ptype.frozen\n }\n\n visitARC4TupleType(ptype: ARC4TupleType): boolean {\n return true\n }\n\n visitMutableObjectPType(ptype: MutableObjectPType): boolean {\n return true\n }\n\n visitReferenceArrayType(ptype: ReferenceArrayType): boolean {\n return true\n }\n\n visitDynamicArrayType(ptype: DynamicArrayType): boolean {\n return !ptype.immutable\n }\n\n visitStaticArrayType(ptype: StaticArrayType): boolean {\n return !ptype.immutable\n }\n\n visitFixedArrayPType(ptype: FixedArrayPType): boolean {\n return true\n }\n\n visitArrayPType(ptype: ArrayPType): boolean {\n return true\n }\n\n visitMutableTuplePType(ptype: MutableTuplePType): boolean {\n return true\n }\n}\n","import { awst, isConstant, isConstantOrTemplateVar } from '../../awst'\nimport { nodeFactory } from '../../awst/node-factory'\nimport { TupleItemExpression } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { CodeError, InternalError, NotSupported } from '../../errors'\nimport { logger } from '../../logger'\nimport { instanceOfAny } from '../../util'\nimport type { DecoratorData } from '../models/decorator-data'\nimport type { GenericPType, LibClassType, PType, PTypeOrClass } from '../ptypes'\nimport { uint64PType } from '../ptypes'\nimport type { ARC4StructClass } from '../ptypes/arc4-types'\nimport { isOrContainsMutableType } from '../ptypes/visitors/contains-mutable-visitor'\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(\n head: string,\n spans: ReadonlyArray<readonly [InstanceBuilder, string]>,\n typeArgs: ReadonlyArray<PType>,\n sourceLocation: SourceLocation,\n ): 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 if (/^\\d+$/.test(name)) {\n const idx = instanceEb(nodeFactory.uInt64Constant({ value: BigInt(name), sourceLocation }), uint64PType)\n return this.indexAccess(idx, sourceLocation)\n }\n throw new NotSupported(`Accessing member ${name} on ${this.typeDescription}`, {\n sourceLocation,\n })\n }\n\n indexAccess(index: InstanceBuilder | bigint, 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 abstract get ptype(): TPType\n abstract resolve(): awst.Expression\n abstract resolveLValue(): awst.LValue\n\n abstract get isConstant(): boolean\n\n /**\n * Returns a boolean indicating if the current builder can be resolved to the target type.\n * Resolvable meaning it may have a different type, but would be assignable to the target type in TypeScript\n * without a cast.\n * @param ptype\n */\n resolvableToPType(ptype: PTypeOrClass): boolean {\n return this.ptype.equalsOrInstanceOf(ptype)\n }\n\n /**\n * Attempts to resolve the value held by this builder to the target type.\n * @param ptype\n */\n resolveToPType(ptype: PTypeOrClass): InstanceBuilder {\n if (this.ptype.equalsOrInstanceOf(ptype)) {\n return this\n }\n throw CodeError.cannotResolveToType({ sourceType: this.ptype, targetType: ptype, sourceLocation: this.sourceLocation })\n }\n\n singleEvaluation(): InstanceBuilder {\n const expr = this.resolve()\n if (instanceOfAny(expr, awst.VarExpression, awst.SingleEvaluation) || isConstant(expr)) {\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): InstanceBuilder {\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 checkForUnclonedMutables(scenario: string): boolean {\n throw new InternalError(`Method not implemented on ${this.constructor.name}`, { sourceLocation: this.sourceLocation })\n }\n}\n\n/**\n * Base type for an instance builder that wraps another instance builder.\n * All methods are abstract to ensure they are implemented in the extending class\n */\nexport abstract class WrappingInstanceBuilder<TPType extends PType = PType> extends InstanceBuilder<TPType> {\n abstract get ptype(): TPType\n abstract resolve(): awst.Expression\n abstract resolveLValue(): awst.LValue\n\n abstract get isConstant(): boolean\n abstract resolvableToPType(ptype: PTypeOrClass): boolean\n abstract resolveToPType(ptype: PTypeOrClass): InstanceBuilder\n abstract singleEvaluation(): InstanceBuilder\n abstract toBytes(sourceLocation: SourceLocation): InstanceBuilder\n abstract toString(sourceLocation: SourceLocation): awst.Expression\n abstract prefixUnaryOp(op: BuilderUnaryOp, sourceLocation: SourceLocation): InstanceBuilder\n abstract postfixUnaryOp(op: BuilderUnaryOp, sourceLocation: SourceLocation): InstanceBuilder\n abstract compare(other: InstanceBuilder, op: BuilderComparisonOp, sourceLocation: SourceLocation): InstanceBuilder\n abstract binaryOp(other: InstanceBuilder, op: BuilderBinaryOp, sourceLocation: SourceLocation): InstanceBuilder\n abstract iterate(sourceLocation: SourceLocation): awst.Expression\n abstract augmentedAssignment(other: InstanceBuilder, op: BuilderBinaryOp, sourceLocation: SourceLocation): InstanceBuilder\n abstract call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder\n abstract newCall(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): InstanceBuilder\n abstract taggedTemplate(\n head: string,\n spans: ReadonlyArray<readonly [InstanceBuilder, string]>,\n typeArgs: ReadonlyArray<PType>,\n sourceLocation: SourceLocation,\n ): InstanceBuilder\n abstract hasProperty(_name: string): boolean\n abstract memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder\n abstract indexAccess(index: InstanceBuilder | bigint, sourceLocation: SourceLocation): NodeBuilder\n abstract boolEval(sourceLocation: SourceLocation, negate: boolean): awst.Expression\n}\n\nexport abstract class ClassBuilder extends NodeBuilder {\n abstract readonly ptype: LibClassType | GenericPType | ARC4StructClass\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 InstanceExpressionBuilder<TPType extends PType> extends InstanceBuilder<PType> {\n #ptype: TPType\n\n get ptype(): TPType {\n return this.#ptype\n }\n\n get isConstant() {\n return isConstantOrTemplateVar(this._expr)\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 checkForUnclonedMutables(scenario: string) {\n if (isReferableExpression(this._expr)) {\n if (isOrContainsMutableType(this.ptype)) {\n logger.error(\n this.sourceLocation,\n `cannot create multiple references to a mutable stack type, the value must be copied using clone(...) when ${scenario}`,\n )\n return true\n }\n }\n return false\n }\n}\n\nexport function isReferableExpression(expr: awst.Expression): boolean {\n if (\n instanceOfAny(\n expr,\n awst.VarExpression,\n awst.AppStateExpression,\n awst.AppAccountStateExpression,\n awst.StateGet,\n awst.StateGetEx,\n awst.BoxValueExpression,\n )\n ) {\n return true\n } else if (instanceOfAny(expr, awst.IndexExpression, awst.TupleItemExpression, awst.FieldExpression)) {\n return isReferableExpression(expr.base)\n }\n return false\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 if (expr.base.wtype.immutable) {\n throw new CodeError('Expression is not a valid assignment target - object is immutable', { sourceLocation: expr.sourceLocation })\n } else {\n throw new CodeError('Mutating tuple items is not currently supported - use an object if mutability is required', {\n sourceLocation: expr.sourceLocation,\n })\n }\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 readonly ptype: PType | undefined = undefined\n\n constructor(\n sourceLocation: SourceLocation,\n private readonly data: DecoratorData,\n ) {\n super(sourceLocation)\n }\n\n resolveDecoratorData(): DecoratorData {\n return this.data\n }\n}\n","import type { awst } from '../../awst'\nimport type { Expression, LValue } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { CodeError } from '../../errors'\nimport type { PType, PTypeOrClass } from '../ptypes'\nimport { TransientType } from '../ptypes'\nimport type { BuilderBinaryOp, BuilderComparisonOp, BuilderUnaryOp, NodeBuilder } from './index'\nimport { InstanceBuilder } from './index'\n\nexport abstract class LiteralExpressionBuilder extends InstanceBuilder {\n resolve(): Expression {\n this.throwInvalidExpression()\n }\n\n resolveLValue(): LValue {\n throw new CodeError('A literal value is not a valid assignment target', { sourceLocation: this.sourceLocation })\n }\n\n abstract resolvableToPType(ptype: PTypeOrClass): boolean\n\n abstract resolveToPType(ptype: PTypeOrClass): InstanceBuilder\n\n private throwInvalidExpression(): never {\n if (this.ptype instanceof TransientType) throw new CodeError(this.ptype.expressionMessage, { sourceLocation: this.sourceLocation })\n throw new CodeError(`Invalid expression type ${this.ptype}`, { sourceLocation: this.sourceLocation })\n }\n\n compare(other: InstanceBuilder, op: BuilderComparisonOp, sourceLocation: SourceLocation): InstanceBuilder {\n this.throwInvalidExpression()\n }\n\n binaryOp(other: InstanceBuilder, op: BuilderBinaryOp, sourceLocation: SourceLocation): InstanceBuilder {\n this.throwInvalidExpression()\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n this.throwInvalidExpression()\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n this.throwInvalidExpression()\n }\n\n taggedTemplate(\n head: string,\n spans: ReadonlyArray<readonly [InstanceBuilder, string]>,\n typeArgs: readonly PType[],\n sourceLocation: SourceLocation,\n ): InstanceBuilder {\n this.throwInvalidExpression()\n }\n\n indexAccess(index: InstanceBuilder | bigint, sourceLocation: SourceLocation): NodeBuilder {\n this.throwInvalidExpression()\n }\n\n singleEvaluation(): InstanceBuilder {\n this.throwInvalidExpression()\n }\n\n toBytes(sourceLocation: SourceLocation): InstanceBuilder {\n this.throwInvalidExpression()\n }\n\n prefixUnaryOp(op: BuilderUnaryOp, sourceLocation: SourceLocation): InstanceBuilder {\n this.throwInvalidExpression()\n }\n\n postfixUnaryOp(op: BuilderUnaryOp, sourceLocation: SourceLocation): InstanceBuilder {\n this.throwInvalidExpression()\n }\n\n iterate(sourceLocation: SourceLocation): awst.Expression {\n this.throwInvalidExpression()\n }\n\n augmentedAssignment(other: InstanceBuilder, op: BuilderBinaryOp, sourceLocation: SourceLocation): InstanceBuilder {\n this.throwInvalidExpression()\n }\n\n hasProperty(_name: string): boolean {\n return false\n }\n}\n","import { nodeFactory } from '../../awst/node-factory'\nimport type { Expression } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { CodeError } from '../../errors'\nimport { BuilderBinaryOp, BuilderComparisonOp } from './index'\n\nconst binaryOpFolding: Record<BuilderBinaryOp, undefined | ((left: bigint, right: bigint) => bigint)> = {\n [BuilderBinaryOp.div]: (l, r) => l / r,\n [BuilderBinaryOp.add]: (l, r) => l + r,\n [BuilderBinaryOp.sub]: (l, r) => l - r,\n [BuilderBinaryOp.mult]: (l, r) => l * r,\n [BuilderBinaryOp.mod]: (l, r) => l % r,\n [BuilderBinaryOp.pow]: (l, r) => l ** r,\n [BuilderBinaryOp.matMult]: undefined,\n [BuilderBinaryOp.lshift]: (l, r) => {\n return l << r\n },\n [BuilderBinaryOp.rshift]: (l, r) => l >> r,\n [BuilderBinaryOp.bitOr]: (l, r) => l | r,\n [BuilderBinaryOp.bitXor]: (l, r) => l ^ r,\n [BuilderBinaryOp.bitAnd]: (l, r) => l & r,\n [BuilderBinaryOp.comma]: (l, r) => r,\n}\n\nconst comparisonOpFolding: Record<BuilderComparisonOp, undefined | ((left: bigint, right: bigint) => boolean)> = {\n [BuilderComparisonOp.eq]: (l, r) => l === r,\n [BuilderComparisonOp.ne]: (l, r) => l !== r,\n [BuilderComparisonOp.lt]: (l, r) => l < r,\n [BuilderComparisonOp.lte]: (l, r) => l <= r,\n [BuilderComparisonOp.gt]: (l, r) => l > r,\n [BuilderComparisonOp.gte]: (l, r) => l >= r,\n}\n\nexport function foldBinaryOp(left: bigint, right: bigint, op: BuilderBinaryOp, sourceLocation: SourceLocation): bigint {\n const result = binaryOpFolding[op]?.(left, right)\n switch (typeof result) {\n case 'bigint':\n return result\n default:\n throw new CodeError(`${op} is not supported`, { sourceLocation })\n }\n}\n\nexport function foldComparisonOp(left: bigint, right: bigint, op: BuilderComparisonOp, sourceLocation: SourceLocation): Expression {\n const result = comparisonOpFolding[op]?.(left, right)\n switch (typeof result) {\n case 'boolean':\n return nodeFactory.boolConstant({\n value: result,\n sourceLocation: sourceLocation,\n })\n default:\n throw new CodeError(`${op} is not supported`, { sourceLocation })\n }\n}\n","import type { ConstantValue } from '../../../awst'\nimport type { PTypeOrClass } from '../../ptypes'\nimport { bigIntPType, biguintPType, boolPType, bytesPType, numberPType, stringPType, uint64PType } from '../../ptypes'\nimport { UFixedNxMType, UintNType } from '../../ptypes/arc4-types'\n\nexport function isValidLiteralForPType(literalValue: ConstantValue, ptype: PTypeOrClass): boolean {\n if (ptype.equals(stringPType)) {\n return typeof literalValue === 'string'\n }\n if (ptype.equals(numberPType)) {\n return (\n typeof literalValue === 'bigint' && BigInt(Number.MIN_SAFE_INTEGER) <= literalValue && literalValue <= BigInt(Number.MAX_SAFE_INTEGER)\n )\n }\n if (ptype.equals(bigIntPType)) {\n return typeof literalValue === 'bigint'\n }\n if (ptype.equals(uint64PType)) {\n return typeof literalValue === 'bigint' && 0 <= literalValue && literalValue < 2n ** 64n\n }\n if (ptype.equals(biguintPType)) {\n return typeof literalValue === 'bigint' && 0 <= literalValue && literalValue < 2n ** 512n\n }\n if (ptype instanceof UintNType || ptype instanceof UFixedNxMType) {\n return typeof literalValue === 'bigint' && 0 <= literalValue && literalValue < 2n ** ptype.n\n }\n if (ptype.equals(boolPType)) {\n return typeof literalValue === 'boolean'\n }\n if (ptype.equals(bytesPType)) {\n return literalValue instanceof Uint8Array\n }\n return false\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { Expression } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport { CodeError } from '../../../errors'\nimport { codeInvariant } from '../../../util'\nimport type { NumberPType, PTypeOrClass } from '../../ptypes'\nimport { boolPType, numberPType, NumericLiteralPType, uint64PType } from '../../ptypes'\nimport { instanceEb, typeRegistry } from '../../type-registry'\nimport { foldBinaryOp, foldComparisonOp } from '../folding'\nimport type { BuilderBinaryOp, BuilderComparisonOp, InstanceBuilder } from '../index'\nimport { BuilderUnaryOp } from '../index'\nimport { LiteralExpressionBuilder } from '../literal-expression-builder'\nimport { isValidLiteralForPType } from '../util/is-valid-literal-for-ptype'\n\nexport class NumericLiteralExpressionBuilder extends LiteralExpressionBuilder {\n readonly isConstant = true\n\n singleEvaluation(): InstanceBuilder {\n return this\n }\n\n constructor(\n public readonly value: bigint,\n public readonly ptype: NumericLiteralPType | NumberPType,\n location: SourceLocation,\n ) {\n super(location)\n }\n\n resolvableToPType(ptype: PTypeOrClass): boolean {\n if (ptype.equals(uint64PType)) {\n return this.value >= 0n && this.value < 2n ** 64n\n }\n return ptype.equals(numberPType) || ptype.equals(this.ptype)\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 if (ptype.equals(this.ptype)) return this\n if (ptype.equals(numberPType)) return new NumericLiteralExpressionBuilder(this.value, numberPType, this.sourceLocation)\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 }\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 NumericLiteralExpressionBuilder) {\n const folded = foldBinaryOp(this.value, other.value, op, sourceLocation)\n return new NumericLiteralExpressionBuilder(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 NumericLiteralExpressionBuilder) {\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 NumericLiteralExpressionBuilder(-this.value, this.getUpdatedPType(-this.value), sourceLocation)\n case BuilderUnaryOp.pos:\n return new NumericLiteralExpressionBuilder(this.value, this.ptype, sourceLocation)\n }\n return super.prefixUnaryOp(op, sourceLocation)\n }\n\n private getUpdatedPType(value: bigint) {\n return new NumericLiteralPType({ literalValue: value })\n }\n\n checkForUnclonedMutables(scenario: string) {\n // Nothing to see here\n return false\n }\n}\n","import type { awst } from '../../../awst'\nimport { isConstant } from '../../../awst'\nimport type { Expression } from '../../../awst/nodes'\nimport { BoolConstant, IntegerConstant, StringConstant } from '../../../awst/nodes'\nimport { CodeError } from '../../../errors'\nimport { codeInvariant } from '../../../util'\nimport type { PType, PTypeOrClass } from '../../ptypes'\nimport { biguintPType, boolPType, stringPType, uint64PType } from '../../ptypes'\nimport type { NodeBuilder } from '../index'\nimport { InstanceBuilder } from '../index'\nimport { LiteralExpressionBuilder } from '../literal-expression-builder'\nimport { NumericLiteralExpressionBuilder } from '../literal/numeric-literal-expression-builder'\n\nexport function requireExpressionOfType(builder: NodeBuilder, ptype: PTypeOrClass): Expression {\n if (builder instanceof InstanceBuilder) {\n return builder.resolveToPType(ptype).resolve()\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 return builder.resolveToPType(ptype)\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) {\n return builder\n }\n throw new CodeError(`Expected instance of a type, got ${builder.typeDescription}`, { sourceLocation: builder.sourceLocation })\n}\nexport function requestInstanceBuilder(builder: NodeBuilder): InstanceBuilder | undefined {\n if (builder instanceof InstanceBuilder) {\n return builder\n }\n return undefined\n}\n\nexport function 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\nexport function requireStringConstant(builder: NodeBuilder): awst.StringConstant {\n const constant = requireConstantOfType(builder, stringPType)\n codeInvariant(constant instanceof StringConstant, 'Expected string literal', builder.sourceLocation)\n return constant\n}\nexport function requireIntegerConstant(builder: NodeBuilder): awst.IntegerConstant {\n const constant = requestConstantOfType(builder, uint64PType) ?? requestConstantOfType(builder, biguintPType)\n codeInvariant(constant instanceof IntegerConstant, 'Expected integer literal')\n return constant\n}\nexport function requireBooleanConstant(builder: NodeBuilder): awst.BoolConstant {\n const constant = requireConstantOfType(builder, boolPType)\n codeInvariant(constant instanceof BoolConstant, 'Expected boolean literal')\n return constant\n}\n\nexport function requestConstantOfType(builder: NodeBuilder, ptype: PType): awst.Constant | undefined {\n if (builder instanceof LiteralExpressionBuilder) {\n if (builder.resolvableToPType(ptype)) {\n const expr = builder.resolveToPType(ptype).resolve()\n if (isConstant(expr)) return expr\n }\n return undefined\n }\n if (builder instanceof InstanceBuilder && builder.ptype?.equals(ptype)) {\n const expr = builder.resolve()\n if (isConstant(expr)) return expr\n }\n return undefined\n}\n\nexport function requireConstantOfType(builder: NodeBuilder, ptype: PType, messageOverride?: string): awst.Constant {\n const constExpr = requestConstantOfType(builder, ptype)\n if (constExpr) return constExpr\n throw new CodeError(messageOverride ?? `Expected constant of type ${ptype}`, { sourceLocation: builder.sourceLocation })\n}\n\nexport function requireLiteralNumber(builder: NodeBuilder) {\n codeInvariant(builder instanceof NumericLiteralExpressionBuilder, 'Expected numeric literal', builder.sourceLocation)\n return builder.value\n}\n","import type { SourceLocation } from '../../../awst/source-location'\nimport { CodeError } from '../../../errors'\nimport { logger } from '../../../logger'\nimport type { DeliberateAny, Tuple } from '../../../typescript-helpers'\nimport type { PType, PTypeOrClass } from '../../ptypes'\nimport type { InstanceBuilder, NodeBuilder } from '../index'\nimport { requestBuilderOfType, requireInstanceBuilder } from './index'\n\nfunction parseTypeArgs<T extends number>(\n typeArgs: ReadonlyArray<PType>,\n sourceLocation: SourceLocation,\n funcName: string,\n expectedCount: T,\n): Tuple<PType, T> {\n if (typeArgs.length !== expectedCount) {\n const err = new CodeError(`${funcName} expects exactly ${expectedCount} type argument${expectedCount === 1 ? '' : 's'}`, {\n sourceLocation,\n })\n if (typeArgs.length > expectedCount) {\n logger.error(err)\n return typeArgs.slice(0, expectedCount) as Tuple<PType, T>\n }\n throw err\n }\n return typeArgs as Tuple<PType, T>\n}\n\nconst ArgSpecDiscriminator = Symbol('_specType')\n\n/**\n * Optional arg spec\n * Will be mapped to `InstanceBuilder | undefined`\n */\ntype OptionalArg = { t: PTypeOrClass[]; [ArgSpecDiscriminator]: 'arg'; type: 'optional' }\n/**\n * Required arg spec\n * Will be mapped to `InstanceBuilder`\n */\ntype RequiredArg = { t: PTypeOrClass[]; type: 'required'; [ArgSpecDiscriminator]: 'arg' }\n\n/**\n * Passthrough arg spec\n * Will be mapped to NodeBuilder | undefined\n */\ntype PassthroughArg = { type: 'passthrough'; [ArgSpecDiscriminator]: 'arg' }\ntype ArgSpec = OptionalArg | RequiredArg | PassthroughArg\n\n/**\n * Object arg spec\n * Will be mapped to an object with the same keys where each property\n * is mapped to a Required or Optional spec\n */\ntype ObjArgSpec = Record<string, ArgSpec> & { [ArgSpecDiscriminator]: 'obj' }\n\n/**\n * Maps an ObjArgSpec to its output type\n */\ntype ArgsForObjSpec<T extends ObjArgSpec> = {\n [key in keyof T]: ArgFor<T[key]>\n}\n/**\n * Defines the expected shape of a single argument.\n * Either an ArgSpec indicting a single value, or an ObjArgSpec indicating an\n * object literal with several properties\n */\ntype ArgMap = ArgSpec | ObjArgSpec\n\n/**\n * Maps an arg spec to its output type\n */\ntype ArgFor<T extends ObjArgSpec | ArgSpec> = T extends ObjArgSpec\n ? ArgsForObjSpec<T>\n : T extends PassthroughArg\n ? NodeBuilder | undefined\n : T extends OptionalArg\n ? InstanceBuilder | undefined\n : T extends RequiredArg\n ? InstanceBuilder\n : never\n/**\n * Maps each arg to an expected output type\n */\ntype ParsedArgs<T extends [...DeliberateAny[]]> = T extends [infer T1 extends ArgMap, ...infer TRest]\n ? [ArgFor<T1>, ...ParsedArgs<TRest>]\n : T extends []\n ? []\n : T extends Array<infer TItem extends ArgMap>\n ? Array<ArgFor<TItem>>\n : never\n\nfunction parseObjArg<T extends ObjArgSpec>(\n arg: NodeBuilder | undefined,\n sourceLocation: SourceLocation,\n subject: string,\n argMap: T,\n): ArgsForObjSpec<T> {\n return Object.entries(argMap).reduce(\n (acc, [property, spec]) => {\n if (arg?.hasProperty(property)) {\n const builder = arg.memberAccess(property, sourceLocation)\n if (spec.type === 'passthrough') {\n acc[property] = builder\n return acc\n }\n if (spec.t.length === 0) {\n acc[property] = requireInstanceBuilder(builder)\n } else {\n for (const t of spec.t) {\n const typedBuilder = requestBuilderOfType(builder, t)\n if (typedBuilder) {\n acc[property] = typedBuilder\n return acc\n }\n }\n throw new CodeError(\n `${subject} has an incorrect type for property '${property}' of ${builder.ptype}. Expected ${spec.t.join(' or ')}`,\n {\n sourceLocation: arg?.sourceLocation ?? sourceLocation,\n },\n )\n }\n return acc\n }\n if (spec.type === 'required') {\n throw new CodeError(`${subject} is missing required property ${property}`, {\n sourceLocation: arg?.sourceLocation ?? sourceLocation,\n })\n }\n return acc\n },\n {} as Record<string, InstanceBuilder | NodeBuilder>,\n ) as ArgsForObjSpec<T>\n}\n\nconst argSpecFactory = {\n /**\n * A required arg with one of the specified types\n * @param ptypes\n */\n required(...ptypes: PTypeOrClass[]): RequiredArg {\n return { t: ptypes, type: 'required', [ArgSpecDiscriminator]: 'arg' }\n },\n /**\n * An optional arg with one of the specified types\n * @param ptypes\n */\n optional(...ptypes: PTypeOrClass[]): OptionalArg {\n return { t: ptypes, type: 'optional', [ArgSpecDiscriminator]: 'arg' }\n },\n /**\n * An object map arg, if all properties are optional - the arg itself becomes optional\n * @param props A mapping of expected properties to expected ptypes\n */\n obj<T extends Omit<ObjArgSpec, typeof ArgSpecDiscriminator>>(props: T): T & { [ArgSpecDiscriminator]: 'obj' } {\n return {\n ...props,\n [ArgSpecDiscriminator]: 'obj',\n }\n },\n passthrough(): PassthroughArg {\n return {\n type: 'passthrough',\n [ArgSpecDiscriminator]: 'arg',\n }\n },\n}\n\nexport type ArgSpecFactory = typeof argSpecFactory\n\nexport function parseFunctionArgs<const TGenericCount extends number, const TArgMap extends [...ArgMap[]]>({\n args,\n typeArgs,\n funcName,\n callLocation,\n genericTypeArgs,\n argSpec,\n}: {\n /**\n * Raw args array passed to call function\n */\n args: ReadonlyArray<NodeBuilder>\n /**\n * Raw typeArgs array passed to call function\n */\n typeArgs: ReadonlyArray<PType>\n /**\n * The name of the function being called\n * (Used for error context)\n */\n funcName: string\n /**\n * The location of the call expression in the application source code\n */\n callLocation: SourceLocation\n /**\n * The expected number of generic type arguments\n */\n genericTypeArgs: TGenericCount\n /**\n * A mapping of expected argument types\n */\n argSpec: (a: ArgSpecFactory) => TArgMap\n}): {\n /**\n * A tuple of generic type args with a length of `TGenericCount`\n */\n ptypes: Tuple<PType, TGenericCount>\n args: ParsedArgs<TArgMap>\n} {\n const argMap = argSpec(argSpecFactory)\n if (args.length > argMap.length) {\n throw new CodeError(`${funcName} has ${args.length - argMap.length} too many args`, { sourceLocation: callLocation })\n }\n return {\n ptypes: parseTypeArgs(typeArgs, callLocation, funcName, genericTypeArgs),\n args: argMap.map((a, i) => {\n const source: NodeBuilder | undefined = args[i]\n if (a[ArgSpecDiscriminator] === 'arg') {\n if (a.type === 'passthrough') {\n return source\n }\n if (source) {\n if (a.t.length === 0) {\n return requireInstanceBuilder(source)\n } else {\n for (const t of a.t) {\n const builder = requestBuilderOfType(source, t)\n if (builder) {\n return builder\n }\n }\n throw new CodeError(`Arg ${i} of ${funcName} has an incorrect type of ${source.ptype}. Expected ${a.t.join(' | ')}`, {\n sourceLocation: source.sourceLocation,\n })\n }\n }\n if (a.type === 'required') {\n throw new CodeError(`Arg ${i} of ${funcName} is missing`, { sourceLocation: callLocation })\n }\n } else {\n return parseObjArg(source, callLocation, `Arg ${i} for ${funcName}`, a)\n }\n }) as ParsedArgs<TArgMap>,\n }\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { Expression, StringConstant } from '../../../awst/nodes'\nimport { SourceLocation } from '../../../awst/source-location'\nimport { CodeError, InternalError } from '../../../errors'\nimport { logger } from '../../../logger'\nimport { codeInvariant, instanceOfAny, invariant } from '../../../util'\nimport { Arc4ParseError, parseArc4Type } from '../../../util/arc4-signature-parser'\nimport { ptypeToArc4EncodedType } from '../../arc4-util'\nimport type { PType } from '../../ptypes'\nimport { arc28EmitFunction, ArrayLiteralPType, ImmutableObjectPType, MutableObjectPType, 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 private encode(builder: InstanceBuilder, encodedType: ARC4EncodedType) {\n return nodeFactory.aRC4Encode({\n value: builder.resolve(),\n sourceLocation: builder.sourceLocation,\n wtype: encodedType.wtype,\n })\n }\n\n private resolvePropertyValue(builder: InstanceBuilder, expectedType?: ARC4EncodedType): [Expression, ARC4EncodedType] {\n if (builder.ptype instanceof ARC4EncodedType) {\n if (expectedType) {\n codeInvariant(\n expectedType.wtype.equals(builder.ptype.wtype),\n `Expected type ${expectedType} does not match actual type ${builder.ptype}`,\n builder.sourceLocation,\n )\n }\n\n return [builder.resolve(), builder.ptype]\n }\n\n if (builder.ptype instanceof ArrayLiteralPType) {\n if (!expectedType) {\n expectedType = ptypeToArc4EncodedType(builder.ptype.getArrayType(), builder.sourceLocation)\n }\n return [this.encode(builder.resolveToPType(builder.ptype.getReadonlyTupleType()), expectedType), expectedType]\n }\n const inferredEncodedType = ptypeToArc4EncodedType(builder.ptype, builder.sourceLocation)\n if (expectedType) {\n codeInvariant(\n expectedType.wtype.equals(inferredEncodedType.wtype),\n `Expected type ${expectedType} does not match actual type ${inferredEncodedType}`,\n builder.sourceLocation,\n )\n }\n return [this.encode(builder, inferredEncodedType), inferredEncodedType]\n }\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 [encodedExpr, exprType] = this.resolvePropertyValue(prop, propTypes?.[index])\n\n fields[index] = exprType\n values.set(index.toString(), encodedExpr)\n }\n if (propTypes && propTypes.length !== values.size) {\n throw new CodeError(`Event signature length (${propTypes.length}) does not match number of provided values (${values.size}).`, {\n sourceLocation: sourceLocation,\n })\n }\n\n const structType = new ARC4StructType({\n name: name.value,\n module: thisModule,\n fields,\n description: undefined,\n sourceLocation,\n frozen: true,\n })\n const structExpression = nodeFactory.newStruct({\n wtype: structType.wtype,\n values,\n sourceLocation,\n })\n\n return emitStruct(structType, structExpression, sourceLocation)\n }\n codeInvariant(props.length === 0, 'Unexpected args', props[0]?.sourceLocation)\n\n const eventBuilder = nameOrObj.resolveToPType(genericArg)\n\n const eventType = eventBuilder.ptype\n if (eventType instanceof ARC4StructType) {\n return emitStruct(eventType, nameOrObj.resolve(), sourceLocation)\n } else if (instanceOfAny(eventType, ImmutableObjectPType, MutableObjectPType)) {\n if (!eventType.alias) {\n logger.error(\n eventBuilder.sourceLocation,\n 'Event cannot be an anonymous type. If a named type exists, try specifying it explicitly via the generic parameter. Eg. `emit<YourType>({...})`',\n )\n }\n const arc4Equivalent = ptypeToArc4EncodedType(eventType, sourceLocation)\n invariant(arc4Equivalent instanceof ARC4StructType, 'Equivalent type for object should be arc4 struct')\n return emitStruct(\n arc4Equivalent,\n nodeFactory.aRC4Encode({\n wtype: arc4Equivalent.wtype,\n sourceLocation: eventBuilder.sourceLocation,\n value: eventBuilder.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.name + ptype.abiTypeSignature,\n value: expression,\n wtype: voidPType.wtype,\n sourceLocation,\n }),\n voidPType,\n )\n}\n\nfunction parseEventName(nameBuilder: InstanceBuilder): {\n name: StringConstant\n propTypes?: ARC4EncodedType[]\n} {\n const name = requireStringConstant(nameBuilder)\n const parenthesisIndex = name.value.indexOf('(')\n if (parenthesisIndex === -1) {\n return {\n name,\n }\n }\n const signature = name.value.substring(parenthesisIndex)\n\n try {\n const signatureType = parseArc4Type(signature)\n codeInvariant(signatureType instanceof ARC4TupleType, 'Event signature must be a tuple type', name.sourceLocation)\n return {\n name: nodeFactory.stringConstant({\n value: name.value.substring(0, parenthesisIndex),\n sourceLocation: name.sourceLocation,\n }),\n propTypes: signatureType.items,\n }\n } catch (e) {\n if (e instanceof Arc4ParseError) {\n // Source location adjustment assumes StringConstant is all on one line\n throw new CodeError(`Invalid signature: ${e.message}`, {\n sourceLocation: new SourceLocation({\n ...name.sourceLocation,\n column: name.sourceLocation.column + parenthesisIndex + e.index,\n }),\n })\n } else {\n throw e\n }\n }\n}\n","import type { SourceLocation } from '../../../awst/source-location'\nimport { CodeError, throwError } from '../../../errors'\nimport type { ARC4StructType, DynamicArrayType, StaticArrayType } from '../arc4-types'\nimport type { PType } from '../base'\nimport type {\n ArrayLiteralPType,\n ArrayPType,\n FixedArrayPType,\n ImmutableObjectPType,\n MutableObjectPType,\n MutableTuplePType,\n ObjectLiteralPType,\n ReadonlyArrayPType,\n ReadonlyTuplePType,\n ReferenceArrayType,\n} from '../index'\nimport { DefaultVisitor } from './default-visitor'\n\nexport function hasProperty(ptype: PType, property: string, sourceLocation: SourceLocation) {\n return Boolean(getIndexType(ptype, property, sourceLocation))\n}\nexport function hasPropertyOfType(ptype: PType, property: string, propType: PType, sourceLocation: SourceLocation) {\n return Boolean(getIndexType(ptype, property, sourceLocation)?.equals(propType))\n}\nexport function getPropertyType(ptype: PType, property: string, sourceLocation: SourceLocation) {\n return (\n getIndexType(ptype, property, sourceLocation) ??\n throwError(new CodeError(`Property ${property} does not exist on ${ptype.name}`, { sourceLocation }))\n )\n}\n\nexport function getIndexType(ptype: PType, index: bigint | string, sourceLocation: SourceLocation) {\n return IndexTypeVisitor.accept(ptype, index, sourceLocation)\n}\n\nexport class IndexTypeVisitor extends DefaultVisitor<PType | undefined> {\n constructor(\n private readonly index: string | bigint,\n private readonly sourceLocation: SourceLocation,\n ) {\n super()\n }\n\n /**\n * Return the type that would result from accessing the specified index of a value of this type.\n *\n * @param ptype\n * @param index\n * @param sourceLocation\n */\n static accept(ptype: PType, index: string | bigint, sourceLocation: SourceLocation): PType | undefined {\n return ptype.accept(new IndexTypeVisitor(index, sourceLocation))\n }\n\n defaultReturn(ptype: PType): PType | undefined {\n throw new CodeError(`${ptype.name} is not indexable by ${typeof this.index === 'bigint' ? 'number' : 'string'}`, {\n sourceLocation: this.sourceLocation,\n })\n }\n\n visitARC4StructType(ptype: ARC4StructType): PType | undefined {\n if (typeof this.index === 'string') {\n return ptype.fields[this.index]\n }\n return super.visitARC4StructType(ptype)\n }\n\n visitImmutableObjectPType(ptype: ImmutableObjectPType): PType | undefined {\n if (typeof this.index === 'string') {\n return ptype.properties[this.index]\n }\n return super.visitImmutableObjectPType(ptype)\n }\n\n visitMutableObjectPType(ptype: MutableObjectPType): PType | undefined {\n if (typeof this.index === 'string') {\n return ptype.properties[this.index]\n }\n return super.visitMutableObjectPType(ptype)\n }\n\n visitObjectLiteralPType(ptype: ObjectLiteralPType): PType | undefined {\n if (typeof this.index === 'string') {\n return ptype.properties[this.index]\n }\n return super.visitObjectLiteralPType(ptype)\n }\n\n visitReferenceArrayType(ptype: ReferenceArrayType): PType | undefined {\n if (typeof this.index === 'bigint') {\n return ptype.elementType\n }\n return super.visitReferenceArrayType(ptype)\n }\n\n visitDynamicArrayType(ptype: DynamicArrayType): PType | undefined {\n if (typeof this.index === 'bigint') {\n return ptype.elementType\n }\n return super.visitDynamicArrayType(ptype)\n }\n\n visitStaticArrayType(ptype: StaticArrayType): PType | undefined {\n if (typeof this.index === 'bigint') {\n return this.index >= 0 && this.index < ptype.arraySize ? ptype.elementType : undefined\n }\n return super.visitStaticArrayType(ptype)\n }\n\n visitFixedArrayPType(ptype: FixedArrayPType): PType | undefined {\n if (typeof this.index === 'bigint') {\n return this.index >= 0 && this.index < ptype.arraySize ? ptype.elementType : undefined\n }\n return super.visitFixedArrayPType(ptype)\n }\n\n visitReadonlyArrayPType(ptype: ReadonlyArrayPType): PType | undefined {\n if (typeof this.index === 'bigint') {\n return ptype.elementType\n }\n return super.visitReadonlyArrayPType(ptype)\n }\n\n visitArrayPType(ptype: ArrayPType): PType | undefined {\n if (typeof this.index === 'bigint') {\n return ptype.elementType\n }\n return super.visitArrayPType(ptype)\n }\n\n visitReadonlyTuplePType(ptype: ReadonlyTuplePType): PType | undefined {\n if (typeof this.index === 'bigint') {\n return ptype.items[Number(this.index)]\n }\n return super.visitReadonlyTuplePType(ptype)\n }\n\n visitMutableTuplePType(ptype: MutableTuplePType): PType | undefined {\n if (typeof this.index === 'bigint') {\n return ptype.items[Number(this.index)]\n }\n return super.visitMutableTuplePType(ptype)\n }\n\n visitArrayLiteralPType(ptype: ArrayLiteralPType): PType | undefined {\n if (typeof this.index === 'bigint') {\n return ptype.items[Number(this.index)]\n }\n return super.visitArrayLiteralPType(ptype)\n }\n}\n","import type { SourceLocation } from '../../../awst/source-location'\nimport { CodeError } from '../../../errors'\nimport type { ARC4StructType } from '../arc4-types'\nimport type { PType } from '../base'\nimport type { ImmutableObjectPType, MutableObjectPType, ObjectLiteralPType } from '../index'\nimport { DefaultVisitor } from './default-visitor'\n\nexport function spreadableProperties(ptype: PType, sourceLocation: SourceLocation): ReadonlyArray<[string, PType]> {\n return ptype.accept(new SpreadablePropertiesVisitor(sourceLocation))\n}\n\nclass SpreadablePropertiesVisitor extends DefaultVisitor<ReadonlyArray<[string, PType]>> {\n constructor(private readonly sourceLocation: SourceLocation) {\n super()\n }\n\n defaultReturn(ptype: PType): ReadonlyArray<[string, PType]> {\n throw new CodeError(`${ptype} is not spreadable`, { sourceLocation: this.sourceLocation })\n }\n\n visitImmutableObjectPType(ptype: ImmutableObjectPType): ReadonlyArray<[string, PType]> {\n return ptype.orderedProperties()\n }\n\n visitObjectLiteralPType(ptype: ObjectLiteralPType): ReadonlyArray<[string, PType]> {\n return ptype.orderedProperties()\n }\n\n visitARC4StructType(ptype: ARC4StructType): ReadonlyArray<[string, PType]> {\n return Object.entries(ptype.fields)\n }\n\n visitMutableObjectPType(ptype: MutableObjectPType): ReadonlyArray<[string, PType]> {\n return ptype.orderedProperties()\n }\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { NewStruct, TupleExpression } from '../../../awst/nodes'\nimport type { ImmutableObjectPType, ObjectLiteralPType } from '../../ptypes'\nimport { MutableObjectPType } from '../../ptypes'\nimport type { InstanceBuilder } from '../index'\nimport { requireExpressionOfType } from '../util'\n\nexport function createStruct(ptype: MutableObjectPType, valueProvider: InstanceBuilder) {\n return nodeFactory.newStruct({\n wtype: ptype.wtype,\n sourceLocation: valueProvider.sourceLocation,\n values: new Map(\n ptype\n .orderedProperties()\n .map(([p, propPType]) => [p, requireExpressionOfType(valueProvider.memberAccess(p, valueProvider.sourceLocation), propPType)]),\n ),\n })\n}\n\nexport function createNamedTuple(ptype: ImmutableObjectPType | ObjectLiteralPType, valueProvider: InstanceBuilder) {\n return nodeFactory.tupleExpression({\n sourceLocation: valueProvider.sourceLocation,\n items: ptype\n .orderedProperties()\n .map(([prop, propType]) => requireExpressionOfType(valueProvider.memberAccess(prop, valueProvider.sourceLocation), propType)),\n wtype: ptype.wtype,\n })\n}\n\nexport function createObject(\n ptype: ImmutableObjectPType | ObjectLiteralPType | MutableObjectPType,\n valueProvider: InstanceBuilder,\n): TupleExpression | NewStruct {\n if (ptype instanceof MutableObjectPType) {\n return createStruct(ptype, valueProvider)\n } else {\n return createNamedTuple(ptype, valueProvider)\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 { ImmutableObjectPType, MutableObjectPType, PTypeOrClass } from '../../ptypes'\nimport { isObjectType, ObjectLiteralPType, type PType } from '../../ptypes'\nimport { getPropertyType } from '../../ptypes/visitors/index-type-visitor'\nimport { instanceEb } from '../../type-registry'\nimport type { InstanceBuilder } from '../index'\nimport { InstanceExpressionBuilder, type NodeBuilder } from '../index'\nimport { requestInstanceBuilder } from '../util'\nimport { createObject } from './util'\n\nexport class ResolvedObjectLiteralExpressionBuilder extends InstanceExpressionBuilder<ObjectLiteralPType> {\n constructor(expr: Expression, ptype: PType) {\n invariant(\n ptype instanceof ObjectLiteralPType,\n `ResolvedObjectLiteralExpressionBuilder must be instantiated with ptype of ObjectLiteralPType`,\n )\n super(expr, ptype)\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n if (name in this.ptype.properties) {\n const propertyPtype = getPropertyType(this.ptype, name, sourceLocation)\n return instanceEb(\n nodeFactory.fieldExpression({\n name,\n sourceLocation,\n base: this._expr,\n wtype: propertyPtype.wtypeOrThrow,\n }),\n propertyPtype,\n )\n }\n return super.memberAccess(name, sourceLocation)\n }\n\n hasProperty(name: string): boolean {\n return name in this.ptype.properties\n }\n\n resolvableToPType(ptype: PTypeOrClass): ptype is ObjectLiteralPType | ImmutableObjectPType | MutableObjectPType {\n if (isObjectType(ptype)) {\n return ptype\n .orderedProperties()\n .every(([prop, propType]) => requestInstanceBuilder(this.memberAccess(prop, this.sourceLocation))?.resolvableToPType(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\n return instanceEb(createObject(ptype, base), ptype)\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, InternalError } from '../../../errors'\nimport type { ImmutableObjectPType, MutableObjectPType, PType, PTypeOrClass } from '../../ptypes'\nimport { isObjectType, ObjectLiteralPType } from '../../ptypes'\nimport { getIndexType } from '../../ptypes/visitors/index-type-visitor'\nimport { spreadableProperties } from '../../ptypes/visitors/spreadable-properties'\nimport { instanceEb } from '../../type-registry'\nimport type { InstanceBuilder, NodeBuilder } from '../index'\nimport { LiteralExpressionBuilder } from '../literal-expression-builder'\nimport { ResolvedObjectLiteralExpressionBuilder } from '../objects/resolved-object-literal-expression-builder'\nimport { createObject } from '../objects/util'\nimport { requestExpressionOfType, requireExpressionOfType, requireInstanceBuilder } from '../util'\n\nexport type ObjectLiteralParts =\n | {\n type: 'properties'\n properties: Record<string, InstanceBuilder>\n }\n | {\n type: 'spread-object'\n obj: InstanceBuilder\n spreadLocation: SourceLocation\n }\n\nexport class ObjectLiteralExpressionBuilder extends LiteralExpressionBuilder {\n readonly isConstant = false\n\n static fromParts(sourceLocation: SourceLocation, parts: ObjectLiteralParts[]): ObjectLiteralExpressionBuilder {\n const types: Record<string, PType> = {}\n const propertyToItemMap: Record<string, number> = {}\n const items: InstanceBuilder[] = []\n for (const part of parts) {\n if (part.type === 'properties') {\n for (const [prop, propBuilder] of Object.entries(part.properties)) {\n types[prop] = propBuilder.ptype\n propertyToItemMap[prop] = items.length\n items.push(propBuilder)\n }\n } else {\n const obj = part.obj.singleEvaluation()\n for (const [prop, propType] of spreadableProperties(part.obj.ptype, part.spreadLocation)) {\n types[prop] = propType\n propertyToItemMap[prop] = items.length\n items.push(requireInstanceBuilder(obj.memberAccess(prop, part.spreadLocation)))\n }\n }\n }\n return new ObjectLiteralExpressionBuilder(sourceLocation, new ObjectLiteralPType({ properties: types }), propertyToItemMap, items)\n }\n\n private constructor(\n sourceLocation: SourceLocation,\n public readonly ptype: ObjectLiteralPType,\n private readonly propertyToItemMap: Record<string, number>,\n private readonly items: InstanceBuilder[],\n private readonly isSingleEval = false,\n ) {\n super(sourceLocation)\n }\n\n singleEvaluation(): InstanceBuilder {\n if (this.isSingleEval) return this\n const tuple = nodeFactory.singleEvaluation({\n source: nodeFactory.tupleExpression({\n items: this.items.map((item) => item.resolve()),\n sourceLocation: this.sourceLocation,\n wtype: this.ptype.wtype,\n }),\n })\n\n return new ObjectLiteralExpressionBuilder(\n this.sourceLocation,\n this.ptype,\n this.propertyToItemMap,\n this.items.map((item, index) =>\n instanceEb(\n nodeFactory.tupleItemExpression({\n base: tuple,\n index: BigInt(index),\n sourceLocation: item.sourceLocation,\n }),\n item.ptype,\n ),\n ),\n true,\n )\n }\n\n resolve(): Expression {\n throw new InternalError('Cannot resolve object literal', { sourceLocation: this.sourceLocation })\n }\n resolveLValue(): LValue {\n return nodeFactory.tupleExpression({\n items: this.ptype\n .orderedProperties()\n .map(([p, propPType]) => requireInstanceBuilder(this.memberAccess(p, this.sourceLocation)).resolveLValue()),\n sourceLocation: this.sourceLocation,\n wtype: this.ptype.getImmutable().wtype,\n })\n }\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n if (name in this.propertyToItemMap) {\n return this.items[this.propertyToItemMap[name]]\n }\n throw new CodeError(`${name} does not exist on ${this.typeDescription}`, { sourceLocation })\n }\n\n hasProperty(name: string): boolean {\n return name in this.propertyToItemMap\n }\n\n private toObjectType(ptype: ImmutableObjectPType | MutableObjectPType | ObjectLiteralPType): Expression {\n let base: InstanceBuilder\n if (this.isSingleEval || (this.ptype.hasSameStructure(ptype) && this.items.length === Object.keys(ptype.properties).length)) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n base = this\n } else {\n // Resolve all items to a tuple but using the target ptype\n // This will resolve numeric literals to algo-ts types if available\n\n const itemToPropertyType = Object.fromEntries(\n Object.entries(this.propertyToItemMap).map(([propName, index]) => [index, getIndexType(ptype, propName, this.sourceLocation)]),\n )\n\n const tuple = nodeFactory.singleEvaluation({\n source: nodeFactory.tupleExpression({\n items: this.items.map((item, index) => requireExpressionOfType(item, itemToPropertyType[index] ?? item.ptype)),\n sourceLocation: this.sourceLocation,\n }),\n })\n const tempType = new ObjectLiteralPType({\n properties: ptype.properties,\n })\n\n base = new ResolvedObjectLiteralExpressionBuilder(\n nodeFactory.tupleExpression({\n items: ptype.orderedProperties().map(([p]) => {\n const index = this.propertyToItemMap[p]\n return nodeFactory.tupleItemExpression({ base: tuple, index: BigInt(index), sourceLocation: this.items[index].sourceLocation })\n }),\n sourceLocation: this.sourceLocation,\n wtype: tempType.wtype,\n }),\n tempType,\n ).singleEvaluation()\n }\n return createObject(ptype, base)\n }\n\n resolvableToPType(ptype: PTypeOrClass): ptype is ImmutableObjectPType | MutableObjectPType | ObjectLiteralPType {\n if (ptype.equals(this.ptype)) return true\n\n if (!isObjectType(ptype)) 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\n return instanceEb(this.toObjectType(ptype), ptype)\n }\n\n checkForUnclonedMutables(scenario: string): boolean {\n const usedIndexes = new Set(Object.values(this.propertyToItemMap))\n let contains = false\n for (const [idx, item] of this.items.entries()) {\n if (!usedIndexes.has(idx)) continue\n contains ||= item.checkForUnclonedMutables('being used in an object literal')\n }\n return contains\n }\n}\n","import { OnCompletionAction } from '../../awst/models'\nimport type { Expression } from '../../awst/nodes'\nimport { ARC4CreateOption, NewArray, StringConstant, TupleExpression } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { Constants } from '../../constants'\nimport { CodeError } from '../../errors'\nimport { logger } from '../../logger'\nimport { codeInvariant } from '../../util'\nimport type { Arc4AbiDecoratorData } from '../models/decorator-data'\nimport type { PType } from '../ptypes'\nimport { arc4AbiMethodDecorator, arc4BareMethodDecorator, boolPType, ReadonlyArrayPType, readonlyDecorator, stringPType } from '../ptypes'\nimport type { InstanceBuilder } from './index'\nimport { DecoratorDataBuilder, NodeBuilder } from './index'\nimport { ObjectLiteralExpressionBuilder } from './literal/object-literal-expression-builder'\nimport { mapStringConstant, requireBooleanConstant, requireInstanceBuilder, requireStringConstant } from './util'\nimport { parseFunctionArgs } from './util/arg-parsing'\n\nconst ocaMap: Record<string, OnCompletionAction> = {\n NoOp: OnCompletionAction.NoOp,\n OptIn: OnCompletionAction.OptIn,\n CloseOut: OnCompletionAction.CloseOut,\n ClearState: OnCompletionAction.ClearState,\n UpdateApplication: OnCompletionAction.UpdateApplication,\n DeleteApplication: OnCompletionAction.DeleteApplication,\n}\n\nconst createMap: Record<string, ARC4CreateOption> = {\n allow: ARC4CreateOption.allow,\n require: ARC4CreateOption.require,\n disallow: ARC4CreateOption.disallow,\n}\n\nconst resourceEncodingMap: Record<string, 'index' | 'value'> = {\n index: 'index',\n value: 'value',\n}\n\nexport class Arc4BareMethodDecoratorBuilder extends NodeBuilder {\n readonly ptype = arc4BareMethodDecorator\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: this.typeDescription,\n argSpec: (a) => [\n a.obj({\n allowActions: a.optional(stringPType, new ReadonlyArrayPType({ elementType: stringPType })),\n onCreate: a.optional(stringPType),\n }),\n ],\n })\n return new DecoratorDataBuilder(sourceLocation, {\n type: Constants.symbolNames.arc4BareDecoratorName,\n allowedCompletionTypes: allowActions && resolveOnCompletionActions(allowActions),\n allowedCompletionTypesLocation: allowActions?.sourceLocation,\n create: onCreate && mapStringConstant(createMap, onCreate.resolve()),\n createLocation: onCreate?.sourceLocation,\n sourceLocation: sourceLocation,\n })\n }\n}\n\nexport class ReadonlyDecoratorBuilder extends DecoratorDataBuilder {\n readonly ptype = readonlyDecorator\n\n constructor(sourceLocation: SourceLocation) {\n super(sourceLocation, {\n type: Constants.symbolNames.readonlyDecoratorName,\n readonly: true,\n sourceLocation,\n })\n }\n}\n\nexport class Arc4AbiMethodDecoratorBuilder extends NodeBuilder {\n readonly ptype = arc4AbiMethodDecorator\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [{ allowActions, onCreate, readonly, name, resourceEncoding, 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 ReadonlyArrayPType({ elementType: stringPType })),\n onCreate: a.optional(stringPType),\n readonly: a.optional(boolPType),\n name: a.optional(stringPType),\n resourceEncoding: a.optional(stringPType),\n defaultArguments: a.optional(),\n }),\n ],\n })\n\n return new DecoratorDataBuilder(sourceLocation, {\n type: Constants.symbolNames.arc4AbiDecoratorName,\n allowedCompletionTypes: allowActions && resolveOnCompletionActions(allowActions),\n allowedCompletionTypesLocation: allowActions?.sourceLocation,\n create: onCreate && mapStringConstant(createMap, onCreate.resolve()),\n createLocation: onCreate?.sourceLocation,\n sourceLocation: sourceLocation,\n nameOverride: name ? requireStringConstant(name).value : undefined,\n resourceEncoding: resourceEncoding && mapStringConstant(resourceEncodingMap, resourceEncoding.resolve()),\n readonly: readonly ? requireBooleanConstant(readonly).value : undefined,\n defaultArguments: resolveDefaultArguments(defaultArguments, sourceLocation),\n })\n }\n}\n\nfunction resolveOnCompletionActions(oca: InstanceBuilder): OnCompletionAction[] {\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 codeInvariant(distinctOcas.length, 'Method must allow at least one on complete action', oca.sourceLocation)\n return ocas\n}\n\nfunction resolveDefaultArguments(\n defaultArguments: NodeBuilder | undefined,\n sourceLocation: SourceLocation,\n): Arc4AbiDecoratorData['defaultArguments'] {\n const result: Arc4AbiDecoratorData['defaultArguments'] = {}\n if (!defaultArguments) return result\n codeInvariant(defaultArguments instanceof ObjectLiteralExpressionBuilder, `Default argument specification should be an object literal`)\n for (const [parameterName] of defaultArguments.ptype.orderedProperties()) {\n const paramConfig = defaultArguments.memberAccess(parameterName, sourceLocation)\n codeInvariant(paramConfig instanceof ObjectLiteralExpressionBuilder, 'Default argument specification should be an object literal')\n\n if (paramConfig.hasProperty('constant')) {\n result[parameterName] = {\n type: 'constant',\n value: requireInstanceBuilder(paramConfig.memberAccess('constant', sourceLocation)),\n }\n } else if (paramConfig.hasProperty('from')) {\n result[parameterName] = {\n type: 'member',\n name: requireStringConstant(paramConfig.memberAccess('from', sourceLocation)).value,\n }\n } else {\n logger.error(sourceLocation, 'Default argument specifications should specify fromConstant or fromMember')\n }\n }\n\n return result\n}\n","import type { DeliberateAny } from '../typescript-helpers'\nimport { bigIntToUint8Array } from '../util'\nimport { nodeFactory } from './node-factory'\nimport type { Expression } from './nodes'\nimport * as awst from './nodes'\nimport { BytesConstant, BytesEncoding, StringConstant } from './nodes'\nimport type { SourceLocation } from './source-location'\nimport { wtypes } from './wtypes'\n\nexport const intrinsicFactory = {\n bytesConcat({ left, right, sourceLocation }: { left: awst.Expression; right: awst.Expression; sourceLocation: SourceLocation }) {\n if (left.wtype.equals(right.wtype)) {\n if (left instanceof BytesConstant && right instanceof BytesConstant) {\n const concatValue = new Uint8Array(left.value.length + right.value.length)\n concatValue.set(left.value, 0)\n concatValue.set(right.value, left.value.length)\n return nodeFactory.bytesConstant({\n value: concatValue,\n wtype: left.wtype,\n encoding: left.encoding,\n sourceLocation,\n })\n } else if (left instanceof StringConstant && right instanceof StringConstant) {\n return nodeFactory.stringConstant({\n value: left.value + right.value,\n sourceLocation,\n })\n }\n }\n\n return nodeFactory.intrinsicCall({\n sourceLocation,\n stackArgs: [left, right],\n immediates: [],\n wtype: left.wtype,\n opCode: 'concat',\n })\n },\n err({ sourceLocation, comment }: { sourceLocation: SourceLocation; comment: string | null }) {\n return nodeFactory.assertExpression({\n condition: null,\n sourceLocation,\n wtype: wtypes.voidWType,\n errorMessage: comment,\n })\n },\n assert({ sourceLocation, comment, condition }: { sourceLocation: SourceLocation; comment: string | null; condition: Expression }) {\n return nodeFactory.assertExpression({\n sourceLocation,\n condition,\n wtype: wtypes.voidWType,\n errorMessage: comment,\n })\n },\n bytesLen({ value, sourceLocation }: { value: awst.Expression; sourceLocation: SourceLocation }) {\n return nodeFactory.intrinsicCall({\n opCode: 'len',\n stackArgs: [value],\n sourceLocation: sourceLocation,\n immediates: [],\n wtype: wtypes.uint64WType,\n })\n },\n bitLen({ value, sourceLocation }: { value: awst.Expression; sourceLocation: SourceLocation }) {\n return nodeFactory.intrinsicCall({\n opCode: 'bitlen',\n stackArgs: [value],\n sourceLocation: sourceLocation,\n immediates: [],\n wtype: wtypes.uint64WType,\n })\n },\n itob({ value, sourceLocation }: { value: awst.Expression; sourceLocation: SourceLocation }): awst.Expression {\n const wtype = new wtypes.BytesWType({ length: 8n })\n if (value instanceof awst.IntegerConstant) {\n return nodeFactory.bytesConstant({\n sourceLocation,\n value: bigIntToUint8Array(value.value, 8),\n encoding: BytesEncoding.base16,\n wtype,\n })\n }\n return nodeFactory.intrinsicCall({\n sourceLocation,\n stackArgs: [value],\n immediates: [],\n wtype,\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 bzero({\n size,\n sourceLocation,\n wtype = wtypes.bytesWType,\n }: {\n size: bigint | Expression\n sourceLocation: SourceLocation\n wtype: wtypes.WType\n }) {\n return nodeFactory.intrinsicCall({\n opCode: 'bzero',\n immediates: [],\n stackArgs: [\n typeof size === 'bigint'\n ? nodeFactory.uInt64Constant({\n value: size,\n sourceLocation,\n })\n : size,\n ],\n sourceLocation,\n wtype: wtype,\n })\n },\n} satisfies Record<string, (args: DeliberateAny) => awst.Expression>\n","import type { Expression, LValue } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { CodeError } from '../../errors'\nimport type { PType, PTypeOrClass } from '../ptypes'\nimport { undefinedPType, UnionPType } from '../ptypes'\nimport type { BuilderBinaryOp, BuilderComparisonOp, BuilderUnaryOp, InstanceBuilder, NodeBuilder } from './index'\nimport { WrappingInstanceBuilder } from './index'\n\nexport class OptionalExpressionBuilder extends WrappingInstanceBuilder {\n resolvableToPType(ptype: PTypeOrClass): boolean {\n this.#throwRequiresBang()\n }\n resolveToPType(ptype: PTypeOrClass): InstanceBuilder {\n this.#throwRequiresBang()\n }\n singleEvaluation(): InstanceBuilder {\n this.#throwRequiresBang()\n }\n toBytes(sourceLocation: SourceLocation): InstanceBuilder {\n this.#throwRequiresBang()\n }\n toString(sourceLocation: SourceLocation): Expression {\n this.#throwRequiresBang()\n }\n prefixUnaryOp(op: BuilderUnaryOp, sourceLocation: SourceLocation): InstanceBuilder {\n this.#throwRequiresBang()\n }\n postfixUnaryOp(op: BuilderUnaryOp, sourceLocation: SourceLocation): InstanceBuilder {\n this.#throwRequiresBang()\n }\n iterate(sourceLocation: SourceLocation): Expression {\n this.#throwRequiresBang()\n }\n hasProperty(_name: string): boolean {\n this.#throwRequiresBang()\n }\n boolEval(sourceLocation: SourceLocation, negate: boolean): Expression {\n this.#throwRequiresBang()\n }\n get isConstant(): boolean {\n return this.#base.isConstant\n }\n\n get base() {\n return this.#base\n }\n\n #base: InstanceBuilder\n constructor(base: InstanceBuilder) {\n super(base.sourceLocation)\n this.#base = base\n }\n\n get ptype(): PType {\n return UnionPType.fromTypes([undefinedPType, this.base.ptype])\n }\n\n #throwRequiresBang(): never {\n throw new CodeError('This expression requires a non-null assertion operator \"!\" immediately proceeding it', {\n sourceLocation: this.sourceLocation,\n })\n }\n\n resolve(): Expression {\n this.#throwRequiresBang()\n }\n resolveLValue(): LValue {\n this.#throwRequiresBang()\n }\n compare(other: InstanceBuilder, op: BuilderComparisonOp, sourceLocation: SourceLocation): InstanceBuilder {\n this.#throwRequiresBang()\n }\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n this.#throwRequiresBang()\n }\n newCall(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): InstanceBuilder {\n this.#throwRequiresBang()\n }\n binaryOp(other: InstanceBuilder, op: BuilderBinaryOp, sourceLocation: SourceLocation): InstanceBuilder {\n this.#throwRequiresBang()\n }\n augmentedAssignment(other: InstanceBuilder, op: BuilderBinaryOp, sourceLocation: SourceLocation): InstanceBuilder {\n this.#throwRequiresBang()\n }\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n this.#throwRequiresBang()\n }\n taggedTemplate(\n head: string,\n spans: ReadonlyArray<readonly [InstanceBuilder, string]>,\n typeArgs: ReadonlyArray<PType>,\n sourceLocation: SourceLocation,\n ): InstanceBuilder {\n this.#throwRequiresBang()\n }\n indexAccess(index: InstanceBuilder | bigint, sourceLocation: SourceLocation): NodeBuilder {\n this.#throwRequiresBang()\n }\n}\n","import { invariant } from '../../../util'\nimport { numberPType, uint64PType } from '../../ptypes'\nimport type { InstanceBuilder } from '../index'\nimport { NumericLiteralExpressionBuilder } from '../literal/numeric-literal-expression-builder'\n\nexport function getBigIntOrUint64Expr(builder: InstanceBuilder) {\n if (builder.ptype.equals(numberPType)) {\n invariant(\n builder instanceof NumericLiteralExpressionBuilder,\n 'Builder for number type must be NumericLiteralExpressionBuilder',\n builder.sourceLocation,\n )\n return builder.value\n } else {\n invariant(builder.ptype.equals(uint64PType), 'Builder must be uint64 if not number', builder.sourceLocation)\n return builder.resolve()\n }\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { Expression } from '../../../awst/nodes'\nimport { UInt64BinaryOperator } from '../../../awst/nodes'\nimport { logger } from '../../../logger'\nimport type { InstanceBuilder } from '../index'\nimport { getBigIntOrUint64Expr } from './get-bigint-or-uint64-expr'\n\nexport function translateNegativeIndex(arrayLength: Expression | bigint, index: InstanceBuilder) {\n const indexParam = getBigIntOrUint64Expr(index)\n\n if (typeof indexParam === 'bigint') {\n if (typeof arrayLength === 'bigint') {\n let indexValue = indexParam < 0 ? arrayLength + indexParam : indexParam\n if (indexValue < 0n || indexValue >= arrayLength) {\n logger.error(index.sourceLocation, 'Index access out of bounds')\n indexValue = 0n\n }\n return nodeFactory.uInt64Constant({\n value: indexValue,\n sourceLocation: index.sourceLocation,\n })\n } else {\n return nodeFactory.uInt64BinaryOperation({\n op: UInt64BinaryOperator.sub,\n left: arrayLength,\n right: nodeFactory.uInt64Constant({\n value: indexParam * -1n,\n sourceLocation: index.sourceLocation,\n }),\n sourceLocation: index.sourceLocation,\n })\n }\n } else {\n return indexParam\n }\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { Expression } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport type { PType } from '../../ptypes'\nimport { numberPType, uint64PType } from '../../ptypes'\nimport { instanceEb } from '../../type-registry'\nimport type { NodeBuilder } from '../index'\nimport { FunctionBuilder } from '../index'\nimport { OptionalExpressionBuilder } from '../optional-expression-builder'\nimport { parseFunctionArgs } from '../util/arg-parsing'\nimport { translateNegativeIndex } from '../util/translate-negative-index'\n\nexport class AtFunctionBuilder extends FunctionBuilder {\n constructor(\n private expr: Expression,\n private itemPType: PType,\n private exprLength: Expression | bigint,\n sourceLocation: SourceLocation,\n private returnsOptional = false,\n ) {\n super(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 result = instanceEb(\n nodeFactory.indexExpression({\n base: this.expr,\n sourceLocation: sourceLocation,\n index: translateNegativeIndex(this.exprLength, index),\n wtype: this.itemPType.wtypeOrThrow,\n }),\n this.itemPType,\n )\n return this.returnsOptional ? new OptionalExpressionBuilder(result) : result\n }\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport type { PType } from '../../ptypes'\nimport { instanceEb } from '../../type-registry'\nimport type { InstanceBuilder } from '../index'\nimport { FunctionBuilder, type NodeBuilder } from '../index'\nimport { parseFunctionArgs } from '../util/arg-parsing'\n\nexport class ArrayPopFunctionBuilder extends FunctionBuilder {\n constructor(private arrayBuilder: InstanceBuilder<{ elementType: PType } & PType>) {\n super(arrayBuilder.sourceLocation)\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const elementType = this.arrayBuilder.ptype.elementType\n parseFunctionArgs({\n args,\n typeArgs,\n funcName: 'pop',\n callLocation: sourceLocation,\n genericTypeArgs: 0,\n argSpec: () => [],\n })\n\n return instanceEb(\n nodeFactory.arrayPop({\n base: this.arrayBuilder.resolve(),\n sourceLocation,\n wtype: elementType.wtypeOrThrow,\n }),\n elementType,\n )\n }\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport { wtypes } from '../../../awst/wtypes'\nimport type { PType } from '../../ptypes'\nimport { voidPType } from '../../ptypes'\nimport { instanceEb } from '../../type-registry'\nimport type { InstanceBuilder } from '../index'\nimport { FunctionBuilder, type NodeBuilder } from '../index'\nimport { parseFunctionArgs } from '../util/arg-parsing'\n\nexport class ArrayPushFunctionBuilder extends FunctionBuilder {\n constructor(private arrayBuilder: InstanceBuilder<{ elementType: PType } & PType>) {\n super(arrayBuilder.sourceLocation)\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const elementType = this.arrayBuilder.ptype.elementType\n const {\n args: [...items],\n } = parseFunctionArgs({\n args,\n typeArgs,\n funcName: 'push',\n callLocation: sourceLocation,\n genericTypeArgs: 0,\n argSpec: (a) => [a.required(elementType), ...args.slice(1).map(() => a.required(elementType))],\n })\n\n return instanceEb(\n nodeFactory.arrayExtend({\n base: this.arrayBuilder.resolve(),\n other: nodeFactory.tupleExpression({\n items: items.map((i) => i.resolve()),\n sourceLocation,\n }),\n sourceLocation,\n wtype: wtypes.voidWType,\n }),\n voidPType,\n )\n }\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { Expression } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport type { wtypes } from '../../../awst/wtypes'\n\nimport type { PType } from '../../ptypes'\nimport { numberPType, uint64PType } from '../../ptypes'\nimport { instanceEb } from '../../type-registry'\nimport type { NodeBuilder } from '../index'\nimport { FunctionBuilder } from '../index'\nimport { parseFunctionArgs } from '../util/arg-parsing'\nimport { getBigIntOrUint64Expr } from '../util/get-bigint-or-uint64-expr'\n\nexport class SliceFunctionBuilder extends FunctionBuilder {\n constructor(\n private base: Expression,\n private resultPType: PType & { wtype: wtypes.WType },\n ) {\n super(base.sourceLocation)\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [start, stop],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n callLocation: sourceLocation,\n funcName: 'slice',\n argSpec: (a) => [a.optional(uint64PType, numberPType), a.optional(uint64PType, numberPType)],\n })\n return instanceEb(\n nodeFactory.intersectionSliceExpression({\n base: this.base,\n sourceLocation: sourceLocation,\n beginIndex: start ? getBigIntOrUint64Expr(start) : null,\n endIndex: stop ? getBigIntOrUint64Expr(stop) : null,\n wtype: this.resultPType.wtype,\n }),\n this.resultPType,\n )\n }\n}\n","import { 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 { BigIntPType, PTypeOrClass } from '../../ptypes'\nimport { BigIntLiteralPType, bigIntPType, biguintPType, boolPType } from '../../ptypes'\nimport { instanceEb, typeRegistry } from '../../type-registry'\nimport { foldBinaryOp, foldComparisonOp } from '../folding'\nimport type { BuilderBinaryOp, BuilderComparisonOp, InstanceBuilder } from '../index'\nimport { BuilderUnaryOp } from '../index'\nimport { LiteralExpressionBuilder } from '../literal-expression-builder'\nimport { isValidLiteralForPType } from '../util/is-valid-literal-for-ptype'\n\nexport class BigIntLiteralExpressionBuilder extends LiteralExpressionBuilder {\n readonly isConstant = true\n\n singleEvaluation(): InstanceBuilder {\n return this\n }\n\n constructor(\n public readonly value: bigint,\n public readonly ptype: BigIntLiteralPType | BigIntPType,\n location: SourceLocation,\n ) {\n super(location)\n }\n\n resolvableToPType(ptype: PTypeOrClass): boolean {\n if (ptype.equals(biguintPType)) {\n return this.value >= 0n\n }\n return ptype.equals(bigIntPType) || ptype.equals(this.ptype)\n }\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 if (ptype.equals(this.ptype)) return this\n if (ptype.equals(bigIntPType)) return new BigIntLiteralExpressionBuilder(this.value, bigIntPType, this.sourceLocation)\n\n codeInvariant(isValidLiteralForPType(this.value, ptype), `${ptype.name} overflow or underflow: ${this.value}`, this.sourceLocation)\n 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\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 return new BigIntLiteralPType({ literalValue: value })\n }\n\n checkForUnclonedMutables(scenario: string): boolean {\n return false\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, bytesPType, stringPType } from '../ptypes'\nimport { instanceEb } from '../type-registry'\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).resolve(),\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): InstanceBuilder {\n return instanceEb(\n intrinsicFactory.itob({\n value: this._expr,\n sourceLocation,\n }),\n new BytesPType({ length: 8n }),\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 { 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 { 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 { codeInvariant, tryConvertEnum } from '../../util'\nimport type { InstanceType, PType } from '../ptypes'\nimport {\n BigIntLiteralPType,\n boolPType,\n BytesPType,\n itoaMethod,\n NumericLiteralPType,\n stringPType,\n Uint64Function,\n uint64PType,\n} from '../ptypes'\nimport { instanceEb } from '../type-registry'\nimport type { BuilderComparisonOp, InstanceBuilder, NodeBuilder } from './index'\nimport { BuilderBinaryOp, BuilderUnaryOp, FunctionBuilder, InstanceExpressionBuilder } from './index'\nimport { BigIntLiteralExpressionBuilder } from './literal/big-int-literal-expression-builder'\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, NumericLiteralPType, BigIntLiteralPType, 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 instanceof BigIntLiteralExpressionBuilder) {\n return new UInt64ExpressionBuilder(\n nodeFactory.uInt64Constant({\n sourceLocation,\n value: value.value,\n }),\n )\n } else 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.resolveToPType(uint64PType)\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n switch (name) {\n case 'MAX_VALUE':\n return new UInt64ExpressionBuilder(\n nodeFactory.uInt64Constant({\n value: 2n ** 64n - 1n,\n sourceLocation,\n }),\n )\n case 'MIN_VALUE':\n return new UInt64ExpressionBuilder(\n nodeFactory.uInt64Constant({\n value: 0n,\n sourceLocation,\n }),\n )\n }\n return super.memberAccess(name, sourceLocation)\n }\n}\n\nexport class UInt64ExpressionBuilder extends InstanceExpressionBuilder<InstanceType> {\n constructor(expr: Expression) {\n super(expr, uint64PType)\n }\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n switch (name) {\n case 'toString':\n return new ToStringFunctionBuilder(this, sourceLocation)\n }\n return super.memberAccess(name, sourceLocation)\n }\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): InstanceBuilder {\n return instanceEb(intrinsicFactory.itob({ value: this.resolve(), sourceLocation }), new BytesPType({ length: 8n }))\n }\n\n toString(sourceLocation: SourceLocation): Expression {\n return nodeFactory.subroutineCallExpression({\n wtype: wtypes.stringWType,\n target: nodeFactory.subroutineID({ target: itoaMethod.fullName }),\n args: [\n nodeFactory.callArg({\n name: 'i',\n value: this.resolve(),\n }),\n ],\n sourceLocation,\n })\n }\n}\n\nclass ToStringFunctionBuilder extends FunctionBuilder {\n constructor(\n private builder: UInt64ExpressionBuilder,\n sourceLocation: SourceLocation,\n ) {\n super(sourceLocation)\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [radix],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n argSpec: (a) => [a.optional(uint64PType)],\n funcName: 'toString',\n callLocation: sourceLocation,\n })\n codeInvariant(!radix, 'the radix parameter is not supported', radix?.sourceLocation)\n\n return instanceEb(this.builder.toString(sourceLocation), stringPType)\n }\n}\n","import { intrinsicFactory } from '../../../../awst/intrinsic-factory'\nimport { nodeFactory } from '../../../../awst/node-factory'\nimport type { Expression } from '../../../../awst/nodes'\nimport type { SourceLocation } from '../../../../awst/source-location'\nimport { wtypes } from '../../../../awst/wtypes'\nimport { CodeError } from '../../../../errors'\nimport { bigIntToUint8Array, codeInvariant } from '../../../../util'\nimport type { PType } from '../../../ptypes'\nimport { ArrayLiteralPType, ArrayPType, FixedArrayPType, MutableTuplePType, ReadonlyArrayPType, ReadonlyTuplePType } from '../../../ptypes'\nimport { ARC4ArrayType, DynamicArrayType, DynamicBytesType, StaticArrayType, StaticBytesType } from '../../../ptypes/arc4-types'\nimport { containsMutableType } from '../../../ptypes/visitors/contains-mutable-visitor'\nimport { instanceEb } from '../../../type-registry'\nimport type { InstanceBuilder } from '../../index'\n\nexport function concatArrays(left: InstanceBuilder, right: InstanceBuilder, sourceLocation: SourceLocation): InstanceBuilder {\n if (containsMutableType(left.ptype)) {\n left.checkForUnclonedMutables('when being concatenated')\n }\n if (containsMutableType(right.ptype)) {\n right.checkForUnclonedMutables('when being concatenated')\n }\n if (left.ptype instanceof StaticBytesType || left.ptype instanceof StaticArrayType) {\n /*\n TODO: This is only required because puya doesn't support staticarray + other => dynamic array\n To work around this, we convert arc4 static bytes and static array to dynamic bytes and dynamic array\n */\n const dynamicType = left.ptype instanceof StaticBytesType ? DynamicBytesType : new DynamicArrayType({ ...left.ptype })\n return concatArrays(toArc4Dynamic(left.ptype.arraySize, left.resolve(), dynamicType), right, sourceLocation)\n } else if (left.ptype instanceof FixedArrayPType || left.ptype instanceof ReadonlyArrayPType) {\n /*\n TODO: This is only required because puya doesn't support FixedArray + other => array\n To work around this, we convert fixed array to array\n */\n const arrayType = new ArrayPType({ elementType: left.ptype.elementType })\n const updatedLeft = instanceEb(\n nodeFactory.convertArray({\n expr: left.resolve(),\n wtype: arrayType.wtype,\n sourceLocation: left.sourceLocation,\n }),\n arrayType,\n )\n return concatArrays(updatedLeft, right, sourceLocation)\n }\n\n const returnType = getArrayConcatType(left.ptype, right.ptype, sourceLocation)\n return instanceEb(\n nodeFactory.arrayConcat({\n left: left.resolve(),\n right: right.resolve(),\n wtype: returnType.wtype,\n sourceLocation,\n }),\n returnType,\n )\n}\n\nfunction getArrayConcatType(left: PType, right: PType, sourceLocation: SourceLocation) {\n if (left instanceof ARC4ArrayType) {\n if (right instanceof ARC4ArrayType) {\n sameElementType(left.elementType, right.elementType, sourceLocation)\n if (left.equals(DynamicBytesType) || left instanceof StaticBytesType) {\n return DynamicBytesType\n }\n return new DynamicArrayType({\n elementType: left.elementType,\n })\n }\n } else if (left instanceof ArrayPType || left instanceof ArrayLiteralPType) {\n if (\n right instanceof ArrayPType ||\n right instanceof ArrayLiteralPType ||\n right instanceof ReadonlyArrayPType ||\n right instanceof ARC4ArrayType ||\n right instanceof FixedArrayPType\n ) {\n sameElementType(left.elementType, right.elementType, sourceLocation)\n return new ArrayPType({\n elementType: left.elementType,\n })\n }\n if (right instanceof ReadonlyTuplePType || right instanceof MutableTuplePType) {\n right.items.forEach((i) => sameElementType(left.elementType, i, sourceLocation))\n return new ArrayPType({\n elementType: left.elementType,\n })\n }\n }\n cannotConcat(left, right, sourceLocation)\n}\n\nfunction cannotConcat(left: PType, right: PType, sourceLocation: SourceLocation): never {\n throw new CodeError(`Cannot concat ${left} with ${right}`, { sourceLocation })\n}\n\nfunction sameElementType(left: PType, right: PType, sourceLocation: SourceLocation) {\n codeInvariant(left.equals(right), `Cannot concat array of type ${left} with iterable of type ${right}`, sourceLocation)\n}\n\nfunction toArc4Dynamic(staticSize: bigint, staticBytes: Expression, dynamicType: DynamicArrayType) {\n return instanceEb(\n nodeFactory.reinterpretCast({\n expr: intrinsicFactory.bytesConcat({\n left: nodeFactory.bytesConstant({\n value: bigIntToUint8Array(staticSize, 2),\n sourceLocation: staticBytes.sourceLocation,\n }),\n right: nodeFactory.reinterpretCast({\n expr: staticBytes,\n wtype: wtypes.bytesWType,\n sourceLocation: staticBytes.sourceLocation,\n }),\n sourceLocation: staticBytes.sourceLocation,\n }),\n wtype: dynamicType.wtype,\n sourceLocation: staticBytes.sourceLocation,\n }),\n dynamicType,\n )\n}\n","import type {\n ArrayLiteralPType,\n ArrayPType,\n FixedArrayPType,\n IterableIteratorType,\n MutableTuplePType,\n PType,\n ReadonlyArrayPType,\n ReadonlyTuplePType,\n ReferenceArrayType,\n} from '..'\nimport { UnionPType } from '..'\nimport type { DynamicArrayType, StaticArrayType } from '../arc4-types'\nimport { DefaultVisitor } from './default-visitor'\n\nexport class IteratorTypeVisitor extends DefaultVisitor<PType | undefined> {\n static accept(ptype: PType): PType | undefined {\n return ptype.accept(new IteratorTypeVisitor())\n }\n\n defaultReturn(ptype: PType): PType | undefined {\n return undefined\n }\n\n visitIterableIterator(ptype: IterableIteratorType): PType | undefined {\n return ptype.itemType\n }\n\n visitReferenceArrayType(ptype: ReferenceArrayType): PType | undefined {\n return ptype.elementType\n }\n visitDynamicArrayType(ptype: DynamicArrayType): PType | undefined {\n return ptype.elementType\n }\n visitStaticArrayType(ptype: StaticArrayType): PType | undefined {\n return ptype.elementType\n }\n visitFixedArrayPType(ptype: FixedArrayPType): PType | undefined {\n return ptype.elementType\n }\n visitReadonlyArrayPType(ptype: ReadonlyArrayPType): PType | undefined {\n return ptype.elementType\n }\n visitArrayPType(ptype: ArrayPType): PType | undefined {\n return ptype.elementType\n }\n visitReadonlyTuplePType(ptype: ReadonlyTuplePType): PType | undefined {\n return UnionPType.fromTypes(ptype.items)\n }\n visitMutableTuplePType(ptype: MutableTuplePType): PType | undefined {\n return UnionPType.fromTypes(ptype.items)\n }\n visitArrayLiteralPType(ptype: ArrayLiteralPType): PType | undefined {\n return UnionPType.fromTypes(ptype.items)\n }\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 type { InstanceBuilder, NodeBuilder } from '../index'\n\nexport const StaticIterator = Symbol('StaticIterator')\n\nexport interface StaticallyIterable {\n [StaticIterator](): InstanceBuilder[]\n}\n\nexport function isStaticallyIterable<T extends NodeBuilder>(builder: T): builder is T & StaticallyIterable {\n return StaticIterator in builder\n}\n","import { nodeFactory } from '../../../../awst/node-factory'\nimport type { SourceLocation } from '../../../../awst/source-location'\nimport { uint64PType } from '../../../ptypes'\nimport { instanceEb } from '../../../type-registry'\nimport type { InstanceBuilder } from '../../index'\nimport { isStaticallyIterable, StaticIterator } from '../../traits/static-iterator'\n\nexport function arrayLength(array: InstanceBuilder, sourceLocation: SourceLocation) {\n if (isStaticallyIterable(array)) {\n return instanceEb(\n nodeFactory.uInt64Constant({\n value: BigInt(array[StaticIterator]().length),\n sourceLocation,\n }),\n uint64PType,\n )\n }\n\n return instanceEb(\n nodeFactory.arrayLength({\n array: array.resolve(),\n sourceLocation,\n }),\n uint64PType,\n )\n}\n","import { nodeFactory } from '../../../../awst/node-factory'\nimport type { SourceLocation } from '../../../../awst/source-location'\nimport { codeInvariant } from '../../../../util'\nimport type { ArrayPType, FixedArrayPType, MutableTuplePType, PType, ReadonlyArrayPType } from '../../../ptypes'\nimport { IterableIteratorGeneric, ReadonlyTuplePType, uint64PType } from '../../../ptypes'\nimport type { DynamicArrayType, StaticArrayType } from '../../../ptypes/arc4-types'\nimport { IteratorTypeVisitor } from '../../../ptypes/visitors/iterator-type-visitor'\nimport type { InstanceBuilder } from '../../index'\nimport { FunctionBuilder, type NodeBuilder } from '../../index'\nimport { IterableIteratorExpressionBuilder } from '../../iterable-iterator-expression-builder'\nimport { parseFunctionArgs } from '../arg-parsing'\nimport { arrayLength } from './length'\n\ntype ArrayLike =\n | StaticArrayType\n | DynamicArrayType\n | ArrayPType\n | ReadonlyArrayPType\n | MutableTuplePType\n | ReadonlyTuplePType\n | FixedArrayPType\n\nexport class EntriesFunctionBuilder extends FunctionBuilder {\n constructor(private arrayBuilder: InstanceBuilder<ArrayLike>) {\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\n const sequenceType = IteratorTypeVisitor.accept(this.arrayBuilder.ptype)\n codeInvariant(sequenceType, 'Target is not iterable', this.arrayBuilder.sourceLocation)\n\n const iteratorType = IterableIteratorGeneric.parameterise([new ReadonlyTuplePType({ items: [uint64PType, sequenceType] })])\n return new IterableIteratorExpressionBuilder(\n nodeFactory.enumeration({\n expr: this.arrayBuilder.iterate(sourceLocation),\n sourceLocation,\n wtype: iteratorType.wtype,\n }),\n iteratorType,\n )\n }\n}\nexport class KeysFunctionBuilder extends FunctionBuilder {\n constructor(private arrayBuilder: InstanceBuilder<ArrayLike>) {\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: 'keys' })\n\n const sequenceType = IteratorTypeVisitor.accept(this.arrayBuilder.ptype)\n codeInvariant(sequenceType, 'Target is not iterable', this.arrayBuilder.sourceLocation)\n\n const iteratorType = IterableIteratorGeneric.parameterise([uint64PType])\n return new IterableIteratorExpressionBuilder(\n nodeFactory.range({\n start: nodeFactory.uInt64Constant({ value: 0n, sourceLocation }),\n step: nodeFactory.uInt64Constant({ value: 1n, sourceLocation }),\n stop: arrayLength(this.arrayBuilder, sourceLocation).resolve(),\n sourceLocation,\n wtype: iteratorType.wtype,\n }),\n iteratorType,\n )\n }\n}\n","import { nodeFactory } from '../../../../awst/node-factory'\nimport { IntegerConstant } from '../../../../awst/nodes'\nimport type { SourceLocation } from '../../../../awst/source-location'\nimport { logger } from '../../../../logger'\nimport { invariant } from '../../../../util'\nimport { uint64PType } from '../../../ptypes'\nimport { StaticArrayType } from '../../../ptypes/arc4-types'\nimport { getIndexType } from '../../../ptypes/visitors/index-type-visitor'\nimport { instanceEb } from '../../../type-registry'\nimport type { InstanceBuilder } from '../../index'\nimport { type NodeBuilder } from '../../index'\nimport { requireExpressionOfType } from '../index'\n\nexport function indexAccess(target: InstanceBuilder, index: InstanceBuilder | bigint, sourceLocation: SourceLocation): NodeBuilder {\n const indexExpr =\n typeof index === 'bigint' ? nodeFactory.uInt64Constant({ value: index, sourceLocation }) : requireExpressionOfType(index, uint64PType)\n\n if (indexExpr instanceof IntegerConstant && target.ptype instanceof StaticArrayType && indexExpr.value >= target.ptype.arraySize) {\n logger.error(indexExpr.sourceLocation, 'Index access out of bounds')\n }\n\n const elementType = getIndexType(target.ptype, 0n, sourceLocation)\n invariant(elementType, 'Cannot infer indexed item type', sourceLocation)\n\n return instanceEb(\n nodeFactory.indexExpression({\n base: target.resolve(),\n sourceLocation: sourceLocation,\n index: indexExpr,\n wtype: elementType.wtypeOrThrow,\n }),\n elementType,\n )\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport { CodeError } from '../../../errors'\nimport { codeInvariant } from '../../../util'\nimport type { PType } from '../../ptypes'\nimport { accountPType, applicationPType, assetPType, bytesPType, onCompleteActionType, stringPType, uint64PType } from '../../ptypes'\nimport { instanceEb } from '../../type-registry'\nimport type { NodeBuilder } from '../index'\nimport { InstanceBuilder } from '../index'\n\n/**\n * Given a builder, attempt to resolve it to the target type converting compatible types as possible\n *\n * @param builder\n * @param targetType\n */\nexport function resolveCompatBuilder(builder: NodeBuilder, targetType: PType) {\n codeInvariant(builder instanceof InstanceBuilder, `Cannot resolve ${builder.typeDescription} to a value`, builder.sourceLocation)\n\n if (builder.resolvableToPType(targetType)) {\n return builder.resolveToPType(targetType)\n }\n\n if (targetType.equals(accountPType)) {\n if (builder.resolvableToPType(bytesPType)) {\n // Account bytes should just be cast\n return reinterpretCast(builder.resolveToPType(bytesPType), accountPType)\n }\n } else if (targetType.equals(applicationPType) || targetType.equals(assetPType) || targetType.equals(onCompleteActionType)) {\n if (builder.resolvableToPType(uint64PType)) {\n return reinterpretCast(builder.resolveToPType(uint64PType), targetType)\n }\n } else if (targetType.equals(bytesPType)) {\n if (builder.resolvableToPType(stringPType)) {\n return builder.resolveToPType(stringPType).toBytes(builder.sourceLocation)\n }\n }\n\n throw new CodeError(`Cannot resolve ${builder.ptype} to ${targetType}`, { sourceLocation: builder.sourceLocation })\n}\n\nexport function resolveCompatExpression(builder: NodeBuilder, targetType: PType) {\n return resolveCompatBuilder(builder, targetType).resolve()\n}\n\nfunction reinterpretCast(builder: InstanceBuilder, ptype: PType) {\n return instanceEb(\n nodeFactory.reinterpretCast({\n expr: builder.resolve(),\n sourceLocation: builder.sourceLocation,\n wtype: ptype.wtypeOrThrow,\n }),\n ptype,\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 { bytesPType, type PType } from '../../ptypes'\nimport type { ARC4EncodedType } from '../../ptypes/arc4-types'\nimport { instanceEb } from '../../type-registry'\nimport { BooleanExpressionBuilder } from '../boolean-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).resolve(),\n rhs: requireBuilderOfType(other, this.ptype).toBytes(sourceLocation).resolve(),\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 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): InstanceBuilder {\n return instanceEb(\n nodeFactory.reinterpretCast({\n expr: this.resolve(),\n wtype: wtypes.bytesWType,\n sourceLocation,\n }),\n bytesPType,\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).resolve(),\n rhs: right.toBytes(sourceLocation).resolve(),\n sourceLocation,\n }),\n )\n }\n}\n","import { intrinsicFactory } from '../../../awst/intrinsic-factory'\nimport { nodeFactory } from '../../../awst/node-factory'\nimport type { Expression } from '../../../awst/nodes'\nimport { BytesConstant, StringConstant } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\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, NumericLiteralPType, stringPType } from '../../ptypes'\nimport {\n AddressClass,\n arc4AddressAlias,\n DynamicArrayGeneric,\n DynamicArrayType,\n DynamicBytesConstructor,\n DynamicBytesType,\n StaticArrayGeneric,\n StaticArrayType,\n StaticBytesGeneric,\n} from '../../ptypes/arc4-types'\nimport { instanceEb } from '../../type-registry'\nimport type { InstanceBuilder, NodeBuilder } from '../index'\nimport { ClassBuilder, FunctionBuilder } from '../index'\nimport { AtFunctionBuilder } from '../shared/at-function-builder'\nimport { ArrayPopFunctionBuilder } from '../shared/pop-function-builder'\nimport { ArrayPushFunctionBuilder } from '../shared/push-function-builder'\nimport { SliceFunctionBuilder } from '../shared/slice-function-builder'\nimport { UInt64ExpressionBuilder } from '../uint64-expression-builder'\nimport { requireExpressionOfType } from '../util'\nimport { parseFunctionArgs } from '../util/arg-parsing'\nimport { concatArrays } from '../util/array/concat'\nimport { EntriesFunctionBuilder, KeysFunctionBuilder } from '../util/array/entries'\nimport { indexAccess } from '../util/array/index-access'\nimport { arrayLength } from '../util/array/length'\nimport { resolveCompatExpression } from '../util/resolve-compat-builder'\nimport { Arc4EncodedBaseExpressionBuilder } from './base'\nimport { wtypes } from '../../../awst/wtypes'\n\nexport class DynamicArrayClassBuilder extends ClassBuilder {\n readonly ptype = DynamicArrayGeneric\n\n newCall(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): InstanceBuilder {\n const ptype = this.ptype.parameterise(typeArgs)\n const { args: initialItems } = parseFunctionArgs({\n args,\n typeArgs,\n callLocation: sourceLocation,\n funcName: 'DynamicArray constructor',\n genericTypeArgs: 1,\n argSpec: (a) => args.map((_) => a.required(ptype.elementType)),\n })\n return new DynamicArrayExpressionBuilder(\n nodeFactory.newArray({\n values: initialItems.map((i) => {\n i.checkForUnclonedMutables(`being passed to a ${this.typeDescription} constructor`)\n return requireExpressionOfType(i, ptype.elementType)\n }),\n wtype: ptype.wtype,\n sourceLocation,\n }),\n ptype,\n )\n }\n}\nexport class StaticArrayClassBuilder extends ClassBuilder {\n readonly ptype = StaticArrayGeneric\n\n newCall(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): InstanceBuilder {\n const ptype = this.ptype.parameterise(typeArgs)\n const {\n args: [...initialItems],\n } = parseFunctionArgs({\n args,\n typeArgs,\n callLocation: sourceLocation,\n funcName: 'StaticArray constructor',\n genericTypeArgs: 2,\n argSpec: (a) => args.map((_) => a.required(ptype.elementType)),\n })\n if (initialItems.length === 0) {\n return new StaticArrayExpressionBuilder(\n intrinsicFactory.bzero({\n size: nodeFactory.sizeOf({ sizeWtype: ptype.wtype, wtype: wtypes.uint64WType, sourceLocation }),\n wtype: ptype.wtype,\n sourceLocation,\n }),\n ptype,\n )\n }\n\n codeInvariant(\n BigInt(initialItems.length) === ptype.arraySize,\n `Static array of size ${ptype.arraySize} must be initialized with ${ptype.arraySize} values`,\n sourceLocation,\n )\n\n return new StaticArrayExpressionBuilder(\n nodeFactory.newArray({\n values: initialItems.map((i) => {\n i.checkForUnclonedMutables(`being passed to a ${this.typeDescription} constructor`)\n return requireExpressionOfType(i, ptype.elementType)\n }),\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.algo.zeroAddressB32,\n sourceLocation,\n wtype: arc4AddressAlias.wtype,\n }),\n arc4AddressAlias,\n )\n }\n\n if (accountOrAddressOrBytes.ptype.equals(accountPType)) {\n return new AddressExpressionBuilder(\n nodeFactory.reinterpretCast({\n expr: accountOrAddressOrBytes.resolve(),\n sourceLocation,\n wtype: arc4AddressAlias.wtype,\n }),\n arc4AddressAlias,\n )\n } else if (accountOrAddressOrBytes.ptype.equals(stringPType)) {\n const value = accountOrAddressOrBytes.resolve()\n if (value instanceof StringConstant) {\n wrapInCodeError(() => base32ToUint8Array(value.value), value.sourceLocation)\n return new AddressExpressionBuilder(\n nodeFactory.addressConstant({\n value: value.value,\n sourceLocation,\n wtype: arc4AddressAlias.wtype,\n }),\n arc4AddressAlias,\n )\n }\n logger.error(\n value.sourceLocation,\n `Invalid address literal. Addresses should be ${Constants.algo.encodedAddressLength} characters and not include base32 padding`,\n )\n }\n return new AddressExpressionBuilder(\n nodeFactory.reinterpretCast({\n expr: accountOrAddressOrBytes.resolve(),\n sourceLocation,\n wtype: arc4AddressAlias.wtype,\n }),\n arc4AddressAlias,\n )\n }\n}\nexport class StaticBytesClassBuilder extends ClassBuilder {\n readonly ptype = StaticBytesGeneric\n\n newCall(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): InstanceBuilder {\n const {\n ptypes: [length],\n args: [initialValue],\n } = parseFunctionArgs({\n args,\n typeArgs,\n callLocation: sourceLocation,\n funcName: `${this.ptype.name} constructor`,\n genericTypeArgs: 1,\n argSpec: (a) => [a.optional(bytesPType, stringPType)],\n })\n const resultPType = this.ptype.parameterise([length])\n\n codeInvariant(length instanceof NumericLiteralPType, 'length must be numeric literal', sourceLocation)\n const byteLength = Number(length.literalValue)\n if (!initialValue) {\n return instanceEb(\n nodeFactory.bytesConstant({\n value: new Uint8Array(byteLength),\n sourceLocation,\n wtype: resultPType.wtype,\n }),\n resultPType,\n )\n }\n const value = resolveCompatExpression(initialValue, bytesPType)\n if (value instanceof BytesConstant) {\n codeInvariant(value.value.length === byteLength, `Value should have byte length of ${byteLength}`, sourceLocation)\n return instanceEb(\n nodeFactory.bytesConstant({\n value: value.value,\n wtype: resultPType.wtype,\n sourceLocation,\n }),\n resultPType,\n )\n } else {\n 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, stringPType)],\n })\n const resultPType = DynamicBytesType\n\n if (!initialValue) {\n return instanceEb(\n nodeFactory.bytesConstant({\n value: new Uint8Array([0, 0]),\n sourceLocation,\n wtype: resultPType.wtype,\n }),\n resultPType,\n )\n }\n\n const value = resolveCompatExpression(initialValue, bytesPType)\n if (value instanceof BytesConstant) {\n return instanceEb(\n nodeFactory.bytesConstant({\n value: new Uint8Array([...bigIntToUint8Array(BigInt(value.value.length), 2), ...value.value]),\n sourceLocation,\n wtype: resultPType.wtype,\n }),\n resultPType,\n )\n } else {\n return instanceEb(\n nodeFactory.aRC4Encode({\n value,\n sourceLocation,\n wtype: resultPType.wtype,\n }),\n resultPType,\n )\n }\n }\n}\n\nexport abstract class ArrayExpressionBuilder<\n TArrayType extends DynamicArrayType | StaticArrayType,\n> extends Arc4EncodedBaseExpressionBuilder<TArrayType> {\n iterate(): Expression {\n return this.resolve()\n }\n\n indexAccess(index: InstanceBuilder | bigint, sourceLocation: SourceLocation): NodeBuilder {\n return indexAccess(this, index, sourceLocation)\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n switch (name) {\n case 'length':\n return arrayLength(this, sourceLocation)\n case 'at':\n return new AtFunctionBuilder(\n this.resolve(),\n this.ptype.elementType,\n this.ptype instanceof StaticArrayType ? this.ptype.arraySize : arrayLength(this, sourceLocation).resolve(),\n sourceLocation,\n )\n case 'entries':\n return new EntriesFunctionBuilder(this)\n case 'keys':\n return new KeysFunctionBuilder(this)\n case 'concat':\n return new ConcatFunctionBuilder(this)\n case 'slice': {\n const sliceResult =\n this.ptype instanceof StaticArrayType ? new DynamicArrayType({ elementType: this.ptype.elementType }) : this.ptype\n return new SliceFunctionBuilder(this.resolve(), sliceResult)\n }\n case 'native':\n return instanceEb(\n nodeFactory.aRC4Decode({\n value: this.resolve(),\n wtype: this.ptype.nativeType.wtypeOrThrow,\n sourceLocation,\n }),\n this.ptype.nativeType,\n )\n }\n return super.memberAccess(name, sourceLocation)\n }\n}\n\nclass ConcatFunctionBuilder extends FunctionBuilder {\n constructor(private arrayBuilder: ArrayExpressionBuilder<DynamicArrayType | StaticArrayType>) {\n super(arrayBuilder.sourceLocation)\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [other],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n argSpec: (a) => [a.required()],\n funcName: 'concat',\n callLocation: sourceLocation,\n })\n return concatArrays(this.arrayBuilder, other, sourceLocation)\n }\n}\n\nexport class DynamicArrayExpressionBuilder extends ArrayExpressionBuilder<DynamicArrayType> {\n constructor(expr: Expression, ptype: PType) {\n invariant(ptype instanceof DynamicArrayType, 'ptype must be instance of DynamicArrayType')\n super(expr, ptype)\n }\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n switch (name) {\n case 'push':\n return new ArrayPushFunctionBuilder(this)\n case 'pop':\n return new ArrayPopFunctionBuilder(this)\n }\n return super.memberAccess(name, sourceLocation)\n }\n}\n\nexport class StaticArrayExpressionBuilder extends ArrayExpressionBuilder<StaticArrayType> {\n constructor(expr: Expression, ptype: PType) {\n invariant(ptype instanceof StaticArrayType, 'ptype must be instance of StaticArrayType')\n super(expr, ptype)\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n switch (name) {\n case 'native':\n return instanceEb(\n nodeFactory.aRC4Decode({\n value: this.resolve(),\n wtype: this.ptype.nativeType.wtypeOrThrow,\n sourceLocation,\n }),\n this.ptype.nativeType,\n )\n }\n return super.memberAccess(name, sourceLocation)\n }\n}\n\nexport class DynamicBytesExpressionBuilder extends DynamicArrayExpressionBuilder {}\nexport class StaticBytesExpressionBuilder extends StaticArrayExpressionBuilder {}\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 }\n return super.memberAccess(name, sourceLocation)\n }\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { Expression } from '../../../awst/nodes'\nimport { BoolConstant } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport { wtypes } from '../../../awst/wtypes'\nimport type { PType } from '../../ptypes'\nimport { boolPType } from '../../ptypes'\nimport { ARC4BoolClass, arc4BooleanType, type ARC4EncodedType } from '../../ptypes/arc4-types'\nimport type { InstanceBuilder, NodeBuilder } from '../index'\nimport { ClassBuilder } from '../index'\nimport { parseFunctionArgs } from '../util/arg-parsing'\nimport { Arc4EncodedBaseExpressionBuilder } from './base'\n\nexport class BoolClassBuilder extends ClassBuilder {\n readonly ptype = ARC4BoolClass\n\n newCall(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): InstanceBuilder {\n const {\n args: [initialValue],\n } = parseFunctionArgs({\n args,\n typeArgs,\n callLocation: sourceLocation,\n funcName: `${this.typeDescription} constructor}`,\n genericTypeArgs: 0,\n argSpec: (a) => [a.optional(boolPType)],\n })\n let expr: Expression\n if (!initialValue) {\n expr = nodeFactory.boolConstant({\n value: false,\n sourceLocation,\n wtype: wtypes.arc4BooleanWType,\n })\n } else {\n const value = initialValue.resolve()\n if (value instanceof BoolConstant) {\n expr = nodeFactory.boolConstant({\n value: value.value,\n sourceLocation,\n wtype: wtypes.arc4BooleanWType,\n })\n } else {\n expr = nodeFactory.aRC4Encode({\n value: value,\n wtype: wtypes.arc4BooleanWType,\n sourceLocation,\n })\n }\n }\n\n return new BoolExpressionBuilder(expr)\n }\n}\n\nexport class BoolExpressionBuilder extends Arc4EncodedBaseExpressionBuilder<ARC4EncodedType> {\n constructor(expression: Expression) {\n super(expression, arc4BooleanType)\n }\n}\n","export 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","export class DefaultMap<K, V> extends Map<K, V> {\n getOrDefault(key: K, defaultFactory: () => V): V {\n if (!super.has(key)) {\n super.set(key, defaultFactory())\n }\n return super.get(key)!\n }\n}\n","/**\n * Given a target object that is an instance of a class, return a clone of that object but with\n * updated values for the properties specified in newProperties. Target properties cannot be 'get' only,\n * but can be attributed `readonly`\n * @param target The target object to clone\n * @param newProperties New property values to assign to the cloned object\n */\nexport function evolve<T extends object>(target: T, newProperties: Partial<T>): T {\n const clone = Object.create(Object.getPrototypeOf(target))\n return Object.assign(clone, target, newProperties)\n}\n","import ts, { SymbolFlags } from 'typescript'\nimport type { Expression } from '../awst/nodes'\nimport type { SourceLocation } from '../awst/source-location'\nimport { CodeError } from '../errors'\nimport { logger } from '../logger'\nimport { hasFlags, invariant } from '../util'\nimport { evolve } from '../util/evolve'\nimport type { InstanceBuilder } from './eb'\nimport { BigIntLiteralExpressionBuilder } from './eb/literal/big-int-literal-expression-builder'\nimport { NumericLiteralExpressionBuilder } from './eb/literal/numeric-literal-expression-builder'\nimport type { PType } from './ptypes'\nimport { BigIntLiteralPType, NumericLiteralPType } from './ptypes'\nimport { instanceEb } from './type-registry'\n\ntype ConstantData =\n | {\n type: 'expr'\n expr: Expression\n ptype: PType\n }\n | {\n type: 'bigint'\n ptype: BigIntLiteralPType\n }\n | {\n type: 'number'\n ptype: NumericLiteralPType\n }\n\nexport class ConstantStore {\n #constants = new Map<ts.Symbol, ConstantData>()\n #typeChecker: ts.TypeChecker\n constructor(program: ts.Program) {\n this.#typeChecker = program.getTypeChecker()\n }\n\n tryResolveConstant(node: ts.Identifier, sourceLocation: SourceLocation): InstanceBuilder | undefined {\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 const data = this.#constants.get(symbol)\n switch (data?.type) {\n case 'bigint':\n return new BigIntLiteralExpressionBuilder(data.ptype.literalValue, data.ptype, sourceLocation)\n case 'number':\n return new NumericLiteralExpressionBuilder(data.ptype.literalValue, data.ptype, sourceLocation)\n case 'expr':\n return instanceEb(evolve(data.expr, { sourceLocation }), data.ptype)\n default:\n return undefined\n }\n }\n\n addConstant(identifier: ts.Identifier, builder: InstanceBuilder, 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 const data = this.buildConstantData(builder)\n this.#constants.set(symbol, data)\n if (exportSymbol !== symbol) this.#constants.set(exportSymbol, data)\n }\n\n private buildConstantData(builder: InstanceBuilder): ConstantData {\n if (builder instanceof NumericLiteralExpressionBuilder) {\n return {\n type: 'number',\n ptype: new NumericLiteralPType({ literalValue: builder.value }),\n }\n }\n if (builder instanceof BigIntLiteralExpressionBuilder) {\n return {\n type: 'bigint',\n ptype: new BigIntLiteralPType({ literalValue: builder.value }),\n }\n } else {\n return {\n type: 'expr',\n expr: builder.resolve(),\n ptype: builder.ptype,\n }\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","import { LogicSigReference } from '../../awst/models'\nimport { nodeFactory } from '../../awst/node-factory'\nimport type { LogicSignature, Subroutine } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport type { Props } from '../../typescript-helpers'\nimport type { LogicSigPType } from '../ptypes'\nimport type { LogicSigOptionsDecoratorData } from './decorator-data'\n\nexport class LogicSigClassModel {\n public readonly isAbstract = false\n public get id(): LogicSigReference {\n return LogicSigReference.fromPType(this.type)\n }\n public readonly type: LogicSigPType\n public get name(): string {\n return this.type.name\n }\n public readonly description: string | null\n public readonly bases: Array<LogicSigReference>\n public readonly options: LogicSigOptionsDecoratorData | undefined\n public readonly program: Subroutine\n public readonly sourceLocation: SourceLocation\n constructor(props: Props<Omit<LogicSigClassModel, 'name' | 'id' | 'isAbstract'>>) {\n this.type = props.type\n this.description = props.description\n this.program = props.program\n this.bases = props.bases\n this.sourceLocation = props.sourceLocation\n this.options = props.options\n }\n\n public buildLogicSignature(): LogicSignature {\n return nodeFactory.logicSignature({\n id: this.id,\n shortName: this.options?.name ?? this.name,\n program: this.program,\n sourceLocation: this.sourceLocation,\n docstring: this.description,\n avmVersion: this.options?.avmVersion ?? null,\n reservedScratchSpace: this.options?.scratchSlots ?? new Set(),\n })\n }\n}\n","import type { awst } from '../../awst'\nimport type { LogicSigReference } from '../../awst/models'\nimport { ContractReference, OnCompletionAction } from '../../awst/models'\nimport { nodeFactory } from '../../awst/node-factory'\nimport type { AppStorageDefinition, ContractMethod, Statement } from '../../awst/nodes'\nimport { ARC4BareMethodConfig, ARC4CreateOption, StateTotals } from '../../awst/nodes'\nimport { SourceLocation } from '../../awst/source-location'\nimport { wtypes } from '../../awst/wtypes'\nimport { Constants } from '../../constants'\nimport { logger } from '../../logger'\nimport type { Props } from '../../typescript-helpers'\nimport { codeInvariant, invariant, isIn } from '../../util'\nimport { CustomKeyMap } from '../../util/custom-key-map'\nimport type { ContractClassPType } from '../ptypes'\nimport { ClusteredContractClassType } from '../ptypes'\nimport type { ContractOptionsDecoratorData } from './decorator-data'\nimport { LogicSigClassModel } from './logic-sig-class-model'\n\nexport class ContractClassModel {\n public readonly isAbstract: boolean\n public get id(): ContractReference {\n return ContractReference.fromPType(this.type)\n }\n public readonly type: ContractClassPType\n public get name(): string {\n return this.type.name\n }\n public readonly options: ContractOptionsDecoratorData | undefined\n public readonly description: string | null\n public readonly propertyInitialization: Array<Statement>\n public readonly approvalProgram: ContractMethod | null\n public readonly clearProgram: ContractMethod | null\n public readonly ctor: ContractMethod | null\n public readonly methods: Array<ContractMethod>\n public readonly appState: Array<AppStorageDefinition>\n public readonly sourceLocation: SourceLocation\n constructor(props: Props<Omit<ContractClassModel, 'name' | 'id'>>) {\n this.isAbstract = props.isAbstract\n this.type = props.type\n this.description = props.description\n this.propertyInitialization = props.propertyInitialization\n this.ctor = props.ctor\n this.approvalProgram = props.approvalProgram\n this.clearProgram = props.clearProgram\n this.methods = props.methods\n this.appState = props.appState\n this.sourceLocation = props.sourceLocation\n this.options = props.options\n }\n\n hasExplicitStateTotals() {\n return this.options?.stateTotals !== undefined\n }\n\n buildContract(compilationSet: CompilationSet): awst.Contract {\n let approvalProgram: ContractMethod | null = this.approvalProgram\n let clearProgram: ContractMethod | null = this.clearProgram\n const methods: ContractMethod[] = [...this.methods]\n const ctors: ContractMethod[] = this.ctor ? [this.ctor] : []\n const methodResolutionOrder: ContractReference[] = []\n let firstBaseWithStateTotals: ContractClassModel | undefined = undefined\n let reservedScratchSpace = new Set<bigint>()\n\n const seenContractIds = new Set<string>()\n\n for (const baseType of this.type.allBases()) {\n const baseClass = this.getModelForClass(compilationSet, baseType)\n if (baseClass.hasExplicitStateTotals() && firstBaseWithStateTotals === undefined) {\n firstBaseWithStateTotals = baseClass\n }\n if (baseClass.options?.scratchSlots) {\n reservedScratchSpace = reservedScratchSpace.union(baseClass.options.scratchSlots)\n }\n methodResolutionOrder.push(baseClass.id)\n if (seenContractIds.has(baseClass.id.toString())) {\n continue\n } else {\n seenContractIds.add(baseClass.id.toString())\n }\n approvalProgram ??= baseClass.approvalProgram\n clearProgram ??= baseClass.clearProgram\n if (baseClass.approvalProgram && baseClass.approvalProgram !== approvalProgram) methods.push(baseClass.approvalProgram)\n if (baseClass.clearProgram && baseClass.clearProgram !== clearProgram) methods.push(baseClass.clearProgram)\n for (const method of baseClass.methods) {\n // Maybe need validation??\n methods.push(method)\n }\n if (baseClass.ctor) ctors.push(baseClass.ctor)\n }\n if (this.type.isARC4) {\n const hasCreate = methods.some((m) => isIn(m.arc4MethodConfig?.create, [ARC4CreateOption.allow, ARC4CreateOption.require]))\n const hasBareNoop = methods.some(\n (m) =>\n m.arc4MethodConfig instanceof ARC4BareMethodConfig && isIn(OnCompletionAction.NoOp, m.arc4MethodConfig.allowedCompletionTypes),\n )\n\n if (!hasCreate) {\n if (hasBareNoop) {\n logger.error(\n this.sourceLocation,\n `Non-abstract ARC4 contract has no methods which can be called to create the contract. ` +\n `An implicit one could not be inserted as there is already a bare method handling the NoOp on completion action. ` +\n `In order to allow creating the contract specify { onCreate: 'allow' } or { onCreate: 'require' } in an @abimethod or @baremethod decorator above the chosen method.`,\n )\n } else {\n methods.push(this.makeDefaultCreate())\n }\n }\n }\n\n codeInvariant(approvalProgram, 'must have approval')\n codeInvariant(clearProgram, 'must have clear')\n\n if (!this.hasExplicitStateTotals && firstBaseWithStateTotals) {\n logger.warn(\n this.options?.sourceLocation ?? this.sourceLocation,\n `Contract extends base contract ${firstBaseWithStateTotals.id} with explicit stateTotals, but does not define its own stateTotals. This could result in insufficient reserved state at run time. An empty object may be provided in order to indicate that this contract should revert to the default behaviour`,\n )\n }\n\n const stateTotals = new StateTotals({\n globalBytes: this.options?.stateTotals?.globalBytes ?? null,\n globalUints: this.options?.stateTotals?.globalUints ?? null,\n localBytes: this.options?.stateTotals?.localBytes ?? null,\n localUints: this.options?.stateTotals?.localUints ?? null,\n })\n\n if (this.options?.scratchSlots) {\n reservedScratchSpace = reservedScratchSpace.union(this.options.scratchSlots)\n }\n\n const hasSignificantConstructor = ctors.length > 1\n\n return nodeFactory.contract({\n name: this.options?.name ?? this.name,\n id: this.id,\n description: this.description,\n approvalProgram: hasSignificantConstructor ? ContractClassModel.patchApprovalToCallCtor(approvalProgram, methods) : approvalProgram,\n clearProgram,\n methodResolutionOrder,\n methods: [...methods, ...(hasSignificantConstructor ? ctors : [])],\n appState: this.appState,\n stateTotals,\n reservedScratchSpace: reservedScratchSpace,\n sourceLocation: this.sourceLocation,\n avmVersion: this.options?.avmVersion ?? null,\n })\n }\n\n private getModelForClass(compilationSet: CompilationSet, contractType: ContractClassPType): ContractClassModel {\n if (contractType instanceof ClusteredContractClassType) {\n return this.buildClusteredMetaClass(compilationSet, contractType)\n } else {\n return compilationSet.getContractClass(ContractReference.fromPType(contractType))\n }\n }\n\n private buildClusteredMetaClass(compilationSet: CompilationSet, clusteredType: ClusteredContractClassType): ContractClassModel {\n const ctor = nodeFactory.contractMethod({\n memberName: Constants.symbolNames.constructorMethodName,\n cref: ContractReference.fromPType(clusteredType),\n documentation: nodeFactory.methodDocumentation({}),\n sourceLocation: SourceLocation.None,\n args: [],\n returnType: wtypes.voidWType,\n body: nodeFactory.block({\n sourceLocation: SourceLocation.None,\n }),\n arc4MethodConfig: null,\n inline: null, // TODO: Expose inline hint option\n })\n const ctorTargets: awst.ContractMethod[] = []\n for (const baseType of clusteredType.baseTypes) {\n for (const b of [baseType, ...baseType.allBases()]) {\n const baseClassModel = this.getModelForClass(compilationSet, b)\n if (baseClassModel.ctor) {\n ctorTargets.push(baseClassModel.ctor)\n break\n }\n }\n }\n ctor.body.body.push(\n ...ctorTargets.map((ct) =>\n nodeFactory.expressionStatement({\n expr: nodeFactory.subroutineCallExpression({\n target: nodeFactory.contractMethodTarget({\n memberName: ct.memberName,\n cref: ct.cref,\n }),\n args: [],\n sourceLocation: SourceLocation.None,\n wtype: wtypes.voidWType,\n }),\n }),\n ),\n )\n return new ContractClassModel({\n appState: [],\n approvalProgram: null,\n clearProgram: null,\n isAbstract: true,\n sourceLocation: SourceLocation.None,\n propertyInitialization: [],\n description: null,\n ctor: ctor,\n methods: [],\n options: undefined,\n type: clusteredType,\n })\n }\n\n private static patchApprovalToCallCtor(approval: ContractMethod, methods: ContractMethod[]): ContractMethod {\n const callCtorIfNew = nodeFactory.ifElse({\n condition: nodeFactory.not({\n expr: nodeFactory.reinterpretCast({\n expr: nodeFactory.intrinsicCall({\n opCode: 'txn',\n immediates: ['ApplicationID'],\n stackArgs: [],\n sourceLocation: SourceLocation.None,\n wtype: wtypes.uint64WType,\n }),\n sourceLocation: SourceLocation.None,\n wtype: wtypes.boolWType,\n }),\n sourceLocation: SourceLocation.None,\n }),\n ifBranch: nodeFactory.block(\n { sourceLocation: SourceLocation.None },\n nodeFactory.expressionStatement({\n expr: nodeFactory.subroutineCallExpression({\n args: [],\n wtype: wtypes.voidWType,\n target: nodeFactory.instanceMethodTarget({\n memberName: Constants.symbolNames.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.symbolNames.defaultCreateMethodName,\n cref: ContractReference.fromPType(this.type),\n args: [],\n arc4MethodConfig: new ARC4BareMethodConfig({\n allowedCompletionTypes: [OnCompletionAction.NoOp],\n create: ARC4CreateOption.require,\n sourceLocation: this.sourceLocation,\n }),\n returnType: wtypes.voidWType,\n documentation: nodeFactory.methodDocumentation({\n description: 'Implicitly generated create method',\n }),\n sourceLocation: this.sourceLocation,\n body: nodeFactory.block({\n sourceLocation: this.sourceLocation,\n }),\n inline: null, // TODO: Expose inline hint option?\n })\n }\n}\n\nexport class CompilationSet extends CustomKeyMap<ContractReference | LogicSigReference, ContractClassModel | LogicSigClassModel> {\n constructor() {\n super((x) => x.toString())\n }\n\n get compilationOutputSet() {\n return Array.from(this.entries())\n .filter(([, meta]) => !meta.isAbstract)\n .map(([ref]) => ref)\n }\n\n getContractClass(cref: ContractReference) {\n const maybeClass = this.get(cref)\n invariant(maybeClass instanceof ContractClassModel, 'Contract reference must resolve to a contract class')\n return maybeClass\n }\n\n getLogicSig(lref: LogicSigReference) {\n const maybeLogicSig = this.get(lref)\n invariant(maybeLogicSig instanceof LogicSigClassModel, 'Logic sig reference must resolve to a logic signature class')\n return maybeLogicSig\n }\n}\n","import ts from 'typescript'\nimport { BinaryBooleanOperator } from '../awst/nodes'\nimport { BuilderBinaryOp, BuilderComparisonOp, BuilderUnaryOp } from '../awst_build/eb'\nimport type { DeliberateAny } from '../typescript-helpers'\n\nexport const SyntaxKindName = {\n [ts.SyntaxKind.Unknown]: 'Unknown',\n [ts.SyntaxKind.EndOfFileToken]: 'EndOfFileToken',\n [ts.SyntaxKind.SingleLineCommentTrivia]: 'SingleLineCommentTrivia',\n [ts.SyntaxKind.MultiLineCommentTrivia]: 'MultiLineCommentTrivia',\n [ts.SyntaxKind.NewLineTrivia]: 'NewLineTrivia',\n [ts.SyntaxKind.WhitespaceTrivia]: 'WhitespaceTrivia',\n [ts.SyntaxKind.ShebangTrivia]: 'ShebangTrivia',\n [ts.SyntaxKind.ConflictMarkerTrivia]: 'ConflictMarkerTrivia',\n [ts.SyntaxKind.NonTextFileMarkerTrivia]: 'NonTextFileMarkerTrivia',\n [ts.SyntaxKind.NumericLiteral]: 'NumericLiteral',\n [ts.SyntaxKind.BigIntLiteral]: 'BigIntLiteral',\n [ts.SyntaxKind.StringLiteral]: 'StringLiteral',\n [ts.SyntaxKind.JsxText]: 'JsxText',\n [ts.SyntaxKind.JsxTextAllWhiteSpaces]: 'JsxTextAllWhiteSpaces',\n [ts.SyntaxKind.RegularExpressionLiteral]: 'RegularExpressionLiteral',\n [ts.SyntaxKind.NoSubstitutionTemplateLiteral]: 'NoSubstitutionTemplateLiteral',\n [ts.SyntaxKind.TemplateHead]: 'TemplateHead',\n [ts.SyntaxKind.TemplateMiddle]: 'TemplateMiddle',\n [ts.SyntaxKind.TemplateTail]: 'TemplateTail',\n [ts.SyntaxKind.OpenBraceToken]: 'OpenBraceToken',\n [ts.SyntaxKind.CloseBraceToken]: 'CloseBraceToken',\n [ts.SyntaxKind.OpenParenToken]: 'OpenParenToken',\n [ts.SyntaxKind.CloseParenToken]: 'CloseParenToken',\n [ts.SyntaxKind.OpenBracketToken]: 'OpenBracketToken',\n [ts.SyntaxKind.CloseBracketToken]: 'CloseBracketToken',\n [ts.SyntaxKind.DotToken]: 'DotToken',\n [ts.SyntaxKind.DotDotDotToken]: 'DotDotDotToken',\n [ts.SyntaxKind.SemicolonToken]: 'SemicolonToken',\n [ts.SyntaxKind.CommaToken]: 'CommaToken',\n [ts.SyntaxKind.QuestionDotToken]: 'QuestionDotToken',\n [ts.SyntaxKind.LessThanToken]: 'LessThanToken',\n [ts.SyntaxKind.LessThanSlashToken]: 'LessThanSlashToken',\n [ts.SyntaxKind.GreaterThanToken]: 'GreaterThanToken',\n [ts.SyntaxKind.LessThanEqualsToken]: 'LessThanEqualsToken',\n [ts.SyntaxKind.GreaterThanEqualsToken]: 'GreaterThanEqualsToken',\n [ts.SyntaxKind.EqualsEqualsToken]: 'EqualsEqualsToken',\n [ts.SyntaxKind.ExclamationEqualsToken]: 'ExclamationEqualsToken',\n [ts.SyntaxKind.EqualsEqualsEqualsToken]: 'EqualsEqualsEqualsToken',\n [ts.SyntaxKind.ExclamationEqualsEqualsToken]: 'ExclamationEqualsEqualsToken',\n [ts.SyntaxKind.EqualsGreaterThanToken]: 'EqualsGreaterThanToken',\n [ts.SyntaxKind.PlusToken]: 'PlusToken',\n [ts.SyntaxKind.MinusToken]: 'MinusToken',\n [ts.SyntaxKind.AsteriskToken]: 'AsteriskToken',\n [ts.SyntaxKind.AsteriskAsteriskToken]: 'AsteriskAsteriskToken',\n [ts.SyntaxKind.SlashToken]: 'SlashToken',\n [ts.SyntaxKind.PercentToken]: 'PercentToken',\n [ts.SyntaxKind.PlusPlusToken]: 'PlusPlusToken',\n [ts.SyntaxKind.MinusMinusToken]: 'MinusMinusToken',\n [ts.SyntaxKind.LessThanLessThanToken]: 'LessThanLessThanToken',\n [ts.SyntaxKind.GreaterThanGreaterThanToken]: 'GreaterThanGreaterThanToken',\n [ts.SyntaxKind.GreaterThanGreaterThanGreaterThanToken]: 'GreaterThanGreaterThanGreaterThanToken',\n [ts.SyntaxKind.AmpersandToken]: 'AmpersandToken',\n [ts.SyntaxKind.BarToken]: 'BarToken',\n [ts.SyntaxKind.CaretToken]: 'CaretToken',\n [ts.SyntaxKind.ExclamationToken]: 'ExclamationToken',\n [ts.SyntaxKind.TildeToken]: 'TildeToken',\n [ts.SyntaxKind.AmpersandAmpersandToken]: 'AmpersandAmpersandToken',\n [ts.SyntaxKind.BarBarToken]: 'BarBarToken',\n [ts.SyntaxKind.QuestionToken]: 'QuestionToken',\n [ts.SyntaxKind.ColonToken]: 'ColonToken',\n [ts.SyntaxKind.AtToken]: 'AtToken',\n [ts.SyntaxKind.QuestionQuestionToken]: 'QuestionQuestionToken',\n [ts.SyntaxKind.BacktickToken]: 'BacktickToken',\n [ts.SyntaxKind.HashToken]: 'HashToken',\n [ts.SyntaxKind.EqualsToken]: 'EqualsToken',\n [ts.SyntaxKind.PlusEqualsToken]: 'PlusEqualsToken',\n [ts.SyntaxKind.MinusEqualsToken]: 'MinusEqualsToken',\n [ts.SyntaxKind.AsteriskEqualsToken]: 'AsteriskEqualsToken',\n [ts.SyntaxKind.AsteriskAsteriskEqualsToken]: 'AsteriskAsteriskEqualsToken',\n [ts.SyntaxKind.SlashEqualsToken]: 'SlashEqualsToken',\n [ts.SyntaxKind.PercentEqualsToken]: 'PercentEqualsToken',\n [ts.SyntaxKind.LessThanLessThanEqualsToken]: 'LessThanLessThanEqualsToken',\n [ts.SyntaxKind.GreaterThanGreaterThanEqualsToken]: 'GreaterThanGreaterThanEqualsToken',\n [ts.SyntaxKind.GreaterThanGreaterThanGreaterThanEqualsToken]: 'GreaterThanGreaterThanGreaterThanEqualsToken',\n [ts.SyntaxKind.AmpersandEqualsToken]: 'AmpersandEqualsToken',\n [ts.SyntaxKind.BarEqualsToken]: 'BarEqualsToken',\n [ts.SyntaxKind.BarBarEqualsToken]: 'BarBarEqualsToken',\n [ts.SyntaxKind.AmpersandAmpersandEqualsToken]: 'AmpersandAmpersandEqualsToken',\n [ts.SyntaxKind.QuestionQuestionEqualsToken]: 'QuestionQuestionEqualsToken',\n [ts.SyntaxKind.CaretEqualsToken]: 'CaretEqualsToken',\n [ts.SyntaxKind.Identifier]: 'Identifier',\n [ts.SyntaxKind.PrivateIdentifier]: 'PrivateIdentifier',\n [ts.SyntaxKind.BreakKeyword]: 'BreakKeyword',\n [ts.SyntaxKind.CaseKeyword]: 'CaseKeyword',\n [ts.SyntaxKind.CatchKeyword]: 'CatchKeyword',\n [ts.SyntaxKind.ClassKeyword]: 'ClassKeyword',\n [ts.SyntaxKind.ConstKeyword]: 'ConstKeyword',\n [ts.SyntaxKind.ContinueKeyword]: 'ContinueKeyword',\n [ts.SyntaxKind.DebuggerKeyword]: 'DebuggerKeyword',\n [ts.SyntaxKind.DefaultKeyword]: 'DefaultKeyword',\n [ts.SyntaxKind.DeleteKeyword]: 'DeleteKeyword',\n [ts.SyntaxKind.DoKeyword]: 'DoKeyword',\n [ts.SyntaxKind.ElseKeyword]: 'ElseKeyword',\n [ts.SyntaxKind.EnumKeyword]: 'EnumKeyword',\n [ts.SyntaxKind.ExportKeyword]: 'ExportKeyword',\n [ts.SyntaxKind.ExtendsKeyword]: 'ExtendsKeyword',\n [ts.SyntaxKind.FalseKeyword]: 'FalseKeyword',\n [ts.SyntaxKind.FinallyKeyword]: 'FinallyKeyword',\n [ts.SyntaxKind.ForKeyword]: 'ForKeyword',\n [ts.SyntaxKind.FunctionKeyword]: 'FunctionKeyword',\n [ts.SyntaxKind.IfKeyword]: 'IfKeyword',\n [ts.SyntaxKind.ImportKeyword]: 'ImportKeyword',\n [ts.SyntaxKind.InKeyword]: 'InKeyword',\n [ts.SyntaxKind.InstanceOfKeyword]: 'InstanceOfKeyword',\n [ts.SyntaxKind.NewKeyword]: 'NewKeyword',\n [ts.SyntaxKind.NullKeyword]: 'NullKeyword',\n [ts.SyntaxKind.ReturnKeyword]: 'ReturnKeyword',\n [ts.SyntaxKind.SuperKeyword]: 'SuperKeyword',\n [ts.SyntaxKind.SwitchKeyword]: 'SwitchKeyword',\n [ts.SyntaxKind.ThisKeyword]: 'ThisKeyword',\n [ts.SyntaxKind.ThrowKeyword]: 'ThrowKeyword',\n [ts.SyntaxKind.TrueKeyword]: 'TrueKeyword',\n [ts.SyntaxKind.TryKeyword]: 'TryKeyword',\n [ts.SyntaxKind.TypeOfKeyword]: 'TypeOfKeyword',\n [ts.SyntaxKind.VarKeyword]: 'VarKeyword',\n [ts.SyntaxKind.VoidKeyword]: 'VoidKeyword',\n [ts.SyntaxKind.WhileKeyword]: 'WhileKeyword',\n [ts.SyntaxKind.WithKeyword]: 'WithKeyword',\n [ts.SyntaxKind.ImplementsKeyword]: 'ImplementsKeyword',\n [ts.SyntaxKind.InterfaceKeyword]: 'InterfaceKeyword',\n [ts.SyntaxKind.LetKeyword]: 'LetKeyword',\n [ts.SyntaxKind.PackageKeyword]: 'PackageKeyword',\n [ts.SyntaxKind.PrivateKeyword]: 'PrivateKeyword',\n [ts.SyntaxKind.ProtectedKeyword]: 'ProtectedKeyword',\n [ts.SyntaxKind.PublicKeyword]: 'PublicKeyword',\n [ts.SyntaxKind.StaticKeyword]: 'StaticKeyword',\n [ts.SyntaxKind.YieldKeyword]: 'YieldKeyword',\n [ts.SyntaxKind.AbstractKeyword]: 'AbstractKeyword',\n [ts.SyntaxKind.AccessorKeyword]: 'AccessorKeyword',\n [ts.SyntaxKind.AsKeyword]: 'AsKeyword',\n [ts.SyntaxKind.AssertsKeyword]: 'AssertsKeyword',\n [ts.SyntaxKind.AssertKeyword]: 'AssertKeyword',\n [ts.SyntaxKind.AnyKeyword]: 'AnyKeyword',\n [ts.SyntaxKind.AsyncKeyword]: 'AsyncKeyword',\n [ts.SyntaxKind.AwaitKeyword]: 'AwaitKeyword',\n [ts.SyntaxKind.BooleanKeyword]: 'BooleanKeyword',\n [ts.SyntaxKind.ConstructorKeyword]: 'ConstructorKeyword',\n [ts.SyntaxKind.DeclareKeyword]: 'DeclareKeyword',\n [ts.SyntaxKind.GetKeyword]: 'GetKeyword',\n [ts.SyntaxKind.InferKeyword]: 'InferKeyword',\n [ts.SyntaxKind.IntrinsicKeyword]: 'IntrinsicKeyword',\n [ts.SyntaxKind.IsKeyword]: 'IsKeyword',\n [ts.SyntaxKind.KeyOfKeyword]: 'KeyOfKeyword',\n [ts.SyntaxKind.ModuleKeyword]: 'ModuleKeyword',\n [ts.SyntaxKind.NamespaceKeyword]: 'NamespaceKeyword',\n [ts.SyntaxKind.NeverKeyword]: 'NeverKeyword',\n [ts.SyntaxKind.OutKeyword]: 'OutKeyword',\n [ts.SyntaxKind.ReadonlyKeyword]: 'ReadonlyKeyword',\n [ts.SyntaxKind.RequireKeyword]: 'RequireKeyword',\n [ts.SyntaxKind.NumberKeyword]: 'NumberKeyword',\n [ts.SyntaxKind.ObjectKeyword]: 'ObjectKeyword',\n [ts.SyntaxKind.SatisfiesKeyword]: 'SatisfiesKeyword',\n [ts.SyntaxKind.SetKeyword]: 'SetKeyword',\n [ts.SyntaxKind.StringKeyword]: 'StringKeyword',\n [ts.SyntaxKind.SymbolKeyword]: 'SymbolKeyword',\n [ts.SyntaxKind.TypeKeyword]: 'TypeKeyword',\n [ts.SyntaxKind.UndefinedKeyword]: 'UndefinedKeyword',\n [ts.SyntaxKind.UniqueKeyword]: 'UniqueKeyword',\n [ts.SyntaxKind.UnknownKeyword]: 'UnknownKeyword',\n [ts.SyntaxKind.UsingKeyword]: 'UsingKeyword',\n [ts.SyntaxKind.FromKeyword]: 'FromKeyword',\n [ts.SyntaxKind.GlobalKeyword]: 'GlobalKeyword',\n [ts.SyntaxKind.BigIntKeyword]: 'BigIntKeyword',\n [ts.SyntaxKind.OverrideKeyword]: 'OverrideKeyword',\n [ts.SyntaxKind.OfKeyword]: 'OfKeyword',\n [ts.SyntaxKind.QualifiedName]: 'QualifiedName',\n [ts.SyntaxKind.ComputedPropertyName]: 'ComputedPropertyName',\n [ts.SyntaxKind.TypeParameter]: 'TypeParameter',\n [ts.SyntaxKind.Parameter]: 'Parameter',\n [ts.SyntaxKind.Decorator]: 'Decorator',\n [ts.SyntaxKind.PropertySignature]: 'PropertySignature',\n [ts.SyntaxKind.PropertyDeclaration]: 'PropertyDeclaration',\n [ts.SyntaxKind.MethodSignature]: 'MethodSignature',\n [ts.SyntaxKind.MethodDeclaration]: 'MethodDeclaration',\n [ts.SyntaxKind.ClassStaticBlockDeclaration]: 'ClassStaticBlockDeclaration',\n [ts.SyntaxKind.Constructor]: 'Constructor',\n [ts.SyntaxKind.GetAccessor]: 'GetAccessor',\n [ts.SyntaxKind.SetAccessor]: 'SetAccessor',\n [ts.SyntaxKind.CallSignature]: 'CallSignature',\n [ts.SyntaxKind.ConstructSignature]: 'ConstructSignature',\n [ts.SyntaxKind.IndexSignature]: 'IndexSignature',\n [ts.SyntaxKind.TypePredicate]: 'TypePredicate',\n [ts.SyntaxKind.TypeReference]: 'TypeReference',\n [ts.SyntaxKind.FunctionType]: 'FunctionType',\n [ts.SyntaxKind.ConstructorType]: 'ConstructorType',\n [ts.SyntaxKind.TypeQuery]: 'TypeQuery',\n [ts.SyntaxKind.TypeLiteral]: 'TypeLiteral',\n [ts.SyntaxKind.ArrayType]: 'ArrayType',\n [ts.SyntaxKind.TupleType]: 'TupleType',\n [ts.SyntaxKind.OptionalType]: 'OptionalType',\n [ts.SyntaxKind.RestType]: 'RestType',\n [ts.SyntaxKind.UnionType]: 'UnionType',\n [ts.SyntaxKind.IntersectionType]: 'IntersectionType',\n [ts.SyntaxKind.ConditionalType]: 'ConditionalType',\n [ts.SyntaxKind.InferType]: 'InferType',\n [ts.SyntaxKind.ParenthesizedType]: 'ParenthesizedType',\n [ts.SyntaxKind.ThisType]: 'ThisType',\n [ts.SyntaxKind.TypeOperator]: 'TypeOperator',\n [ts.SyntaxKind.IndexedAccessType]: 'IndexedAccessType',\n [ts.SyntaxKind.MappedType]: 'MappedType',\n [ts.SyntaxKind.LiteralType]: 'LiteralType',\n [ts.SyntaxKind.NamedTupleMember]: 'NamedTupleMember',\n [ts.SyntaxKind.TemplateLiteralType]: 'TemplateLiteralType',\n [ts.SyntaxKind.TemplateLiteralTypeSpan]: 'TemplateLiteralTypeSpan',\n [ts.SyntaxKind.ImportType]: 'ImportType',\n [ts.SyntaxKind.ObjectBindingPattern]: 'ObjectBindingPattern',\n [ts.SyntaxKind.ArrayBindingPattern]: 'ArrayBindingPattern',\n [ts.SyntaxKind.BindingElement]: 'BindingElement',\n [ts.SyntaxKind.ArrayLiteralExpression]: 'ArrayLiteralExpression',\n [ts.SyntaxKind.ObjectLiteralExpression]: 'ObjectLiteralExpression',\n [ts.SyntaxKind.PropertyAccessExpression]: 'PropertyAccessExpression',\n [ts.SyntaxKind.ElementAccessExpression]: 'ElementAccessExpression',\n [ts.SyntaxKind.CallExpression]: 'CallExpression',\n [ts.SyntaxKind.NewExpression]: 'NewExpression',\n [ts.SyntaxKind.TaggedTemplateExpression]: 'TaggedTemplateExpression',\n [ts.SyntaxKind.TypeAssertionExpression]: 'TypeAssertionExpression',\n [ts.SyntaxKind.ParenthesizedExpression]: 'ParenthesizedExpression',\n [ts.SyntaxKind.FunctionExpression]: 'FunctionExpression',\n [ts.SyntaxKind.ArrowFunction]: 'ArrowFunction',\n [ts.SyntaxKind.DeleteExpression]: 'DeleteExpression',\n [ts.SyntaxKind.TypeOfExpression]: 'TypeOfExpression',\n [ts.SyntaxKind.VoidExpression]: 'VoidExpression',\n [ts.SyntaxKind.AwaitExpression]: 'AwaitExpression',\n [ts.SyntaxKind.PrefixUnaryExpression]: 'PrefixUnaryExpression',\n [ts.SyntaxKind.PostfixUnaryExpression]: 'PostfixUnaryExpression',\n [ts.SyntaxKind.BinaryExpression]: 'BinaryExpression',\n [ts.SyntaxKind.ConditionalExpression]: 'ConditionalExpression',\n [ts.SyntaxKind.TemplateExpression]: 'TemplateExpression',\n [ts.SyntaxKind.YieldExpression]: 'YieldExpression',\n [ts.SyntaxKind.SpreadElement]: 'SpreadElement',\n [ts.SyntaxKind.ClassExpression]: 'ClassExpression',\n [ts.SyntaxKind.OmittedExpression]: 'OmittedExpression',\n [ts.SyntaxKind.ExpressionWithTypeArguments]: 'ExpressionWithTypeArguments',\n [ts.SyntaxKind.AsExpression]: 'AsExpression',\n [ts.SyntaxKind.NonNullExpression]: 'NonNullExpression',\n [ts.SyntaxKind.MetaProperty]: 'MetaProperty',\n [ts.SyntaxKind.SyntheticExpression]: 'SyntheticExpression',\n [ts.SyntaxKind.SatisfiesExpression]: 'SatisfiesExpression',\n [ts.SyntaxKind.TemplateSpan]: 'TemplateSpan',\n [ts.SyntaxKind.SemicolonClassElement]: 'SemicolonClassElement',\n [ts.SyntaxKind.Block]: 'Block',\n [ts.SyntaxKind.EmptyStatement]: 'EmptyStatement',\n [ts.SyntaxKind.VariableStatement]: 'VariableStatement',\n [ts.SyntaxKind.ExpressionStatement]: 'ExpressionStatement',\n [ts.SyntaxKind.IfStatement]: 'IfStatement',\n [ts.SyntaxKind.DoStatement]: 'DoStatement',\n [ts.SyntaxKind.WhileStatement]: 'WhileStatement',\n [ts.SyntaxKind.ForStatement]: 'ForStatement',\n [ts.SyntaxKind.ForInStatement]: 'ForInStatement',\n [ts.SyntaxKind.ForOfStatement]: 'ForOfStatement',\n [ts.SyntaxKind.ContinueStatement]: 'ContinueStatement',\n [ts.SyntaxKind.BreakStatement]: 'BreakStatement',\n [ts.SyntaxKind.ReturnStatement]: 'ReturnStatement',\n [ts.SyntaxKind.WithStatement]: 'WithStatement',\n [ts.SyntaxKind.SwitchStatement]: 'SwitchStatement',\n [ts.SyntaxKind.LabeledStatement]: 'LabeledStatement',\n [ts.SyntaxKind.ThrowStatement]: 'ThrowStatement',\n [ts.SyntaxKind.TryStatement]: 'TryStatement',\n [ts.SyntaxKind.DebuggerStatement]: 'DebuggerStatement',\n [ts.SyntaxKind.VariableDeclaration]: 'VariableDeclaration',\n [ts.SyntaxKind.VariableDeclarationList]: 'VariableDeclarationList',\n [ts.SyntaxKind.FunctionDeclaration]: 'FunctionDeclaration',\n [ts.SyntaxKind.ClassDeclaration]: 'ClassDeclaration',\n [ts.SyntaxKind.InterfaceDeclaration]: 'InterfaceDeclaration',\n [ts.SyntaxKind.TypeAliasDeclaration]: 'TypeAliasDeclaration',\n [ts.SyntaxKind.EnumDeclaration]: 'EnumDeclaration',\n [ts.SyntaxKind.ModuleDeclaration]: 'ModuleDeclaration',\n [ts.SyntaxKind.ModuleBlock]: 'ModuleBlock',\n [ts.SyntaxKind.CaseBlock]: 'CaseBlock',\n [ts.SyntaxKind.NamespaceExportDeclaration]: 'NamespaceExportDeclaration',\n [ts.SyntaxKind.ImportEqualsDeclaration]: 'ImportEqualsDeclaration',\n [ts.SyntaxKind.ImportDeclaration]: 'ImportDeclaration',\n [ts.SyntaxKind.ImportClause]: 'ImportClause',\n [ts.SyntaxKind.NamespaceImport]: 'NamespaceImport',\n [ts.SyntaxKind.NamedImports]: 'NamedImports',\n [ts.SyntaxKind.ImportSpecifier]: 'ImportSpecifier',\n [ts.SyntaxKind.ExportAssignment]: 'ExportAssignment',\n [ts.SyntaxKind.ExportDeclaration]: 'ExportDeclaration',\n [ts.SyntaxKind.NamedExports]: 'NamedExports',\n [ts.SyntaxKind.NamespaceExport]: 'NamespaceExport',\n [ts.SyntaxKind.ExportSpecifier]: 'ExportSpecifier',\n [ts.SyntaxKind.MissingDeclaration]: 'MissingDeclaration',\n [ts.SyntaxKind.ExternalModuleReference]: 'ExternalModuleReference',\n [ts.SyntaxKind.JsxElement]: 'JsxElement',\n [ts.SyntaxKind.JsxSelfClosingElement]: 'JsxSelfClosingElement',\n [ts.SyntaxKind.JsxOpeningElement]: 'JsxOpeningElement',\n [ts.SyntaxKind.JsxClosingElement]: 'JsxClosingElement',\n [ts.SyntaxKind.JsxFragment]: 'JsxFragment',\n [ts.SyntaxKind.JsxOpeningFragment]: 'JsxOpeningFragment',\n [ts.SyntaxKind.JsxClosingFragment]: 'JsxClosingFragment',\n [ts.SyntaxKind.JsxAttribute]: 'JsxAttribute',\n [ts.SyntaxKind.JsxAttributes]: 'JsxAttributes',\n [ts.SyntaxKind.JsxSpreadAttribute]: 'JsxSpreadAttribute',\n [ts.SyntaxKind.JsxExpression]: 'JsxExpression',\n [ts.SyntaxKind.JsxNamespacedName]: 'JsxNamespacedName',\n [ts.SyntaxKind.CaseClause]: 'CaseClause',\n [ts.SyntaxKind.DefaultClause]: 'DefaultClause',\n [ts.SyntaxKind.HeritageClause]: 'HeritageClause',\n [ts.SyntaxKind.CatchClause]: 'CatchClause',\n [ts.SyntaxKind.ImportAttributes]: 'ImportAttributes',\n [ts.SyntaxKind.ImportAttribute]: 'ImportAttribute',\n [ts.SyntaxKind.PropertyAssignment]: 'PropertyAssignment',\n [ts.SyntaxKind.ShorthandPropertyAssignment]: 'ShorthandPropertyAssignment',\n [ts.SyntaxKind.SpreadAssignment]: 'SpreadAssignment',\n [ts.SyntaxKind.EnumMember]: 'EnumMember',\n [ts.SyntaxKind.SourceFile]: 'SourceFile',\n [ts.SyntaxKind.Bundle]: 'Bundle',\n [ts.SyntaxKind.JSDocTypeExpression]: 'JSDocTypeExpression',\n [ts.SyntaxKind.JSDocNameReference]: 'JSDocNameReference',\n [ts.SyntaxKind.JSDocMemberName]: 'JSDocMemberName',\n [ts.SyntaxKind.JSDocAllType]: 'JSDocAllType',\n [ts.SyntaxKind.JSDocUnknownType]: 'JSDocUnknownType',\n [ts.SyntaxKind.JSDocNullableType]: 'JSDocNullableType',\n [ts.SyntaxKind.JSDocNonNullableType]: 'JSDocNonNullableType',\n [ts.SyntaxKind.JSDocOptionalType]: 'JSDocOptionalType',\n [ts.SyntaxKind.JSDocFunctionType]: 'JSDocFunctionType',\n [ts.SyntaxKind.JSDocVariadicType]: 'JSDocVariadicType',\n [ts.SyntaxKind.JSDocNamepathType]: 'JSDocNamepathType',\n [ts.SyntaxKind.JSDoc]: 'JSDoc',\n [ts.SyntaxKind.JSDocText]: 'JSDocText',\n [ts.SyntaxKind.JSDocTypeLiteral]: 'JSDocTypeLiteral',\n [ts.SyntaxKind.JSDocSignature]: 'JSDocSignature',\n [ts.SyntaxKind.JSDocLink]: 'JSDocLink',\n [ts.SyntaxKind.JSDocLinkCode]: 'JSDocLinkCode',\n [ts.SyntaxKind.JSDocLinkPlain]: 'JSDocLinkPlain',\n [ts.SyntaxKind.JSDocTag]: 'JSDocTag',\n [ts.SyntaxKind.JSDocAugmentsTag]: 'JSDocAugmentsTag',\n [ts.SyntaxKind.JSDocImplementsTag]: 'JSDocImplementsTag',\n [ts.SyntaxKind.JSDocAuthorTag]: 'JSDocAuthorTag',\n [ts.SyntaxKind.JSDocDeprecatedTag]: 'JSDocDeprecatedTag',\n [ts.SyntaxKind.JSDocClassTag]: 'JSDocClassTag',\n [ts.SyntaxKind.JSDocPublicTag]: 'JSDocPublicTag',\n [ts.SyntaxKind.JSDocPrivateTag]: 'JSDocPrivateTag',\n [ts.SyntaxKind.JSDocProtectedTag]: 'JSDocProtectedTag',\n [ts.SyntaxKind.JSDocReadonlyTag]: 'JSDocReadonlyTag',\n [ts.SyntaxKind.JSDocOverrideTag]: 'JSDocOverrideTag',\n [ts.SyntaxKind.JSDocCallbackTag]: 'JSDocCallbackTag',\n [ts.SyntaxKind.JSDocOverloadTag]: 'JSDocOverloadTag',\n [ts.SyntaxKind.JSDocEnumTag]: 'JSDocEnumTag',\n [ts.SyntaxKind.JSDocParameterTag]: 'JSDocParameterTag',\n [ts.SyntaxKind.JSDocReturnTag]: 'JSDocReturnTag',\n [ts.SyntaxKind.JSDocThisTag]: 'JSDocThisTag',\n [ts.SyntaxKind.JSDocTypeTag]: 'JSDocTypeTag',\n [ts.SyntaxKind.JSDocTemplateTag]: 'JSDocTemplateTag',\n [ts.SyntaxKind.JSDocTypedefTag]: 'JSDocTypedefTag',\n [ts.SyntaxKind.JSDocSeeTag]: 'JSDocSeeTag',\n [ts.SyntaxKind.JSDocPropertyTag]: 'JSDocPropertyTag',\n [ts.SyntaxKind.JSDocThrowsTag]: 'JSDocThrowsTag',\n [ts.SyntaxKind.JSDocSatisfiesTag]: 'JSDocSatisfiesTag',\n [ts.SyntaxKind.SyntaxList]: 'SyntaxList',\n [ts.SyntaxKind.NotEmittedStatement]: 'NotEmittedStatement',\n [ts.SyntaxKind.PartiallyEmittedExpression]: 'PartiallyEmittedExpression',\n [ts.SyntaxKind.CommaListExpression]: 'CommaListExpression',\n [ts.SyntaxKind.SyntheticReferenceExpression]: 'SyntheticReferenceExpression',\n [ts.SyntaxKind.Count]: 'Count',\n} as const\n\nconst namesRecord = SyntaxKindName as Record<ts.SyntaxKind, string | undefined>\n\nexport const getNodeName = (node: ts.Node): string => {\n return namesRecord[node.kind] ?? 'Unknown'\n}\n\nexport const getSyntaxName = (kind: ts.SyntaxKind): string => {\n return namesRecord[kind] ?? 'Unknown'\n}\n\nexport type SyntaxKindNameType = typeof SyntaxKindName\n\nexport type ModuleStatements =\n | ts.ClassDeclaration\n | ts.ImportDeclaration\n | ts.VariableStatement\n | ts.FunctionDeclaration\n | ts.TypeAliasDeclaration\n | ts.InterfaceDeclaration\n\nexport type PrimaryExpressions =\n | LiteralExpressions\n | ts.TrueLiteral\n | ts.FalseLiteral\n | ts.ArrayLiteralExpression\n | ts.ClassExpression\n | ts.FunctionExpression\n | ts.Identifier\n | ts.ImportExpression\n | ts.NewExpression\n | ts.NullLiteral\n | ts.ObjectLiteralExpression\n | ts.PrivateIdentifier\n | ts.ParenthesizedExpression\n | ts.SuperExpression\n | ts.TemplateExpression\n | ts.ThisExpression\n\nexport type MemberExpressions =\n | PrimaryExpressions\n | ts.ElementAccessExpression\n | ts.ExpressionWithTypeArguments\n | ts.PropertyAccessExpression\n | ts.TaggedTemplateExpression\n\nexport type LeftHandSideExpression = ts.CallExpression | MemberExpressions | ts.NonNullExpression\n\n/**\n * All concrete types which extends ts.ClassElement\n */\nexport type ClassElements =\n | ts.ClassStaticBlockDeclaration\n | ts.ConstructorDeclaration\n | ts.GetAccessorDeclaration\n | ts.IndexSignatureDeclaration\n | ts.MethodDeclaration\n | ts.PropertyDeclaration\n | ts.SemicolonClassElement\n | ts.SetAccessorDeclaration\n\n/**\n * All concrete types which extends ts.Statement\n */\nexport type Statements =\n | ts.EmptyStatement\n | ts.VariableStatement\n | ts.ExpressionStatement\n | ts.IfStatement\n | ts.DoStatement\n | ts.WhileStatement\n | ts.ForStatement\n | ts.ForInStatement\n | ts.ForOfStatement\n | ts.ContinueStatement\n | ts.BreakStatement\n | ts.ReturnStatement\n | ts.WithStatement\n | ts.SwitchStatement\n | ts.LabeledStatement\n | ts.ThrowStatement\n | ts.TryStatement\n | ts.DebuggerStatement\n | ts.ImportDeclaration\n | ts.ClassDeclaration\n | ts.TypeAliasDeclaration\n\n/**\n * All concrete types which extends ts.LiteralExpression\n */\nexport type LiteralExpressions =\n | ts.NumericLiteral\n | ts.BigIntLiteral\n | ts.StringLiteral\n | ts.RegularExpressionLiteral\n | ts.NoSubstitutionTemplateLiteral\n\n/**\n * All concrete types which extend ts.Expression\n */\nexport type Expressions =\n | ts.PropertyAccessExpression\n | ts.ElementAccessExpression\n | ts.TypeAssertion\n | ts.ParenthesizedExpression\n | ts.FunctionExpression\n | ts.DeleteExpression\n | ts.TypeOfExpression\n | ts.VoidExpression\n | ts.AwaitExpression\n | ts.PrefixUnaryExpression\n | ts.PostfixUnaryExpression\n | ts.BinaryExpression\n | ts.ConditionalExpression\n | ts.TemplateExpression\n | ts.YieldExpression\n | ts.OmittedExpression\n | ts.ExpressionWithTypeArguments\n | ts.AsExpression\n | ts.NonNullExpression\n | ts.SatisfiesExpression\n | ts.SpreadElement\n | PrimaryExpressions\n | LeftHandSideExpression\n\n/**\n * Map an inherited base type to a union type of \"all\" the nodes which extend that base type\n * where \"all\" is limited to nodes relevant to this compiler.\n */\nexport type MapBaseType<T> = T extends DeliberateAny\n ? IfEquals<\n T,\n ts.Expression,\n Expressions,\n IfEquals<\n T,\n ts.LeftHandSideExpression,\n LeftHandSideExpression,\n IfEquals<T, ts.Statement, Statements, IfEquals<T, ts.ClassElement, ClassElements, T>>\n >\n >\n : never\n\ntype IfEquals<T, U, Y = unknown, N = never> = ((x: T) => T) extends (x: U) => U ? (((x: U) => U) extends (x: T) => T ? Y : N) : N\n\nexport const BinaryOpSyntaxes = {\n [ts.SyntaxKind.PlusToken]: BuilderBinaryOp.add,\n [ts.SyntaxKind.MinusToken]: BuilderBinaryOp.sub,\n [ts.SyntaxKind.AsteriskToken]: BuilderBinaryOp.mult,\n [ts.SyntaxKind.SlashToken]: BuilderBinaryOp.div,\n [ts.SyntaxKind.PercentToken]: BuilderBinaryOp.mod,\n [ts.SyntaxKind.AsteriskAsteriskToken]: BuilderBinaryOp.pow,\n [ts.SyntaxKind.BarToken]: BuilderBinaryOp.bitOr,\n [ts.SyntaxKind.CaretToken]: BuilderBinaryOp.bitXor,\n [ts.SyntaxKind.AmpersandToken]: BuilderBinaryOp.bitAnd,\n [ts.SyntaxKind.LessThanLessThanToken]: BuilderBinaryOp.lshift,\n [ts.SyntaxKind.GreaterThanGreaterThanToken]: BuilderBinaryOp.rshift,\n} as const\n\nexport const LogicalOpSyntaxes = {\n [ts.SyntaxKind.AmpersandAmpersandToken]: BinaryBooleanOperator.and,\n [ts.SyntaxKind.BarBarToken]: BinaryBooleanOperator.or,\n}\nexport const AugmentedAssignmentLogicalOpSyntaxes = {\n [ts.SyntaxKind.AmpersandAmpersandEqualsToken]: BinaryBooleanOperator.and,\n [ts.SyntaxKind.BarBarEqualsToken]: BinaryBooleanOperator.or,\n}\n\nexport function isKeyOf<TMap extends object>(key: PropertyKey, map: TMap): key is keyof TMap {\n return Object.hasOwn(map, key)\n}\n\nexport const ComparisonOpSyntaxes = {\n [ts.SyntaxKind.EqualsEqualsEqualsToken]: BuilderComparisonOp.eq,\n [ts.SyntaxKind.ExclamationEqualsEqualsToken]: BuilderComparisonOp.ne,\n [ts.SyntaxKind.LessThanToken]: BuilderComparisonOp.lt,\n [ts.SyntaxKind.LessThanEqualsToken]: BuilderComparisonOp.lte,\n [ts.SyntaxKind.GreaterThanToken]: BuilderComparisonOp.gt,\n [ts.SyntaxKind.GreaterThanEqualsToken]: BuilderComparisonOp.gte,\n} as const\n\nexport const AugmentedAssignmentBinaryOp = {\n [ts.SyntaxKind.PlusEqualsToken]: BuilderBinaryOp.add,\n [ts.SyntaxKind.MinusEqualsToken]: BuilderBinaryOp.sub,\n [ts.SyntaxKind.AsteriskEqualsToken]: BuilderBinaryOp.mult,\n [ts.SyntaxKind.SlashEqualsToken]: BuilderBinaryOp.div,\n [ts.SyntaxKind.PercentEqualsToken]: BuilderBinaryOp.mod,\n [ts.SyntaxKind.AsteriskAsteriskEqualsToken]: BuilderBinaryOp.pow,\n [ts.SyntaxKind.BarEqualsToken]: BuilderBinaryOp.bitOr,\n [ts.SyntaxKind.CaretEqualsToken]: BuilderBinaryOp.bitXor,\n [ts.SyntaxKind.AmpersandEqualsToken]: BuilderBinaryOp.bitAnd,\n [ts.SyntaxKind.LessThanLessThanEqualsToken]: BuilderBinaryOp.lshift,\n [ts.SyntaxKind.GreaterThanGreaterThanEqualsToken]: BuilderBinaryOp.rshift,\n} as const\n\nexport const UnaryExpressionUnaryOps = {\n [ts.SyntaxKind.PlusPlusToken]: BuilderUnaryOp.inc,\n [ts.SyntaxKind.MinusMinusToken]: BuilderUnaryOp.dec,\n [ts.SyntaxKind.PlusToken]: BuilderUnaryOp.pos,\n [ts.SyntaxKind.MinusToken]: BuilderUnaryOp.neg,\n [ts.SyntaxKind.TildeToken]: BuilderUnaryOp.bit_inv,\n}\n","import ts, { ObjectFlags } from 'typescript'\nimport { SourceLocation } from '../awst/source-location'\nimport { Constants } from '../constants'\nimport { CodeError, InternalError } from '../errors'\nimport { logger } from '../logger'\nimport type { DeliberateAny } from '../typescript-helpers'\nimport { codeInvariant, hasFlags, instanceOfAny, intersectsFlags, invariant, isIn, normalisePath } from '../util'\nimport { getNodeName } from '../visitor/syntax-names'\nimport type { AppStorageType, PType } from './ptypes'\nimport {\n anyGtxnType,\n anyPType,\n ApprovalProgram,\n arc4BaseContractType,\n baseContractType,\n BigIntLiteralPType,\n bigIntPType,\n boolPType,\n BoxMapPType,\n BoxPType,\n BoxRefPType,\n ClearStateProgram,\n ClusteredContractClassType,\n ClusteredPrototype,\n ContractClassPType,\n esSymbol,\n FunctionPType,\n GlobalStateType,\n GroupTransactionPType,\n ImmutableObjectPType,\n IntersectionPType,\n LocalStateType,\n logicSigBaseType,\n LogicSigPType,\n MutableObjectPType,\n MutableTuplePType,\n NamespacePType,\n neverPType,\n nullPType,\n numberPType,\n NumericLiteralPType,\n ReadonlyTuplePType,\n stringPType,\n SuperPrototypeSelector,\n TypeParameterType,\n Uint64EnumMemberType,\n Uint64EnumType,\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 | ts.TaggedTemplateExpression, 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 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 invariant(symbolName, 'Symbol should have name as we pre-checked it has a declaration', sourceLocation)\n if (symbolName.name === '*') {\n return new NamespacePType(symbolName)\n }\n const ptype = typeRegistry.tryResolveSingletonName(symbolName)\n if (ptype === undefined && symbolName.module.startsWith(Constants.algoTsPackage)) {\n /*\n Most symbols in the algo-ts module should resolve to a singleton instance\n This can probably be removed once we've implemented ptypes for everything in algo-ts\n\n */\n if (symbolName.fullName !== baseContractType.fullName && symbolName.fullName !== arc4BaseContractType.fullName)\n logger.warn(sourceLocation, `${symbolName} could not be resolved to a singleton ptype`)\n }\n if (ptype) {\n return ptype\n }\n }\n const type = this.checker.getTypeAtLocation(node)\n if (node.kind === ts.SyntaxKind.ThisKeyword || node.kind === ts.SyntaxKind.SuperKeyword) {\n /**\n * This shouldn't be used in any code paths as `visitThisKeyword` and `visitSuperKeyword` have their own way to\n * determine the type.\n */\n logger.debug(sourceLocation, `Attempting to reflect type of ${getNodeName(node)} node which is known to be unreliable`)\n }\n if (ts.isConstructorDeclaration(node)) {\n const signature = this.checker.getSignatureFromDeclaration(node)\n invariant(signature, 'Constructor node must have call signature', sourceLocation)\n const parentType = this.getTypeName(this.checker.getTypeAtLocation(node.parent), sourceLocation)\n invariant(parentType, 'Parent type must have name', sourceLocation)\n return this.reflectFunctionType(\n new SymbolName({\n name: Constants.symbolNames.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 @CacheResolvedType\n resolveType(tsType: ts.Type, sourceLocation: SourceLocation): PType {\n const typeName = this.getTypeName(tsType, sourceLocation)\n\n intersect: if (isIntersectionType(tsType)) {\n if (tsType.aliasSymbol) {\n break intersect\n }\n // Special handling of struct and mutable object base types which are an intersection of `StructBase` or `MutableObjectBase` and the generic `T` type\n const parts = tsType.types.map((t) => this.resolveType(t, sourceLocation))\n if (parts.some((p) => p.equals(arc4StructBaseType))) {\n return arc4StructBaseType\n } else {\n return IntersectionPType.fromTypes(parts)\n }\n }\n if (isUnionType(tsType)) {\n const ut = UnionPType.fromTypes(tsType.types.map((t) => this.resolveType(t, sourceLocation)))\n if (ut instanceof UnionPType) {\n const [first] = ut.types\n if (ut.types.every((t) => t instanceof GroupTransactionPType)) {\n // We can support unions of group transactions since the underlying wtype is just a uint64 value and the\n // transaction _type_ can be discriminated with the .type property\n // I don't _think_ there's any value in retaining which txn types constitute the union at the ptype level\n return anyGtxnType\n } else if (\n first instanceof Uint64EnumMemberType &&\n ut.types.every((t) => t instanceof Uint64EnumMemberType && t.enumType.equals(first.enumType))\n ) {\n // A union of enum members can be widened to the member type\n return first.enumType.memberType\n }\n }\n return ut\n }\n switch (tsType.flags) {\n case ts.TypeFlags.Undefined:\n return undefinedPType\n case ts.TypeFlags.Null:\n return nullPType\n case ts.TypeFlags.Any:\n return anyPType\n case ts.TypeFlags.Boolean | ts.TypeFlags.Union:\n case ts.TypeFlags.BooleanLiteral:\n return boolPType\n case ts.TypeFlags.Void:\n return voidPType\n case ts.TypeFlags.String:\n case ts.TypeFlags.StringLiteral:\n return stringPType\n case ts.TypeFlags.Never:\n return neverPType\n case ts.TypeFlags.Unknown:\n return unknownPType\n case ts.TypeFlags.NumberLiteral | ts.TypeFlags.EnumLiteral:\n invariant(tsType.isNumberLiteral(), 'type must be literal', sourceLocation)\n return (\n this.tryResolveLiteralToEnumMember(tsType, BigInt(tsType.value), sourceLocation) ??\n new NumericLiteralPType({ literalValue: BigInt(tsType.value) })\n )\n case ts.TypeFlags.NumberLiteral:\n invariant(tsType.isNumberLiteral(), 'type must be literal', sourceLocation)\n return new NumericLiteralPType({ literalValue: BigInt(tsType.value) })\n case ts.TypeFlags.Number:\n return numberPType\n case ts.TypeFlags.BigIntLiteral:\n invariant(tsType.isLiteral() && typeof tsType.value === 'object', 'type must be literal bigint', sourceLocation)\n return new BigIntLiteralPType({ literalValue: BigInt(tsType.value.base10Value) * (tsType.value.negative ? -1n : 1n) })\n case ts.TypeFlags.BigInt:\n return bigIntPType\n case ts.TypeFlags.ESSymbol:\n case ts.TypeFlags.UniqueESSymbol:\n return esSymbol\n case ts.TypeFlags.TypeParameter:\n codeInvariant(typeName, 'Type parameters must have a name', sourceLocation)\n return new TypeParameterType(typeName)\n }\n if (isTupleReference(tsType)) {\n codeInvariant(\n tsType.target.fixedLength !== undefined && tsType.target.fixedLength !== null,\n 'Tuple types should have a fixed length',\n sourceLocation,\n )\n codeInvariant(tsType.typeArguments, 'Tuple items must have types', sourceLocation)\n const items = tsType.typeArguments.map((t) => this.resolveType(t, sourceLocation))\n if (tsType.target.readonly) {\n return new ReadonlyTuplePType({ items })\n } else {\n return new MutableTuplePType({ items })\n }\n }\n if (isInstantiationExpression(tsType)) {\n return this.resolve(tsType.node.expression, sourceLocation)\n }\n\n invariant(typeName, 'Non builtin type must have a name', sourceLocation)\n\n if (typeName.name === '__type' && typeName.module.startsWith(Constants.algoTsPackage)) {\n // We are likely dealing with `typeof X` where X is a singleton exported by algo-ts\n const declarationNode = tsType.symbol.getDeclarations()?.[0]?.parent\n\n if (declarationNode && ts.isVariableDeclaration(declarationNode)) {\n return this.resolve(declarationNode.name, sourceLocation)\n }\n }\n\n switch (typeName.fullName) {\n case arc4StructBaseType.fullName:\n return arc4StructBaseType\n case ClusteredPrototype.fullName:\n return this.resolveClusteredPrototype(tsType, sourceLocation)\n }\n\n const typeArgs = this.tryResolveGenericTypeArgs(tsType, sourceLocation)\n if (typeArgs?.length) {\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 (typeName.module.startsWith('typescript/lib')) {\n throw new CodeError(`${typeName.name} is not supported`, { sourceLocation })\n }\n\n if (tsType.getConstructSignatures().length) {\n return this.reflectConstructorType(tsType, sourceLocation)\n }\n\n if (tsType.isClass()) {\n if (typeName.fullName === arc4BaseContractType.fullName) return arc4BaseContractType\n if (typeName.fullName === baseContractType.fullName) return baseContractType\n if (typeName.fullName === logicSigBaseType.fullName) return logicSigBaseType\n\n const [baseType, ...rest] = tsType.getBaseTypes()?.map((t) => this.resolveType(t, sourceLocation)) ?? []\n\n invariant(rest.length === 0, 'Class can have at most one base type')\n\n // Treat sub-types of UintN type as the base type.\n if (baseType instanceof UintNType) return baseType\n\n if (baseType instanceof ContractClassPType) {\n return this.reflectContractType(typeName, tsType, baseType, sourceLocation)\n }\n if (baseType instanceof ARC4StructType) {\n return this.reflectStructType(typeName, tsType, baseType, sourceLocation)\n }\n if (baseType instanceof LogicSigPType) {\n return new LogicSigPType({\n ...typeName,\n sourceLocation,\n baseType,\n })\n }\n throw new CodeError(\n `${typeName.fullName} cannot be mapped to an algo ts type. Classes must extend \"Contract\" or \"BaseContract\" base classes to be considered a contract`,\n { sourceLocation },\n )\n }\n const callSignatures = this.checker.getSignaturesOfType(tsType, ts.SignatureKind.Call)\n if (callSignatures.length) {\n return this.reflectFunctionType(typeName, callSignatures, sourceLocation)\n }\n if (isObjectType(tsType)) {\n return this.reflectObjectType(tsType, sourceLocation)\n }\n throw new InternalError(`Cannot determine type of ${typeName}`, { sourceLocation })\n }\n\n private tryResolveGenericTypeArgs(tsType: ts.Type, sourceLocation: SourceLocation) {\n if (tsType.aliasTypeArguments?.length) {\n return tsType.aliasTypeArguments.map((a) => this.resolveType(a, sourceLocation))\n } else if (isTypeReference(tsType) && tsType.typeArguments?.length) {\n return tsType.typeArguments.map((a) => this.resolveType(a, sourceLocation))\n } else if (hasTypeReferenceTarget(tsType) && 'mapper' in tsType) {\n /*\n Dodgy code alert!!\n If an alias closes a generic parameter for example by doing `type B32 = bytes<32>` the current type won't have\n typeArguments and the target type will have unresolved type arguments (ie. a type param TLength). The mapper\n object contains the information needed to fill these type arguments but the logic to extract this information is\n internal. getTypeArgumentsForResolvedSignature 'exposes' this logic for the purpose of retrieving inferred type\n params in a function signature - we're doing a dodgy here and passing in a mock signature object with only the\n required properties set.\n */\n return this.checker\n .getTypeArgumentsForResolvedSignature({\n typeParameters: tsType.target.aliasTypeArguments,\n mapper: tsType.mapper,\n } as DeliberateAny)\n ?.map((t) => this.resolveType(t, sourceLocation))\n }\n }\n\n /**\n * Given a literal value with a named symbol, check its parent to see if it's actually an enum member.\n *\n * @param tsType\n * @param literalValue\n * @param sourceLocation\n * @private\n *\n * @remarks\n * Given an enum `enum E { A = 0, B = 1 }`, E. A will resolve to the literal `0`, but it is more useful to know that\n * it is E.A\n */\n private tryResolveLiteralToEnumMember(tsType: ts.Type, literalValue: bigint, sourceLocation: SourceLocation) {\n const memberDeclaration = tsType.symbol?.declarations?.[0]\n if (!memberDeclaration || !ts.isEnumMember(memberDeclaration)) return undefined\n\n const parentType = this.resolve(memberDeclaration.parent.name, sourceLocation)\n if (parentType instanceof Uint64EnumType) {\n return parentType.getMemberLiteral(literalValue)\n }\n }\n\n private reflectObjectType(tsType: ts.Type, sourceLocation: SourceLocation): ImmutableObjectPType | MutableObjectPType {\n const typeAlias = tsType.aliasSymbol ? this.getSymbolFullName(tsType.aliasSymbol, sourceLocation) : undefined\n const properties: Record<string, PType> = {}\n\n let expectReadonly: boolean | undefined = undefined\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 propLocation = this.getLocationOfSymbol(prop) ?? sourceLocation\n const readonly = isReadonlyPropertySymbol(prop)\n if (expectReadonly === undefined) expectReadonly = readonly\n if (expectReadonly !== readonly) {\n const correction = expectReadonly\n ? 'Add a readonly modifier to this property, or remove it from all others'\n : 'Remove the readonly modifier from this property, or add it all others'\n logger.error(propLocation, `All properties of a type must share the same readonly annotation. ${correction}`)\n }\n const ptype = this.resolveType(type, propLocation)\n if (ptype instanceof FunctionPType) {\n logger.error(propLocation, `Invalid object property type. Functions are not supported`)\n } else if (ptype.singleton) {\n logger.error(propLocation, `Invalid object property type. ${ptype} is not supported`)\n } else {\n properties[prop.name] = ptype\n }\n }\n if (expectReadonly) {\n return new ImmutableObjectPType({ alias: typeAlias, properties, description: tryGetTypeDescription(tsType) })\n } else {\n return new MutableObjectPType({ alias: typeAlias, properties, description: tryGetTypeDescription(tsType) })\n }\n }\n\n private reflectConstructorType(tsType: ts.Type, sourceLocation: SourceLocation): PType {\n const constructorSignatures = tsType.getConstructSignatures()\n invariant(constructorSignatures.length, 'Must have at least one signature')\n const typeDeclaration = tsType.getSymbol()?.declarations?.[0]\n if (typeDeclaration && ts.isClassDeclaration(typeDeclaration)) {\n const ptype = this.resolve(typeDeclaration, sourceLocation)\n if (ptype instanceof ARC4StructType) {\n return ARC4StructClass.fromStructType(ptype)\n } else if (ptype instanceof ContractClassPType || ptype instanceof LogicSigPType) {\n return ptype\n }\n }\n throw new CodeError('Unable to reflect constructor type', { sourceLocation })\n }\n\n private reflectFunctionType(\n typeName: SymbolName,\n callSignatures: readonly ts.Signature[],\n sourceLocation: SourceLocation,\n ): FunctionPType {\n if (typeName.fullName === ApprovalProgram.fullName) return ApprovalProgram\n if (typeName.fullName === ClearStateProgram.fullName) return ClearStateProgram\n\n codeInvariant(callSignatures.length === 1, 'User defined functions must have exactly 1 call signature', sourceLocation)\n const [sig] = callSignatures\n const returnType = this.resolveType(sig.getReturnType(), sourceLocation)\n const parameters = sig.getParameters().map((p) => {\n const paramType = this.checker.getTypeOfSymbol(p)\n return [p.name, this.resolveType(paramType, this.getLocationOfSymbol(p) ?? sourceLocation)] as const\n })\n return new FunctionPType({\n returnType,\n parameters,\n name: typeName.name,\n module: typeName.module,\n sourceLocation,\n })\n }\n\n private reflectStructType(\n typeName: SymbolName,\n tsType: ts.Type,\n baseType: ARC4StructType,\n sourceLocation: SourceLocation,\n ): ARC4StructType {\n const ignoredProps = ['bytes', 'equals', 'native', 'copy', Constants.symbolNames.constructorMethodName]\n const fields: Record<string, ARC4EncodedType> = {}\n for (const prop of tsType.getProperties()) {\n if (isIn(prop.name, ignoredProps)) continue\n const type = this.checker.getTypeOfSymbol(prop)\n const propLocation = this.getLocationOfSymbol(prop) ?? sourceLocation\n const ptype = this.resolveType(type, propLocation)\n if (ptype instanceof ARC4EncodedType) {\n fields[prop.name] = ptype\n } else {\n // Ignore\n }\n }\n return new ARC4StructType({\n ...typeName,\n fields: fields,\n sourceLocation: sourceLocation,\n description: tryGetTypeDescription(tsType),\n frozen: baseType.frozen,\n })\n }\n\n private reflectContractType(\n typeName: SymbolName,\n tsType: ts.Type,\n baseType: ContractClassPType,\n sourceLocation: SourceLocation,\n ): ContractClassPType {\n const properties: Record<string, AppStorageType> = {}\n const methods: Record<string, FunctionPType> = {}\n\n for (const prop of tsType.getProperties()) {\n const type = this.checker.getTypeOfSymbol(prop)\n const ptype = this.resolveType(type, this.getLocationOfSymbol(prop) ?? sourceLocation)\n if (instanceOfAny(ptype, GlobalStateType, LocalStateType, BoxPType, BoxRefPType, BoxMapPType)) {\n properties[prop.name] = ptype\n } else if (ptype instanceof FunctionPType) {\n methods[prop.name] = ptype\n }\n }\n return new ContractClassPType({\n properties,\n methods,\n name: typeName.name,\n module: typeName.module,\n baseTypes: [baseType],\n sourceLocation,\n })\n }\n\n private resolveClusteredPrototype(tsType: ts.Type, sourceLocation: SourceLocation): PType {\n invariant(isIntersectionType(tsType), 'Clustered prototypes must be an intersection type')\n const baseContracts: ContractClassPType[] = []\n for (const t of tsType.types.map((t) => this.resolveType(t, sourceLocation))) {\n if (t instanceof ContractClassPType) {\n baseContracts.push(t)\n } else if (t instanceof SuperPrototypeSelector) {\n // Ignore for now\n } else {\n throw new CodeError(\n `Unexpected type: ${t}. Polytype can only be used to support multiple inheritance in contracts for now. All base types must extend the Contract or BaseContract class.}`,\n )\n }\n }\n return new ClusteredContractClassType({\n methods: {},\n baseTypes: baseContracts,\n sourceLocation,\n })\n }\n\n getTypeName(type: ts.Type, sourceLocation: SourceLocation): SymbolName | undefined {\n const typeName = type.symbol ? this.getSymbolFullName(type.symbol, sourceLocation) : undefined\n const aliasName = type.aliasSymbol ? this.getSymbolFullName(type.aliasSymbol, sourceLocation) : undefined\n\n // If the alias was defined in algo-ts, polytype, or typescript, respect the alias\n if (\n aliasName?.module.startsWith(Constants.algoTsPackage) ||\n aliasName?.module === Constants.moduleNames.polytype ||\n aliasName?.module.startsWith(Constants.moduleNames.typescript.es5)\n ) {\n return aliasName\n }\n // If the type refers to a type literal in algo-ts or polytype, attempt to resolve the alias\n if (typeName?.module.startsWith(Constants.algoTsPackage) || typeName?.module === Constants.moduleNames.polytype) {\n if (typeName?.name === '__type') {\n const parentDeclaration = type.symbol.declarations?.[0]?.parent\n if (parentDeclaration && ts.isTypeAliasDeclaration(parentDeclaration)) {\n const name = this.getUnaliasedSymbolForNode(parentDeclaration.name)\n if (name) {\n return this.getSymbolFullName(name, sourceLocation)\n }\n }\n }\n }\n return typeName\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 | undefined {\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 return undefined\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}\n\n/**\n * The type may not have ts.ObjectFlags.Reference set, but it does have a target property\n * @param tsType\n */\nfunction hasTypeReferenceTarget(tsType: ts.Type): tsType is ts.Type & Pick<ts.TypeReference, 'target'> {\n return isObjectType(tsType) && 'target' in tsType\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 isTransientPropertySymbol(prop: ts.Symbol): prop is ts.Symbol & { links: { checkFlags: number } } {\n return hasFlags(prop.flags, ts.SymbolFlags.Transient)\n}\n\nfunction isReadonlyPropertySymbol(prop: ts.Symbol): boolean {\n /*\n * Here be dragons!! We're poking into the internal API here to check if the transient property symbol (ie a symbol created during type checking)\n * has been marked with the check flag of readonly (8). CheckFlags is not exported so we have no way to confirm CheckFlags. Readonly is still 8\n */\n if (isTransientPropertySymbol(prop) && hasFlags(prop.links.checkFlags, 8)) {\n return true\n }\n return (\n prop.declarations?.some((d) => ts.isPropertySignature(d) && d.modifiers?.some((m) => m.kind === ts.SyntaxKind.ReadonlyKeyword)) ?? false\n )\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\nfunction CacheResolvedType(resolveType: (this: TypeResolver, tsType: ts.Type, sourceLocation: SourceLocation) => PType) {\n const resolvedTypes = new WeakMap<ts.Type, PType>()\n return function (this: TypeResolver, tsType: ts.Type, sourceLocation: SourceLocation): PType {\n const existing = resolvedTypes.get(tsType)\n if (existing) return existing\n\n const res = resolveType.call(this, tsType, sourceLocation)\n resolvedTypes.set(tsType, res)\n return res\n }\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-record'\n\ntype SwitchOrLoop = 'switch' | 'loop'\ntype LoopContext = Disposable & { breakTarget: Block; continueTarget: Block; readonly hasBreaks: boolean; readonly hasContinues: boolean }\ntype SwitchContext = Disposable & {\n breakTarget: Block\n caseTarget(caseIndex: number, sourceLocation: SourceLocation): Block\n gotoCase(caseIndex: number, sourceLocation: SourceLocation): Goto\n readonly hasBreaks: boolean\n}\ntype StackData =\n | { type: 'switch'; uniqueName: string; label?: string; numBreaks: number }\n | { type: 'loop'; uniqueName: string; label?: string; numBreaks: number; numContinues: number }\n\nconst breakSuffix = 'ᵇ'\nconst continueSuffix = 'ᶜ'\n\n/**\n * Tracks parent switches and loops so that break and continue statements\n * can target the correct parent.\n */\nexport class SwitchLoopContext {\n private labelCount = defaultRecord<string, number>(() => 0)\n private unlabelledCount = defaultRecord<SwitchOrLoop, number>(() => 0)\n\n constructor() {}\n\n private switchLoopStack: Array<StackData> = []\n\n getBreakTarget(label: ts.Identifier | undefined, sourceLocation: SourceLocation): string {\n const labelName = label?.text\n const item = this.switchLoopStack.toReversed().find(({ label }) => labelName === undefined || label === labelName)\n codeInvariant(item, 'Break must exist inside a switch or loop construct', sourceLocation)\n item.numBreaks++\n return `${item.uniqueName}${breakSuffix}`\n }\n\n getContinueTarget(label: ts.Identifier | undefined, sourceLocation: SourceLocation): string {\n const labelName = label?.text\n const item = this.switchLoopStack.toReversed().find(({ label }) => labelName === undefined || label === labelName)\n codeInvariant(item?.type === 'loop', 'Continue must exist inside a loop construct', sourceLocation)\n item.numContinues++\n return `${item.uniqueName}${continueSuffix}`\n }\n\n enterLoop(\n node: ts.WhileStatement | ts.ForStatement | ts.ForOfStatement | ts.ForInStatement | ts.DoStatement,\n sourceLocation: SourceLocation,\n ): LoopContext {\n const label = ts.isLabeledStatement(node.parent) ? node?.parent.label : undefined\n\n const uniqueName = this.uniqueNameForLabel(label, 'loop')\n const stackData: StackData = {\n uniqueName,\n label: label?.text,\n type: 'loop',\n numBreaks: 0,\n numContinues: 0,\n }\n this.switchLoopStack.push(stackData)\n return {\n breakTarget: nodeFactory.block({ sourceLocation, label: `${uniqueName}${breakSuffix}` }),\n continueTarget: nodeFactory.block({ sourceLocation, label: `${uniqueName}${continueSuffix}` }),\n [Symbol.dispose]: () => {\n const popped = this.switchLoopStack.pop()\n invariant(popped?.uniqueName === uniqueName && popped.type === 'loop', 'Switch loop stack is unbalanced')\n },\n get hasBreaks() {\n return stackData.numBreaks > 0\n },\n get hasContinues() {\n return stackData.numContinues > 0\n },\n }\n }\n\n private uniqueNameForLabel(label: ts.Identifier | undefined, type: 'switch' | 'loop'): string {\n if (label) {\n const count = ++this.labelCount[label.text]\n return `${label.text}${toSubScript(count)}`\n } else {\n const nextCount = ++this.unlabelledCount[type]\n return `#${type}${toSubScript(nextCount)}`\n }\n }\n\n enterSwitch(node: ts.SwitchStatement, sourceLocation: SourceLocation): SwitchContext {\n const label = ts.isLabeledStatement(node.parent) ? node?.parent.label : undefined\n const uniqueName = this.uniqueNameForLabel(label, 'switch')\n const stackData: StackData = {\n uniqueName,\n label: label?.text,\n type: 'switch',\n numBreaks: 0,\n }\n this.switchLoopStack.push(stackData)\n return {\n breakTarget: nodeFactory.block({ sourceLocation, label: `${uniqueName}${breakSuffix}` }),\n caseTarget(caseIndex: number, sourceLocation: SourceLocation) {\n return nodeFactory.block({ sourceLocation, label: `${uniqueName}ᶜ${toSubScript(caseIndex)}` })\n },\n gotoCase(caseIndex: number, sourceLocation: SourceLocation): Goto {\n return nodeFactory.goto({ sourceLocation, target: `${uniqueName}ᶜ${toSubScript(caseIndex)}` })\n },\n [Symbol.dispose]: () => {\n const popped = this.switchLoopStack.pop()\n invariant(popped?.uniqueName === uniqueName && popped.type === 'switch', 'Switch loop stack is unbalanced')\n },\n get hasBreaks() {\n return stackData.numBreaks > 0\n },\n }\n }\n}\n","import type ts from 'typescript'\nimport { toSubScript } from '../../util'\n\nexport class UniqueNameResolver {\n protected readonly symbolToName: Map<ts.Symbol, string>\n protected readonly nameToCount: Map<string, number>\n\n constructor(parent?: UniqueNameResolver) {\n if (parent) {\n this.symbolToName = new Map(parent.symbolToName.entries())\n this.nameToCount = new Map(parent.nameToCount.entries())\n } else {\n this.symbolToName = new Map()\n this.nameToCount = new Map()\n }\n }\n\n /**\n * Resolve a rawName to a unique name within the scope of this resolver. When provided\n * with a symbol which has already been seen, return the same name\n * @param rawName\n * @param symbol\n */\n resolveUniqueName(rawName: string, symbol: ts.Symbol | undefined): string {\n const name = symbol && this.symbolToName.get(symbol)\n if (name) {\n return name\n }\n const nameCount = this.nameToCount.get(rawName) ?? 0\n let uniqueName\n if (nameCount === 0) {\n uniqueName = rawName\n } else {\n uniqueName = `${rawName}${toSubScript(nameCount)}`\n }\n this.nameToCount.set(rawName, nameCount + 1)\n if (symbol) {\n this.symbolToName.set(symbol, uniqueName)\n }\n return uniqueName\n }\n\n createChild(): UniqueNameResolver {\n return new UniqueNameResolver(this)\n }\n}\n","import { AsyncLocalStorage } from 'node:async_hooks'\nimport ts from 'typescript'\nimport type { ContractReference, LogicSigReference } from '../../awst/models'\nimport { nodeFactory } from '../../awst/node-factory'\nimport type { AppStorageDefinition, ARC4MethodConfig } from '../../awst/nodes'\nimport { SourceLocation } from '../../awst/source-location'\nimport { logger } from '../../logger'\nimport { invariant } from '../../util'\nimport { DefaultMap } from '../../util/default-map'\nimport { ConstantStore } from '../constant-store'\nimport type { InstanceBuilder, NodeBuilder } from '../eb'\nimport type { AppStorageDeclaration } from '../models/app-storage-declaration'\nimport type { ContractClassModel } from '../models/contract-class-model'\nimport { CompilationSet } from '../models/contract-class-model'\nimport type { LogicSigClassModel } from '../models/logic-sig-class-model'\nimport type { ContractClassPType, PType } from '../ptypes'\nimport { arc4BaseContractType, baseContractType, ClusteredContractClassType } from '../ptypes'\nimport { typeRegistry } from '../type-registry'\nimport { TypeResolver } from '../type-resolver'\nimport { EvaluationContext } from './evaluation-context'\nimport { SwitchLoopContext } from './switch-loop-context'\nimport { UniqueNameResolver } from './unique-name-resolver'\n\nexport abstract class AwstBuildContext {\n /**\n * Get the source location of a node in the current source file\n * @param node\n */\n abstract getSourceLocation(node: ts.Node): SourceLocation\n\n /**\n * Get NodeBuilder instance for the given identifier.\n * @param node\n */\n abstract getBuilderForNode(node: ts.Identifier): NodeBuilder\n\n /**\n * Reflect the PType of the given node\n * @param node\n */\n abstract getPTypeForNode(node: ts.Node): PType\n\n /**\n * Reflect generic type parameters for a call expression\n * @param node\n */\n abstract getTypeParameters(node: ts.CallExpression | ts.NewExpression | ts.TaggedTemplateExpression): PType[]\n\n /**\n * Resolve the given identifier to a unique variable name that accounts\n * for shadowed variable names.\n * @param node\n */\n abstract resolveVariableName(node: ts.Identifier): string\n\n /**\n * Resolve the given parameter declaration to a unique parameter name to be used\n * in destructuring assignments where no explicit parameter name is available.\n * @param node\n */\n abstract resolveDestructuredParamName(node: ts.ParameterDeclaration): string\n\n /**\n * Generate a unique variable name.\n *\n * discard: Used to consume an RValue that is not required\n * temp: Used to hold a temp assignment\n * @param purpose The purpose of the variable.\n */\n abstract generateVarName(purpose: 'discard' | 'temp'): 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 builder The builder for the constant\n */\n abstract addConstant(identifier: ts.Identifier, builder: InstanceBuilder): void\n\n /**\n * Retrieve the evaluation context\n */\n abstract get evaluationCtx(): EvaluationContext\n\n /**\n * Retrieve the switch loop context\n */\n abstract get switchLoopCtx(): SwitchLoopContext\n\n abstract addStorageDeclaration(declaration: AppStorageDeclaration): void\n abstract addArc4Config(methodData: {\n contractReference: ContractReference\n sourceLocation: SourceLocation\n arc4MethodConfig: ARC4MethodConfig\n memberName: string\n }): void\n abstract getArc4Config(contractType: ContractClassPType, memberName: string): ARC4MethodConfig | undefined\n abstract getArc4Config(contractType: ContractClassPType): ARC4MethodConfig[]\n\n abstract getStorageDeclaration(contractType: ContractClassPType, memberName: string): AppStorageDeclaration | undefined\n\n abstract getStorageDefinitionsForContract(contractType: ContractClassPType): AppStorageDefinition[]\n\n abstract addToCompilationSet(compilationTarget: ContractReference, contract: ContractClassModel): void\n abstract addToCompilationSet(compilationTarget: LogicSigReference, logicSig: LogicSigClassModel): void\n\n abstract get compilationSet(): CompilationSet\n\n protected abstract createChildContext(): AwstBuildContext\n\n static get current(): AwstBuildContext {\n const ctx = this.asyncStore.getStore()\n if (!ctx) {\n throw new Error('No context available!')\n }\n return ctx\n }\n\n private static asyncStore = new AsyncLocalStorage<AwstBuildContext>()\n\n static run<R>(program: ts.Program, cb: () => R) {\n const ctx = AwstBuildContextImpl.forProgram(program)\n\n return AwstBuildContext.asyncStore.run(ctx, cb)\n }\n\n runInChildContext<R>(cb: (deferred: RunDeferred) => R) {\n const childCtx = this.createChildContext()\n\n const runDeferred: RunDeferred = (action) => () => AwstBuildContext.asyncStore.run(childCtx, action)\n\n return AwstBuildContext.asyncStore.run(childCtx, () => cb(runDeferred))\n }\n}\n\ntype RunDeferred = <T>(action: () => T) => () => T\n\nclass AwstBuildContextImpl extends AwstBuildContext {\n readonly evaluationCtx = new EvaluationContext()\n readonly switchLoopCtx = new SwitchLoopContext()\n readonly typeResolver: TypeResolver\n readonly typeChecker: ts.TypeChecker\n readonly #compilationSet: CompilationSet\n private constructor(\n public readonly program: ts.Program,\n private readonly constants: ConstantStore,\n private readonly nameResolver: UniqueNameResolver,\n private readonly storageDeclarations: DefaultMap<string, Map<string, AppStorageDeclaration>>,\n private readonly arc4MethodConfig: DefaultMap<string, Map<string, ARC4MethodConfig>>,\n compilationSet: CompilationSet,\n ) {\n super()\n this.typeChecker = program.getTypeChecker()\n this.typeResolver = new TypeResolver(this.typeChecker, this.program.getCurrentDirectory())\n this.#compilationSet = compilationSet\n }\n\n addArc4Config({\n memberName,\n sourceLocation,\n contractReference,\n arc4MethodConfig,\n }: {\n contractReference: ContractReference\n sourceLocation: SourceLocation\n arc4MethodConfig: ARC4MethodConfig\n memberName: string\n }): void {\n const contractConfig = this.arc4MethodConfig.getOrDefault(contractReference.id, () => new Map())\n if (contractConfig.has(memberName)) {\n logger.error(sourceLocation, `Duplicate declaration of member ${memberName} on ${contractReference}`)\n }\n contractConfig.set(memberName, arc4MethodConfig)\n }\n\n getArc4Config(contractType: ContractClassPType): ARC4MethodConfig[]\n getArc4Config(contractType: ContractClassPType, memberName: string): ARC4MethodConfig | undefined\n getArc4Config(contractType: ContractClassPType, memberName?: string): ARC4MethodConfig | undefined | ARC4MethodConfig[] {\n if (memberName) {\n for (const ct of [contractType, ...contractType.allBases()]) {\n if (ct.equals(baseContractType) || ct.equals(arc4BaseContractType) || ct instanceof ClusteredContractClassType) continue\n\n const contractMethods = this.arc4MethodConfig.get(ct.fullName)\n if (!contractMethods) continue\n if (contractMethods.has(memberName)) {\n return contractMethods.get(memberName)\n }\n }\n return undefined\n } else {\n return Array.from(\n [contractType, ...contractType.allBases()]\n .toReversed()\n .reduce((acc, ct) => {\n if (ct.equals(baseContractType) || ct.equals(arc4BaseContractType) || ct instanceof ClusteredContractClassType) return acc\n\n const contractMethods = this.arc4MethodConfig.get(ct.fullName)\n if (!contractMethods) return acc\n\n return new Map([...acc, ...contractMethods])\n }, new Map<string, ARC4MethodConfig>())\n .values(),\n )\n }\n }\n\n static forProgram(program: ts.Program): AwstBuildContext {\n return new AwstBuildContextImpl(\n program,\n new ConstantStore(program),\n new UniqueNameResolver(),\n new DefaultMap(),\n new DefaultMap(),\n new CompilationSet(),\n )\n }\n\n addConstant(identifier: ts.Identifier, builder: InstanceBuilder) {\n this.constants.addConstant(identifier, builder, this.getSourceLocation(identifier))\n }\n\n createChildContext(): AwstBuildContext {\n return new AwstBuildContextImpl(\n this.program,\n this.constants,\n this.nameResolver.createChild(),\n this.storageDeclarations,\n this.arc4MethodConfig,\n this.#compilationSet,\n )\n }\n\n resolveDestructuredParamName(node: ts.ParameterDeclaration) {\n const symbol = (node as { symbol?: ts.Symbol }).symbol\n invariant(symbol, 'Param node must have symbol')\n return this.nameResolver.resolveUniqueName('p', symbol)\n }\n generateVarName(purpose: 'temp' | 'discard'): string {\n switch (purpose) {\n case 'discard':\n return this.nameResolver.resolveUniqueName('_', undefined)\n case 'temp':\n return this.nameResolver.resolveUniqueName('temp', undefined)\n }\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 constantBuilder = this.constants.tryResolveConstant(node, sourceLocation)\n if (constantBuilder) {\n return constantBuilder\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.getOrDefault(declaration.definedIn.fullName, () => new Map())\n if (contractDeclarations.has(declaration.memberName)) {\n logger.error(declaration.sourceLocation, `Duplicate declaration of member ${declaration.memberName} on ${declaration.definedIn}`)\n }\n contractDeclarations.set(declaration.memberName, declaration)\n }\n\n getStorageDeclaration(contractType: ContractClassPType, memberName: string): AppStorageDeclaration | undefined {\n const declaration = this.storageDeclarations.get(contractType.fullName)?.get(memberName)\n if (declaration) return declaration\n for (const baseType of contractType.baseTypes) {\n const baseDeclaration = this.getStorageDeclaration(baseType, memberName)\n if (baseDeclaration) return baseDeclaration\n }\n return undefined\n }\n\n getStorageDefinitionsForContract(contractType: ContractClassPType): AppStorageDefinition[] {\n const result = new Map<string, AppStorageDefinition>()\n const seenContracts = new Set<string>()\n for (const ct of [contractType, ...contractType.allBases()]) {\n if (seenContracts.has(ct.fullName)) continue\n seenContracts.add(ct.fullName)\n\n for (const [memberName, declaration] of this.storageDeclarations.get(ct.fullName) ?? []) {\n if (result.has(memberName)) {\n logger.error(\n result.get(memberName)?.sourceLocation,\n `Redefinition of app storage member, original declared in ${declaration.sourceLocation}`,\n )\n }\n result.set(memberName, declaration.definition)\n }\n }\n return Array.from(result.values())\n }\n\n addToCompilationSet(compilationTarget: ContractReference, contract: ContractClassModel): void\n addToCompilationSet(compilationTarget: LogicSigReference, logicSig: LogicSigClassModel): void\n addToCompilationSet(compilationTarget: ContractReference | LogicSigReference, contractOrSig: ContractClassModel | LogicSigClassModel) {\n if (this.#compilationSet.has(compilationTarget)) {\n logger.debug(undefined, `${compilationTarget.id} already exists in compilation set`)\n return\n }\n this.#compilationSet.set(compilationTarget, contractOrSig)\n }\n\n get compilationSet() {\n return this.#compilationSet\n }\n}\n","import { TransactionKind } from '../awst/models'\nimport { TxnField } from '../awst/txn-fields'\nimport type { DeliberateAny } from '../typescript-helpers'\nimport type { PType } from './ptypes'\nimport {\n accountPType,\n applicationPType,\n assetPType,\n boolPType,\n BytesPType,\n bytesPType,\n onCompleteActionType,\n transactionTypeType,\n uint64PType,\n} from './ptypes'\n\nconst bytes32PType = new BytesPType({ length: 32n })\n\nexport type TxnFieldMetaData = {\n /**\n * The awst field enum for this field\n */\n field: TxnField\n /**\n * The ptype for this field, (or one unit of this field if it's an array)\n */\n ptype: PType\n /**\n * Comments for jsdoc\n */\n comment: string | string[]\n /**\n * This field can be read but not set\n */\n computed?: boolean\n /**\n * This field is an indexable collection\n */\n indexable?: boolean\n /**\n * When receiving a value for this field, automatically convert single values into arrays\n */\n arrayPromote?: boolean\n}\nexport type TxnFieldsMetaData = Record<string, TxnFieldMetaData>\n\nconst baseTxnFields = {\n sender: { field: TxnField.Sender, ptype: accountPType, comment: '32 byte address' },\n fee: { field: TxnField.Fee, ptype: uint64PType, comment: 'microalgos' },\n firstValid: { field: TxnField.FirstValid, ptype: uint64PType, comment: 'round number' },\n firstValidTime: {\n field: TxnField.FirstValidTime,\n ptype: uint64PType,\n comment: 'UNIX timestamp of block before txn.FirstValid. Fails if negative',\n },\n lastValid: { field: TxnField.LastValid, ptype: uint64PType, comment: 'round number' },\n note: { field: TxnField.Note, ptype: bytesPType, comment: 'Any data up to 1024 bytes' },\n lease: { field: TxnField.Lease, ptype: bytes32PType, comment: '32 byte lease value' },\n typeBytes: { field: TxnField.Type, ptype: bytesPType, comment: 'Transaction type as bytes', computed: true },\n type: { field: TxnField.TypeEnum, ptype: transactionTypeType.memberType, comment: 'Transaction type', computed: true },\n groupIndex: {\n field: TxnField.GroupIndex,\n ptype: uint64PType,\n comment: ['Position of this transaction within an atomic group', 'A stand-alone transaction is implicitly element 0 in a group of 1'],\n computed: true,\n },\n txnId: { field: TxnField.TxID, ptype: bytes32PType, comment: 'The computed ID for this transaction. 32 bytes.', computed: true },\n rekeyTo: { field: TxnField.RekeyTo, ptype: accountPType, comment: \"32 byte Sender's new AuthAddr\" },\n} satisfies TxnFieldsMetaData\n\nexport const paymentTxnFields = {\n ...baseTxnFields,\n receiver: { field: TxnField.Receiver, ptype: accountPType, comment: '32 byte address' },\n amount: { field: TxnField.Amount, ptype: uint64PType, comment: 'microalgos' },\n closeRemainderTo: { field: TxnField.CloseRemainderTo, ptype: accountPType, comment: '32 byte address' },\n} satisfies TxnFieldsMetaData\n\nexport const keyRegistrationTxnFields = {\n ...baseTxnFields,\n voteKey: { field: TxnField.VotePK, ptype: bytes32PType, comment: '32 byte address' },\n selectionKey: { field: TxnField.SelectionPK, ptype: bytes32PType, comment: '32 byte address' },\n voteFirst: { field: TxnField.VoteFirst, ptype: uint64PType, comment: 'The first round that the participation key is valid.' },\n voteLast: { field: TxnField.VoteLast, ptype: uint64PType, comment: 'The last round that the participation key is valid.' },\n voteKeyDilution: { field: TxnField.VoteKeyDilution, ptype: uint64PType, comment: 'Dilution for the 2-level participation key' },\n nonparticipation: { field: TxnField.Nonparticipation, ptype: boolPType, comment: 'Marks an account nonparticipating for rewards' },\n stateProofKey: { field: TxnField.StateProofPK, ptype: new BytesPType({ length: 64n }), comment: '64 byte state proof public key' },\n} satisfies TxnFieldsMetaData\n\nexport const assetConfigTxnFields = {\n ...baseTxnFields,\n configAsset: { field: TxnField.ConfigAsset, ptype: assetPType, comment: 'Asset ID in asset config transaction' },\n createdAsset: { field: TxnField.CreatedAssetID, ptype: assetPType, comment: 'The asset created by this transaction', computed: true },\n total: { field: TxnField.ConfigAssetTotal, ptype: uint64PType, comment: 'Total number of units of this asset created' },\n decimals: {\n field: TxnField.ConfigAssetDecimals,\n ptype: uint64PType,\n comment: 'Number of digits to display after the decimal place when displaying the asset',\n },\n defaultFrozen: {\n field: TxnField.ConfigAssetDefaultFrozen,\n ptype: boolPType,\n comment: \"Whether the asset's slots are frozen by default or not, 0 or 1\",\n },\n unitName: { field: TxnField.ConfigAssetUnitName, ptype: bytesPType, comment: 'Unit name of the asset' },\n assetName: { field: TxnField.ConfigAssetName, ptype: bytesPType, comment: 'The asset name' },\n url: { field: TxnField.ConfigAssetURL, ptype: bytesPType, comment: 'URL' },\n metadataHash: {\n field: TxnField.ConfigAssetMetadataHash,\n ptype: bytes32PType,\n comment: '32 byte commitment to unspecified asset metadata',\n },\n manager: { field: TxnField.ConfigAssetManager, ptype: accountPType, comment: '32 byte address' },\n reserve: { field: TxnField.ConfigAssetReserve, ptype: accountPType, comment: '32 byte address' },\n freeze: { field: TxnField.ConfigAssetFreeze, ptype: accountPType, comment: '32 byte address' },\n clawback: { field: TxnField.ConfigAssetClawback, ptype: accountPType, comment: '32 byte address' },\n} satisfies TxnFieldsMetaData\n\nexport const assetTransferTxnFields = {\n ...baseTxnFields,\n xferAsset: { field: TxnField.XferAsset, ptype: assetPType, comment: 'Asset ID' },\n assetAmount: { field: TxnField.AssetAmount, ptype: uint64PType, comment: \"value in Asset's units\" },\n assetSender: {\n field: TxnField.AssetSender,\n ptype: accountPType,\n comment: \"32 byte address. Source of assets if Sender is the Asset's Clawback address.\",\n },\n assetReceiver: { field: TxnField.AssetReceiver, ptype: accountPType, comment: '32 byte address' },\n assetCloseTo: { field: TxnField.AssetCloseTo, ptype: accountPType, comment: '32 byte address' },\n} satisfies TxnFieldsMetaData\n\nexport const assetFreezeTxnFields = {\n ...baseTxnFields,\n freezeAsset: { field: TxnField.FreezeAsset, ptype: assetPType, comment: 'Asset ID being frozen or un-frozen' },\n freezeAccount: {\n field: TxnField.FreezeAssetAccount,\n ptype: accountPType,\n comment: '32 byte address of the account whose asset slot is being frozen or un-frozen',\n },\n frozen: { field: TxnField.FreezeAssetFrozen, ptype: boolPType, comment: 'The new frozen value' },\n} satisfies TxnFieldsMetaData\n\nexport const applicationCallTxnFields = {\n ...baseTxnFields,\n appId: { field: TxnField.ApplicationID, ptype: applicationPType, comment: 'ApplicationID from ApplicationCall transaction' },\n onCompletion: {\n field: TxnField.OnCompletion,\n ptype: onCompleteActionType.memberType,\n comment: 'ApplicationCall transaction on completion action',\n },\n numAppArgs: { field: TxnField.NumAppArgs, ptype: uint64PType, comment: 'Number of ApplicationArgs', computed: true },\n numAccounts: { field: TxnField.NumAccounts, ptype: uint64PType, comment: 'Number of ApplicationArgs', computed: true },\n approvalProgram: {\n field: TxnField.ApprovalProgram,\n ptype: bytesPType,\n comment: 'The first page of the Approval program',\n computed: true,\n },\n clearStateProgram: {\n field: TxnField.ClearStateProgram,\n ptype: bytesPType,\n comment: 'The first page of the Clear State program',\n computed: true,\n },\n numAssets: { field: TxnField.NumAssets, ptype: uint64PType, comment: 'Number of Assets', computed: true },\n numApps: { field: TxnField.NumApplications, ptype: uint64PType, comment: 'Number of Applications', computed: true },\n globalNumUint: {\n field: TxnField.GlobalNumUint,\n ptype: uint64PType,\n comment: 'Number of global state integers this application makes use of.',\n },\n globalNumBytes: {\n field: TxnField.GlobalNumByteSlice,\n ptype: uint64PType,\n comment: 'Number of global state byteslices this application makes use of.',\n },\n localNumUint: {\n field: TxnField.LocalNumUint,\n ptype: uint64PType,\n comment: 'Number of local state integers this application makes use of.',\n },\n localNumBytes: {\n field: TxnField.LocalNumByteSlice,\n ptype: uint64PType,\n comment: 'Number of local state byteslices this application makes use of.',\n },\n extraProgramPages: {\n field: TxnField.ExtraProgramPages,\n ptype: uint64PType,\n comment: \"Number of additional pages for each of the application's approval and clear state program\",\n },\n lastLog: {\n field: TxnField.LastLog,\n ptype: bytesPType,\n comment: 'The last message emitted. Empty bytes if none were emitted. App mode only',\n computed: true,\n },\n logs: {\n field: TxnField.Logs,\n ptype: bytesPType,\n comment: ['Read application logs', '@param index Index of the log to get'],\n indexable: true,\n computed: true,\n },\n numApprovalProgramPages: {\n field: TxnField.NumApprovalProgramPages,\n ptype: uint64PType,\n comment: 'Number of Approval Program pages',\n computed: true,\n },\n approvalProgramPages: {\n field: TxnField.ApprovalProgramPages,\n ptype: bytesPType,\n comment: ['All approval program pages', '@param index Index of the page to get'],\n indexable: true,\n arrayPromote: true,\n },\n numClearStateProgramPages: {\n field: TxnField.NumClearStateProgramPages,\n ptype: uint64PType,\n comment: 'Number of Clear State Program pages',\n computed: true,\n },\n clearStateProgramPages: {\n field: TxnField.ClearStateProgramPages,\n ptype: bytesPType,\n comment: ['All clear state program pages', '@param index Index of the page to get'],\n indexable: true,\n arrayPromote: true,\n },\n appArgs: {\n field: TxnField.ApplicationArgs,\n ptype: bytesPType,\n comment: ['Arguments passed to the application in the ApplicationCall transaction', '@param index Index of the arg to get'],\n indexable: true,\n },\n accounts: {\n field: TxnField.Accounts,\n ptype: accountPType,\n comment: ['Accounts listed in the ApplicationCall transaction', '@param index Index of the account to get'],\n indexable: true,\n },\n assets: {\n field: TxnField.Assets,\n ptype: assetPType,\n comment: ['Foreign Assets listed in the ApplicationCall transaction', '@param index Index of the asset to get'],\n indexable: true,\n },\n apps: {\n field: TxnField.Applications,\n ptype: applicationPType,\n comment: ['Foreign Apps listed in the ApplicationCall transaction', '@param index Index of the application to get'],\n indexable: true,\n },\n createdApp: {\n field: TxnField.CreatedApplicationID,\n ptype: applicationPType,\n comment: 'The id of the created application',\n computed: true,\n },\n\n /**\n * Number of logs\n */\n numLogs: { field: TxnField.NumLogs, ptype: uint64PType, comment: 'Number of logs', computed: true },\n} satisfies TxnFieldsMetaData\n\nconst anyTxnFields = {\n ...paymentTxnFields,\n ...keyRegistrationTxnFields,\n ...assetConfigTxnFields,\n ...assetTransferTxnFields,\n ...assetFreezeTxnFields,\n ...applicationCallTxnFields,\n} satisfies TxnFieldsMetaData\n\ntype TxnFieldName = keyof typeof anyTxnFields\nexport const txnFieldName = new Proxy<Record<TxnFieldName, TxnFieldName>>({} as DeliberateAny, {\n get(_, prop) {\n if (prop in anyTxnFields) return prop\n return Reflect.get(_, prop)\n },\n})\n\nexport function getTxnFieldMetaData({\n kind,\n memberName,\n direction = 'out',\n}: {\n kind: TransactionKind | undefined\n memberName: string\n direction?: 'in' | 'out'\n}): TxnFieldMetaData | false {\n let fields: TxnFieldsMetaData\n switch (kind) {\n case TransactionKind.pay:\n fields = paymentTxnFields\n break\n case TransactionKind.keyreg:\n fields = keyRegistrationTxnFields\n break\n case TransactionKind.acfg:\n fields = assetConfigTxnFields\n break\n case TransactionKind.axfer:\n fields = assetTransferTxnFields\n break\n case TransactionKind.afrz:\n fields = assetFreezeTxnFields\n break\n case TransactionKind.appl:\n fields = applicationCallTxnFields\n break\n default:\n fields = anyTxnFields\n break\n }\n\n if (memberName in fields) {\n if (direction === 'in') {\n // Allow program properties to be set as if they were their pages equivalent\n switch (memberName) {\n case txnFieldName.approvalProgram:\n return applicationCallTxnFields.approvalProgramPages\n case txnFieldName.clearStateProgram:\n return applicationCallTxnFields.clearStateProgramPages\n }\n }\n return fields[memberName]\n }\n return false\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 isObjectType,\n LogicSigPType,\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(isObjectType(templateVars.ptype), `${optionsNames.templateVars} must be an object type`, templateVars.sourceLocation)\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 { ContractReference } from '../../awst/models'\nimport { nodeFactory } from '../../awst/node-factory'\nimport type { ContractMethodTarget, InstanceMethodTarget, InstanceSuperMethodTarget, MethodConstant, SubroutineID } from '../../awst/nodes'\nimport { ARC4ABIMethodConfig } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { InternalError } from '../../errors'\nimport { codeInvariant } from '../../util'\nimport { buildArc4MethodConstant } from '../arc4-util'\nimport { AwstBuildContext } from '../context/awst-build-context'\nimport type { ContractClassPType, PType } from '../ptypes'\nimport { FunctionPType } from '../ptypes'\nimport { typeRegistry } from '../type-registry'\nimport type { NodeBuilder } from './index'\nimport { FunctionBuilder } from './index'\nimport { parseFunctionArgs } from './util/arg-parsing'\n\nexport abstract class SubroutineExpressionBuilder extends FunctionBuilder {\n protected constructor(\n sourceLocation: SourceLocation,\n public readonly ptype: FunctionPType,\n public readonly target: SubroutineID | InstanceMethodTarget | InstanceSuperMethodTarget | ContractMethodTarget,\n ) {\n super(sourceLocation)\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const { args: mappedArgs } = parseFunctionArgs({\n args,\n typeArgs,\n funcName: this.ptype.name,\n callLocation: sourceLocation,\n genericTypeArgs: 0,\n argSpec: (a) => this.ptype.parameters.map(([_, ptype]) => a.required(ptype)),\n })\n\n return typeRegistry.getInstanceEb(\n nodeFactory.subroutineCallExpression({\n target: this.target,\n args: mappedArgs.map((a) => nodeFactory.callArg({ name: null, value: a.resolve() })),\n sourceLocation: sourceLocation,\n wtype: this.ptype.returnType.wtypeOrThrow,\n }),\n this.ptype.returnType,\n )\n }\n}\n\n/**\n * Invoke a contract method on the current contract (ie. this.someMethod())\n */\nexport class ContractMethodExpressionBuilder extends SubroutineExpressionBuilder {\n declare readonly target: ContractMethodTarget\n\n constructor(\n sourceLocation: SourceLocation,\n ptype: FunctionPType,\n public readonly contractType: ContractClassPType,\n ) {\n super(\n sourceLocation,\n ptype,\n nodeFactory.contractMethodTarget({\n cref: ContractReference.fromPType(contractType),\n memberName: ptype.name,\n }),\n )\n }\n\n getMethodSelector(sourceLocation = this.sourceLocation): MethodConstant {\n const methodTarget = this.target\n const arc4Config = AwstBuildContext.current.getArc4Config(this.contractType, methodTarget.memberName)\n codeInvariant(arc4Config instanceof ARC4ABIMethodConfig, `${methodTarget.memberName} is not an ABI method`, this.sourceLocation)\n return buildArc4MethodConstant(this.ptype, arc4Config, sourceLocation)\n }\n}\n\n/**\n * Invoke a contract method on the super contract (ie. super.someMethod())\n */\nexport class BaseContractMethodExpressionBuilder extends SubroutineExpressionBuilder {\n constructor(sourceLocation: SourceLocation, ptype: FunctionPType) {\n super(\n sourceLocation,\n ptype,\n nodeFactory.instanceSuperMethodTarget({\n memberName: ptype.name,\n }),\n )\n }\n}\n\n/**\n * Invoke a free subroutine (ie. someMethod())\n */\nexport class FreeSubroutineExpressionBuilder extends SubroutineExpressionBuilder {\n constructor(sourceLocation: SourceLocation, ptype: PType) {\n if (!(ptype instanceof FunctionPType)) {\n throw new InternalError(`Invalid ptype`)\n }\n super(\n sourceLocation,\n ptype,\n nodeFactory.subroutineID({\n target: ptype.fullName,\n }),\n )\n }\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { Expression } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport { invariant } from '../../../util'\nimport type { PType } from '../../ptypes'\nimport { InnerTransactionPType, uint64PType } from '../../ptypes'\nimport type { TxnFieldMetaData } from '../../txn-fields'\nimport { getTxnFieldMetaData } from '../../txn-fields'\nimport { instanceEb } from '../../type-registry'\nimport type { NodeBuilder } from '../index'\nimport { FunctionBuilder, InstanceExpressionBuilder } from '../index'\nimport { parseFunctionArgs } from '../util/arg-parsing'\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\n hasProperty(name: string): boolean {\n return getTxnFieldMetaData({ kind: this.ptype.kind, memberName: name }) !== false\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n const data = getTxnFieldMetaData({ kind: this.ptype.kind, memberName: name })\n if (data) {\n if (data.indexable !== true) {\n return instanceEb(\n nodeFactory.innerTransactionField({\n sourceLocation,\n itxn: this.resolve(),\n arrayIndex: null,\n field: data.field,\n wtype: data.ptype.wtypeOrThrow,\n }),\n data.ptype,\n )\n } else {\n return new IndexedTransactionFieldFunctionBuilder(this._expr, {\n txnData: data,\n memberName: name,\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: TxnFieldMetaData; 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.innerTransactionField({\n sourceLocation,\n itxn: this.gtxn,\n arrayIndex: index.resolve(),\n field: this.config.txnData.field,\n wtype: this.config.txnData.ptype.wtypeOrThrow,\n }),\n this.config.txnData.ptype,\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 } from '../../../awst/txn-fields'\nimport { logger } from '../../../logger'\nimport { codeInvariant, invariant } from '../../../util'\nimport type { PType } from '../../ptypes'\nimport {\n isObjectType,\n ItxnParamsPType,\n ReadonlyTuplePType,\n stringPType,\n submitGroupItxnFunction,\n TransactionFunctionType,\n} from '../../ptypes'\nimport { getTxnFieldMetaData } from '../../txn-fields'\nimport { instanceEb } from '../../type-registry'\nimport type { InstanceBuilder, NodeBuilder } from '../index'\nimport { FunctionBuilder, InstanceExpressionBuilder } from '../index'\nimport { isStaticallyIterable, StaticIterator } from '../traits/static-iterator'\nimport { parseFunctionArgs } from '../util/arg-parsing'\nimport { resolveCompatExpression } from '../util/resolve-compat-builder'\nimport { InnerTransactionExpressionBuilder } from './inner-transactions'\nimport { 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 invariant(this.ptype.kind !== undefined, 'Cannot have untyped itxn params factory', 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\nexport function mapTransactionFields(\n mappedFields: Map<TxnField, Expression>,\n fields: InstanceBuilder,\n kind: TransactionKind | undefined,\n sourceLocation: SourceLocation,\n ignoreProps?: Set<string>,\n) {\n codeInvariant(isObjectType(fields.ptype), 'fields argument must be an object type')\n for (const [prop] of fields.ptype.orderedProperties()) {\n if (ignoreProps?.has(prop)) continue\n\n const data = getTxnFieldMetaData({ kind, memberName: prop, direction: 'in' })\n if (data) {\n const propValue = fields.memberAccess(prop, sourceLocation)\n if (data.field === TxnField.ApplicationArgs) {\n codeInvariant(isStaticallyIterable(propValue), 'Unsupported expression for appArgs', propValue.sourceLocation)\n mappedFields.set(\n data.field,\n nodeFactory.tupleExpression({\n items: propValue[StaticIterator]().flatMap((i) => {\n if (i.ptype instanceof ItxnParamsPType) {\n logger.error(\n i.sourceLocation,\n 'Transaction parameters should not be passed as application args, instead include them in the same transaction group, immediately preceding this call.',\n )\n return []\n }\n if (i.ptype.equals(stringPType)) {\n logger.error(\n i.sourceLocation,\n 'String value must be explicitly converted to `bytes` or `arc4.Str` using `Bytes(value)` or `new arc4.Str(value)`',\n )\n }\n return i.toBytes(i.sourceLocation).resolve()\n }),\n sourceLocation: propValue.sourceLocation,\n }),\n )\n } else if (data.indexable) {\n if (isStaticallyIterable(propValue)) {\n mappedFields.set(\n data.field,\n nodeFactory.tupleExpression({\n items: propValue[StaticIterator]().map((i) => resolveCompatExpression(i, data.ptype)),\n sourceLocation: propValue.sourceLocation,\n }),\n )\n } else if (data.arrayPromote) {\n mappedFields.set(\n data.field,\n nodeFactory.tupleExpression({\n items: [resolveCompatExpression(propValue, data.ptype)],\n sourceLocation: propValue.sourceLocation,\n }),\n )\n } else {\n logger.error(propValue.sourceLocation, `Unsupported expression for ${prop}`)\n }\n } else {\n mappedFields.set(data.field, resolveCompatExpression(propValue, data.ptype))\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 invariant(this.builder.ptype.kind !== undefined, 'Cannot have untyped itxn params type', sourceLocation)\n\n const transactionPType = getInnerTransactionType(this.builder.ptype.kind)\n return new InnerTransactionExpressionBuilder(\n nodeFactory.submitInnerTransaction({\n itxns: [this.builder.resolve()],\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 ReadonlyTuplePType({\n items: itxnParams.map((p, i) => {\n codeInvariant(p.ptype instanceof ItxnParamsPType, `Argument ${i} must be an itxn params type`, p.sourceLocation)\n invariant(p.ptype.kind !== undefined, 'Cannot have untyped itxn params type', sourceLocation)\n\n return getInnerTransactionType(p.ptype.kind)\n }),\n })\n\n return instanceEb(\n nodeFactory.submitInnerTransaction({\n itxns: itxnParams.map((p) => p.resolve()),\n sourceLocation,\n }),\n resultType,\n )\n }\n}\n\nclass SetInnerTxnMethodBuilder extends InnerTxnFieldsMethodBuilder {\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [updatedFields],\n } = parseFunctionArgs({\n args,\n typeArgs,\n callLocation: sourceLocation,\n genericTypeArgs: 0,\n funcName: 'set',\n argSpec: (a) => [a.required()],\n })\n\n const mappedFields = new Map<TxnField, Expression>()\n const fieldsType = this.builder.ptype\n\n mapTransactionFields(mappedFields, updatedFields, fieldsType.kind, sourceLocation)\n\n return new ItxnParamsExpressionBuilder(\n nodeFactory.updateInnerTransaction({\n itxn: this.builder.resolve(),\n fields: mappedFields,\n sourceLocation,\n wtype: fieldsType.wtype,\n }),\n fieldsType,\n )\n }\n}\nclass CopyInnerTxnMethodBuilder extends InnerTxnFieldsMethodBuilder {\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n parseFunctionArgs({\n args,\n typeArgs,\n callLocation: sourceLocation,\n genericTypeArgs: 0,\n funcName: 'copy',\n argSpec: () => [],\n })\n\n return new ItxnParamsExpressionBuilder(\n nodeFactory.copy({\n value: this.builder.resolve(),\n sourceLocation,\n }),\n this.builder.ptype,\n )\n }\n}\n\nexport class ItxnParamsExpressionBuilder extends InstanceExpressionBuilder<ItxnParamsPType> {\n constructor(expr: Expression, ptype: PType) {\n invariant(ptype instanceof ItxnParamsPType, 'ptype must be InnerTransactionFieldsPType')\n super(expr, ptype)\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n switch (name) {\n case 'submit':\n return new SubmitInnerTxnMethodBuilder(this, sourceLocation)\n case 'set':\n return new SetInnerTxnMethodBuilder(this, sourceLocation)\n case 'copy':\n return new CopyInnerTxnMethodBuilder(this, sourceLocation)\n }\n return super.memberAccess(name, sourceLocation)\n }\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { BytesConstant, Expression } from '../../../awst/nodes'\nimport { EqualityComparison } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport { wtypes } from '../../../awst/wtypes'\nimport { Constants } from '../../../constants'\nimport { CodeError } from '../../../errors'\nimport { logger } from '../../../logger'\nimport { codeInvariant, hexToUint8Array } from '../../../util'\nimport { isArc4EncodableType, ptypeToArc4EncodedType } from '../../arc4-util'\nimport type { PType } from '../../ptypes'\nimport { BytesPType, bytesPType, stringPType, uint64PType } from '../../ptypes'\nimport {\n ARC4EncodedType,\n decodeArc4Function,\n encodeArc4Function,\n interpretAsArc4Function,\n methodSelectorFunction,\n sizeOfFunction,\n} from '../../ptypes/arc4-types'\nimport { instanceEb } from '../../type-registry'\nimport { ContractMethodExpressionBuilder, SubroutineExpressionBuilder } from '../free-subroutine-expression-builder'\nimport type { InstanceBuilder, NodeBuilder } from '../index'\nimport { FunctionBuilder } from '../index'\nimport { requireStringConstant } from '../util'\nimport { parseFunctionArgs } from '../util/arg-parsing'\n\nexport class InterpretAsArc4FunctionBuilder extends FunctionBuilder {\n readonly ptype = interpretAsArc4Function\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n ptypes: [ptype],\n args: [theBytes, prefixType],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 1,\n funcName: this.typeDescription,\n argSpec: (a) => [a.required(bytesPType), a.optional(stringPType)],\n callLocation: sourceLocation,\n })\n codeInvariant(ptype instanceof ARC4EncodedType, 'Generic type must be an ARC4 encoded type')\n\n const prefixBytes = getPrefixValue(prefixType)\n\n return instanceEb(\n nodeFactory.reinterpretCast({\n expr: validatePrefix(theBytes, prefixBytes, sourceLocation),\n wtype: ptype.wtype,\n sourceLocation,\n }),\n ptype,\n )\n }\n}\nexport class EncodeArc4FunctionBuilder extends FunctionBuilder {\n readonly ptype = encodeArc4Function\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [valueToEncode],\n ptypes: [valueType],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 1,\n funcName: this.typeDescription,\n argSpec: (a) => [a.required()],\n callLocation: sourceLocation,\n })\n if (valueType instanceof ARC4EncodedType) {\n // Already encoded, just reinterpret as bytes\n return instanceEb(\n nodeFactory.reinterpretCast({\n expr: valueToEncode.resolve(),\n wtype: wtypes.bytesWType,\n sourceLocation,\n }),\n bytesPType,\n )\n }\n\n const encodedType = ptypeToArc4EncodedType(valueType, sourceLocation)\n\n return instanceEb(\n nodeFactory.reinterpretCast({\n expr: nodeFactory.aRC4Encode({\n value: valueToEncode.resolveToPType(valueType).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(\n !(ptype instanceof ARC4EncodedType),\n `Cannot decode to ${ptype} as it is an ARC4 type. Use \\`interpretAsArc4<${ptype}>\\` instead`,\n sourceLocation,\n )\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}\nexport function validatePrefix(\n base: InstanceBuilder,\n expectedPrefix: BytesConstant | undefined,\n sourceLocation: SourceLocation,\n): 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(Constants.algo.arc4.logPrefixHex), 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.passthrough()],\n })\n const methodConstantType = new BytesPType({ length: 4n })\n if (methodSignature instanceof SubroutineExpressionBuilder) {\n codeInvariant(\n methodSignature instanceof ContractMethodExpressionBuilder,\n `Expected contract instance method, found ${methodSignature.typeDescription}`,\n )\n return instanceEb(methodSignature.getMethodSelector(sourceLocation), methodConstantType)\n } else {\n if (methodSignature === undefined) {\n throw new CodeError(\n `${this.typeDescription} expects exactly 1 argument that is either a string literal, or a contract function reference`,\n { sourceLocation },\n )\n }\n return instanceEb(\n nodeFactory.methodConstant({\n value: requireStringConstant(methodSignature).value,\n wtype: methodConstantType.wtype,\n sourceLocation,\n }),\n methodConstantType,\n )\n }\n }\n}\n\nexport class SizeOfFunctionBuilder extends FunctionBuilder {\n readonly ptype = sizeOfFunction\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n ptypes: [typeToEncode],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 1,\n funcName: this.typeDescription,\n argSpec: (a) => [],\n callLocation: sourceLocation,\n })\n\n const arc4Type = ptypeToArc4EncodedType(typeToEncode, sourceLocation)\n\n return instanceEb(nodeFactory.sizeOf({ sizeWtype: arc4Type.wtype, wtype: wtypes.uint64WType, sourceLocation }), uint64PType)\n }\n}\n","import { OnCompletionAction, TransactionKind } from '../../../awst/models'\nimport { nodeFactory } from '../../../awst/node-factory'\nimport type { ARC4MethodConfig, Expression, MethodConstant } from '../../../awst/nodes'\nimport { ARC4ABIMethodConfig, ARC4BareMethodConfig, ARC4CreateOption, CompiledContract, IntegerConstant } from '../../../awst/nodes'\nimport { SourceLocation } from '../../../awst/source-location'\nimport { TxnField } from '../../../awst/txn-fields'\nimport { wtypes } from '../../../awst/wtypes'\nimport { Constants } from '../../../constants'\nimport { logger } from '../../../logger'\nimport { codeInvariant, enumFromValue, hexToUint8Array, invariant } from '../../../util'\nimport { parseArc4Method } from '../../../util/arc4-signature-parser'\nimport { buildArc4MethodConstant, ptypeToArc4EncodedType } from '../../arc4-util'\nimport { AwstBuildContext } from '../../context/awst-build-context'\nimport type { FunctionPType, PType } from '../../ptypes'\nimport {\n accountPType,\n applicationCallItxnParamsType,\n applicationItxnType,\n applicationPType,\n assetPType,\n bytesPType,\n compiledContractType,\n GroupTransactionPType,\n ItxnParamsPType,\n voidPType,\n} from '../../ptypes'\nimport {\n abiCallFunction,\n arc4AddressAlias,\n arc4Uint64,\n compileArc4Function,\n ContractProxyGeneric,\n ContractProxyType,\n TypedApplicationCallResponseGeneric,\n} from '../../ptypes/arc4-types'\nimport { txnFieldName } from '../../txn-fields'\nimport { instanceEb } from '../../type-registry'\nimport { CompileFunctionBuilder } from '../compiled/compile-function'\nimport { ContractMethodExpressionBuilder } from '../free-subroutine-expression-builder'\nimport type { InstanceBuilder } from '../index'\nimport { FunctionBuilder, InstanceExpressionBuilder, NodeBuilder } from '../index'\nimport { isStaticallyIterable, StaticIterator } from '../traits/static-iterator'\nimport { mapTransactionFields } from '../transactions/inner-transaction-params'\nimport { requireExpressionOfType, requireInstanceBuilder } from '../util'\nimport { parseFunctionArgs } from '../util/arg-parsing'\nimport { validatePrefix } from './util'\n\nexport class AbiCallFunctionBuilder extends FunctionBuilder {\n readonly ptype = abiCallFunction\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [functionRef, fields],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 2,\n argSpec: (a) => [a.passthrough(), a.required()],\n callLocation: sourceLocation,\n funcName: this.typeDescription,\n })\n\n invariant(functionRef instanceof ContractMethodExpressionBuilder, `Arg 0 of ${this.typeDescription} should be an arc4 contract method`)\n const {\n target: { memberName },\n contractType,\n ptype: functionType,\n } = functionRef\n const arc4Config = AwstBuildContext.current.getArc4Config(contractType, memberName)\n codeInvariant(\n arc4Config instanceof ARC4ABIMethodConfig,\n `${memberName} is not an ABI method, or the containing contract has not been visited (possibly due to a circular reference)`,\n functionRef.sourceLocation,\n )\n const methodSelector = buildArc4MethodConstant(functionType, arc4Config, sourceLocation)\n\n const itxnResult = makeApplicationCall({\n fields,\n methodSelector,\n functionType,\n arc4Config,\n sourceLocation,\n })\n return formatApplicationCallResponse({ itxnResult, functionType, sourceLocation })\n }\n}\n\nexport class CompileArc4FunctionBuilder extends CompileFunctionBuilder {\n readonly ptype = compileArc4Function\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const result = requireInstanceBuilder(super.call(args, [], sourceLocation)).resolve()\n codeInvariant(result instanceof CompiledContract, `${this.typeDescription} expects a contract type`, sourceLocation)\n const proxyType = ContractProxyGeneric.parameterise([...typeArgs])\n return new ContractProxyExpressionBuilder(result, proxyType)\n }\n}\n\nexport class ContractProxyExpressionBuilder extends InstanceExpressionBuilder<ContractProxyType> {\n constructor(expr: Expression, ptype: PType) {\n invariant(ptype instanceof ContractProxyType, 'ptype must be instance of ContractProxyType')\n super(expr, ptype)\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n switch (name) {\n case 'call':\n return new ContractProxyCallBuilder(this, sourceLocation)\n case 'bareCreate':\n return new ContractProxyBareCreateFunctionBuilder(this, sourceLocation)\n }\n if (name in compiledContractType.properties) {\n return instanceEb(\n nodeFactory.fieldExpression({\n base: this._expr,\n name,\n wtype: compiledContractType.properties[name].wtypeOrThrow,\n sourceLocation,\n }),\n compiledContractType.properties[name],\n )\n }\n\n return super.memberAccess(name, sourceLocation)\n }\n}\n\nexport class ContractProxyBareCreateFunctionBuilder extends FunctionBuilder {\n constructor(\n private readonly proxy: ContractProxyExpressionBuilder,\n sourceLocation: SourceLocation,\n ) {\n super(sourceLocation)\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [fields],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n funcName: 'bareCreate',\n argSpec: (a) => [a.optional()],\n callLocation: sourceLocation,\n })\n const arc4Configs = AwstBuildContext.current.getArc4Config(this.proxy.ptype.contractType)\n const createConfigs = arc4Configs.filter((c) => c.create !== ARC4CreateOption.disallow)\n const bareCreate = createConfigs.find((c) => c instanceof ARC4BareMethodConfig)\n if (createConfigs.length && !bareCreate) {\n logger.error(sourceLocation, `${this.proxy.ptype.contractType} has no bare create method`)\n }\n\n const itxnResult = makeApplicationCall({\n arc4Config:\n bareCreate ??\n new ARC4BareMethodConfig({\n allowedCompletionTypes: [OnCompletionAction.NoOp],\n create: ARC4CreateOption.require,\n sourceLocation: SourceLocation.None,\n }),\n sourceLocation,\n methodSelector: null,\n functionType: null,\n fields,\n applicationProxy: this.proxy,\n })\n\n return instanceEb(itxnResult, applicationItxnType)\n }\n}\nexport class ContractProxyCallBuilder extends NodeBuilder {\n readonly ptype = undefined\n\n constructor(\n private readonly proxy: ContractProxyExpressionBuilder,\n sourceLocation: SourceLocation,\n ) {\n super(sourceLocation)\n }\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n const maybeFunction = this.proxy.ptype.contractType.methods[name]\n if (maybeFunction) {\n return new ContractProxyCallFunctionBuilder(this.proxy, maybeFunction, sourceLocation)\n }\n\n return super.memberAccess(name, sourceLocation)\n }\n}\n\nexport class ContractProxyCallFunctionBuilder extends FunctionBuilder {\n constructor(\n private readonly proxy: ContractProxyExpressionBuilder,\n private readonly functionType: FunctionPType,\n sourceLocation: SourceLocation,\n ) {\n super(sourceLocation)\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [fields],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n funcName: this.functionType.name,\n argSpec: (a) => [a.optional()],\n callLocation: sourceLocation,\n })\n\n const arc4Config = AwstBuildContext.current.getArc4Config(this.proxy.ptype.contractType, this.functionType.name)\n codeInvariant(\n arc4Config instanceof ARC4ABIMethodConfig,\n `${this.functionType.name} is not an ABI method, or the containing contract has not been visited (possibly due to a circular reference)`,\n sourceLocation,\n )\n const methodSelector =\n arc4Config instanceof ARC4ABIMethodConfig ? buildArc4MethodConstant(this.functionType, arc4Config, sourceLocation) : null\n\n return formatApplicationCallResponse({\n itxnResult: makeApplicationCall({\n applicationProxy: this.proxy,\n arc4Config: arc4Config,\n functionType: this.functionType,\n methodSelector,\n fields,\n sourceLocation,\n }),\n functionType: this.functionType,\n sourceLocation,\n })\n }\n}\nconst typedAppCallIgnoredFields = new Set(['args', 'appArgs'])\n\nexport function buildApplicationCallTxnFields({\n sourceLocation,\n fields,\n arc4Config,\n applicationProxy,\n methodSelector,\n functionType,\n}: {\n applicationProxy?: InstanceBuilder\n fields?: InstanceBuilder\n functionType: FunctionPType | null\n arc4Config: ARC4MethodConfig\n methodSelector: MethodConstant | null\n sourceLocation: SourceLocation\n}) {\n const itxnGroup: Expression[] = []\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 [TxnField.Fee, nodeFactory.uInt64Constant({ value: 0n, sourceLocation })],\n [TxnField.TypeEnum, nodeFactory.uInt64Constant({ value: 6n, sourceLocation, tealAlias: 'appl' })],\n ])\n\n // Map any explicitly provided fields\n if (fields) {\n mapTransactionFields(mappedFields, fields, TransactionKind.appl, sourceLocation, typedAppCallIgnoredFields)\n }\n // Add implicit fields\n if (applicationProxy) {\n // Create a copy of the fields\n const implicitFields = getImplicitFields({ applicationProxy: applicationProxy, mappedFields, sourceLocation, methodConfig: arc4Config })\n // Only add fields that aren't explicitly provided\n for (const [key, expr] of implicitFields) {\n if (!mappedFields.has(key)) {\n mappedFields.set(key, expr)\n }\n }\n }\n // Add app args by merging provided args with method selector\n if (arc4Config instanceof ARC4ABIMethodConfig) {\n invariant(methodSelector && functionType, 'methodSelector and functionType both required for abi calls')\n const { itxns, appArgs, foreignApps, foreignAssets, foreignAccounts } = parseAppArgs({\n fields,\n methodSelector,\n sourceLocation,\n functionType,\n })\n mappedFields.set(TxnField.ApplicationArgs, appArgs)\n if (foreignApps) mappedFields.set(TxnField.Applications, foreignApps)\n if (foreignAssets) mappedFields.set(TxnField.Assets, foreignAssets)\n if (foreignAccounts) mappedFields.set(TxnField.Accounts, foreignAccounts)\n\n itxnGroup.push(...itxns)\n }\n // Build itxn and submit\n itxnGroup.push(\n nodeFactory.createInnerTransaction({\n fields: mappedFields,\n sourceLocation,\n wtype: applicationCallItxnParamsType.wtype,\n }),\n )\n return itxnGroup\n}\n\nfunction makeApplicationCall({\n sourceLocation,\n fields,\n arc4Config,\n applicationProxy,\n methodSelector,\n functionType,\n}: {\n applicationProxy?: InstanceBuilder\n fields?: InstanceBuilder\n functionType: FunctionPType | null\n arc4Config: ARC4MethodConfig\n methodSelector: MethodConstant | null\n sourceLocation: SourceLocation\n}): Expression {\n const itxnGroup = buildApplicationCallTxnFields({\n sourceLocation,\n fields,\n arc4Config,\n applicationProxy,\n methodSelector,\n functionType,\n })\n const txnGroup = nodeFactory.submitInnerTransaction({\n itxns: itxnGroup,\n sourceLocation,\n })\n\n return txnGroup.itxns.length === 1\n ? txnGroup\n : nodeFactory.tupleItemExpression({\n base: txnGroup,\n index: BigInt(txnGroup.itxns.length - 1),\n sourceLocation,\n })\n}\n\nfunction formatApplicationCallResponse({\n itxnResult,\n functionType,\n sourceLocation,\n}: {\n itxnResult: Expression\n functionType: FunctionPType\n sourceLocation: SourceLocation\n}) {\n if (functionType.returnType.equals(voidPType)) {\n const responseType = TypedApplicationCallResponseGeneric.parameterise([voidPType])\n return instanceEb(\n nodeFactory.tupleExpression({\n items: [itxnResult],\n sourceLocation,\n wtype: responseType.wtype,\n }),\n responseType,\n )\n }\n\n // Extract return value and return\n const itxnSingle = nodeFactory.singleEvaluation({ source: itxnResult })\n\n const responseType = TypedApplicationCallResponseGeneric.parameterise([functionType.returnType])\n const returnValue = getReturnValueExpr(itxnSingle, functionType.returnType, sourceLocation)\n return instanceEb(\n nodeFactory.tupleExpression({\n items: [itxnSingle, returnValue],\n sourceLocation,\n wtype: responseType.wtype,\n }),\n responseType,\n )\n}\n\nfunction getImplicitFields({\n applicationProxy,\n methodConfig,\n mappedFields,\n sourceLocation,\n}: {\n applicationProxy: InstanceBuilder\n methodConfig: ARC4ABIMethodConfig | ARC4BareMethodConfig\n mappedFields: ReadonlyMap<TxnField, Expression>\n sourceLocation: SourceLocation\n}) {\n const implicitFields = new Map<TxnField, Expression>()\n const hasAppId = mappedFields.has(TxnField.ApplicationID)\n\n const oca = getOca(mappedFields.get(TxnField.OnCompletion), methodConfig.allowedCompletionTypes, sourceLocation)\n implicitFields.set(\n TxnField.OnCompletion,\n nodeFactory.uInt64Constant({\n value: BigInt(oca),\n sourceLocation,\n }),\n )\n if (hasAppId) {\n codeInvariant(\n methodConfig.create !== ARC4CreateOption.require,\n `Cannot specify ${txnFieldName.appId} as target method is only callable in a create scenario`,\n mappedFields.get(TxnField.ApplicationID)?.sourceLocation,\n )\n } else {\n codeInvariant(\n methodConfig.create !== ARC4CreateOption.disallow,\n `${txnFieldName.appId} must be specified to call this method`,\n sourceLocation,\n )\n }\n // Update or possible create\n if (oca === OnCompletionAction.UpdateApplication || !hasAppId) {\n implicitFields.set(\n TxnField.ApprovalProgramPages,\n requireInstanceBuilder(applicationProxy.memberAccess('approvalProgram', sourceLocation)).resolve(),\n )\n implicitFields.set(\n TxnField.ClearStateProgramPages,\n requireInstanceBuilder(applicationProxy.memberAccess('clearStateProgram', sourceLocation)).resolve(),\n )\n if (!hasAppId) {\n implicitFields.set(\n TxnField.GlobalNumUint,\n requireInstanceBuilder(applicationProxy.memberAccess('globalUints', sourceLocation)).resolve(),\n )\n implicitFields.set(\n TxnField.GlobalNumByteSlice,\n requireInstanceBuilder(applicationProxy.memberAccess('globalBytes', sourceLocation)).resolve(),\n )\n implicitFields.set(\n TxnField.LocalNumByteSlice,\n requireInstanceBuilder(applicationProxy.memberAccess('localBytes', sourceLocation)).resolve(),\n )\n implicitFields.set(\n TxnField.LocalNumUint,\n requireInstanceBuilder(applicationProxy.memberAccess('localUints', sourceLocation)).resolve(),\n )\n implicitFields.set(\n TxnField.ExtraProgramPages,\n requireInstanceBuilder(applicationProxy.memberAccess('extraProgramPages', sourceLocation)).resolve(),\n )\n }\n }\n return implicitFields\n}\n\nfunction getOca(\n ocaField: Expression | undefined,\n allowedCompletionTypes: OnCompletionAction[],\n sourceLocation: SourceLocation,\n): OnCompletionAction {\n if (ocaField) {\n codeInvariant(\n ocaField instanceof IntegerConstant,\n `${txnFieldName.onCompletion} should be a compile time constant`,\n ocaField.sourceLocation,\n )\n const oca = enumFromValue(Number(ocaField.value), OnCompletionAction)\n codeInvariant(allowedCompletionTypes.includes(oca), `${txnFieldName.onCompletion} should be one of ${allowedCompletionTypes}`)\n return oca\n } else {\n const oca = allowedCompletionTypes[0]\n if (allowedCompletionTypes.length > 1) {\n logger.warn(sourceLocation, `Method allows multiple on complete actions, defaulting to ${oca}`)\n }\n return oca\n }\n}\n\nfunction parseAppArgs({\n fields,\n methodSelector,\n functionType,\n sourceLocation,\n}: {\n fields?: InstanceBuilder\n functionType: FunctionPType\n methodSelector: MethodConstant\n sourceLocation: SourceLocation\n}) {\n const results = {\n itxns: new Array<Expression>(),\n foreignApps: new Array<Expression>(),\n foreignAccounts: new Array<Expression>(),\n foreignAssets: new Array<Expression>(),\n }\n\n const appArgsBuilder = fields && fields.hasProperty('args') && fields.memberAccess('args', sourceLocation)\n const parsedSignature = parseArc4Method(methodSelector.value)\n const appArgs: Expression[] = [methodSelector]\n if (appArgsBuilder) {\n codeInvariant(isStaticallyIterable(appArgsBuilder), 'Unsupported expression for args', appArgsBuilder.sourceLocation)\n appArgs.push(\n ...appArgsBuilder[StaticIterator]().flatMap((arg, index) => {\n const [paramName, paramType] = functionType.parameters[index]\n const publicParamType = parsedSignature.parameters[index]\n\n if (paramType instanceof GroupTransactionPType) {\n codeInvariant(arg.ptype instanceof ItxnParamsPType, `${paramName} should be an ItxnParams object`)\n if (paramType.kind !== undefined) {\n codeInvariant(\n arg.ptype.kind === paramType.kind,\n `${paramName} should be an ItxnParams object for a ${TransactionKind[paramType.kind]} txn`,\n )\n }\n // Push any itxn params to the itxn array in order\n results.itxns.push(arg.resolve())\n return []\n }\n\n if (publicParamType.equals(assetPType)) {\n return handleForeignRef(results.foreignAssets, 0n, paramType, arg)\n } else if (publicParamType.equals(applicationPType)) {\n return handleForeignRef(results.foreignApps, 1n, paramType, arg)\n } else if (publicParamType.equals(accountPType)) {\n return handleForeignRef(results.foreignAccounts, 1n, paramType, arg)\n }\n\n let encodedType\n if (paramType.equals(assetPType) || paramType.equals(applicationPType)) {\n encodedType = arc4Uint64\n } else if (paramType.equals(accountPType)) {\n encodedType = arc4AddressAlias\n } else {\n encodedType = ptypeToArc4EncodedType(paramType, sourceLocation)\n }\n\n const resolvedArg = requireExpressionOfType(arg, paramType)\n if (encodedType.equals(paramType)) {\n return resolvedArg\n } else {\n return nodeFactory.aRC4Encode({\n value: resolvedArg,\n wtype: encodedType.wtype,\n sourceLocation: arg.sourceLocation,\n })\n }\n }),\n )\n }\n return {\n appArgs: nodeFactory.tupleExpression({\n items: appArgs,\n sourceLocation,\n }),\n itxns: results.itxns,\n foreignApps: results.foreignApps.length\n ? nodeFactory.tupleExpression({\n items: results.foreignApps,\n sourceLocation,\n })\n : null,\n foreignAccounts: results.foreignAccounts.length\n ? nodeFactory.tupleExpression({\n items: results.foreignAccounts,\n sourceLocation,\n })\n : null,\n foreignAssets: results.foreignAssets.length\n ? nodeFactory.tupleExpression({\n items: results.foreignAssets,\n sourceLocation,\n })\n : null,\n }\n}\n\n/**\n * Adds the arg expression to the foreign refs array and returns the index of that item\n * @param refsArray The foreign refs array associated with the ref type\n * @param offset The initial offset for the ref type. Account 0 is Txn.sender and App 0 is Global.currentApplication\n * @param paramType The ptype for the parameter\n * @param arg The builder for the arg value\n */\nfunction handleForeignRef(refsArray: Expression[], offset: bigint, paramType: PType, arg: InstanceBuilder) {\n refsArray.push(requireExpressionOfType(arg, paramType))\n return nodeFactory.integerConstant({\n value: BigInt(refsArray.length - 1) + offset,\n wtype: new wtypes.ARC4UIntN({ n: 8n }),\n sourceLocation: SourceLocation.None,\n tealAlias: null,\n })\n}\n\nfunction getReturnValueExpr(itxnResult: Expression, returnType: PType, sourceLocation: SourceLocation) {\n const returnValueLog = nodeFactory.innerTransactionField({\n field: TxnField.LastLog,\n arrayIndex: null,\n itxn: itxnResult,\n wtype: wtypes.bytesWType,\n sourceLocation,\n })\n const logPrefix = nodeFactory.bytesConstant({ value: hexToUint8Array(Constants.algo.arc4.logPrefixHex), sourceLocation })\n\n const unprefixedLog = validatePrefix(instanceEb(returnValueLog, bytesPType), logPrefix, sourceLocation)\n\n const arc4Return = ptypeToArc4EncodedType(returnType, sourceLocation)\n\n const returnValueArc4 = nodeFactory.reinterpretCast({\n expr: unprefixedLog,\n sourceLocation,\n wtype: arc4Return.wtype,\n })\n\n if (returnType.equals(arc4Return)) return returnValueArc4\n return nodeFactory.aRC4Decode({\n value: returnValueArc4,\n wtype: returnType.wtypeOrThrow,\n sourceLocation,\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 { ImmutableObjectPType } from '../../ptypes'\nimport { ARC4StructClass, ARC4StructType } from '../../ptypes/arc4-types'\nimport { instanceEb } from '../../type-registry'\nimport type { InstanceBuilder, NodeBuilder } from '../index'\nimport { ClassBuilder } from '../index'\nimport { requestInstanceBuilder, 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(new ImmutableObjectPType({ properties: this.ptype.instanceType.fields }))],\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 ImmutableObjectPType) {\n return ptype\n .orderedProperties()\n .every(\n ([prop, propType]) =>\n this.hasProperty(prop) && requestInstanceBuilder(this.memberAccess(prop, this.sourceLocation))?.resolvableToPType(propType),\n )\n }\n return false\n }\n\n resolveToPType(ptype: PTypeOrClass): InstanceBuilder {\n if (ptype.equals(this.ptype)) {\n return this\n }\n\n if (ptype instanceof ImmutableObjectPType) {\n const single = this.singleEvaluation()\n return instanceEb(\n nodeFactory.tupleExpression({\n items: ptype\n .orderedProperties()\n .map(([prop, propType]) => requireExpressionOfType(single.memberAccess(prop, this.sourceLocation), propType)),\n sourceLocation: this.sourceLocation,\n wtype: ptype.wtype,\n }),\n ptype,\n )\n }\n return super.resolveToPType(ptype)\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 { logger } from '../../../logger'\nimport { codeInvariant, invariant } from '../../../util'\nimport type { PType } from '../../ptypes'\nimport { numberPType, uint64PType } from '../../ptypes'\nimport { ARC4EncodedType, Arc4TupleGeneric, 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'\nimport { wtypes } from '../../../awst/wtypes'\n\nexport class Arc4TupleClassBuilder extends ClassBuilder {\n readonly ptype = Arc4TupleGeneric\n\n newCall(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): InstanceBuilder {\n const {\n args: tupleItems,\n ptypes: [tupleType],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 1,\n funcName: this.typeDescription,\n callLocation: sourceLocation,\n argSpec: (a) => args.map(() => a.required()),\n })\n const ptype = Arc4TupleGeneric.parameterise([tupleType])\n\n if (args.length === 0) {\n return new Arc4TupleExpressionBuilder(\n intrinsicFactory.bzero({\n size: nodeFactory.sizeOf({ sizeWtype: ptype.wtype, wtype: wtypes.uint64WType, sourceLocation }),\n wtype: ptype.wtype,\n sourceLocation,\n }),\n ptype,\n )\n }\n\n const expressions: Expression[] = []\n for (const item of tupleItems) {\n if (item.ptype instanceof ARC4EncodedType) {\n expressions.push(item.resolve())\n } else {\n logger.error(item.sourceLocation, 'ARC4 tuple items must be ARC4 encoded types')\n }\n }\n\n return new Arc4TupleExpressionBuilder(\n nodeFactory.aRC4Encode({\n value: nodeFactory.tupleExpression({\n items: expressions,\n sourceLocation,\n }),\n wtype: ptype.wtype,\n sourceLocation,\n }),\n ptype,\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 { UFixedNxMGeneric, UFixedNxMType } from '../../ptypes/arc4-types'\nimport { ClassBuilder, type InstanceBuilder, type NodeBuilder } from '../index'\nimport { requireStringConstant } from '../util'\nimport { parseFunctionArgs } from '../util/arg-parsing'\nimport { isValidLiteralForPType } from '../util/is-valid-literal-for-ptype'\nimport { Arc4EncodedBaseExpressionBuilder } from './base'\n\nexport class UFixedNxMClassBuilder extends ClassBuilder {\n readonly ptype = UFixedNxMGeneric\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 = this.ptype.parameterise([size, decimals])\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 { UintNGeneric, UintNType } from '../../ptypes/arc4-types'\nimport type { InstanceBuilder, NodeBuilder } from '../index'\nimport { ClassBuilder } from '../index'\nimport { parseFunctionArgs } from '../util/arg-parsing'\nimport { isValidLiteralForPType } from '../util/is-valid-literal-for-ptype'\nimport { Arc4EncodedBaseExpressionBuilder } from './base'\n\nexport class UintNClassBuilder extends ClassBuilder {\n readonly ptype = UintNGeneric\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 = this.ptype.parameterise([size])\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 (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 { 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 { codeInvariant, invariant } from '../../../util'\nimport type { PType, PTypeOrClass } from '../../ptypes'\nimport {\n ArrayGeneric,\n ArrayPType,\n FixedArrayGeneric,\n FixedArrayPType,\n numberPType,\n ReadonlyArrayPType,\n ReadonlyTuplePType,\n uint64PType,\n} from '../../ptypes'\nimport { instanceEb } from '../../type-registry'\nimport type { InstanceBuilder, NodeBuilder } from '../index'\nimport { ClassBuilder, FunctionBuilder, InstanceExpressionBuilder, isReferableExpression } from '../index'\nimport { OptionalExpressionBuilder } from '../optional-expression-builder'\nimport { AtFunctionBuilder } from '../shared/at-function-builder'\nimport { SliceFunctionBuilder } from '../shared/slice-function-builder'\nimport { requireExpressionOfType } from '../util'\nimport { parseFunctionArgs } from '../util/arg-parsing'\nimport { concatArrays } from '../util/array/concat'\nimport { EntriesFunctionBuilder, KeysFunctionBuilder } from '../util/array/entries'\nimport { indexAccess } from '../util/array/index-access'\nimport { arrayLength } from '../util/array/length'\nimport { translateNegativeIndex } from '../util/translate-negative-index'\n\nexport type NativeArrayLike = FixedArrayPType | ReadonlyArrayPType | ArrayPType\n\nexport class NativeArrayClassBuilder extends ClassBuilder {\n readonly ptype = ArrayGeneric\n\n newCall(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): InstanceBuilder {\n const ptype = this.ptype.parameterise(typeArgs)\n const { args: initialItems } = parseFunctionArgs({\n args,\n typeArgs,\n callLocation: sourceLocation,\n funcName: this.typeDescription,\n genericTypeArgs: 1,\n argSpec: (a) => args.map((_) => a.required(ptype.elementType)),\n })\n const initialItemExprs = initialItems.map((i) => requireExpressionOfType(i, ptype.elementType))\n return new NativeArrayExpressionBuilder(\n nodeFactory.newArray({\n values: initialItemExprs,\n wtype: ptype.wtype,\n sourceLocation,\n }),\n ptype,\n )\n }\n}\n\nexport class NativeArrayLikeExpressionBuilder<T extends NativeArrayLike = NativeArrayLike> extends InstanceExpressionBuilder<T> {\n iterate(sourceLocation: SourceLocation): Expression {\n return this.resolve()\n }\n\n indexAccess(index: InstanceBuilder | bigint, sourceLocation: SourceLocation): NodeBuilder {\n return indexAccess(this, index, sourceLocation)\n }\n\n protected requireMutable(method: string, sourceLocation: SourceLocation) {\n codeInvariant(!this.ptype.immutable, `Cannot call ${method} on immutable array`, sourceLocation)\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n switch (name) {\n case 'with':\n return new WithFunctionBuilder(this, sourceLocation)\n case 'length':\n return arrayLength(this, sourceLocation)\n case 'slice':\n return new SliceFunctionBuilder(this.resolve(), this.ptype)\n case 'concat':\n return new ConcatFunctionBuilder(this, sourceLocation)\n case 'at':\n return new AtFunctionBuilder(\n this.resolve(),\n this.ptype.elementType,\n arrayLength(this, sourceLocation).resolve(),\n sourceLocation,\n true,\n )\n case 'pop':\n this.requireMutable(name, sourceLocation)\n return new PopFunctionBuilder(this, sourceLocation)\n case 'push':\n this.requireMutable(name, sourceLocation)\n return new PushFunctionBuilder(this, sourceLocation)\n }\n return super.memberAccess(name, sourceLocation)\n }\n}\nexport class NativeArrayExpressionBuilder extends NativeArrayLikeExpressionBuilder<ArrayPType> {\n constructor(expr: Expression, ptype: PType) {\n invariant(ptype instanceof ArrayPType, 'ptype must be instance of ArrayPType')\n super(expr, ptype)\n }\n\n iterate(sourceLocation: SourceLocation): Expression {\n return this.resolve()\n }\n\n indexAccess(index: InstanceBuilder | bigint, sourceLocation: SourceLocation): NodeBuilder {\n return indexAccess(this, index, sourceLocation)\n }\n\n resolvableToPType(ptype: PTypeOrClass): boolean {\n if (ptype.equals(this.ptype)) return true\n if (ptype instanceof ReadonlyArrayPType) {\n // Mutable array can be assigned to immutable of same type\n return this.ptype.elementType.equals(ptype.elementType)\n }\n return super.resolvableToPType(ptype)\n }\n\n resolveToPType(ptype: PTypeOrClass): InstanceBuilder {\n if (ptype.equals(this.ptype)) return this\n if (ptype instanceof ReadonlyArrayPType && this.ptype.elementType.equals(ptype.elementType)) {\n return instanceEb(\n nodeFactory.convertArray({\n expr: this.resolve(),\n sourceLocation: this.sourceLocation,\n wtype: ptype.wtype,\n }),\n ptype,\n )\n }\n return super.resolveToPType(ptype)\n }\n}\nclass PopFunctionBuilder extends FunctionBuilder {\n constructor(\n private arrayBuilder: NativeArrayLikeExpressionBuilder,\n sourceLocation: SourceLocation,\n ) {\n super(sourceLocation)\n }\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n argSpec: () => [],\n callLocation: sourceLocation,\n funcName: 'Array.pop',\n })\n const elementType = this.arrayBuilder.ptype.elementType\n\n return new OptionalExpressionBuilder(\n instanceEb(\n nodeFactory.arrayPop({\n sourceLocation,\n base: this.arrayBuilder.resolve(),\n wtype: elementType.wtypeOrThrow,\n }),\n elementType,\n ),\n )\n }\n}\nclass PushFunctionBuilder extends FunctionBuilder {\n constructor(\n private arrayBuilder: NativeArrayLikeExpressionBuilder,\n sourceLocation: SourceLocation,\n ) {\n super(sourceLocation)\n }\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const elementType = this.arrayBuilder.ptype.elementType\n const { args: items } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n argSpec: (a) => args.map(() => a.required(elementType)),\n callLocation: sourceLocation,\n funcName: 'Array.push',\n })\n\n const target = this.arrayBuilder.resolve()\n\n codeInvariant(isReferableExpression(target), 'target of Array.push method must be a variable or state expression')\n\n return instanceEb(\n nodeFactory.commaExpression({\n expressions: [\n nodeFactory.arrayExtend({\n sourceLocation,\n base: target,\n other: nodeFactory.tupleExpression({\n items: items.map((i) => i.resolve()),\n sourceLocation,\n }),\n wtype: wtypes.voidWType,\n }),\n arrayLength(this.arrayBuilder, sourceLocation).resolve(),\n ],\n sourceLocation,\n }),\n uint64PType,\n )\n }\n}\n\nclass ConcatFunctionBuilder extends FunctionBuilder {\n constructor(\n private arrayBuilder: NativeArrayLikeExpressionBuilder,\n sourceLocation: SourceLocation,\n ) {\n super(sourceLocation)\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [...items],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n argSpec: (a) => args.map(() => a.required()),\n callLocation: sourceLocation,\n funcName: 'Array.concat',\n })\n const elementType = this.arrayBuilder.ptype.elementType\n\n return items.reduce((acc, cur) => {\n if (cur.resolvableToPType(elementType)) {\n return concatArrays(\n acc,\n instanceEb(\n nodeFactory.tupleExpression({\n items: [cur.resolveToPType(elementType).resolve()],\n sourceLocation: cur.sourceLocation,\n }),\n new ReadonlyTuplePType({ items: [elementType] }),\n ),\n sourceLocation,\n )\n }\n return concatArrays(acc, cur, sourceLocation)\n }, this.arrayBuilder)\n }\n}\n\nclass WithFunctionBuilder extends FunctionBuilder {\n constructor(\n private arrayBuilder: NativeArrayLikeExpressionBuilder,\n sourceLocation: SourceLocation,\n ) {\n super(sourceLocation)\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [index, newValue],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n argSpec: (a) => [a.required(uint64PType, numberPType), a.required(this.arrayBuilder.ptype.elementType)],\n callLocation: sourceLocation,\n funcName: 'Array.with',\n })\n\n return instanceEb(\n nodeFactory.arrayReplace({\n base: this.arrayBuilder.resolve(),\n value: newValue.resolve(),\n index: translateNegativeIndex(arrayLength(this.arrayBuilder, index.sourceLocation).resolve(), index),\n sourceLocation,\n }),\n this.arrayBuilder.ptype,\n )\n }\n}\n\nexport class FixedArrayClassBuilder extends ClassBuilder {\n readonly ptype = FixedArrayGeneric\n\n newCall(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): InstanceBuilder {\n const ptype = this.ptype.parameterise(typeArgs)\n const { args: initialItems } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 2,\n argSpec: (a) => args.map(() => a.required(ptype.elementType)),\n callLocation: sourceLocation,\n funcName: this.typeDescription,\n })\n\n if (initialItems.length === 0) {\n return new FixedArrayExpressionBuilder(\n intrinsicFactory.bzero({\n size: nodeFactory.sizeOf({ sizeWtype: ptype.wtype, sourceLocation, wtype: wtypes.uint64WType }),\n wtype: ptype.wtype,\n sourceLocation,\n }),\n ptype,\n )\n }\n\n codeInvariant(\n BigInt(initialItems.length) === ptype.arraySize,\n `FixedArray of size ${ptype.arraySize} must be initialized with ${ptype.arraySize} values`,\n sourceLocation,\n )\n\n return new FixedArrayExpressionBuilder(\n nodeFactory.newArray({\n values: initialItems.map((i) => {\n i.checkForUnclonedMutables(`being passed to a ${this.typeDescription} constructor`)\n return requireExpressionOfType(i, ptype.elementType)\n }),\n wtype: ptype.wtype,\n sourceLocation,\n }),\n ptype,\n )\n }\n}\n\nexport class FixedArrayExpressionBuilder extends NativeArrayLikeExpressionBuilder<FixedArrayPType> {\n constructor(expr: Expression, ptype: PType) {\n invariant(ptype instanceof FixedArrayPType, 'ptype must be FixedArrayPType', expr.sourceLocation)\n super(expr, ptype)\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n switch (name) {\n case 'entries':\n return new EntriesFunctionBuilder(this)\n case 'keys':\n return new KeysFunctionBuilder(this)\n }\n return super.memberAccess(name, sourceLocation)\n }\n}\n\nexport class ReadonlyArrayExpressionBuilder extends NativeArrayLikeExpressionBuilder<ReadonlyArrayPType> {\n constructor(expr: Expression, ptype: PType) {\n invariant(ptype instanceof ReadonlyArrayPType, 'ptype must be ReadonlyArrayPType', expr.sourceLocation)\n super(expr, ptype)\n }\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { Expression } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport { codeInvariant, instanceOfAny, invariant, zipStrict } from '../../../util'\nimport type { PType, PTypeOrClass } from '../../ptypes'\nimport { ArrayPType, MutableTuplePType, ReadonlyArrayPType, ReadonlyTuplePType, uint64PType } from '../../ptypes'\nimport { instanceEb } from '../../type-registry'\nimport type { InstanceBuilder, NodeBuilder } from '../index'\nimport { InstanceExpressionBuilder } from '../index'\nimport type { StaticallyIterable } from '../traits/static-iterator'\nimport { StaticIterator } from '../traits/static-iterator'\nimport { requireIntegerConstant } from '../util'\n\nexport class MutableTupleExpressionBuilder extends InstanceExpressionBuilder<MutableTuplePType> implements StaticallyIterable {\n constructor(expression: Expression, ptype: PType) {\n invariant(ptype instanceof MutableTuplePType, 'MutableTupleExpressionBuilder must be built with ptype of type MutableTuplePType')\n super(expression, ptype)\n }\n\n iterate(): Expression {\n return this.resolve()\n }\n\n resolvableToPType(ptype: PTypeOrClass): boolean {\n if (instanceOfAny(ptype, ArrayPType, ReadonlyArrayPType)) {\n return this[StaticIterator]().every((item) => item.resolvableToPType(ptype.elementType))\n }\n if (ptype instanceof ReadonlyTuplePType) {\n return zipStrict(this[StaticIterator](), ptype.items).every(([item, itemType]) => item.resolvableToPType(itemType))\n }\n return super.resolvableToPType(ptype)\n }\n\n resolveToPType(ptype: PTypeOrClass): InstanceBuilder {\n if (instanceOfAny(ptype, ArrayPType, ReadonlyArrayPType) && this.ptype.items.every((i) => i.equals(ptype.elementType))) {\n return instanceEb(\n nodeFactory.newArray({\n values: this[StaticIterator]().map((i) => i.resolve()),\n wtype: ptype.wtype,\n sourceLocation: this.sourceLocation,\n }),\n ptype,\n )\n }\n if (ptype instanceof ReadonlyTuplePType) {\n return instanceEb(\n nodeFactory.tupleExpression({\n items: zipStrict(this[StaticIterator](), ptype.items).map(([item, itemType]) => item.resolveToPType(itemType).resolve()),\n sourceLocation: this.sourceLocation,\n }),\n ptype,\n )\n }\n\n return super.resolveToPType(ptype)\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n switch (name) {\n case 'length':\n return instanceEb(\n nodeFactory.uInt64Constant({\n value: BigInt(this.ptype.items.length),\n sourceLocation,\n }),\n uint64PType,\n )\n }\n return super.memberAccess(name, sourceLocation)\n }\n\n indexAccess(index: InstanceBuilder | bigint, sourceLocation: SourceLocation): NodeBuilder {\n const indexNum = typeof index === 'bigint' ? index : requireIntegerConstant(index).value\n const itemType = this.ptype.items[Number(indexNum)]\n codeInvariant(\n indexNum < this.ptype.items.length && indexNum >= 0,\n \"Index arg must be a numeric literal between 0 and the tuple's length\",\n )\n return instanceEb(\n nodeFactory.tupleItemExpression({\n index: indexNum,\n sourceLocation,\n base: this._expr,\n }),\n itemType,\n )\n }\n\n [StaticIterator](): InstanceBuilder[] {\n return this.ptype.items.map((itemType, index) =>\n instanceEb(\n nodeFactory.tupleItemExpression({\n index: BigInt(index),\n sourceLocation: this.sourceLocation,\n base: this._expr,\n }),\n itemType,\n ),\n )\n }\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { Expression } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport { codeInvariant, invariant } from '../../../util'\nimport type { PType, PTypeOrClass } from '../../ptypes'\nimport { ReadonlyArrayPType, ReadonlyTuplePType, uint64PType } from '../../ptypes'\nimport { instanceEb } from '../../type-registry'\nimport type { InstanceBuilder, NodeBuilder } from '../index'\nimport { InstanceExpressionBuilder } from '../index'\nimport type { StaticallyIterable } from '../traits/static-iterator'\nimport { StaticIterator } from '../traits/static-iterator'\nimport { requireIntegerConstant } from '../util'\n\nexport class ReadonlyTupleExpressionBuilder extends InstanceExpressionBuilder<ReadonlyTuplePType> implements StaticallyIterable {\n constructor(expression: Expression, ptype: PType) {\n invariant(ptype instanceof ReadonlyTuplePType, 'ReadonlyTupleExpressionBuilder must be built with ptype of type ReadonlyTuplePType')\n super(expression, ptype)\n }\n\n iterate(): Expression {\n return this.resolve()\n }\n\n resolvableToPType(ptype: PTypeOrClass): boolean {\n if (ptype instanceof ReadonlyArrayPType) {\n return this[StaticIterator]().every((item) => item.resolvableToPType(ptype.elementType))\n }\n return super.resolvableToPType(ptype)\n }\n\n resolveToPType(ptype: PTypeOrClass): InstanceBuilder {\n if (ptype instanceof ReadonlyArrayPType && this.ptype.items.every((i) => i.equals(ptype.elementType))) {\n return instanceEb(\n nodeFactory.newArray({\n values: this[StaticIterator]().map((i) => i.resolve()),\n wtype: ptype.wtype,\n sourceLocation: this.sourceLocation,\n }),\n ptype,\n )\n }\n return super.resolveToPType(ptype)\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n switch (name) {\n case 'length':\n return instanceEb(\n nodeFactory.uInt64Constant({\n value: BigInt(this.ptype.items.length),\n sourceLocation,\n }),\n uint64PType,\n )\n }\n return super.memberAccess(name, sourceLocation)\n }\n\n indexAccess(index: InstanceBuilder | bigint, sourceLocation: SourceLocation): NodeBuilder {\n const indexNum = typeof index === 'bigint' ? index : requireIntegerConstant(index).value\n const itemType = this.ptype.items[Number(indexNum)]\n codeInvariant(\n indexNum < this.ptype.items.length && indexNum >= 0,\n \"Index arg must be a numeric literal between 0 and the tuple's length\",\n )\n return instanceEb(\n nodeFactory.tupleItemExpression({\n index: indexNum,\n sourceLocation,\n base: this._expr,\n }),\n itemType,\n )\n }\n\n [StaticIterator](): InstanceBuilder[] {\n return this.ptype.items.map((itemType, index) =>\n instanceEb(\n nodeFactory.tupleItemExpression({\n index: BigInt(index),\n sourceLocation: this.sourceLocation,\n base: this._expr,\n }),\n itemType,\n ),\n )\n }\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport { invariant } from '../../../util'\nimport type { ArrayLiteralPType, ArrayPType, ReadonlyArrayPType, ReadonlyTuplePType } from '../../ptypes'\nimport { isArrayType, MutableTuplePType } from '../../ptypes'\nimport type { InstanceBuilder } from '../index'\nimport { isStaticallyIterable, StaticIterator } from '../traits/static-iterator'\nimport { requireExpressionOfType } from '../util'\n\nexport function newArray(ptype: ArrayPType | ReadonlyArrayPType, valueProvider: InstanceBuilder) {\n invariant(isStaticallyIterable(valueProvider), 'Array value provider must be statically iterable')\n return nodeFactory.newArray({\n values: valueProvider[StaticIterator]().map((v) => v.resolveToPType(ptype.elementType).resolve()),\n wtype: ptype.wtype,\n sourceLocation: valueProvider.sourceLocation,\n })\n}\n\nexport function newTuple(ptype: MutableTuplePType | ReadonlyTuplePType | ArrayLiteralPType, valueProvider: InstanceBuilder) {\n invariant(isStaticallyIterable(valueProvider), 'Tuple value provider must be statically iterable')\n\n if (ptype.items.length === 0) return nodeFactory.voidConstant({ sourceLocation: valueProvider.sourceLocation })\n const tupleExpr = nodeFactory.tupleExpression({\n items: ptype.items.map((itemType, index) =>\n requireExpressionOfType(valueProvider.indexAccess(BigInt(index), valueProvider.sourceLocation), itemType),\n ),\n sourceLocation: valueProvider.sourceLocation,\n })\n\n if (ptype instanceof MutableTuplePType) {\n return nodeFactory.aRC4Encode({\n value: tupleExpr,\n wtype: ptype.wtype,\n sourceLocation: valueProvider.sourceLocation,\n })\n } else {\n return tupleExpr\n }\n}\n\nexport function newArrayOrTuple(\n ptype: ArrayPType | ReadonlyArrayPType | MutableTuplePType | ReadonlyTuplePType | ArrayLiteralPType,\n valueProvider: InstanceBuilder,\n) {\n if (isArrayType(ptype)) {\n return newArray(ptype, valueProvider)\n } else {\n return newTuple(ptype, valueProvider)\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, PTypeOrClass } from '../../ptypes'\nimport { ArrayLiteralPType, isArrayType, isTupleLike, uint64PType } from '../../ptypes'\nimport { instanceEb } from '../../type-registry'\nimport type { InstanceBuilder, NodeBuilder } from '../index'\nimport { InstanceExpressionBuilder } from '../index'\nimport type { StaticallyIterable } from '../traits/static-iterator'\nimport { StaticIterator } from '../traits/static-iterator'\nimport { requestInstanceBuilder, requireIntegerConstant } from '../util'\nimport { newArray, newTuple } from './util'\n\nexport class ResolvedArrayLiteralExpressionBuilder extends InstanceExpressionBuilder<ArrayLiteralPType> implements StaticallyIterable {\n constructor(expression: Expression, ptype: PType) {\n invariant(\n ptype instanceof ArrayLiteralPType,\n 'ResolvedArrayLiteralExpressionBuilder must be built with ptype of type ArrayLiteralPType',\n )\n super(expression, ptype)\n }\n\n iterate(): Expression {\n return this.resolve()\n }\n\n resolvableToPType(ptype: PTypeOrClass): boolean {\n if (isArrayType(ptype)) {\n return this[StaticIterator]().every((item) => item.resolvableToPType(ptype.elementType))\n }\n if (isTupleLike(ptype)) {\n return ptype.items.every((itemType, index) =>\n requestInstanceBuilder(this.indexAccess(BigInt(index), this.sourceLocation))?.resolvableToPType(itemType),\n )\n }\n return super.resolvableToPType(ptype)\n }\n\n resolveToPType(ptype: PTypeOrClass): InstanceBuilder {\n if (isArrayType(ptype)) {\n return instanceEb(newArray(ptype, this.singleEvaluation()), ptype)\n }\n if (isTupleLike(ptype)) {\n return instanceEb(newTuple(ptype, this.singleEvaluation()), ptype)\n }\n return super.resolveToPType(ptype)\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n switch (name) {\n case 'length':\n return instanceEb(\n nodeFactory.uInt64Constant({\n value: BigInt(this.ptype.items.length),\n sourceLocation,\n }),\n uint64PType,\n )\n }\n return super.memberAccess(name, sourceLocation)\n }\n\n indexAccess(index: InstanceBuilder | bigint, sourceLocation: SourceLocation): NodeBuilder {\n const indexNum = typeof index === 'bigint' ? index : 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 array literal's length\",\n )\n return instanceEb(\n nodeFactory.tupleItemExpression({\n index: indexNum,\n sourceLocation,\n base: this._expr,\n }),\n itemType,\n )\n }\n\n [StaticIterator](): InstanceBuilder[] {\n const base = this.singleEvaluation().resolve()\n return this.ptype.items.map((itemType, index) =>\n instanceEb(\n nodeFactory.tupleItemExpression({\n index: BigInt(index),\n sourceLocation: this.sourceLocation,\n base,\n }),\n itemType,\n ),\n )\n }\n}\n","import type { Expression, LValue } from '../../awst/nodes'\nimport { CodeError } from '../../errors'\nimport type { InstanceType } from '../ptypes'\nimport { voidPType } from '../ptypes'\nimport { InstanceExpressionBuilder } from './index'\n\nexport class VoidExpressionBuilder extends InstanceExpressionBuilder<InstanceType> {\n constructor(expr: Expression) {\n super(expr, voidPType)\n }\n resolveLValue(): LValue {\n throw new CodeError(`${this.typeDescription} is not a valid assignment target`)\n }\n}\n","import { intrinsicFactory } from '../../awst/intrinsic-factory'\nimport { StringConstant } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { CodeError } from '../../errors'\nimport { invariant } from '../../util'\nimport type { PType } from '../ptypes'\nimport { stringPType } from '../ptypes'\nimport type { NodeBuilder } from './index'\nimport { FunctionBuilder } from './index'\nimport { requireConstantOfType, requireStringConstant } from './util'\nimport { parseFunctionArgs } from './util/arg-parsing'\nimport { VoidExpressionBuilder } from './void-expression-builder'\n\nexport class AssertFunctionBuilder extends FunctionBuilder {\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const [condition, message, ...rest] = args\n if (rest.length !== 0) {\n throw CodeError.unexpectedUnhandledArgs({ sourceLocation })\n }\n\n if (condition === undefined) {\n throw new CodeError('Missing required argument: condition', { sourceLocation })\n }\n let messageStr: string | null = null\n if (message) {\n const messageConst = requireConstantOfType(message, stringPType)\n invariant(messageConst instanceof StringConstant, 'messageConst must be StringConst')\n messageStr = messageConst.value\n }\n\n return new VoidExpressionBuilder(\n intrinsicFactory.assert({\n sourceLocation,\n condition: condition.boolEval(sourceLocation),\n comment: messageStr,\n }),\n )\n }\n}\n\nexport class ErrFunctionBuilder extends FunctionBuilder {\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [message],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n callLocation: sourceLocation,\n argSpec: (a) => [a.optional(stringPType)],\n funcName: 'err',\n })\n\n return new VoidExpressionBuilder(\n intrinsicFactory.err({\n sourceLocation,\n comment: message ? requireStringConstant(message).value : null,\n }),\n )\n }\n}\n","import { nodeFactory } from '../../awst/node-factory'\nimport type { Expression } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { wtypes } from '../../awst/wtypes'\nimport { CodeError } from '../../errors'\nimport { codeInvariant, instanceOfAny } from '../../util'\nimport type { PType } from '../ptypes'\nimport {\n ArrayPType,\n boolPType,\n ImmutableObjectPType,\n matchFunction,\n MutableObjectPType,\n MutableTuplePType,\n ObjectLiteralPType,\n ReadonlyTuplePType,\n uint64PType,\n} from '../ptypes'\nimport { instanceEb } from '../type-registry'\nimport type { InstanceBuilder } from './index'\nimport { BuilderComparisonOp, NodeBuilder } from './index'\nimport { isStaticallyIterable, StaticIterator } from './traits/static-iterator'\nimport { requireBuilderOfType, requireInstanceBuilder } from './util'\nimport { parseFunctionArgs } from './util/arg-parsing'\n\nexport class MatchFunctionBuilder extends NodeBuilder {\n readonly ptype = matchFunction\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [subject, tests],\n } = parseFunctionArgs({\n args,\n typeArgs,\n callLocation: sourceLocation,\n genericTypeArgs: 1,\n funcName: 'match',\n argSpec: (a) => [a.passthrough(), a.required()],\n })\n codeInvariant(subject, 'subject parameter is missing', sourceLocation)\n\n return buildComparisons(subject, tests, this.typeDescription, sourceLocation)\n }\n}\n\nexport function buildComparisons(subject: NodeBuilder, tests: InstanceBuilder, functionName: string, sourceLocation: SourceLocation) {\n if (instanceOfAny(tests.ptype, ImmutableObjectPType, MutableObjectPType, ObjectLiteralPType)) {\n const condition = tests.ptype\n .orderedProperties()\n .reduce((acc: Expression | undefined, [propName, propType]): Expression | undefined => {\n const subjectProperty = requireInstanceBuilder(subject.memberAccess(propName, sourceLocation))\n const testProperty = requireInstanceBuilder(tests.memberAccess(propName, sourceLocation))\n\n const comparison = buildComparison(subjectProperty, testProperty, functionName, sourceLocation)\n return combineConditions(acc, comparison.resolve(), sourceLocation)\n }, undefined)\n codeInvariant(condition, `${functionName} must have at least 1 condition`, sourceLocation)\n return instanceEb(condition, boolPType)\n } else if (isStaticallyIterable(tests)) {\n const condition = tests[StaticIterator]().reduce<Expression | undefined>(\n (acc, testItem, index) => {\n const indexAsBuilder = instanceEb(nodeFactory.uInt64Constant({ value: BigInt(index), sourceLocation }), uint64PType)\n const subjectItem = requireInstanceBuilder(subject.indexAccess(indexAsBuilder, sourceLocation))\n const comparison = buildComparison(subjectItem, testItem, functionName, sourceLocation)\n return combineConditions(acc, comparison.resolve(), sourceLocation)\n },\n compareLengths(subject, tests, functionName, sourceLocation),\n )\n codeInvariant(condition, `${functionName} must have at least 1 condition`, sourceLocation)\n return instanceEb(condition, boolPType)\n } else if (tests.ptype instanceof ArrayPType) {\n throw new CodeError(`${functionName} doesn't support matching against non literal arrays`, { sourceLocation: tests.sourceLocation })\n } else {\n throw new CodeError(`${functionName} requires either an object, array literal, or tuple`, { sourceLocation: tests.sourceLocation })\n }\n}\n\nfunction compareLengths(subject: NodeBuilder, tests: InstanceBuilder, functionName: string, sourceLocation: SourceLocation) {\n const subjectLength = requireInstanceBuilder(subject.memberAccess('length', sourceLocation))\n const testsLength = requireInstanceBuilder(tests.memberAccess('length', sourceLocation))\n\n return buildComparison(subjectLength, testsLength, functionName, sourceLocation).resolve()\n}\n\nfunction buildComparison(\n subjectProperty: InstanceBuilder,\n testProperty: InstanceBuilder,\n functionName: string,\n sourceLocation: SourceLocation,\n): InstanceBuilder {\n const subjectType = subjectProperty.ptype\n // Recurse comparisons for nested objects\n if (\n subjectProperty.ptype instanceof ImmutableObjectPType ||\n subjectProperty.ptype instanceof MutableObjectPType ||\n subjectProperty.ptype instanceof ReadonlyTuplePType ||\n subjectProperty.ptype instanceof MutableTuplePType ||\n subjectProperty.ptype instanceof ArrayPType\n ) {\n return buildComparisons(subjectProperty, testProperty, functionName, sourceLocation)\n }\n\n if (testProperty.resolvableToPType(subjectType)) {\n return subjectProperty.compare(testProperty, BuilderComparisonOp.eq, sourceLocation)\n } else if (testProperty.hasProperty('between')) {\n const rangePType = new ReadonlyTuplePType({ items: [subjectType, subjectType] })\n const range = requireInstanceBuilder(testProperty.memberAccess('between', sourceLocation)).resolveToPType(rangePType).singleEvaluation()\n const zeroIndex = instanceEb(nodeFactory.uInt64Constant({ value: 0n, sourceLocation }), uint64PType)\n const gte = subjectProperty\n .compare(requireBuilderOfType(range.indexAccess(zeroIndex, sourceLocation), subjectType), BuilderComparisonOp.gte, sourceLocation)\n .resolve()\n\n const oneIndex = instanceEb(nodeFactory.uInt64Constant({ value: 1n, sourceLocation }), uint64PType)\n const lte = subjectProperty\n .compare(requireBuilderOfType(range.indexAccess(oneIndex, sourceLocation), subjectType), BuilderComparisonOp.lte, sourceLocation)\n .resolve()\n\n return instanceEb(combineConditions(lte, gte, sourceLocation), boolPType)\n } else {\n const [op, operand] = getComparisonOpAndOperand(testProperty, subjectType)\n return subjectProperty.compare(operand, op, sourceLocation)\n }\n}\n\nfunction getComparisonOpAndOperand(testProperty: InstanceBuilder, targetType: PType): [BuilderComparisonOp, operand: InstanceBuilder] {\n const ops = {\n lessThan: BuilderComparisonOp.lt,\n lessThanEq: BuilderComparisonOp.lte,\n greaterThan: BuilderComparisonOp.gt,\n greaterThanEq: BuilderComparisonOp.gte,\n not: BuilderComparisonOp.ne,\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.intrinsicCall({\n opCode: '&&',\n stackArgs: [left, right],\n immediates: [],\n sourceLocation,\n wtype: wtypes.boolWType,\n })\n }\n return right\n}\n","import { intrinsicFactory } from '../../awst/intrinsic-factory'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { codeInvariant } from '../../util'\nimport type { PType } from '../ptypes'\nimport { assertMatchFunction, stringPType } from '../ptypes'\nimport { NodeBuilder } from './index'\nimport { buildComparisons } from './match-function-builder'\nimport { requireStringConstant } from './util'\nimport { parseFunctionArgs } from './util/arg-parsing'\nimport { VoidExpressionBuilder } from './void-expression-builder'\n\nexport class AssertMatchFunctionBuilder extends NodeBuilder {\n readonly ptype = assertMatchFunction\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [subject, tests, comment],\n } = parseFunctionArgs({\n args,\n typeArgs,\n callLocation: sourceLocation,\n genericTypeArgs: 1,\n funcName: 'assertMatch',\n argSpec: (a) => [a.passthrough(), a.required(), a.optional(stringPType)],\n })\n codeInvariant(subject, 'subject parameter is missing', sourceLocation)\n\n const condition = buildComparisons(subject, tests, this.typeDescription, sourceLocation).resolve()\n\n codeInvariant(condition, 'assertMatch must have at least 1 condition', sourceLocation)\n const commentStr = comment ? requireStringConstant(comment).value : 'assert target is match for conditions'\n return new VoidExpressionBuilder(\n intrinsicFactory.assert({\n condition,\n comment: commentStr,\n sourceLocation,\n }),\n )\n }\n}\n","import { awst } from '../../awst'\nimport { intrinsicFactory } from '../../awst/intrinsic-factory'\nimport { nodeFactory } from '../../awst/node-factory'\nimport type { Expression } from '../../awst/nodes'\nimport { BigUIntBinaryOperator, BigUIntPostfixUnaryOperator, IntegerConstant, NumericComparison } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { wtypes } from '../../awst/wtypes'\n\nimport { NotSupported } from '../../errors'\nimport { logger } from '../../logger'\nimport { tryConvertEnum } from '../../util'\nimport type { InstanceType, PType } from '../ptypes'\nimport {\n BigIntLiteralPType,\n BigUintFunction,\n biguintPType,\n boolPType,\n bytesPType,\n NumericLiteralPType,\n stringPType,\n uint64PType,\n} from '../ptypes'\nimport { instanceEb } from '../type-registry'\nimport type { InstanceBuilder, NodeBuilder } from './index'\nimport { BuilderBinaryOp, BuilderComparisonOp, BuilderUnaryOp, FunctionBuilder, InstanceExpressionBuilder } from './index'\nimport { BigIntLiteralExpressionBuilder } from './literal/big-int-literal-expression-builder'\nimport { NumericLiteralExpressionBuilder } from './literal/numeric-literal-expression-builder'\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, uint64PType, biguintPType, BigIntLiteralPType, NumericLiteralPType)],\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).resolve(),\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).resolve(),\n sourceLocation,\n wtype: biguintPType.wtype,\n })\n }\n } else if (initialValue instanceof NumericLiteralExpressionBuilder || initialValue instanceof BigIntLiteralExpressionBuilder) {\n biguint = nodeFactory.bigUIntConstant({\n value: initialValue.value,\n sourceLocation: sourceLocation,\n })\n } else {\n return initialValue.resolveToPType(biguintPType)\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): InstanceBuilder {\n return instanceEb(nodeFactory.reinterpretCast({ expr: this.resolve(), sourceLocation, wtype: wtypes.bytesWType }), bytesPType)\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 { codeInvariant, 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 function stringFromTemplate(\n head: string,\n spans: ReadonlyArray<readonly [InstanceBuilder, string]>,\n sourceLocation: SourceLocation,\n): StringExpressionBuilder {\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\nexport class StringFunctionBuilder extends FunctionBuilder {\n taggedTemplate(\n head: string,\n spans: ReadonlyArray<readonly [InstanceBuilder, string]>,\n typeArgs: readonly PType[],\n sourceLocation: SourceLocation,\n ): InstanceBuilder {\n codeInvariant(typeArgs.length === 0, 'String type expects 0 type args', sourceLocation)\n return stringFromTemplate(head, spans, sourceLocation)\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [value],\n } = parseFunctionArgs({\n args,\n typeArgs,\n callLocation: sourceLocation,\n funcName: 'String',\n genericTypeArgs: 0,\n argSpec: (a) => [a.optional(bytesPType)],\n })\n\n if (!value) {\n return new StringExpressionBuilder(\n nodeFactory.stringConstant({\n sourceLocation,\n value: '',\n }),\n )\n }\n\n return new StringExpressionBuilder(\n nodeFactory.reinterpretCast({\n expr: value.resolve(),\n sourceLocation,\n wtype: wtypes.stringWType,\n }),\n )\n }\n}\n\nexport class StringExpressionBuilder extends InstanceExpressionBuilder<InstanceType> {\n constructor(expr: Expression) {\n super(expr, stringPType)\n }\n\n resolvableToPType(ptype: PTypeOrClass): boolean {\n return super.resolvableToPType(ptype)\n }\n\n resolveToPType(ptype: PTypeOrClass): InstanceBuilder {\n return super.resolveToPType(ptype)\n }\n\n boolEval(sourceLocation: SourceLocation, negate = false): Expression {\n return new UInt64ExpressionBuilder(\n intrinsicFactory.bytesLen({\n value: this._expr,\n sourceLocation,\n }),\n ).boolEval(sourceLocation, negate)\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n switch (name) {\n case 'concat':\n return new ConcatExpressionBuilder(this._expr)\n }\n return super.memberAccess(name, sourceLocation)\n }\n\n compare(other: InstanceBuilder, op: BuilderComparisonOp, sourceLocation: SourceLocation): InstanceBuilder {\n const otherExpr = requireExpressionOfType(other, stringPType)\n const numComOp = tryConvertEnum(op, BuilderComparisonOp, EqualityComparison)\n if (numComOp === undefined) {\n throw new NotSupported(`Numeric comparison operator ${op}`, {\n sourceLocation,\n })\n }\n return instanceEb(\n nodeFactory.bytesComparisonExpression({\n lhs: this._expr,\n rhs: otherExpr,\n operator: numComOp,\n sourceLocation,\n }),\n boolPType,\n )\n }\n\n binaryOp(other: InstanceBuilder, op: BuilderBinaryOp, sourceLocation: SourceLocation): InstanceBuilder {\n switch (op) {\n case BuilderBinaryOp.add:\n return new StringExpressionBuilder(\n intrinsicFactory.bytesConcat({\n left: this.resolve(),\n right: requireExpressionOfType(other, stringPType),\n sourceLocation,\n }),\n )\n }\n return super.binaryOp(other, op, sourceLocation)\n }\n\n augmentedAssignment(other: InstanceBuilder, op: BuilderBinaryOp, sourceLocation: SourceLocation): InstanceBuilder {\n const newValue = this.binaryOp(other, op, sourceLocation)\n return new StringExpressionBuilder(\n nodeFactory.assignmentExpression({\n target: this.resolveLValue(),\n sourceLocation,\n value: newValue.resolve(),\n }),\n )\n }\n\n toBytes(sourceLocation: SourceLocation): InstanceBuilder {\n if (this._expr instanceof awst.StringConstant) {\n return instanceEb(\n nodeFactory.bytesConstant({\n value: utf8ToUint8Array(this._expr.value),\n encoding: BytesEncoding.utf8,\n sourceLocation: this._expr.sourceLocation,\n }),\n bytesPType,\n )\n }\n return instanceEb(\n nodeFactory.reinterpretCast({\n expr: this._expr,\n sourceLocation,\n wtype: wtypes.bytesWType,\n }),\n bytesPType,\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 { 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 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 NumericComparison,\n} from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { wtypes } from '../../awst/wtypes'\nimport { wrapInCodeError } from '../../errors'\nimport { logger } from '../../logger'\nimport {\n base32ToUint8Array,\n base64ToUint8Array,\n codeInvariant,\n enumKeyFromValue,\n hexToUint8Array,\n invariant,\n uint8ArrayToUtf8,\n utf8ToUint8Array,\n} from '../../util'\nimport type { PType, PTypeOrClass } from '../ptypes'\nimport {\n ArrayLiteralPType,\n bigIntPType,\n biguintPType,\n BytesFunction,\n BytesGeneric,\n BytesPType,\n bytesPType,\n numberPType,\n NumericLiteralPType,\n stringPType,\n TransientType,\n uint64PType,\n} from '../ptypes'\nimport { instanceEb } from '../type-registry'\nimport { BooleanExpressionBuilder } from './boolean-expression-builder'\nimport type { BuilderComparisonOp, InstanceBuilder, NodeBuilder } from './index'\nimport { BuilderUnaryOp, FunctionBuilder, InstanceExpressionBuilder } from './index'\nimport { NumericLiteralExpressionBuilder } from './literal/numeric-literal-expression-builder'\nimport { AtFunctionBuilder } from './shared/at-function-builder'\nimport { SliceFunctionBuilder } from './shared/slice-function-builder'\nimport { StringExpressionBuilder } from './string-expression-builder'\nimport { isStaticallyIterable, StaticIterator } from './traits/static-iterator'\nimport { UInt64ExpressionBuilder } from './uint64-expression-builder'\nimport { mapStringConstant, requireExpressionOfType, requireIntegerConstant, requireStringConstant } from './util'\nimport { parseFunctionArgs } from './util/arg-parsing'\nimport { compareBytes } from './util/compare-bytes'\n\nexport class BytesFunctionBuilder extends FunctionBuilder {\n readonly ptype = BytesFunction\n\n taggedTemplate(\n head: string,\n spans: ReadonlyArray<readonly [InstanceBuilder, string]>,\n typeArgs: ReadonlyArray<PType>,\n sourceLocation: SourceLocation,\n ): InstanceBuilder {\n const exprType = BytesGeneric.parameterise(typeArgs)\n\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).resolve()\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 const bytesBuilder = new BytesExpressionBuilder(result, bytesPType)\n return exprType.length === null ? bytesBuilder : bytesToFixed(bytesBuilder, exprType, sourceLocation)\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [initialValue],\n ptypes: [len],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 1,\n callLocation: sourceLocation,\n funcName: 'Bytes',\n argSpec: (a) => [a.optional(numberPType, bigIntPType, uint64PType, biguintPType, stringPType, bytesPType, ArrayLiteralPType)],\n })\n const exprType = BytesGeneric.parameterise([len])\n const empty = new BytesExpressionBuilder(\n nodeFactory.bytesConstant({\n sourceLocation,\n value: new Uint8Array(Number(exprType.length)),\n wtype: exprType.wtype,\n }),\n exprType,\n )\n\n let bytesBuilder: InstanceBuilder\n\n if (!initialValue) {\n bytesBuilder = empty\n } else if (initialValue.ptype instanceof TransientType) {\n logger.error(initialValue.sourceLocation, initialValue.ptype.expressionMessage)\n bytesBuilder = empty\n } else if (initialValue.ptype.equals(uint64PType)) {\n bytesBuilder = initialValue.toBytes(sourceLocation)\n } else if (initialValue.ptype.equals(biguintPType)) {\n bytesBuilder = initialValue.toBytes(sourceLocation)\n } else if (initialValue.ptype.equals(stringPType)) {\n bytesBuilder = initialValue.toBytes(sourceLocation)\n } else if (initialValue.ptype.equals(bytesPType)) {\n bytesBuilder = initialValue\n } else {\n if (isStaticallyIterable(initialValue)) {\n const bytes: number[] = []\n for (const item of initialValue[StaticIterator]()) {\n const byte = item.resolveToPType(uint64PType).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 bytesBuilder = new BytesExpressionBuilder(\n nodeFactory.bytesConstant({\n value: Uint8Array.from(bytes),\n sourceLocation: initialValue.sourceLocation,\n wtype: exprType.wtype,\n }),\n exprType,\n )\n } else {\n logger.error(initialValue.sourceLocation, 'Only array literals or tuples are supported here')\n bytesBuilder = empty\n }\n }\n\n return exprType.length === null ? bytesBuilder : bytesToFixed(bytesBuilder, exprType, sourceLocation)\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n switch (name) {\n case 'fromHex':\n return new FromEncodingBuilder(sourceLocation, hexToUint8Array, BytesEncoding.base16, 'fromHex')\n case 'fromBase32':\n return new FromEncodingBuilder(sourceLocation, base32ToUint8Array, BytesEncoding.base32, 'fromBase32')\n case 'fromBase64':\n return new FromEncodingBuilder(sourceLocation, base64ToUint8Array, BytesEncoding.base64, 'fromBase64')\n }\n return super.memberAccess(name, sourceLocation)\n }\n}\n\nclass FromEncodingBuilder extends FunctionBuilder {\n constructor(\n sourceLocation: SourceLocation,\n private decodeLiteral: (value: string) => Uint8Array,\n private encoding: BytesEncoding,\n private functionName: string,\n ) {\n super(sourceLocation)\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [valueBuilder],\n ptypes: [len],\n } = parseFunctionArgs({\n args,\n typeArgs,\n callLocation: sourceLocation,\n genericTypeArgs: 1,\n funcName: this.functionName,\n argSpec: (a) => [a.required(stringPType)],\n })\n const exprType = BytesGeneric.parameterise([len])\n\n const encodedValue = requireStringConstant(valueBuilder)\n\n const value = wrapInCodeError(() => this.decodeLiteral(encodedValue.value), encodedValue.sourceLocation)\n\n if (exprType.length !== null && value.length !== Number(exprType.length)) {\n logger.error(sourceLocation, `Expected decoded bytes value of length ${exprType.length}, received ${value.length}`)\n }\n\n return new BytesExpressionBuilder(\n nodeFactory.bytesConstant({\n value: value,\n encoding: this.encoding,\n sourceLocation,\n wtype: exprType.wtype,\n }),\n exprType,\n )\n }\n}\n\nexport class BytesExpressionBuilder extends InstanceExpressionBuilder<BytesPType> {\n constructor(expr: Expression, ptype: PType) {\n invariant(ptype instanceof BytesPType, 'ptype must be BytesPType')\n invariant(expr.wtype.equals(ptype.wtype), 'Expr wtype must match ptype.wtype')\n super(expr, ptype)\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 NumericLiteralExpressionBuilder(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)\n case 'bitwiseAnd':\n return new BitwiseOpFunctionBuilder(this, BytesBinaryOperator.bitAnd)\n case 'bitwiseOr':\n return new BitwiseOpFunctionBuilder(this, BytesBinaryOperator.bitOr)\n case 'bitwiseXor':\n return new BitwiseOpFunctionBuilder(this, BytesBinaryOperator.bitXor)\n case 'toString':\n return new ToStringBuilder(this)\n case 'concat':\n return new ConcatFunctionBuilder(this)\n case 'toFixed':\n return new ToFixedLengthFunctionBuilder(this)\n case 'at':\n return new AtFunctionBuilder(\n this._expr,\n bytesPType,\n requireExpressionOfType(this.memberAccess('length', sourceLocation), uint64PType),\n sourceLocation,\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 let compareType = this.ptype\n if (!compareType.equals(other.ptype)) {\n compareType = bytesPType\n }\n return compareBytes(\n requireExpressionOfType(this, compareType),\n requireExpressionOfType(other, compareType),\n op,\n sourceLocation,\n this.typeDescription,\n )\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(): InstanceBuilder {\n return this\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 resolvableToPType(ptype: PTypeOrClass): ptype is BytesPType {\n if (ptype instanceof BytesPType) {\n return this.ptype.length === ptype.length || ptype.length === null\n }\n return false\n }\n resolveToPType(ptype: PTypeOrClass): InstanceBuilder {\n if (this.ptype.equalsOrInstanceOf(ptype)) return this\n if (this.resolvableToPType(ptype)) {\n return new BytesExpressionBuilder(\n nodeFactory.reinterpretCast({ expr: this.resolve(), wtype: ptype.wtypeOrThrow, sourceLocation: this.sourceLocation }),\n ptype,\n )\n }\n\n return super.resolveToPType(ptype)\n }\n}\n\nexport class ConcatFunctionBuilder extends FunctionBuilder {\n constructor(private builder: BytesExpressionBuilder) {\n super(builder.sourceLocation)\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [other],\n } = parseFunctionArgs({\n args,\n typeArgs,\n callLocation: sourceLocation,\n funcName: 'concat',\n genericTypeArgs: 0,\n argSpec: (a) => [a.required(bytesPType, stringPType)],\n })\n let right: Expression\n if (other.ptype.equals(stringPType)) {\n right = other.toBytes(other.sourceLocation).resolve()\n } else {\n right = requireExpressionOfType(other, bytesPType)\n }\n return new BytesExpressionBuilder(\n intrinsicFactory.bytesConcat({\n left: requireExpressionOfType(this.builder, bytesPType),\n right,\n sourceLocation: sourceLocation,\n }),\n bytesPType,\n )\n }\n}\n\nexport function bytesToFixed(builder: InstanceBuilder, fixedType: BytesPType, sourceLocation: SourceLocation): InstanceBuilder {\n invariant(fixedType.length !== null, 'Should only be called for bytes with a fixed length', sourceLocation)\n const expr = builder.resolve()\n if (expr instanceof BytesConstant) {\n codeInvariant(\n expr.value.length === Number(fixedType.length),\n `Invalid bytes constant length of ${expr.value.length}, expected ${fixedType.length}`,\n builder.sourceLocation,\n )\n return new BytesExpressionBuilder(\n nodeFactory.bytesConstant({\n ...expr,\n wtype: fixedType.wtype,\n }),\n fixedType,\n )\n }\n\n const single = builder.singleEvaluation()\n return new BytesExpressionBuilder(\n nodeFactory.checkedMaybe({\n comment: `Length must be ${fixedType.length}`,\n expr: nodeFactory.tupleExpression({\n items: [\n nodeFactory.reinterpretCast({\n expr: single.resolve(),\n wtype: fixedType.wtype,\n sourceLocation,\n }),\n nodeFactory.numericComparisonExpression({\n sourceLocation,\n operator: NumericComparison.eq,\n lhs: intrinsicFactory.bytesLen({\n value: single.resolve(),\n sourceLocation,\n }),\n rhs: nodeFactory.uInt64Constant({\n value: fixedType.length,\n sourceLocation,\n }),\n }),\n ],\n sourceLocation,\n }),\n }),\n fixedType,\n )\n}\n\nconst fixedConversionStrategyMap: Record<string, 'assert-length' | 'unsafe-cast'> = {\n 'assert-length': 'assert-length',\n 'unsafe-cast': 'unsafe-cast',\n}\n\nexport class ToFixedLengthFunctionBuilder extends FunctionBuilder {\n constructor(private builder: BytesExpressionBuilder) {\n super(builder.sourceLocation)\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [{ length, strategy }],\n } = parseFunctionArgs({\n args,\n typeArgs,\n callLocation: sourceLocation,\n funcName: 'toFixed',\n genericTypeArgs: 1,\n argSpec: (a) => [\n a.obj({\n length: a.required(NumericLiteralPType),\n strategy: a.optional(stringPType),\n }),\n ],\n })\n const sizeConst = requireIntegerConstant(length)\n const parsedStrategy = strategy === undefined ? 'assert-length' : mapStringConstant(fixedConversionStrategyMap, strategy.resolve())\n const ptype = new BytesPType({ length: sizeConst.value })\n\n if (parsedStrategy === 'assert-length') {\n return bytesToFixed(this.builder, ptype, sourceLocation)\n } else {\n return instanceEb(\n nodeFactory.reinterpretCast({\n expr: this.builder.resolve(),\n wtype: ptype.wtype,\n sourceLocation,\n }),\n ptype,\n )\n }\n }\n}\n\nexport class BytesInvertBuilder extends FunctionBuilder {\n constructor(private builder: BytesExpressionBuilder) {\n super(builder.sourceLocation)\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n parseFunctionArgs({ args, typeArgs, genericTypeArgs: 0, callLocation: sourceLocation, funcName: 'bitwiseInvert', argSpec: (a) => [] })\n return new BytesExpressionBuilder(\n nodeFactory.bytesUnaryOperation({\n wtype: this.builder.ptype.wtype,\n expr: this.builder.resolve(),\n op: BytesUnaryOperator.bitInvert,\n sourceLocation,\n }),\n this.builder.ptype,\n )\n }\n}\n\nexport class BitwiseOpFunctionBuilder extends FunctionBuilder {\n constructor(\n private left: BytesExpressionBuilder,\n private op: BytesBinaryOperator,\n ) {\n super(left.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(this.left.ptype, bytesPType)],\n })\n\n const exprType = this.left.ptype.equals(other.ptype) ? this.left.ptype : bytesPType\n\n return new BytesExpressionBuilder(\n nodeFactory.bytesBinaryOperation({\n // Maintain fixed length type if both operands match\n wtype: exprType.wtype,\n left: requireExpressionOfType(this.left, exprType),\n right: requireExpressionOfType(other, exprType),\n op: this.op,\n sourceLocation,\n }),\n exprType,\n )\n }\n}\n\nexport class ToStringBuilder extends FunctionBuilder {\n constructor(private builder: BytesExpressionBuilder) {\n super(builder.sourceLocation)\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n parseFunctionArgs({ args, typeArgs, genericTypeArgs: 0, callLocation: sourceLocation, funcName: 'toString', argSpec: (a) => [] })\n return new StringExpressionBuilder(\n nodeFactory.reinterpretCast({\n wtype: wtypes.stringWType,\n expr: this.builder.resolve(),\n sourceLocation,\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 { SourceLocation } from '../../awst/source-location'\nimport type { PType } from '../ptypes'\nimport { cloneFunctionPType } from '../ptypes'\nimport { instanceEb } from '../type-registry'\nimport type { InstanceBuilder } from './index'\nimport { FunctionBuilder, type NodeBuilder } from './index'\nimport { parseFunctionArgs } from './util/arg-parsing'\n\nexport class CloneFunctionBuilder extends FunctionBuilder {\n readonly ptype = cloneFunctionPType\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [target],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 1,\n argSpec: (a) => [a.required()],\n funcName: this.typeDescription,\n callLocation: sourceLocation,\n })\n return CloneFunctionBuilder.clone(target, sourceLocation)\n }\n\n static clone(target: InstanceBuilder, sourceLocation: SourceLocation) {\n return instanceEb(\n nodeFactory.copy({\n value: target.resolve(),\n sourceLocation,\n }),\n target.ptype,\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 { nodeFactory } from '../../../awst/node-factory'\nimport type { Expression, LValue } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport { CodeError, InternalError } from '../../../errors'\nimport { codeInvariant } from '../../../util'\nimport type { PTypeOrClass } from '../../ptypes'\nimport {\n ArrayLiteralPType,\n ArrayPType,\n isArrayType,\n isTupleLike,\n MutableTuplePType,\n ReadonlyArrayPType,\n ReadonlyTuplePType,\n} from '../../ptypes'\nimport { instanceEb } from '../../type-registry'\nimport { newArray, newTuple } from '../array-like/util'\nimport type { NodeBuilder } from '../index'\nimport { InstanceBuilder } from '../index'\nimport type { StaticallyIterable } from '../traits/static-iterator'\nimport { StaticIterator } from '../traits/static-iterator'\nimport { requireIntegerConstant } from '../util'\nimport { arrayLength } from '../util/array/length'\n\nexport class ArrayLiteralExpressionBuilder extends InstanceBuilder implements StaticallyIterable {\n readonly isConstant = false\n\n readonly ptype: ArrayLiteralPType\n\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 assignment target', { sourceLocation: this.sourceLocation })\n }\n\n singleEvaluation(): InstanceBuilder {\n throw new InternalError('Array literal cannot be single evaluated', { sourceLocation: this.sourceLocation })\n }\n\n indexAccess(index: InstanceBuilder | bigint, sourceLocation: SourceLocation): NodeBuilder {\n const indexNum = Number(typeof index === 'bigint' ? index : requireIntegerConstant(index).value)\n codeInvariant(indexNum < this.items.length, `Index ${indexNum} out of bounds of array`, sourceLocation)\n return this.items[indexNum]\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n switch (name) {\n case 'length':\n return arrayLength(this, sourceLocation)\n }\n return super.memberAccess(name, sourceLocation)\n }\n\n resolveToPType(ptype: PTypeOrClass): InstanceBuilder {\n if (isArrayType(ptype)) {\n return instanceEb(newArray(ptype, this), ptype)\n }\n if (isTupleLike(ptype)) {\n return instanceEb(newTuple(ptype, this), ptype)\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 ReadonlyTuplePType || ptype instanceof MutableTuplePType) {\n return ptype.items.every((itemType, index) => this.items[index].resolvableToPType(itemType))\n }\n if (ptype instanceof ArrayLiteralPType && ptype.items.length === this.items.length) {\n return this.items.every((item, index) => item.resolvableToPType(ptype.items[index]))\n }\n if (ptype instanceof ArrayPType || ptype instanceof ReadonlyArrayPType) {\n return this.items.every((i) => i.resolveToPType(ptype.elementType))\n }\n return false\n }\n\n [StaticIterator](): InstanceBuilder[] {\n return this.items\n }\n\n checkForUnclonedMutables(scenario: string) {\n let contains = false\n for (const item of this.items) {\n contains ||= item.checkForUnclonedMutables('being used in an array literal')\n }\n return contains\n }\n}\n","import { CodeError } from '../../../errors'\nimport { codeInvariant } from '../../../util'\nimport { numberPType } from '../../ptypes'\nimport type { NodeBuilder } from '../index'\nimport { ArrayLiteralExpressionBuilder } from '../literal/array-literal-expression-builder'\nimport { StaticIterator } from '../traits/static-iterator'\nimport { requireLiteralNumber } from './index'\n\nexport function processScratchRanges(builder: NodeBuilder): Set<bigint> {\n codeInvariant(\n builder instanceof ArrayLiteralExpressionBuilder,\n 'Scratch ranges should be specified in an array literal',\n builder.sourceLocation,\n )\n const slots = new Set<bigint>()\n for (const item of builder[StaticIterator]()) {\n if (item.resolvableToPType(numberPType)) {\n slots.add(requireLiteralNumber(item))\n } else {\n const from = getRangeProp(item, 'from')\n const to = getRangeProp(item, 'to')\n for (let i = from; i <= to; i++) {\n slots.add(i)\n }\n }\n }\n\n return slots\n}\n\nfunction getRangeProp(builder: NodeBuilder, name: string): bigint {\n if (builder.hasProperty(name)) {\n return requireLiteralNumber(builder.memberAccess(name, builder.sourceLocation))\n }\n throw new CodeError('Scratch slot reservations should be either a single slot or an object containing a from and to property', {\n sourceLocation: builder.sourceLocation,\n })\n}\n","import { nodeFactory } from '../../awst/node-factory'\n\nimport type { Expression, LValue } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { wtypes } from '../../awst/wtypes'\nimport { Constants } from '../../constants'\nimport { CodeError } from '../../errors'\nimport { codeInvariant, instanceOfAny, invariant } from '../../util'\nimport { AwstBuildContext } from '../context/awst-build-context'\nimport type { ContractOptionsDecoratorData } from '../models/decorator-data'\nimport type { PType } from '../ptypes'\nimport {\n BoxMapPType,\n BoxPType,\n BoxRefPType,\n ClusteredContractClassType,\n ContractClassPType,\n contractOptionsDecorator,\n GlobalStateType,\n LocalStateType,\n numberPType,\n stringPType,\n} from '../ptypes'\n\nimport { instanceEb } from '../type-registry'\n\nimport { BaseContractMethodExpressionBuilder, ContractMethodExpressionBuilder } from './free-subroutine-expression-builder'\nimport { DecoratorDataBuilder, FunctionBuilder, InstanceBuilder, NodeBuilder } from './index'\nimport { requireLiteralNumber, requireStringConstant } from './util'\nimport { parseFunctionArgs } from './util/arg-parsing'\nimport { requireAvmVersion } from './util/avm-version'\nimport { processScratchRanges } from './util/scratch-slots'\nimport { VoidExpressionBuilder } from './void-expression-builder'\n\n/**\n * Handles expressions using `this` in the context of a contract\n */\nexport class ContractThisBuilder extends InstanceBuilder<ContractClassPType> {\n readonly isConstant = false\n resolve(): Expression {\n throw new CodeError('this keyword is not valid as a value', { sourceLocation: this.sourceLocation })\n }\n resolveLValue(): LValue {\n throw new CodeError('this keyword is not valid as a value', { sourceLocation: this.sourceLocation })\n }\n readonly #ptype: ContractClassPType\n constructor(ptype: ContractClassPType, sourceLocation: SourceLocation) {\n super(sourceLocation)\n this.#ptype = ptype\n }\n\n get ptype(): ContractClassPType {\n return this.#ptype\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n const property = this.ptype.properties[name]\n if (property) {\n const storageDeclaration = AwstBuildContext.current.getStorageDeclaration(this.ptype, name)\n if (instanceOfAny(property, GlobalStateType, LocalStateType, BoxPType, BoxRefPType, BoxMapPType)) {\n codeInvariant(storageDeclaration, `No declaration exists for property ${property}.`, sourceLocation)\n return instanceEb(storageDeclaration.key, property)\n }\n }\n const method = this.ptype.methods[name]\n if (method) {\n return new ContractMethodExpressionBuilder(sourceLocation, method, this.ptype)\n }\n for (const base of this.ptype.allBases()) {\n if (name in base.methods) {\n return new ContractMethodExpressionBuilder(sourceLocation, base.methods[name], base)\n }\n }\n return super.memberAccess(name, sourceLocation)\n }\n}\n\n/**\n * Handles expressions using `super` in the context of a contract\n */\nexport class ContractSuperBuilder extends ContractThisBuilder {\n readonly isConstant = false\n constructor(ptype: ContractClassPType, sourceLocation: SourceLocation) {\n super(ptype, sourceLocation)\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n codeInvariant(args.length === 0, 'Constructor arguments are not supported', sourceLocation)\n codeInvariant(typeArgs.length === 0, 'Super calls cannot be generic', sourceLocation)\n return new VoidExpressionBuilder(\n nodeFactory.subroutineCallExpression({\n target: nodeFactory.instanceSuperMethodTarget({\n memberName: Constants.symbolNames.constructorMethodName,\n }),\n args: [],\n sourceLocation,\n wtype: wtypes.voidWType,\n }),\n )\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n if (this.ptype instanceof ClusteredContractClassType && name === 'class') {\n return new PolytypeClassSuperMethodBuilder(this.ptype, sourceLocation)\n }\n\n const method = this.ptype.methods[name]\n if (method) {\n return new BaseContractMethodExpressionBuilder(sourceLocation, method)\n }\n return super.memberAccess(name, sourceLocation)\n }\n}\n\n/**\n * Handles calls of `super.class` from polytype library which is used to access the prototype of a specific base type\n */\nclass PolytypeClassSuperMethodBuilder extends FunctionBuilder {\n constructor(\n public readonly ptype: ClusteredContractClassType,\n sourceLocation: SourceLocation,\n ) {\n super(sourceLocation)\n }\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [contract],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 1,\n callLocation: sourceLocation,\n funcName: 'super.class',\n argSpec: (a) => [a.required(ContractClassPType)],\n })\n const matchedBaseType = this.ptype.baseTypes.find((b) => b.equals(contract.ptype))\n\n codeInvariant(matchedBaseType, `${contract.ptype} must be a direct base type of this class`)\n return new PolytypeExplicitClassAccessExpressionBuilder(matchedBaseType, sourceLocation)\n }\n}\n\n/**\n * Matches polytype's super.class(SomeType) expression\n */\nexport class PolytypeExplicitClassAccessExpressionBuilder extends InstanceBuilder {\n readonly isConstant = false\n resolve(): Expression {\n throw new CodeError('Contract class cannot be used as a value')\n }\n resolveLValue(): LValue {\n throw new CodeError('Contract class cannot be used as a value')\n }\n constructor(\n public readonly ptype: ContractClassPType,\n sourceLocation: SourceLocation,\n ) {\n super(sourceLocation)\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n const method = this.ptype.methods[name]\n if (method) {\n return new ContractMethodExpressionBuilder(sourceLocation, method, this.ptype)\n }\n if (name in this.ptype.properties) {\n throw new CodeError(`Not Supported: Accessing properties of a specific base type. Instead just use \\`this.${name}\\``, {\n sourceLocation,\n })\n }\n return super.memberAccess(name, sourceLocation)\n }\n}\n\nexport class ContractClassBuilder extends InstanceBuilder {\n readonly isConstant = false\n\n resolve(): Expression {\n throw new CodeError('Contract class cannot be used as a value')\n }\n resolveLValue(): LValue {\n throw new CodeError('Contract class cannot be used as a value')\n }\n readonly ptype: ContractClassPType\n constructor(sourceLocation: SourceLocation, ptype: PType) {\n super(sourceLocation)\n invariant(ptype instanceof ContractClassPType, 'ptype must be ContractClassPType')\n this.ptype = ptype\n }\n\n newCall(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): InstanceBuilder {\n throw new CodeError('Contract class cannot be constructed manually')\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): InstanceBuilder {\n throw new CodeError('Contract class cannot be called manually')\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n switch (name) {\n case 'prototype':\n return new ContractClassPrototypeBuilder(sourceLocation, this.ptype)\n }\n return super.memberAccess(name, sourceLocation)\n }\n}\n\nclass ContractClassPrototypeBuilder extends NodeBuilder {\n constructor(\n sourceLocation: SourceLocation,\n readonly ptype: ContractClassPType,\n ) {\n super(sourceLocation)\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n const method = this.ptype.methods[name]\n if (method) {\n return new ContractMethodExpressionBuilder(sourceLocation, method, this.ptype)\n }\n return super.memberAccess(name, sourceLocation)\n }\n}\n\nexport class ContractOptionsDecoratorBuilder extends FunctionBuilder {\n readonly ptype = contractOptionsDecorator\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [{ avmVersion, name, stateTotals, scratchSlots }],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n callLocation: sourceLocation,\n funcName: this.typeDescription,\n argSpec: (a) => [\n a.obj({\n avmVersion: a.optional(numberPType),\n name: a.optional(stringPType),\n scratchSlots: a.optional(),\n stateTotals: a.optional(),\n }),\n ],\n })\n\n return new DecoratorDataBuilder(sourceLocation, {\n type: 'contract',\n avmVersion: avmVersion && requireAvmVersion(avmVersion),\n name: name && requireStringConstant(name).value,\n stateTotals: stateTotals && buildStateTotals(stateTotals),\n scratchSlots: scratchSlots && processScratchRanges(scratchSlots),\n sourceLocation,\n })\n }\n}\n\nfunction buildStateTotals(builder: NodeBuilder): ContractOptionsDecoratorData['stateTotals'] {\n function tryGetProp(name: string): bigint | undefined {\n if (builder.hasProperty(name)) {\n return requireLiteralNumber(builder.memberAccess(name, builder.sourceLocation))\n }\n return undefined\n }\n\n return {\n globalBytes: tryGetProp('globalBytes'),\n globalUints: tryGetProp('globalUints'),\n localBytes: tryGetProp('localBytes'),\n localUints: tryGetProp('localUints'),\n }\n}\n","import { nodeFactory } from '../../awst/node-factory'\nimport { PuyaLibFunction } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { wtypes } from '../../awst/wtypes'\nimport type { PType } from '../ptypes'\nimport { ensureBudgetFunction, opUpFeeSourceType, uint64PType } from '../ptypes'\nimport type { NodeBuilder } from './index'\nimport { FunctionBuilder } from './index'\nimport { requireExpressionOfType } from './util'\nimport { parseFunctionArgs } from './util/arg-parsing'\nimport { VoidExpressionBuilder } from './void-expression-builder'\n\nexport class EnsureBudgetFunctionBuilder extends FunctionBuilder {\n readonly ptype = ensureBudgetFunction\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [budget, feeSource],\n } = parseFunctionArgs({\n args,\n typeArgs,\n callLocation: sourceLocation,\n funcName: this.ptype.name,\n genericTypeArgs: 0,\n argSpec: (a) => [a.required(uint64PType), a.optional(opUpFeeSourceType.memberType)],\n })\n\n return new VoidExpressionBuilder(\n nodeFactory.puyaLibCall({\n func: PuyaLibFunction.ensureBudget,\n args: [\n nodeFactory.callArg({\n name: null,\n value: budget.resolve(),\n }),\n nodeFactory.callArg({\n name: null,\n value: feeSource\n ? requireExpressionOfType(feeSource, opUpFeeSourceType.memberType)\n : nodeFactory.uInt64Constant({ value: 0n, sourceLocation }),\n }),\n ],\n sourceLocation,\n wtype: wtypes.voidWType,\n }),\n )\n }\n}\n","import { nodeFactory } from '../../awst/node-factory'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { CodeError } from '../../errors'\nimport { invariant } from '../../util'\nimport type { PType } from '../ptypes'\nimport { IntrinsicEnumType } from '../ptypes'\nimport { NodeBuilder } from './index'\nimport { StringExpressionBuilder } from './string-expression-builder'\n\nexport class IntrinsicEnumBuilder extends NodeBuilder {\n public readonly ptype: IntrinsicEnumType\n constructor(sourceLocation: SourceLocation, ptype: PType) {\n super(sourceLocation)\n invariant(ptype instanceof IntrinsicEnumType, 'ptype must be instance of IntrinsicEnumType')\n this.ptype = ptype\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n const matchedMember = this.ptype.members.find(([memberName]) => memberName === name)\n if (matchedMember) {\n return new StringExpressionBuilder(\n nodeFactory.stringConstant({\n value: matchedMember[1],\n sourceLocation,\n }),\n )\n }\n throw new CodeError(`Member ${name} does not exist on ${this.typeDescription}`, { sourceLocation })\n }\n}\n","import type { awst } from '../../awst'\n\nimport { intrinsicFactory } from '../../awst/intrinsic-factory'\nimport { nodeFactory } from '../../awst/node-factory'\nimport type { Expression } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { wtypes } from '../../awst/wtypes'\nimport { CodeError, InternalError, throwError } from '../../errors'\nimport type { PType } from '../ptypes'\nimport type { NodeBuilder } from './index'\nimport { FunctionBuilder } from './index'\nimport { requireInstanceBuilder } from './util'\nimport { VoidExpressionBuilder } from './void-expression-builder'\n\nexport class LogFunctionBuilder extends FunctionBuilder {\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const argsExps = args.map((a) => requireInstanceBuilder(a))\n\n let logBytes: awst.Expression\n if (argsExps.length === 0) {\n throw new CodeError(`log expects at least 1 argument`, { sourceLocation })\n } else if (argsExps.length === 1) {\n logBytes = argsExps[0].toBytes(sourceLocation).resolve()\n } else {\n logBytes =\n argsExps.reduce(\n (a: Expression | undefined, b): Expression | undefined =>\n a === undefined\n ? b.toBytes(sourceLocation).resolve()\n : intrinsicFactory.bytesConcat({ left: a, right: b.toBytes(sourceLocation).resolve(), sourceLocation }),\n undefined,\n ) ?? throwError(new InternalError('Should never get here given previous conditions', { sourceLocation }))\n }\n\n return new VoidExpressionBuilder(\n nodeFactory.intrinsicCall({\n sourceLocation: sourceLocation,\n immediates: [],\n stackArgs: [logBytes],\n opCode: 'log',\n wtype: wtypes.voidWType,\n }),\n )\n }\n}\n","import type { Expression, LValue } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { CodeError } from '../../errors'\nimport { invariant } from '../../util'\nimport { logicSigOptionsDecorator, LogicSigPType, numberPType, type PType, stringPType } from '../ptypes'\nimport { DecoratorDataBuilder, FunctionBuilder, InstanceBuilder, type NodeBuilder } from './index'\nimport { requireStringConstant } from './util'\nimport { parseFunctionArgs } from './util/arg-parsing'\nimport { requireAvmVersion } from './util/avm-version'\nimport { processScratchRanges } from './util/scratch-slots'\n\nexport class LogicSigClassBuilder extends InstanceBuilder {\n readonly isConstant = false\n\n resolve(): Expression {\n throw new CodeError('LogicSig class cannot be used as a value')\n }\n resolveLValue(): LValue {\n throw new CodeError('LogicSig class cannot be used as a value')\n }\n readonly ptype: LogicSigPType\n constructor(sourceLocation: SourceLocation, ptype: PType) {\n super(sourceLocation)\n invariant(ptype instanceof LogicSigPType, 'ptype must be LogicSigPType')\n this.ptype = ptype\n }\n\n newCall(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): InstanceBuilder {\n throw new CodeError('LogicSig class cannot be constructed manually')\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): InstanceBuilder {\n throw new CodeError('LogicSig class cannot be called manually')\n }\n}\n\nexport class LogicSigOptionsDecoratorBuilder extends FunctionBuilder {\n readonly ptype = logicSigOptionsDecorator\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [{ avmVersion, name, scratchSlots }],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n callLocation: sourceLocation,\n funcName: this.typeDescription,\n argSpec: (a) => [\n a.obj({\n avmVersion: a.optional(numberPType),\n name: a.optional(stringPType),\n scratchSlots: a.optional(),\n }),\n ],\n })\n\n return new DecoratorDataBuilder(sourceLocation, {\n type: 'logicsig',\n avmVersion: avmVersion ? requireAvmVersion(avmVersion) : undefined,\n name: name ? requireStringConstant(name).value : undefined,\n sourceLocation,\n scratchSlots: scratchSlots && processScratchRanges(scratchSlots),\n })\n }\n}\n","import 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 } 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","import type { Expression } from '../../awst/nodes'\nimport { invariant } from '../../util'\nimport { ObjectWithOptionalFieldsType, type PType } from '../ptypes'\nimport { InstanceExpressionBuilder } from './index'\n\nexport class ObjectWithOptionalFieldsExpressionBuilder extends InstanceExpressionBuilder<ObjectWithOptionalFieldsType> {\n constructor(expr: Expression, ptype: PType) {\n invariant(\n ptype instanceof ObjectWithOptionalFieldsType,\n `ObjectWithOptionalFieldsExpressionBuilder must be instantiated with ptype of ObjectWithOptionalFieldsType`,\n )\n super(expr, ptype)\n }\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { Expression } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport { instanceOfAny, invariant } from '../../../util'\nimport { ImmutableObjectPType, MutableObjectPType, type PType, type PTypeOrClass } from '../../ptypes'\n\nimport { instanceEb } from '../../type-registry'\nimport type { InstanceBuilder, NodeBuilder } from '../index'\nimport { InstanceExpressionBuilder } from '../index'\nimport { requestInstanceBuilder, requireExpressionOfType } from '../util'\n\nexport class MutableObjectExpressionBuilder extends InstanceExpressionBuilder<MutableObjectPType> {\n constructor(expr: Expression, ptype: PType) {\n invariant(ptype instanceof MutableObjectPType, 'ptype must be MutableObjectPType')\n super(expr, ptype)\n }\n\n hasProperty(name: string): boolean {\n return name in this.ptype.properties || super.hasProperty(name)\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n if (name in this.ptype.properties) {\n const fieldType = this.ptype.properties[name]\n return instanceEb(\n nodeFactory.fieldExpression({\n name,\n sourceLocation,\n wtype: fieldType.wtypeOrThrow,\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 (instanceOfAny(ptype, ImmutableObjectPType, MutableObjectPType)) {\n return ptype\n .orderedProperties()\n .every(\n ([prop, propType]) =>\n this.hasProperty(prop) && requestInstanceBuilder(this.memberAccess(prop, this.sourceLocation))?.resolvableToPType(propType),\n )\n }\n return false\n }\n\n resolveToPType(ptype: PTypeOrClass): InstanceBuilder {\n if (ptype.equals(this.ptype)) {\n return this\n }\n if (ptype instanceof MutableObjectPType) {\n const single = this.singleEvaluation()\n return instanceEb(\n nodeFactory.newStruct({\n values: new Map(\n ptype\n .orderedProperties()\n .map(([prop, propType]) => [prop, requireExpressionOfType(single.memberAccess(prop, this.sourceLocation), propType)]),\n ),\n sourceLocation: this.sourceLocation,\n wtype: ptype.wtype,\n }),\n ptype,\n )\n }\n\n if (ptype instanceof ImmutableObjectPType) {\n const single = this.singleEvaluation()\n return instanceEb(\n nodeFactory.tupleExpression({\n items: ptype\n .orderedProperties()\n .map(([prop, propType]) => requireExpressionOfType(single.memberAccess(prop, this.sourceLocation), propType)),\n sourceLocation: this.sourceLocation,\n wtype: ptype.wtype,\n }),\n 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 { CodeError } from '../../../errors'\nimport { invariant } from '../../../util'\nimport type { PTypeOrClass } from '../../ptypes'\nimport { ImmutableObjectPType, type PType } from '../../ptypes'\nimport { getPropertyType, hasPropertyOfType } from '../../ptypes/visitors/index-type-visitor'\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<ImmutableObjectPType> {\n constructor(expr: Expression, ptype: PType) {\n invariant(ptype instanceof ImmutableObjectPType, `ObjectExpressionBuilder must be instantiated with ptype of ImmutableObjectPType`)\n super(expr, ptype)\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n if (name in this.ptype.properties) {\n const propertyPtype = getPropertyType(this.ptype, name, sourceLocation)\n return instanceEb(\n nodeFactory.fieldExpression({\n name,\n sourceLocation,\n base: this._expr,\n wtype: propertyPtype.wtypeOrThrow,\n }),\n propertyPtype,\n )\n }\n return super.memberAccess(name, sourceLocation)\n }\n\n hasProperty(name: string): boolean {\n return name in this.ptype.properties\n }\n\n resolvableToPType(ptype: PTypeOrClass): ptype is ImmutableObjectPType {\n if (ptype instanceof ImmutableObjectPType) {\n return ptype.orderedProperties().every(([prop, propType]) => hasPropertyOfType(this.ptype, prop, propType, this.sourceLocation))\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","/* 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.ReadonlyTuplePType({ 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.ReadonlyTuplePType({ 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.ReadonlyTuplePType({ 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.ReadonlyTuplePType({ 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.ReadonlyTuplePType({ 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.ReadonlyTuplePType({ 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.ReadonlyTuplePType({ 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.ReadonlyTuplePType({ 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.ReadonlyTuplePType({ 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.ReadonlyTuplePType({ 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.ReadonlyTuplePType({ 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.ReadonlyTuplePType({ 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.ReadonlyTuplePType({ 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.ReadonlyTuplePType({ 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.ReadonlyTuplePType({ 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.ReadonlyTuplePType({ 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.ReadonlyTuplePType({ 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.ReadonlyTuplePType({ 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.bytesPType, ptypes.uint64PType] },\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.ReadonlyTuplePType({ 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.ReadonlyTuplePType({ 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.bytesPType, ptypes.uint64PType] },\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.ReadonlyTuplePType({ 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.ReadonlyTuplePType({ 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.ReadonlyTuplePType({ 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.ReadonlyTuplePType({ 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.ReadonlyTuplePType({ 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.ReadonlyTuplePType({ 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.ReadonlyTuplePType({ 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.ReadonlyTuplePType({ 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.ReadonlyTuplePType({ 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.ReadonlyTuplePType({ 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.ReadonlyTuplePType({ 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.ReadonlyTuplePType({ 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.ReadonlyTuplePType({ 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.ReadonlyTuplePType({ 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.ReadonlyTuplePType({ 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.ReadonlyTuplePType({ 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.ReadonlyTuplePType({ 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.ReadonlyTuplePType({ items: [new ptypes.BytesPType({ length: 32n }), 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.ReadonlyTuplePType({ 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.ReadonlyTuplePType({ 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.ReadonlyTuplePType({ 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.ReadonlyTuplePType({ 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.ReadonlyTuplePType({ 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.bytesPType, ptypes.uint64PType] }],\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: new ptypes.BytesPType({ length: 32n }),\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: new ptypes.BytesPType({ length: 32n }),\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.ReadonlyTuplePType({ 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.ReadonlyTuplePType({ 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.ReadonlyTuplePType({\n items: [ptypes.uint64PType, ptypes.uint64PType, ptypes.uint64PType, ptypes.uint64PType],\n }),\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: [new ptypes.BytesPType({ length: 33n })] }],\n returnType: new ptypes.ReadonlyTuplePType({\n items: [new ptypes.BytesPType({ length: 32n }), new ptypes.BytesPType({ length: 32n })],\n }),\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: [new ptypes.BytesPType({ length: 32n })] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n { name: 'c', ptypes: [new ptypes.BytesPType({ length: 32n })] },\n { name: 'd', ptypes: [new ptypes.BytesPType({ length: 32n })] },\n ],\n returnType: new ptypes.ReadonlyTuplePType({\n items: [new ptypes.BytesPType({ length: 32n }), new ptypes.BytesPType({ length: 32n })],\n }),\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: [new ptypes.BytesPType({ length: 32n })] },\n { name: 'b', ptypes: [new ptypes.BytesPType({ length: 32n })] },\n { name: 'c', ptypes: [new ptypes.BytesPType({ length: 32n })] },\n { name: 'd', ptypes: [new ptypes.BytesPType({ length: 32n })] },\n { name: 'e', ptypes: [new ptypes.BytesPType({ length: 32n })] },\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: [new ptypes.BytesPType({ length: 64n })] },\n { name: 'c', ptypes: [new ptypes.BytesPType({ length: 32n })] },\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: [new ptypes.BytesPType({ length: 64n })] },\n { name: 'c', ptypes: [new ptypes.BytesPType({ length: 32n })] },\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.ReadonlyTuplePType({ items: [ptypes.uint64PType, ptypes.uint64PType] }),\n },\n ],\n },\n extractUint16: {\n type: 'op-mapping',\n op: 'extract_uint16',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n extractUint32: {\n type: 'op-mapping',\n op: 'extract_uint32',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n extractUint64: {\n type: 'op-mapping',\n op: 'extract_uint64',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n falconVerify: {\n type: 'op-mapping',\n op: 'falcon_verify',\n signatures: [\n {\n argNames: ['a', 'b', 'c'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [new ptypes.BytesPType({ length: 1232n })] },\n { name: 'c', ptypes: [new ptypes.BytesPType({ length: 1793n })] },\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.bytesPType, ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.boolPType,\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: new ptypes.BytesPType({ length: 32n }),\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: new ptypes.BytesPType({ length: 32n }),\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: new ptypes.BytesPType({ length: 32n }),\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.transactionTypeType.memberType,\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: new ptypes.BytesPType({ length: 32n }),\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.onCompleteActionType.memberType,\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: new ptypes.BytesPType({ length: 32n }),\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: new ptypes.BytesPType({ length: 32n }) }],\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: new ptypes.BytesPType({ length: 32n }) }],\n },\n payoutsEnabled: {\n type: 'op-mapping',\n op: 'global',\n signatures: [{ argNames: [], immediateArgs: ['PayoutsEnabled'], stackArgs: [], returnType: ptypes.boolPType }],\n },\n payoutsGoOnlineFee: {\n type: 'op-mapping',\n op: 'global',\n signatures: [{ argNames: [], immediateArgs: ['PayoutsGoOnlineFee'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n payoutsPercent: {\n type: 'op-mapping',\n op: 'global',\n signatures: [{ argNames: [], immediateArgs: ['PayoutsPercent'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n payoutsMinBalance: {\n type: 'op-mapping',\n op: 'global',\n signatures: [{ argNames: [], immediateArgs: ['PayoutsMinBalance'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n payoutsMaxBalance: {\n type: 'op-mapping',\n op: 'global',\n signatures: [{ argNames: [], immediateArgs: ['PayoutsMaxBalance'], stackArgs: [], returnType: ptypes.uint64PType }],\n },\n },\n },\n GTxn: {\n type: 'op-grouping',\n name: 'GTxn',\n ops: {\n sender: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['Sender'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.accountPType,\n },\n ],\n },\n fee: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['Fee'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n firstValid: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['FirstValid'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n firstValidTime: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['FirstValidTime'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n lastValid: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['LastValid'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n note: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['Note'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n lease: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['Lease'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: new ptypes.BytesPType({ length: 32n }),\n },\n ],\n },\n receiver: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['Receiver'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.accountPType,\n },\n ],\n },\n amount: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['Amount'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n closeRemainderTo: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['CloseRemainderTo'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.accountPType,\n },\n ],\n },\n votePk: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['VotePK'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: new ptypes.BytesPType({ length: 32n }),\n },\n ],\n },\n selectionPk: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['SelectionPK'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: new ptypes.BytesPType({ length: 32n }),\n },\n ],\n },\n voteFirst: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['VoteFirst'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n voteLast: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['VoteLast'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n voteKeyDilution: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['VoteKeyDilution'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n type: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['Type'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n typeEnum: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['TypeEnum'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.transactionTypeType.memberType,\n },\n ],\n },\n xferAsset: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['XferAsset'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.assetPType,\n },\n ],\n },\n assetAmount: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AssetAmount'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n assetSender: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AssetSender'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.accountPType,\n },\n ],\n },\n assetReceiver: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AssetReceiver'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.accountPType,\n },\n ],\n },\n assetCloseTo: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AssetCloseTo'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.accountPType,\n },\n ],\n },\n groupIndex: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['GroupIndex'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n txId: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['TxID'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: new ptypes.BytesPType({ length: 32n }),\n },\n ],\n },\n applicationId: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ApplicationID'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.applicationPType,\n },\n ],\n },\n onCompletion: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['OnCompletion'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.onCompleteActionType.memberType,\n },\n ],\n },\n applicationArgs: {\n type: 'op-mapping',\n op: 'gtxnsas',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: ['ApplicationArgs'],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n numAppArgs: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['NumAppArgs'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n accounts: {\n type: 'op-mapping',\n op: 'gtxnsas',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: ['Accounts'],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.accountPType,\n },\n ],\n },\n numAccounts: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['NumAccounts'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n approvalProgram: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ApprovalProgram'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n clearStateProgram: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ClearStateProgram'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n rekeyTo: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['RekeyTo'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.accountPType,\n },\n ],\n },\n configAsset: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ConfigAsset'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.assetPType,\n },\n ],\n },\n configAssetTotal: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ConfigAssetTotal'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n configAssetDecimals: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ConfigAssetDecimals'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n configAssetDefaultFrozen: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ConfigAssetDefaultFrozen'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.boolPType,\n },\n ],\n },\n configAssetUnitName: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ConfigAssetUnitName'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n configAssetName: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ConfigAssetName'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n configAssetUrl: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ConfigAssetURL'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n configAssetMetadataHash: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ConfigAssetMetadataHash'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: new ptypes.BytesPType({ length: 32n }),\n },\n ],\n },\n configAssetManager: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ConfigAssetManager'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.accountPType,\n },\n ],\n },\n configAssetReserve: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ConfigAssetReserve'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.accountPType,\n },\n ],\n },\n configAssetFreeze: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ConfigAssetFreeze'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.accountPType,\n },\n ],\n },\n configAssetClawback: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ConfigAssetClawback'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.accountPType,\n },\n ],\n },\n freezeAsset: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['FreezeAsset'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.assetPType,\n },\n ],\n },\n freezeAssetAccount: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['FreezeAssetAccount'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.accountPType,\n },\n ],\n },\n freezeAssetFrozen: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['FreezeAssetFrozen'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.boolPType,\n },\n ],\n },\n assets: {\n type: 'op-mapping',\n op: 'gtxnsas',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: ['Assets'],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.assetPType,\n },\n ],\n },\n numAssets: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['NumAssets'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n applications: {\n type: 'op-mapping',\n op: 'gtxnsas',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: ['Applications'],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.applicationPType,\n },\n ],\n },\n numApplications: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['NumApplications'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n globalNumUint: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['GlobalNumUint'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n globalNumByteSlice: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['GlobalNumByteSlice'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n localNumUint: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['LocalNumUint'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n localNumByteSlice: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['LocalNumByteSlice'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n extraProgramPages: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ExtraProgramPages'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n nonparticipation: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['Nonparticipation'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.boolPType,\n },\n ],\n },\n logs: {\n type: 'op-mapping',\n op: 'gtxnsas',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: ['Logs'],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n numLogs: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['NumLogs'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n createdAssetId: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['CreatedAssetID'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.assetPType,\n },\n ],\n },\n createdApplicationId: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['CreatedApplicationID'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.applicationPType,\n },\n ],\n },\n lastLog: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['LastLog'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n stateProofPk: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['StateProofPK'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n approvalProgramPages: {\n type: 'op-mapping',\n op: 'gtxnsas',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: ['ApprovalProgramPages'],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n numApprovalProgramPages: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['NumApprovalProgramPages'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n clearStateProgramPages: {\n type: 'op-mapping',\n op: 'gtxnsas',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: ['ClearStateProgramPages'],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n numClearStateProgramPages: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['NumClearStateProgramPages'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n },\n },\n itob: {\n type: 'op-mapping',\n op: 'itob',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: [],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: new ptypes.BytesPType({ length: 8n }),\n },\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: new ptypes.BytesPType({ length: 32n }) }],\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: new ptypes.BytesPType({ length: 32n }) }],\n },\n selectionPk: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['SelectionPK'], stackArgs: [], returnType: new ptypes.BytesPType({ length: 32n }) }],\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.transactionTypeType.memberType }],\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: new ptypes.BytesPType({ length: 32n }) }],\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.onCompleteActionType.memberType }],\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: [\n { argNames: [], immediateArgs: ['ConfigAssetMetadataHash'], stackArgs: [], returnType: new ptypes.BytesPType({ length: 32n }) },\n ],\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: [new ptypes.BytesPType({ length: 32n })] }],\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: [new ptypes.BytesPType({ length: 32n })] }],\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: [new ptypes.BytesPType({ length: 32n })] }],\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 {\n argNames: ['a'],\n immediateArgs: [],\n stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }],\n returnType: new ptypes.BytesPType({ length: 32n }),\n },\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.bytesPType, ptypes.uint64PType] },\n ],\n returnType: ptypes.voidPType,\n },\n ],\n },\n },\n },\n mimc: {\n type: 'op-mapping',\n op: 'mimc',\n signatures: [\n {\n argNames: ['c', 'a'],\n immediateArgs: [{ name: 'c', ptypes: [ptypes.mimcConfigurationsPType] }],\n stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }],\n returnType: new ptypes.BytesPType({ length: 32n }),\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.ReadonlyTuplePType({ 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 {\n argNames: ['a'],\n immediateArgs: [],\n stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }],\n returnType: new ptypes.BytesPType({ length: 32n }),\n },\n ],\n },\n sha3_256: {\n type: 'op-mapping',\n op: 'sha3_256',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: [],\n stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }],\n returnType: new ptypes.BytesPType({ length: 32n }),\n },\n ],\n },\n sha512_256: {\n type: 'op-mapping',\n op: 'sha512_256',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: [],\n stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }],\n returnType: new ptypes.BytesPType({ length: 32n }),\n },\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 {\n argNames: ['a'],\n immediateArgs: [],\n stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }],\n returnType: new ptypes.BytesPType({ length: 64n }),\n },\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: new ptypes.BytesPType({ length: 32n }) }],\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: new ptypes.BytesPType({ length: 32n }) }],\n },\n selectionPk: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['SelectionPK'], stackArgs: [], returnType: new ptypes.BytesPType({ length: 32n }) }],\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.transactionTypeType.memberType }],\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: new ptypes.BytesPType({ length: 32n }) }],\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.onCompleteActionType.memberType }],\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: [\n { argNames: [], immediateArgs: ['ConfigAssetMetadataHash'], stackArgs: [], returnType: new ptypes.BytesPType({ length: 32n }) },\n ],\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.ReadonlyTuplePType({ 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.ReadonlyTuplePType({ 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: [new ptypes.BytesPType({ length: 80n })] },\n { name: 'c', ptypes: [new ptypes.BytesPType({ length: 32n })] },\n ],\n returnType: new ptypes.ReadonlyTuplePType({ items: [new ptypes.BytesPType({ length: 64n }), ptypes.boolPType] }),\n },\n ],\n },\n extract: {\n type: 'op-mapping',\n op: 'extract3',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.bytesPType,\n },\n {\n argNames: ['a', 'b', 'c'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n { name: 'c', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.bytesPType,\n },\n ],\n },\n select: {\n type: 'op-mapping',\n op: 'select',\n signatures: [\n {\n argNames: ['a', 'b', 'c'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.bytesPType] },\n { name: 'c', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.bytesPType,\n },\n {\n argNames: ['a', 'b', 'c'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n { name: 'c', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n setBit: {\n type: 'op-mapping',\n op: 'setbit',\n signatures: [\n {\n argNames: ['target', 'n', 'c'],\n immediateArgs: [],\n stackArgs: [\n { name: 'target', ptypes: [ptypes.bytesPType] },\n { name: 'n', ptypes: [ptypes.uint64PType] },\n { name: 'c', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.bytesPType,\n },\n {\n argNames: ['target', 'n', 'c'],\n immediateArgs: [],\n stackArgs: [\n { name: 'target', ptypes: [ptypes.uint64PType] },\n { name: 'n', ptypes: [ptypes.uint64PType] },\n { name: 'c', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n}\n","import { intrinsicFactory } from '../../awst/intrinsic-factory'\nimport { nodeFactory } from '../../awst/node-factory'\nimport { Expression, IntegerConstant, StringConstant, UInt64BinaryOperator } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { CodeError, InternalError } from '../../errors'\nimport { codeInvariant, invariant } from '../../util'\nimport type { IntrinsicOpGrouping, IntrinsicOpMapping } from '../op-metadata'\nimport { OP_METADATA } from '../op-metadata'\nimport type { PType } from '../ptypes'\nimport {\n bytesPType,\n IntrinsicEnumType,\n IntrinsicFunctionGroupType,\n IntrinsicFunctionType,\n stringPType,\n uint64PType,\n voidPType,\n} from '../ptypes'\nimport { instanceEb, typeRegistry } from '../type-registry'\nimport { FunctionBuilder, InstanceExpressionBuilder, NodeBuilder } from './index'\nimport { requestConstantOfType, requestExpressionOfType } from './util'\nimport { parseFunctionArgs } from './util/arg-parsing'\n\nexport class IntrinsicOpGroupBuilder extends NodeBuilder {\n private opGrouping: IntrinsicOpGrouping\n public readonly ptype: IntrinsicFunctionGroupType\n constructor(sourceLocation: SourceLocation, ptype: PType) {\n super(sourceLocation)\n invariant(ptype instanceof IntrinsicFunctionGroupType, 'ptype must be IntrinsicFunctionGroupType')\n this.ptype = ptype\n const metaData = OP_METADATA[ptype.name]\n invariant(metaData.type === 'op-grouping', 'ptype must map to op-grouping')\n this.opGrouping = metaData\n }\n\n hasProperty(name: string): boolean {\n return Object.hasOwn(this.opGrouping.ops, name)\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n if (!Object.hasOwn(this.opGrouping.ops, name)) {\n return super.memberAccess(name, sourceLocation)\n }\n const metaData = this.opGrouping.ops[name]\n\n if (metaData.signatures.some((s) => s.argNames.length || s.returnType.equals(voidPType))) {\n return new GroupedIntrinsicOpBuilder(sourceLocation, metaData)\n }\n\n const [sig] = metaData.signatures\n return typeRegistry.getInstanceEb(\n nodeFactory.intrinsicCall({\n wtype: sig.returnType.wtypeOrThrow,\n opCode: metaData.op,\n sourceLocation: sourceLocation,\n stackArgs: sig.stackArgs.map((x) => {\n if (x instanceof Expression) {\n return x\n }\n throw new InternalError('Intrinsic property expression cannot have unresolved arguments', { sourceLocation })\n }),\n immediates: sig.immediateArgs.map((x) => {\n switch (typeof x) {\n case 'string':\n case 'bigint':\n return x\n default:\n throw new InternalError('Intrinsic property expression cannot have unresolved arguments', { sourceLocation })\n }\n }),\n }),\n sig.returnType,\n )\n }\n}\n\nabstract class IntrinsicOpBuilderBase extends FunctionBuilder {\n protected constructor(\n sourceLocation: SourceLocation,\n private opMapping: IntrinsicOpMapping,\n ) {\n super(sourceLocation)\n }\n\n /**\n * Extract with 2 args extracts to the end of the sequence, the exact op code depends on if the start index is a constant value or not\n * @param args\n * @param typeArgs\n * @param sourceLocation\n */\n handleExtract(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [target, start, end],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n funcName: 'extract',\n callLocation: sourceLocation,\n argSpec: (a) => [a.required(bytesPType), a.required(uint64PType), a.optional(uint64PType)],\n })\n if (end) {\n const endExpr = end.resolve()\n codeInvariant(\n !(endExpr instanceof IntegerConstant && endExpr.value === 0n),\n 'Extract with length=0 will always return an empty byte array. Omit length parameter to extract to the end of the sequence.',\n )\n return instanceEb(\n nodeFactory.intrinsicCall({\n opCode: 'extract3',\n immediates: [],\n stackArgs: [target.resolve(), start.resolve(), endExpr],\n wtype: bytesPType.wtype,\n sourceLocation,\n }),\n bytesPType,\n )\n }\n const startExpr = start.resolve()\n if (startExpr instanceof IntegerConstant) {\n // Use immediate version of extract\n return instanceEb(\n nodeFactory.intrinsicCall({\n opCode: 'extract',\n immediates: [startExpr.value, 0n],\n stackArgs: [target.resolve()],\n wtype: bytesPType.wtype,\n sourceLocation,\n }),\n bytesPType,\n )\n } else {\n const targetExpr = target.singleEvaluation().resolve()\n const startExpr = start.singleEvaluation().resolve()\n return instanceEb(\n nodeFactory.intrinsicCall({\n opCode: 'extract3',\n immediates: [],\n stackArgs: [\n targetExpr,\n startExpr,\n nodeFactory.uInt64BinaryOperation({\n op: UInt64BinaryOperator.sub,\n sourceLocation,\n left: intrinsicFactory.bytesLen({ value: targetExpr, sourceLocation }),\n right: startExpr,\n }),\n ],\n wtype: bytesPType.wtype,\n sourceLocation,\n }),\n bytesPType,\n )\n }\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n if (this.opMapping.op === 'extract3') {\n return this.handleExtract(args, typeArgs, sourceLocation)\n }\n signatureLoop: for (const [index, sig] of this.opMapping.signatures.entries()) {\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 { invariant } from '../../util'\nimport type { PType } from '../ptypes'\nimport { ReferenceArrayGeneric, ReferenceArrayType } from '../ptypes'\nimport type { InstanceBuilder, NodeBuilder } from './index'\nimport { ClassBuilder, InstanceExpressionBuilder } from './index'\nimport { AtFunctionBuilder } from './shared/at-function-builder'\nimport { ArrayPopFunctionBuilder } from './shared/pop-function-builder'\nimport { ArrayPushFunctionBuilder } from './shared/push-function-builder'\nimport { requireExpressionOfType } from './util'\nimport { parseFunctionArgs } from './util/arg-parsing'\nimport { indexAccess } from './util/array/index-access'\nimport { arrayLength } from './util/array/length'\n\nexport class ReferenceArrayClassBuilder extends ClassBuilder {\n ptype = ReferenceArrayGeneric\n newCall(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): InstanceBuilder {\n const {\n args: [...initialValues],\n ptypes: [itemType],\n } = parseFunctionArgs({\n args,\n typeArgs,\n callLocation: sourceLocation,\n funcName: this.typeDescription,\n genericTypeArgs: 1,\n argSpec: (a) => args.map((_) => a.required()),\n })\n const arrayType = ReferenceArrayGeneric.parameterise([itemType])\n return new ReferenceArrayExpressionBuilder(\n nodeFactory.newArray({\n values: initialValues.map((iv) => requireExpressionOfType(iv, itemType)),\n sourceLocation,\n wtype: arrayType.wtype,\n }),\n ReferenceArrayGeneric.parameterise([itemType]),\n )\n }\n}\n\nexport class ReferenceArrayExpressionBuilder extends InstanceExpressionBuilder<ReferenceArrayType> {\n constructor(expr: Expression, ptype: PType) {\n invariant(ptype instanceof ReferenceArrayType, 'ptype must be ReferenceArrayType')\n super(expr, ptype)\n }\n\n iterate(sourceLocation: SourceLocation): Expression {\n return this.resolve()\n }\n\n indexAccess(index: InstanceBuilder | bigint, sourceLocation: SourceLocation): NodeBuilder {\n return indexAccess(this, index, sourceLocation)\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n switch (name) {\n case 'push':\n return new ArrayPushFunctionBuilder(this)\n case 'pop':\n return new ArrayPopFunctionBuilder(this)\n case 'length':\n return arrayLength(this, sourceLocation)\n case 'at':\n return new AtFunctionBuilder(this._expr, this.ptype.elementType, arrayLength(this, sourceLocation).resolve(), sourceLocation)\n }\n return super.memberAccess(name, sourceLocation)\n }\n}\n","import { intrinsicFactory } from '../../../awst/intrinsic-factory'\nimport { nodeFactory } from '../../../awst/node-factory'\nimport type { Expression } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport { wtypes } from '../../../awst/wtypes'\nimport type { PType } from '../../ptypes'\nimport { BytesPType, 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] }),\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): InstanceBuilder {\n return instanceEb(intrinsicFactory.itob({ value: this.resolve(), sourceLocation }), new BytesPType({ length: 8n }))\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, bytesPType, stringPType, uint64PType } from '../../ptypes'\nimport { instanceEb } from '../../type-registry'\nimport { BooleanExpressionBuilder } from '../boolean-expression-builder'\nimport type { BuilderComparisonOp, InstanceBuilder, NodeBuilder } from '../index'\nimport { FunctionBuilder } from '../index'\nimport { requireExpressionOfType, requireStringConstant } from '../util'\nimport { parseFunctionArgs } from '../util/arg-parsing'\nimport { compareBytes } from '../util/compare-bytes'\nimport { ReferenceTypeExpressionBuilder } from './base'\n\nexport class AccountFunctionBuilder extends FunctionBuilder {\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [addressOrKey],\n } = parseFunctionArgs({\n args,\n typeArgs,\n callLocation: sourceLocation,\n funcName: 'Account function',\n genericTypeArgs: 0,\n argSpec: (a) => [a.optional(stringPType, bytesPType)],\n })\n\n if (!addressOrKey) {\n return new AccountExpressionBuilder(\n nodeFactory.intrinsicCall({\n opCode: 'global',\n immediates: ['ZeroAddress'],\n stackArgs: [],\n sourceLocation,\n wtype: accountPType.wtype,\n }),\n )\n }\n if (addressOrKey.ptype.equals(stringPType)) {\n const address = requireStringConstant(addressOrKey)\n return new AccountExpressionBuilder(\n nodeFactory.addressConstant({\n value: address.value,\n sourceLocation: address.sourceLocation,\n wtype: accountPType.wtype,\n }),\n )\n }\n\n return new AccountExpressionBuilder(\n nodeFactory.reinterpretCast({\n expr: requireExpressionOfType(addressOrKey, bytesPType),\n wtype: accountPType.wtype,\n sourceLocation,\n }),\n )\n }\n}\nexport class AccountExpressionBuilder extends ReferenceTypeExpressionBuilder {\n constructor(expr: Expression) {\n super(expr, {\n backingType: new BytesPType({ length: 32n }),\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): InstanceBuilder {\n return instanceEb(\n nodeFactory.reinterpretCast({\n expr: this._expr,\n wtype: wtypes.bytesWType,\n sourceLocation,\n }),\n bytesPType,\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] }),\n sourceLocation,\n }),\n index: 1n,\n sourceLocation,\n }),\n )\n } else {\n return new BooleanExpressionBuilder(\n nodeFactory.intrinsicCall({\n opCode: 'app_opted_in',\n stackArgs: [this.expr, applicationOrAsset.resolve()],\n sourceLocation,\n wtype: wtypes.boolWType,\n immediates: [],\n }),\n )\n }\n }\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { 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] }),\n sourceLocation,\n })\n return instanceEb(nodeFactory.checkedMaybe({ expr: op, comment: `account opted into asset` }), resultType)\n }\n}\nexport class AssetExpressionBuilder extends Uint64BackedReferenceTypeExpressionBuilder {\n constructor(expr: Expression) {\n super(expr, {\n ptype: assetPType,\n backingMember: 'id',\n fieldOpCode: 'asset_params_get',\n fieldMapping: {\n total: ['AssetTotal', uint64PType],\n decimals: ['AssetDecimals', uint64PType],\n defaultFrozen: ['AssetDefaultFrozen', boolPType],\n unitName: ['AssetUnitName', bytesPType],\n name: ['AssetName', bytesPType],\n url: ['AssetURL', bytesPType],\n metadataHash: ['AssetMetadataHash', bytesPType],\n manager: ['AssetManager', accountPType],\n reserve: ['AssetReserve', accountPType],\n freeze: ['AssetFreeze', accountPType],\n clawback: ['AssetClawback', accountPType],\n creator: ['AssetCreator', accountPType],\n },\n fieldBoolComment: 'asset exists',\n })\n }\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n if (name in AssetHoldingExpressionBuilder.fieldMapping) {\n return new AssetHoldingExpressionBuilder(\n this.resolve(),\n name as keyof typeof AssetHoldingExpressionBuilder.fieldMapping,\n sourceLocation,\n )\n }\n return super.memberAccess(name, sourceLocation)\n }\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { Expression } from '../../../awst/nodes'\nimport { BytesConstant } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport type { wtypes } from '../../../awst/wtypes'\nimport type { InstanceBuilder } from '../index'\n\nexport function extractKey(key: InstanceBuilder, keyWType: wtypes.WType, sourceLocation: SourceLocation): Expression\nexport function extractKey(key: InstanceBuilder | undefined, keyWType: wtypes.WType, sourceLocation: SourceLocation): Expression | undefined\nexport function extractKey(\n key: InstanceBuilder | undefined,\n keyWType: wtypes.WType,\n sourceLocation: SourceLocation,\n): Expression | undefined {\n if (!key) return undefined\n\n const keyBytes = key.toBytes(key.sourceLocation).resolve()\n if (keyBytes instanceof BytesConstant) {\n return nodeFactory.bytesConstant({\n ...keyBytes,\n wtype: keyWType,\n sourceLocation,\n })\n } else {\n return nodeFactory.reinterpretCast({\n expr: keyBytes,\n wtype: keyWType,\n 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 { AppStorageType, ContractClassPType } from '../ptypes'\nimport { BoxMapPType, BoxPType, BoxRefPType, GlobalStateType, LocalStateType, TransientType, UnsupportedType } from '../ptypes'\n\nexport class AppStorageDeclaration {\n readonly memberName: string\n readonly ptype: AppStorageType\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: AppStorageType\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 instanceof UnsupportedType || this.ptype.contentType instanceof TransientType) {\n throw new CodeError(`Type ${this.ptype.contentType} cannot be used for storage`, { sourceLocation: this.sourceLocation })\n }\n return nodeFactory.appStorageDefinition({\n ...this,\n kind: this.kind,\n key: this.key,\n keyWtype: this.ptype instanceof BoxMapPType ? this.ptype.keyType.wtypeOrThrow : 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 | bigint, 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(\n head: string,\n spans: ReadonlyArray<readonly [InstanceBuilder, string]>,\n typeArgs: readonly PType[],\n sourceLocation: SourceLocation,\n ): InstanceBuilder {\n return this.proxied.taggedTemplate(head, spans, typeArgs, 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): InstanceBuilder {\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, bytesPType, type ContractClassPType, type PType, uint64PType } from '../../../ptypes'\nimport { instanceEb } from '../../../type-registry'\nimport type { InstanceBuilder } from '../../index'\nimport { InstanceExpressionBuilder } from '../../index'\nimport { ValueProxy } from '../value-proxy'\n\nexport abstract class BoxProxyExpressionBuilder<\n TProxyType extends BoxMapPType | BoxRefPType | BoxPType,\n> extends InstanceExpressionBuilder<TProxyType> {\n buildStorageDeclaration(\n memberName: string,\n memberLocation: SourceLocation,\n memberDescription: string | null,\n contractType: ContractClassPType,\n ): AppStorageDeclaration {\n codeInvariant(\n this._expr instanceof BytesConstant,\n `key${this.ptype instanceof BoxMapPType ? ' prefix' : ''} must be a compile time constant value if ${this.typeDescription} is assigned to a contract member`,\n )\n return new AppStorageDeclaration({\n sourceLocation: memberLocation,\n ptype: this.ptype,\n memberName: memberName,\n keyOverride: this._expr ?? null,\n description: memberDescription,\n definedIn: contractType,\n })\n }\n\n toBytes(sourceLocation: SourceLocation): InstanceBuilder {\n return instanceEb(nodeFactory.reinterpretCast({ expr: this.resolve(), wtype: wtypes.bytesWType, sourceLocation }), bytesPType)\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] }),\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'\n\nimport { invariant } from '../../../../util'\nimport type { PType } from '../../../ptypes'\nimport { boolPType, BoxRefPType, boxRefType, bytesPType, ReadonlyTuplePType, 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, sourceLocation), boxRefType)\n }\n}\n\nexport class BoxRefExpressionBuilder extends BoxProxyExpressionBuilder<BoxRefPType> {\n constructor(expr: Expression, ptype: PType) {\n invariant(ptype instanceof BoxRefPType, 'BoxRefExpressionBuilder must be constructed with ptype of BoxRefPType')\n super(expr, ptype)\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n const boxValueExpr = boxValue({\n key: this._expr,\n sourceLocation,\n contentType: this.ptype.contentType,\n })\n switch (name) {\n case 'key':\n return this.toBytes(sourceLocation)\n case 'get':\n return new BoxRefGetFunctionBuilder(boxValueExpr)\n case 'delete':\n return new BoxRefDeleteFunctionBuilder(boxValueExpr)\n case 'put':\n return new BoxRefPutFunctionBuilder(boxValueExpr)\n case 'splice':\n return new BoxRefSpliceFunctionBuilder(boxValueExpr)\n case 'create':\n return new BoxRefCreateFunctionBuilder(boxValueExpr)\n case 'resize':\n return new BoxRefResizeFunctionBuilder(boxValueExpr)\n case 'extract':\n return new BoxRefExtractFunctionBuilder(boxValueExpr)\n case 'replace':\n return new BoxRefReplaceFunctionBuilder(boxValueExpr)\n case 'exists':\n return boxExists(boxValueExpr, sourceLocation)\n case 'maybe':\n return new BoxRefMaybeFunctionBuilder(boxValueExpr)\n case 'length':\n return boxLength(boxValueExpr, sourceLocation)\n case 'value':\n return new BoxValueExpressionBuilder(boxValueExpr, this.ptype.contentType)\n }\n return super.memberAccess(name, sourceLocation)\n }\n}\n\nabstract class BoxRefBaseFunctionBuilder extends FunctionBuilder {\n constructor(protected readonly boxValue: BoxValueExpression) {\n super(boxValue.sourceLocation)\n }\n}\n\nclass BoxRefCreateFunctionBuilder extends BoxRefBaseFunctionBuilder {\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [{ size }],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n funcName: 'BoxRef.create',\n callLocation: sourceLocation,\n argSpec: (a) => [a.obj({ size: a.required(uint64PType) })],\n })\n return instanceEb(\n nodeFactory.intrinsicCall({\n opCode: 'box_create',\n stackArgs: [this.boxValue.key, size.resolve()],\n wtype: wtypes.boolWType,\n immediates: [],\n sourceLocation,\n }),\n boolPType,\n )\n }\n}\nclass BoxRefResizeFunctionBuilder extends BoxRefBaseFunctionBuilder {\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [size],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n funcName: 'BoxRef.resize',\n callLocation: sourceLocation,\n argSpec: (a) => [a.required(uint64PType)],\n })\n return instanceEb(\n nodeFactory.intrinsicCall({\n opCode: 'box_resize',\n stackArgs: [this.boxValue.key, size.resolve()],\n wtype: wtypes.voidWType,\n immediates: [],\n sourceLocation,\n }),\n voidPType,\n )\n }\n}\nclass BoxRefExtractFunctionBuilder extends BoxRefBaseFunctionBuilder {\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [start, length],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n funcName: 'BoxRef.extract',\n callLocation: sourceLocation,\n argSpec: (a) => [a.required(uint64PType), a.required(uint64PType)],\n })\n return instanceEb(\n nodeFactory.intrinsicCall({\n opCode: 'box_extract',\n stackArgs: [this.boxValue.key, start.resolve(), length.resolve()],\n wtype: wtypes.bytesWType,\n immediates: [],\n sourceLocation,\n }),\n bytesPType,\n )\n }\n}\nclass BoxRefReplaceFunctionBuilder extends BoxRefBaseFunctionBuilder {\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [start, value],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n funcName: 'BoxRef.replace',\n callLocation: sourceLocation,\n argSpec: (a) => [a.required(uint64PType), a.required(bytesPType)],\n })\n return instanceEb(\n nodeFactory.intrinsicCall({\n opCode: 'box_replace',\n stackArgs: [this.boxValue.key, start.resolve(), value.resolve()],\n wtype: wtypes.voidWType,\n immediates: [],\n sourceLocation,\n }),\n voidPType,\n )\n }\n}\nclass BoxRefGetFunctionBuilder extends BoxRefBaseFunctionBuilder {\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [{ default: defaultValue }],\n } = parseFunctionArgs({\n args,\n typeArgs,\n funcName: 'BoxRef.get',\n callLocation: sourceLocation,\n genericTypeArgs: 0,\n argSpec: (a) => [a.obj({ default: a.optional(bytesPType) })],\n })\n\n if (defaultValue) {\n return instanceEb(\n nodeFactory.stateGet({\n sourceLocation,\n default: defaultValue.resolve(),\n wtype: wtypes.bytesWType,\n field: this.boxValue,\n }),\n bytesPType,\n )\n } else {\n return new BoxValueExpressionBuilder(this.boxValue, bytesPType)\n }\n }\n}\n\nclass BoxRefPutFunctionBuilder extends BoxRefBaseFunctionBuilder {\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [value],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n funcName: 'BoxRef.put',\n callLocation: sourceLocation,\n argSpec: (a) => [a.required(bytesPType)],\n })\n return instanceEb(\n nodeFactory.intrinsicCall({\n opCode: 'box_put',\n stackArgs: [this.boxValue.key, value.resolve()],\n wtype: wtypes.voidWType,\n immediates: [],\n sourceLocation,\n }),\n voidPType,\n )\n }\n}\nclass BoxRefSpliceFunctionBuilder extends BoxRefBaseFunctionBuilder {\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [start, stop, value],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n funcName: 'BoxRef.splice',\n callLocation: sourceLocation,\n argSpec: (a) => [a.required(uint64PType), a.required(uint64PType), a.required(bytesPType)],\n })\n return instanceEb(\n nodeFactory.intrinsicCall({\n opCode: 'box_splice',\n stackArgs: [this.boxValue.key, start.resolve(), stop.resolve(), value.resolve()],\n wtype: wtypes.voidWType,\n immediates: [],\n sourceLocation,\n }),\n voidPType,\n )\n }\n}\n\nclass BoxRefMaybeFunctionBuilder extends BoxRefBaseFunctionBuilder {\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n parseFunctionArgs({\n args,\n typeArgs,\n funcName: 'BoxRef.maybe',\n callLocation: sourceLocation,\n genericTypeArgs: 0,\n argSpec: () => [],\n })\n const type = new ReadonlyTuplePType({ items: [bytesPType, boolPType] })\n\n return instanceEb(\n nodeFactory.stateGetEx({\n sourceLocation,\n wtype: type.wtype,\n field: this.boxValue,\n }),\n type,\n )\n }\n}\n\nclass BoxRefDeleteFunctionBuilder extends BoxRefBaseFunctionBuilder {\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n parseFunctionArgs({\n args,\n typeArgs,\n funcName: 'BoxRef.delete',\n callLocation: sourceLocation,\n genericTypeArgs: 0,\n argSpec: () => [],\n })\n\n return instanceEb(\n nodeFactory.stateDelete({\n field: this.boxValue,\n sourceLocation,\n wtype: wtypes.boolWType,\n }),\n boolPType,\n )\n }\n}\n","import { nodeFactory } from '../../../../awst/node-factory'\nimport type { 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, boxRefType, bytesPType, ReadonlyTuplePType, stringPType, uint64PType } 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'\nimport { BoxRefExpressionBuilder } from './box-ref'\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, sourceLocation), 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 'create':\n return new BoxCreateFunctionBuilder(boxValueExpr, this.ptype.contentType, sourceLocation)\n case 'key':\n return this.toBytes(sourceLocation)\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 case 'ref':\n return new BoxRefExpressionBuilder(this._expr, boxRefType)\n }\n return super.memberAccess(name, sourceLocation)\n }\n}\n\nclass BoxCreateFunctionBuilder extends FunctionBuilder {\n constructor(\n private boxValue: BoxValueExpression,\n private 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: [{ size }],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n callLocation: sourceLocation,\n funcName: 'Box.create',\n argSpec: (a) => [a.obj({ size: a.optional(uint64PType) })],\n })\n if (size) {\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\n return instanceEb(\n nodeFactory.intrinsicCall({\n opCode: 'box_create',\n stackArgs: [\n this.boxValue.key,\n nodeFactory.sizeOf({ sizeWtype: this.contentType.wtypeOrThrow, sourceLocation, wtype: wtypes.uint64WType }),\n ],\n wtype: wtypes.boolWType,\n immediates: [],\n sourceLocation,\n }),\n boolPType,\n )\n }\n}\n\nclass BoxDeleteFunctionBuilder extends FunctionBuilder {\n constructor(\n private boxValue: BoxValueExpression,\n sourceLocation: SourceLocation,\n ) {\n super(sourceLocation)\n }\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n argSpec: (a) => [],\n callLocation: sourceLocation,\n funcName: 'delete',\n })\n return instanceEb(\n nodeFactory.stateDelete({\n sourceLocation,\n field: this.boxValue,\n wtype: wtypes.boolWType,\n }),\n boolPType,\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 ReadonlyTuplePType({ items: [this.contentType, boolPType] })\n return instanceEb(\n nodeFactory.stateGetEx({\n sourceLocation,\n wtype: type.wtype,\n field: this.boxValue,\n }),\n type,\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'\n\nimport { invariant } from '../../../../util'\nimport type { PType } from '../../../ptypes'\nimport { BoxMapPType, BoxPType, bytesPType, stringPType } from '../../../ptypes'\nimport { FunctionBuilder, type NodeBuilder } from '../../index'\nimport { parseFunctionArgs } from '../../util/arg-parsing'\nimport { extractKey } from '../util'\nimport { BoxProxyExpressionBuilder } from './base'\nimport { BoxExpressionBuilder } from './box'\n\nexport class BoxMapFunctionBuilder extends FunctionBuilder {\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n ptypes: [keySuffixType, contentPType],\n args: [{ keyPrefix }],\n } = parseFunctionArgs({\n args,\n typeArgs,\n funcName: `BoxMap`,\n callLocation: sourceLocation,\n genericTypeArgs: 2,\n argSpec: (a) => [a.obj({ keyPrefix: a.required(bytesPType, stringPType) })],\n })\n\n const ptype = new BoxMapPType({ content: contentPType, keyType: keySuffixType })\n return new BoxMapExpressionBuilder(extractKey(keyPrefix, wtypes.boxKeyWType, sourceLocation), ptype)\n }\n}\n\nexport class BoxMapExpressionBuilder extends BoxProxyExpressionBuilder<BoxMapPType> {\n constructor(expr: Expression, ptype: PType) {\n invariant(ptype instanceof BoxMapPType, 'BoxMapExpressionBuilder must be constructed with ptype of BoxMapPType')\n super(expr, ptype)\n }\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [key],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n callLocation: sourceLocation,\n argSpec: (a) => [a.required(this.ptype.keyType)],\n funcName: 'BoxMap',\n })\n\n return new BoxExpressionBuilder(\n nodeFactory.boxPrefixedKeyExpression({\n key: key.resolve(),\n prefix: this._expr,\n sourceLocation: this.sourceLocation,\n wtype: wtypes.boxKeyWType,\n }),\n new BoxPType({\n content: this.ptype.contentType,\n }),\n )\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n switch (name) {\n case 'keyPrefix':\n return this.toBytes(sourceLocation)\n }\n return super.memberAccess(name, sourceLocation)\n }\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { AppStateExpression, Expression } from '../../../awst/nodes'\nimport { BytesConstant } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport { wtypes } from '../../../awst/wtypes'\nimport { codeInvariant, invariant } from '../../../util'\nimport { AppStorageDeclaration } from '../../models/app-storage-declaration'\nimport type { ContractClassPType, PType } from '../../ptypes'\nimport { boolPType, bytesPType, GlobalStateType, stringPType } from '../../ptypes'\nimport { typeRegistry } from '../../type-registry'\nimport { BooleanExpressionBuilder } from '../boolean-expression-builder'\nimport type { NodeBuilder } from '../index'\nimport { FunctionBuilder, InstanceExpressionBuilder } from '../index'\nimport { parseFunctionArgs } from '../util/arg-parsing'\nimport { VoidExpressionBuilder } from '../void-expression-builder'\nimport { extractKey } from './util'\n\nexport class GlobalStateFunctionBuilder extends FunctionBuilder {\n constructor(sourceLocation: SourceLocation) {\n super(sourceLocation)\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const [contentPType] = typeArgs\n const {\n args: [{ initialValue, key }],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 1,\n argSpec: (a) => [\n a.obj({\n initialValue: a.optional(contentPType),\n key: a.optional(stringPType, bytesPType),\n }),\n ],\n funcName: this.typeDescription,\n callLocation: sourceLocation,\n })\n const ptype = new GlobalStateType({ content: contentPType })\n\n return new GlobalStateFunctionResultBuilder(\n extractKey(key, wtypes.stateKeyWType, sourceLocation),\n ptype,\n initialValue?.resolve(),\n sourceLocation,\n )\n }\n}\n\nclass GlobalStateDeleteFunctionBuilder extends FunctionBuilder {\n constructor(\n private key: AppStateExpression,\n sourceLocation: SourceLocation,\n ) {\n super(sourceLocation)\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n callLocation: sourceLocation,\n funcName: 'GlobalState.delete',\n argSpec: () => [],\n })\n return new VoidExpressionBuilder(\n nodeFactory.stateDelete({\n field: this.key,\n sourceLocation,\n wtype: wtypes.voidWType,\n }),\n )\n }\n}\n\nexport class GlobalStateExpressionBuilder extends InstanceExpressionBuilder<GlobalStateType> {\n constructor(expr: Expression, ptype: PType) {\n invariant(ptype instanceof GlobalStateType, 'ptype must be instance of GlobalStateType')\n super(expr, ptype)\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n switch (name) {\n case 'delete':\n return new GlobalStateDeleteFunctionBuilder(this.buildField(this.sourceLocation), sourceLocation)\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(this.sourceLocation),\n wtype: boolPType.wtype,\n sourceLocation,\n }),\n )\n }\n return super.memberAccess(name, sourceLocation)\n }\n\n protected 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 GlobalStateExpressionBuilder {\n resolve(): Expression {\n codeInvariant(\n this._keyExpr,\n 'Global state must have explicit key provided if not being assigned to a contract property',\n this.sourceLocation,\n )\n codeInvariant(!this.initialValue, 'Global state can only have an initial value specified if being assigned to a contract property')\n return this._expr\n }\n public readonly initialValue: Expression | undefined\n\n private readonly _keyExpr: Expression | undefined\n\n constructor(expr: Expression | undefined, ptype: PType, initialValue: Expression | undefined, sourceLocation: SourceLocation) {\n super(expr ?? nodeFactory.voidConstant({ sourceLocation }), ptype)\n this.initialValue = initialValue\n this._keyExpr = expr\n }\n\n protected buildField(sourceLocation: SourceLocation): AppStateExpression {\n codeInvariant(\n this._keyExpr,\n 'Global state must have explicit key provided if not being assigned to a contract property',\n this.sourceLocation,\n )\n return super.buildField(sourceLocation)\n }\n\n buildStorageDeclaration(\n memberName: string,\n memberLocation: SourceLocation,\n memberDescription: string | null,\n contractType: ContractClassPType,\n ): AppStorageDeclaration {\n if (this._keyExpr)\n codeInvariant(\n this._keyExpr instanceof BytesConstant,\n `key must be a compile time constant value if ${this.typeDescription} is assigned to a contract member`,\n )\n return new AppStorageDeclaration({\n sourceLocation: memberLocation,\n ptype: this.ptype,\n memberName: memberName,\n keyOverride: this._keyExpr ?? null,\n description: memberDescription,\n definedIn: contractType,\n })\n }\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { AppAccountStateExpression, AppStateExpression, Expression, LValue } from '../../../awst/nodes'\nimport { BytesConstant } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport { wtypes } from '../../../awst/wtypes'\nimport { CodeError } from '../../../errors'\nimport { codeInvariant, invariant } from '../../../util'\nimport { AppStorageDeclaration } from '../../models/app-storage-declaration'\n\nimport type { ContractClassPType, PType } from '../../ptypes'\nimport { accountPType, boolPType, bytesPType, LocalStateType, stringPType } from '../../ptypes'\nimport { instanceEb } from '../../type-registry'\nimport { FunctionBuilder, InstanceBuilder, InstanceExpressionBuilder, NodeBuilder } from '../index'\nimport { parseFunctionArgs } from '../util/arg-parsing'\nimport { VoidExpressionBuilder } from '../void-expression-builder'\nimport { extractKey } from './util'\n\nexport class LocalStateFunctionBuilder extends FunctionBuilder {\n constructor(sourceLocation: SourceLocation) {\n super(sourceLocation)\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const [contentPType] = typeArgs\n const {\n args: [{ key }],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 1,\n argSpec: (a) => [\n a.obj({\n key: a.optional(stringPType, bytesPType),\n }),\n ],\n funcName: this.typeDescription,\n callLocation: sourceLocation,\n })\n const ptype = new LocalStateType({ content: contentPType })\n return new LocalStateFunctionResultBuilder(extractKey(key, wtypes.stateKeyWType, sourceLocation), 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 readonly isConstant = false\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\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 new LocalStateExpressionBuilder(this._expr, this.ptype).call(args, typeArgs, sourceLocation)\n }\n\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\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 checkForUnclonedMutables(scenario: string) {\n // Nothing to see here\n return false\n }\n}\n","import * as A from 'arcsecond'\nimport { hexToUint8Array, utf8ToUint8Array } from './index'\n\nexport const TemplateVarNameRegex = /^[A-Z\\d_]+/\n\nconst templateVarName = A.regex(TemplateVarNameRegex)\n\nconst hexBytes = A.sequenceOf([A.str('0x'), A.regex(/^([A-F0-9]{2})*/)]).map(([prefix, chars]) => hexToUint8Array(chars))\n\nconst integer = A.regex(/^\\d+/).map((x) => BigInt(x))\n\nconst string = A.regex(/^.*/).map(utf8ToUint8Array)\n\nconst templateVarValue = A.choice([hexBytes, integer, string])\n\nconst templateVar = A.coroutine((parse) => {\n const name = parse(templateVarName)\n parse(A.char('='))\n const value = parse(templateVarValue)\n parse(A.endOfInput)\n return [name, value] as const\n})\n\nexport const parseCliTemplateVar = (text: string): readonly [string, Uint8Array | bigint] => {\n const result = templateVar.run(text)\n if (result.isError) {\n throw new Error('Cannot parse cli template var. Make sure it is in the form VAR_NAME={value}', { cause: result.error })\n } else {\n return result.result\n }\n}\n","import { nodeFactory } from '../../awst/node-factory'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { logger } from '../../logger'\nimport { TemplateVarNameRegex } from '../../util/template-var-cli-parser'\nimport type { PType } from '../ptypes'\nimport { stringPType, TemplateVarFunction } from '../ptypes'\nimport { instanceEb } from '../type-registry'\nimport type { NodeBuilder } from './index'\nimport { FunctionBuilder } from './index'\nimport { requireStringConstant } from './util'\nimport { parseFunctionArgs } from './util/arg-parsing'\n\nexport class TemplateVarFunctionBuilder extends FunctionBuilder {\n readonly ptype = TemplateVarFunction\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [name, prefix],\n ptypes: [varType],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 1,\n callLocation: sourceLocation,\n funcName: this.typeDescription,\n argSpec: (a) => [a.required(stringPType), a.optional(stringPType)],\n })\n\n const nameStr = requireStringConstant(name).value\n const validName = TemplateVarNameRegex.exec(nameStr)\n if (validName?.[0] !== nameStr) {\n logger.error(\n name.sourceLocation,\n 'Invalid name. Template variable names must only contain capital letters A-Z, numbers 0-9, and underscores',\n )\n }\n\n const prefixStr = prefix ? requireStringConstant(prefix).value : 'TMPL_'\n\n return instanceEb(\n nodeFactory.templateVar({\n name: `${prefixStr}${nameStr}`,\n wtype: varType.wtypeOrThrow,\n sourceLocation,\n }),\n varType,\n )\n }\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { Expression } from '../../../awst/nodes'\nimport { IntegerConstant } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport { Constants } from '../../../constants'\nimport { logger } from '../../../logger'\nimport { invariant } from '../../../util'\nimport type { PType } from '../../ptypes'\nimport { GroupTransactionPType, TransactionFunctionType, uint64PType } from '../../ptypes'\nimport type { TxnFieldMetaData } from '../../txn-fields'\nimport { getTxnFieldMetaData } from '../../txn-fields'\nimport { instanceEb } from '../../type-registry'\nimport type { NodeBuilder } from '../index'\nimport { FunctionBuilder, InstanceExpressionBuilder } from '../index'\nimport { parseFunctionArgs } from '../util/arg-parsing'\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 return getTxnFieldMetaData({ kind: this.ptype.kind, memberName: name }) !== false\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n const data = getTxnFieldMetaData({ kind: this.ptype.kind, memberName: name })\n if (data) {\n if (data.indexable !== true) {\n return instanceEb(\n nodeFactory.intrinsicCall({\n sourceLocation,\n stackArgs: [this._expr],\n immediates: [data.field],\n wtype: data.ptype.wtypeOrThrow,\n opCode: 'gtxns',\n }),\n data.ptype,\n )\n } else {\n return new IndexedTransactionFieldFunctionBuilder(this._expr, {\n txnData: data,\n memberName: name,\n })\n }\n }\n return super.memberAccess(name, sourceLocation)\n }\n}\n\nexport class GroupTransactionFunctionBuilder extends FunctionBuilder {\n readonly ptype: TransactionFunctionType\n\n constructor(sourceLocation: SourceLocation, ptype: PType) {\n super(sourceLocation)\n invariant(ptype instanceof TransactionFunctionType, 'ptype must be instance of TransactionFunctionType')\n this.ptype = ptype\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [groupIndexBuilder],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n callLocation: sourceLocation,\n funcName: this.ptype.name,\n argSpec: (a) => [a.required(uint64PType)],\n })\n const txnPType = getGroupTransactionType(this.ptype.kind)\n const groupIndex = groupIndexBuilder.resolve()\n if (groupIndex instanceof IntegerConstant && groupIndex.value >= Constants.algo.maxTransactionGroupSize) {\n logger.error(groupIndex.sourceLocation, `transaction group index should be less than ${Constants.algo.maxTransactionGroupSize}`)\n }\n\n return new GroupTransactionExpressionBuilder(\n nodeFactory.groupTransactionReference({\n index: groupIndex,\n wtype: txnPType.wtype,\n sourceLocation,\n }),\n txnPType,\n )\n }\n}\n\nclass IndexedTransactionFieldFunctionBuilder extends FunctionBuilder {\n constructor(\n private gtxn: Expression,\n private config: { txnData: TxnFieldMetaData; 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.field],\n wtype: this.config.txnData.ptype.wtypeOrThrow,\n opCode: 'gtxnsas',\n }),\n this.config.txnData.ptype,\n )\n }\n}\n","import { TransactionKind } from '../../../awst/models'\nimport { nodeFactory } from '../../../awst/node-factory'\nimport { ARC4ABIMethodConfig, type Expression } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport { TxnField } from '../../../awst/txn-fields'\nimport { codeInvariant, enumFromValue, invariant } from '../../../util'\nimport { buildArc4MethodConstant } from '../../arc4-util'\nimport { AwstBuildContext } from '../../context/awst-build-context'\nimport type { PType } from '../../ptypes'\nimport { anyItxnParamsType, itxnComposePType, ItxnParamsPType, Uint64EnumMemberLiteralType, voidPType } from '../../ptypes'\nimport { getPropertyType } from '../../ptypes/visitors/index-type-visitor'\nimport { instanceEb } from '../../type-registry'\nimport { buildApplicationCallTxnFields } from '../arc4/c2c'\nimport { ContractMethodExpressionBuilder } from '../free-subroutine-expression-builder'\nimport { FunctionBuilder, NodeBuilder } from '../index'\nimport { parseFunctionArgs } from '../util/arg-parsing'\nimport { mapTransactionFields } from './inner-transaction-params'\nimport { getItxnParamsType } from './util'\n\nexport class ItxnComposeBuilder extends NodeBuilder {\n ptype = itxnComposePType\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n switch (name) {\n case 'begin':\n case 'next':\n return new ItxnComposeBeginOrNextFunctionBuilder(name, sourceLocation)\n case 'submit':\n return new ItxnComposeSubmitFunctionBuilder(sourceLocation)\n }\n return super.memberAccess(name, sourceLocation)\n }\n}\n\nclass ItxnComposeBeginOrNextFunctionBuilder extends FunctionBuilder {\n constructor(\n private methodCalled: 'begin' | 'next',\n sourceLocation: SourceLocation,\n ) {\n super(sourceLocation)\n }\n get typeDescription() {\n return this.methodCalled\n }\n\n private get startWithBegin() {\n return this.methodCalled === 'begin'\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const itxns: Expression[] = []\n\n if (args.length === 1) {\n // fields or itxn\n const {\n args: [itxnOrFields],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n callLocation: sourceLocation,\n funcName: this.typeDescription,\n argSpec: (a) => [a.required()],\n })\n if (itxnOrFields.ptype instanceof ItxnParamsPType) {\n itxns.push(itxnOrFields.resolve())\n } else {\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\n mapTransactionFields(mappedFields, itxnOrFields, undefined, sourceLocation)\n\n const type = getPropertyType(itxnOrFields.ptype, 'type', sourceLocation)\n let fieldsType: ItxnParamsPType\n if (type instanceof Uint64EnumMemberLiteralType) {\n const txnKind = enumFromValue(Number(type.value), TransactionKind)\n fieldsType = getItxnParamsType(txnKind)\n } else {\n fieldsType = anyItxnParamsType\n }\n\n itxns.push(\n nodeFactory.createInnerTransaction({\n fields: mappedFields,\n sourceLocation,\n wtype: fieldsType.wtype,\n }),\n )\n }\n } else {\n // abiCall\n const {\n args: [functionRef, fields],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 1,\n argSpec: (a) => [a.passthrough(), a.required()],\n callLocation: sourceLocation,\n funcName: this.typeDescription,\n })\n\n invariant(\n functionRef instanceof ContractMethodExpressionBuilder,\n `Arg 0 of ${this.typeDescription} should be an arc4 contract method`,\n )\n const {\n target: { memberName },\n contractType,\n ptype: functionType,\n } = functionRef\n const arc4Config = AwstBuildContext.current.getArc4Config(contractType, memberName)\n codeInvariant(arc4Config instanceof ARC4ABIMethodConfig, `${memberName} is not an ABI method`, functionRef.sourceLocation)\n const methodSelector = buildArc4MethodConstant(functionType, arc4Config, sourceLocation)\n\n itxns.push(\n ...buildApplicationCallTxnFields({\n arc4Config,\n methodSelector,\n fields,\n sourceLocation,\n functionType,\n }),\n )\n }\n return instanceEb(\n nodeFactory.setInnerTransactionFields({\n itxns,\n startWithBegin: this.startWithBegin,\n sourceLocation,\n wtype: voidPType.wtype,\n }),\n voidPType,\n )\n }\n}\n\nclass ItxnComposeSubmitFunctionBuilder extends FunctionBuilder {\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n callLocation: sourceLocation,\n argSpec: () => [],\n funcName: 'submit',\n })\n return instanceEb(\n nodeFactory.intrinsicCall({\n opCode: 'itxn_submit',\n stackArgs: [],\n immediates: [],\n wtype: voidPType.wtype,\n sourceLocation,\n }),\n voidPType,\n )\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 { wtypes } from '../../awst/wtypes'\nimport { invariant } from '../../util'\nimport type { PType, PTypeOrClass } from '../ptypes'\nimport { Uint64EnumMemberLiteralType, Uint64EnumMemberType, Uint64EnumType, uint64PType } from '../ptypes'\nimport { instanceEb } from '../type-registry'\nimport type { BuilderComparisonOp, InstanceBuilder } from './index'\nimport { InstanceExpressionBuilder, NodeBuilder } from './index'\nimport { requireExpressionOfType } from './util'\nimport { compareUint64 } from './util/compare-uint64'\n\nexport class Uint64EnumTypeBuilder extends NodeBuilder {\n readonly ptype: Uint64EnumType\n constructor(sourceLocation: SourceLocation, ptype: PType) {\n super(sourceLocation)\n invariant(ptype instanceof Uint64EnumType, 'ptype must be Uint64EnumType')\n this.ptype = ptype\n }\n\n memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n if (name in this.ptype.members) {\n return new Uint64EnumMemberExpressionBuilder(\n nodeFactory.uInt64Constant({\n value: this.ptype.members[name],\n sourceLocation,\n }),\n this.ptype.memberType,\n )\n }\n return super.memberAccess(name, sourceLocation)\n }\n}\n\nexport class Uint64EnumMemberExpressionBuilder extends InstanceExpressionBuilder<Uint64EnumMemberType> {\n constructor(expr: Expression, ptype: PType) {\n invariant(ptype instanceof Uint64EnumMemberType, 'ptype must be Uint64EnumType')\n super(expr, ptype)\n }\n\n compare(other: InstanceBuilder, op: BuilderComparisonOp, sourceLocation: SourceLocation): InstanceBuilder {\n const otherExpr = requireExpressionOfType(other, uint64PType)\n return compareUint64(this._expr, otherExpr, op, sourceLocation, this.typeDescription)\n }\n\n resolvableToPType(ptype: PTypeOrClass): boolean {\n if (ptype.equals(this.ptype)) return true\n if (ptype instanceof Uint64EnumMemberLiteralType) {\n return (\n ptype.enumType.equals(this.ptype.enumType) &&\n this._expr instanceof IntegerConstant &&\n this.ptype.enumType.hasMember(this._expr.value)\n )\n }\n if (ptype instanceof Uint64EnumMemberType) {\n return ptype.enumType.equals(this.ptype.enumType)\n }\n return ptype.equals(this.ptype) || ptype.equals(uint64PType)\n }\n resolveToPType(ptype: PTypeOrClass): InstanceBuilder {\n if (ptype.equals(this.ptype)) {\n return this\n }\n if (\n ptype instanceof Uint64EnumMemberLiteralType &&\n ptype.enumType.equals(this.ptype.enumType) &&\n this._expr instanceof IntegerConstant &&\n this.ptype.enumType.hasMember(this._expr.value)\n ) {\n // Narrow to literal member\n return instanceEb(this._expr, this.ptype.enumType.getMemberLiteral(this._expr.value))\n }\n if (ptype instanceof Uint64EnumMemberType && ptype.enumType.equals(this.ptype.enumType)) {\n // Widen literal member to general member\n return instanceEb(this._expr, ptype)\n }\n if (ptype.equals(uint64PType)) {\n // Widen enum member to uint64\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: 1n, 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 {\n Arc4AbiMethodDecoratorBuilder,\n Arc4BareMethodDecoratorBuilder,\n ReadonlyDecoratorBuilder,\n} from '../eb/arc4-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 { AbiCallFunctionBuilder, CompileArc4FunctionBuilder, ContractProxyExpressionBuilder } from '../eb/arc4/c2c'\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 SizeOfFunctionBuilder,\n} from '../eb/arc4/util'\nimport {\n FixedArrayClassBuilder,\n FixedArrayExpressionBuilder,\n NativeArrayClassBuilder,\n NativeArrayExpressionBuilder,\n ReadonlyArrayExpressionBuilder,\n} from '../eb/array-like/arrays'\nimport { MutableTupleExpressionBuilder } from '../eb/array-like/mutable-tuple-expression-builder'\nimport { ReadonlyTupleExpressionBuilder } from '../eb/array-like/readonly-tuple-expression-builder'\nimport { ResolvedArrayLiteralExpressionBuilder } from '../eb/array-like/resolved-array-literal-expression-builder'\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 { CloneFunctionBuilder } from '../eb/clone-function-builder'\nimport { CompileFunctionBuilder } from '../eb/compiled/compile-function'\nimport { ContractClassBuilder, ContractOptionsDecoratorBuilder } from '../eb/contract-builder'\nimport { EnsureBudgetFunctionBuilder } from '../eb/ensure-budget'\n\nimport { FreeSubroutineExpressionBuilder } from '../eb/free-subroutine-expression-builder'\nimport { IntrinsicEnumBuilder } from '../eb/intrinsic-enum-builder'\nimport { IterableIteratorExpressionBuilder } from '../eb/iterable-iterator-expression-builder'\nimport { LogFunctionBuilder } from '../eb/log-function-builder'\nimport { LogicSigClassBuilder, LogicSigOptionsDecoratorBuilder } from '../eb/logic-sig-builder'\nimport { MatchFunctionBuilder } from '../eb/match-function-builder'\nimport { NamespaceBuilder } from '../eb/namespace-builder'\nimport { NeverExpressionBuilder } from '../eb/never-expression-builder'\nimport { ObjectWithOptionalFieldsExpressionBuilder } from '../eb/object-with-optional-fields'\nimport { MutableObjectExpressionBuilder } from '../eb/objects/mutable-object'\nimport { ObjectExpressionBuilder } from '../eb/objects/object-expression-builder'\nimport { ResolvedObjectLiteralExpressionBuilder } from '../eb/objects/resolved-object-literal-expression-builder'\nimport { FreeIntrinsicOpBuilder, IntrinsicOpGroupBuilder, IntrinsicOpGroupOrFunctionTypeBuilder } from '../eb/op-module-builder'\nimport { ReferenceArrayClassBuilder, ReferenceArrayExpressionBuilder } from '../eb/reference-arrays'\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 { ItxnComposeBuilder } from '../eb/transactions/itxn-compose'\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 abiCallFunction,\n AddressClass,\n arc4AddressAlias,\n ARC4BoolClass,\n arc4BooleanType,\n arc4ByteAlias,\n ARC4StrClass,\n arc4StringType,\n ARC4StructClass,\n ARC4StructType,\n Arc4TupleGeneric,\n ARC4TupleType,\n ByteClass,\n compileArc4Function,\n ContractProxyGeneric,\n ContractProxyType,\n decodeArc4Function,\n DynamicArrayGeneric,\n DynamicArrayType,\n DynamicBytesConstructor,\n DynamicBytesType,\n encodeArc4Function,\n interpretAsArc4Function,\n methodSelectorFunction,\n sizeOfFunction,\n StaticArrayGeneric,\n StaticArrayType,\n StaticBytesGeneric,\n StaticBytesType,\n UFixedNxMGeneric,\n UFixedNxMType,\n UintN128Class,\n UintN16Class,\n UintN256Class,\n UintN32Class,\n UintN64Class,\n UintN8Class,\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 ArrayGeneric,\n ArrayLiteralPType,\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 BoxGeneric,\n BoxMapGeneric,\n BoxMapPType,\n BoxPType,\n BoxRefFunction,\n boxRefType,\n BytesFunction,\n BytesGeneric,\n bytesPType,\n BytesPType,\n ClassMethodDecoratorContext,\n cloneFunctionPType,\n compileFunctionType,\n ContractClassPType,\n contractOptionsDecorator,\n ensureBudgetFunction,\n errFunction,\n FixedArrayGeneric,\n FixedArrayPType,\n FunctionPType,\n GeneratorGeneric,\n GeneratorType,\n GlobalStateGeneric,\n GlobalStateType,\n ImmutableObjectPType,\n inputOnlyObjects,\n IntrinsicFunctionGroupType,\n IntrinsicFunctionGroupTypeType,\n IntrinsicFunctionType,\n IntrinsicFunctionTypeType,\n IterableIteratorGeneric,\n IterableIteratorType,\n itxnComposePType,\n keyRegistrationGtxnType,\n keyRegistrationItxnFn,\n keyRegistrationItxnParamsType,\n keyRegistrationItxnType,\n KeyRegistrationTxnFunction,\n LocalStateGeneric,\n LocalStateType,\n logFunction,\n logicSigOptionsDecorator,\n LogicSigPType,\n matchFunction,\n MutableObjectPType,\n MutableTuplePType,\n NamespacePType,\n neverPType,\n ObjectLiteralPType,\n onCompleteActionType,\n opUpFeeSourceType,\n paymentGtxnType,\n paymentItxnFn,\n paymentItxnParamsType,\n paymentItxnType,\n PaymentTxnFunction,\n PolytypeClassMethodHelper,\n PromiseGeneric,\n PromiseType,\n ReadonlyArrayGeneric,\n ReadonlyArrayPType,\n readonlyDecorator,\n ReadonlyGeneric,\n ReadonlyTuplePType,\n ReferenceArrayGeneric,\n ReferenceArrayType,\n StringFunction,\n stringPType,\n submitGroupItxnFunction,\n SuperPrototypeSelector,\n SuperPrototypeSelectorGeneric,\n TemplateVarFunction,\n TransactionFunction,\n transactionTypeType,\n Uint64EnumMemberType,\n Uint64Function,\n uint64PType,\n urangeFunction,\n voidPType,\n} from './index'\nimport { ALL_OP_ENUMS } from './op-ptypes'\n\nexport function registerPTypes(typeRegistry: TypeRegistry) {\n if (typeRegistry.hasRegistrations) {\n return\n }\n // Primitives\n typeRegistry.register({ ptype: neverPType, instanceEb: NeverExpressionBuilder })\n typeRegistry.register({ ptype: boolPType, instanceEb: BooleanExpressionBuilder })\n typeRegistry.register({ ptype: BooleanFunction, singletonEb: BooleanFunctionBuilder })\n typeRegistry.register({ ptype: uint64PType, instanceEb: UInt64ExpressionBuilder })\n typeRegistry.register({ ptype: Uint64Function, singletonEb: UInt64FunctionBuilder })\n typeRegistry.register({ ptype: biguintPType, instanceEb: BigUintExpressionBuilder })\n typeRegistry.register({ ptype: BigUintFunction, singletonEb: BigUintFunctionBuilder })\n typeRegistry.registerGeneric({ generic: BytesGeneric, ptype: BytesPType, instanceEb: BytesExpressionBuilder })\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.registerGeneric({\n generic: ArrayGeneric,\n ptype: ArrayPType,\n instanceEb: NativeArrayExpressionBuilder,\n singletonEb: NativeArrayClassBuilder,\n })\n typeRegistry.registerGeneric({ generic: ReadonlyArrayGeneric, ptype: ReadonlyArrayPType, instanceEb: ReadonlyArrayExpressionBuilder })\n typeRegistry.register({ ptype: ReadonlyTuplePType, instanceEb: ReadonlyTupleExpressionBuilder })\n typeRegistry.register({ ptype: MutableTuplePType, instanceEb: MutableTupleExpressionBuilder })\n typeRegistry.registerGenericTypeOnly({ generic: ReadonlyGeneric })\n typeRegistry.register({ ptype: ArrayLiteralPType, instanceEb: ResolvedArrayLiteralExpressionBuilder })\n typeRegistry.register({ ptype: ImmutableObjectPType, instanceEb: ObjectExpressionBuilder })\n typeRegistry.register({ ptype: MutableObjectPType, instanceEb: MutableObjectExpressionBuilder })\n typeRegistry.register({ ptype: ObjectLiteralPType, instanceEb: ResolvedObjectLiteralExpressionBuilder })\n\n typeRegistry.registerGeneric({\n generic: FixedArrayGeneric,\n ptype: FixedArrayPType,\n instanceEb: FixedArrayExpressionBuilder,\n singletonEb: FixedArrayClassBuilder,\n })\n\n typeRegistry.registerGeneric({\n generic: ReferenceArrayGeneric,\n ptype: ReferenceArrayType,\n instanceEb: ReferenceArrayExpressionBuilder,\n singletonEb: ReferenceArrayClassBuilder,\n })\n\n // Unresolvable\n typeRegistry.registerGeneric({ ptype: GeneratorType, generic: GeneratorGeneric, instanceEb: UnresolvableExpressionBuilder })\n typeRegistry.registerGeneric({ ptype: PromiseType, generic: PromiseGeneric, instanceEb: UnresolvableExpressionBuilder })\n typeRegistry.register({ ptype: ClassMethodDecoratorContext, instanceEb: UnresolvableExpressionBuilder })\n typeRegistry.registerGeneric({\n ptype: SuperPrototypeSelector,\n generic: SuperPrototypeSelectorGeneric,\n instanceEb: UnresolvableExpressionBuilder,\n })\n typeRegistry.register({ ptype: PolytypeClassMethodHelper, instanceEb: UnresolvableExpressionBuilder })\n\n // Lib functions\n typeRegistry.register({ ptype: logFunction, singletonEb: LogFunctionBuilder })\n typeRegistry.register({ ptype: assertFunction, singletonEb: AssertFunctionBuilder })\n typeRegistry.register({ ptype: errFunction, singletonEb: ErrFunctionBuilder })\n typeRegistry.register({ ptype: matchFunction, singletonEb: MatchFunctionBuilder })\n typeRegistry.register({ ptype: assertMatchFunction, singletonEb: AssertMatchFunctionBuilder })\n typeRegistry.register({ ptype: ensureBudgetFunction, singletonEb: EnsureBudgetFunctionBuilder })\n typeRegistry.register({ ptype: urangeFunction, singletonEb: UrangeFunctionBuilder })\n typeRegistry.register({ ptype: TemplateVarFunction, singletonEb: TemplateVarFunctionBuilder })\n typeRegistry.register({ ptype: compileFunctionType, singletonEb: CompileFunctionBuilder })\n typeRegistry.register({ ptype: arc28EmitFunction, singletonEb: Arc28EmitFunctionBuilder })\n typeRegistry.register({ ptype: cloneFunctionPType, singletonEb: CloneFunctionBuilder })\n typeRegistry.register({ ptype: ContractClassPType, singletonEb: ContractClassBuilder })\n typeRegistry.register({ ptype: contractOptionsDecorator, singletonEb: ContractOptionsDecoratorBuilder })\n typeRegistry.register({ ptype: LogicSigPType, singletonEb: LogicSigClassBuilder })\n typeRegistry.register({ ptype: logicSigOptionsDecorator, singletonEb: LogicSigOptionsDecoratorBuilder })\n\n for (const enumType of [opUpFeeSourceType, onCompleteActionType, transactionTypeType]) {\n typeRegistry.register({ ptype: enumType, singletonEb: Uint64EnumTypeBuilder })\n typeRegistry.register({ ptype: enumType.memberType, instanceEb: Uint64EnumMemberExpressionBuilder })\n }\n typeRegistry.register({ ptype: Uint64EnumMemberType, instanceEb: Uint64EnumMemberExpressionBuilder })\n\n typeRegistry.registerGeneric({\n generic: IterableIteratorGeneric,\n ptype: IterableIteratorType,\n instanceEb: IterableIteratorExpressionBuilder,\n })\n\n typeRegistry.register({ ptype: FunctionPType, singletonEb: FreeSubroutineExpressionBuilder })\n\n // Op types\n typeRegistry.register({ ptype: NamespacePType, singletonEb: NamespaceBuilder })\n for (const enumPType of ALL_OP_ENUMS) {\n typeRegistry.register({ ptype: enumPType, singletonEb: IntrinsicEnumBuilder })\n }\n for (const [name, metadata] of Object.entries(OP_METADATA)) {\n if (metadata.type === 'op-grouping') {\n typeRegistry.register({\n ptype: new IntrinsicFunctionGroupType({\n name,\n }),\n singletonEb: IntrinsicOpGroupBuilder,\n })\n typeRegistry.register({\n ptype: new IntrinsicFunctionGroupTypeType({\n name: `${name}Type`,\n }),\n instanceEb: IntrinsicOpGroupOrFunctionTypeBuilder,\n })\n } else {\n typeRegistry.register({\n ptype: new IntrinsicFunctionType({\n name,\n }),\n singletonEb: FreeIntrinsicOpBuilder,\n })\n typeRegistry.register({\n ptype: new IntrinsicFunctionTypeType({\n name: `${name}Type`,\n }),\n instanceEb: IntrinsicOpGroupOrFunctionTypeBuilder,\n })\n }\n }\n\n // State\n typeRegistry.registerGeneric({\n generic: GlobalStateGeneric,\n ptype: GlobalStateType,\n instanceEb: GlobalStateExpressionBuilder,\n singletonEb: GlobalStateFunctionBuilder,\n })\n typeRegistry.registerGeneric({\n generic: LocalStateGeneric,\n ptype: LocalStateType,\n instanceEb: LocalStateExpressionBuilder,\n singletonEb: LocalStateFunctionBuilder,\n })\n typeRegistry.registerGeneric({ generic: BoxGeneric, ptype: BoxPType, instanceEb: BoxExpressionBuilder, singletonEb: BoxFunctionBuilder })\n typeRegistry.registerGeneric({\n generic: BoxMapGeneric,\n ptype: BoxMapPType,\n instanceEb: BoxMapExpressionBuilder,\n singletonEb: BoxMapFunctionBuilder,\n })\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: readonlyDecorator, singletonEb: ReadonlyDecoratorBuilder })\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({\n generic: UintNGeneric,\n ptype: UintNType,\n instanceEb: UintNExpressionBuilder,\n singletonEb: UintNClassBuilder,\n })\n typeRegistry.registerGeneric({\n generic: UFixedNxMGeneric,\n ptype: UFixedNxMType,\n instanceEb: UFixedNxMExpressionBuilder,\n singletonEb: UFixedNxMClassBuilder,\n })\n typeRegistry.register({ ptype: arc4ByteAlias, instanceEb: UintNExpressionBuilder })\n\n // More specific types need to be registered before their base types\n // This ensures the specific type is selected during type resolution\n // For example, StaticBytesExpressionBuilder should be selected over general StaticArrayExpressionBuilder for StaticBytesType\n typeRegistry.register({ ptype: DynamicBytesConstructor, singletonEb: DynamicBytesClassBuilder })\n typeRegistry.register({ ptype: DynamicBytesType, instanceEb: DynamicBytesExpressionBuilder })\n typeRegistry.registerGeneric({\n generic: StaticBytesGeneric,\n ptype: StaticBytesType,\n instanceEb: StaticBytesExpressionBuilder,\n singletonEb: StaticBytesClassBuilder,\n })\n\n typeRegistry.registerGeneric({\n generic: DynamicArrayGeneric,\n ptype: DynamicArrayType,\n instanceEb: DynamicArrayExpressionBuilder,\n singletonEb: DynamicArrayClassBuilder,\n })\n typeRegistry.registerGeneric({\n generic: StaticArrayGeneric,\n ptype: StaticArrayType,\n instanceEb: StaticArrayExpressionBuilder,\n singletonEb: StaticArrayClassBuilder,\n })\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.registerGeneric({\n generic: Arc4TupleGeneric,\n ptype: ARC4TupleType,\n instanceEb: Arc4TupleExpressionBuilder,\n singletonEb: Arc4TupleClassBuilder,\n })\n typeRegistry.register({ ptype: ARC4StructType, instanceEb: StructExpressionBuilder })\n typeRegistry.register({ ptype: ARC4StructClass, singletonEb: StructClassBuilder })\n\n // ARC4 lib\n typeRegistry.register({ ptype: interpretAsArc4Function, singletonEb: InterpretAsArc4FunctionBuilder })\n typeRegistry.register({ ptype: encodeArc4Function, singletonEb: EncodeArc4FunctionBuilder })\n typeRegistry.register({ ptype: decodeArc4Function, singletonEb: DecodeArc4FunctionBuilder })\n typeRegistry.register({ ptype: methodSelectorFunction, singletonEb: MethodSelectorFunctionBuilder })\n typeRegistry.register({ ptype: sizeOfFunction, singletonEb: SizeOfFunctionBuilder })\n typeRegistry.register({ ptype: compileArc4Function, singletonEb: CompileArc4FunctionBuilder })\n typeRegistry.register({ ptype: abiCallFunction, singletonEb: AbiCallFunctionBuilder })\n typeRegistry.registerGeneric({ ptype: ContractProxyType, generic: ContractProxyGeneric, instanceEb: ContractProxyExpressionBuilder })\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 // ITXN Compose\n typeRegistry.register({ ptype: itxnComposePType, singletonEb: ItxnComposeBuilder })\n\n for (const inputType of inputOnlyObjects) {\n typeRegistry.register({ ptype: inputType, instanceEb: ObjectWithOptionalFieldsExpressionBuilder })\n }\n}\n","import type {\n AddressConstant,\n AppAccountStateExpression,\n AppStateExpression,\n AppStorageDefinition,\n ARC4Decode,\n ARC4Encode,\n ARC4Router,\n ArrayConcat,\n ArrayExtend,\n ArrayLength,\n ArrayPop,\n ArrayReplace,\n AssertExpression,\n AssignmentExpression,\n AssignmentStatement,\n BigUIntAugmentedAssignment,\n BigUIntBinaryOperation,\n BigUIntPostfixUnaryOperation,\n Block,\n BoolConstant,\n BooleanBinaryOperation,\n BoxPrefixedKeyExpression,\n BoxValueExpression,\n BytesAugmentedAssignment,\n BytesBinaryOperation,\n BytesComparisonExpression,\n BytesConstant,\n BytesUnaryOperation,\n CheckedMaybe,\n CommaExpression,\n CompiledContract,\n CompiledLogicSig,\n ConditionalExpression,\n Contract,\n ContractMemberNodeVisitor,\n ContractMethod,\n ConvertArray,\n Copy,\n CreateInnerTransaction,\n DecimalConstant,\n Emit,\n Enumeration,\n ExpressionStatement,\n ExpressionVisitor,\n FieldExpression,\n ForInLoop,\n Goto,\n GroupTransactionReference,\n IfElse,\n IndexExpression,\n InnerTransactionField,\n IntegerConstant,\n IntersectionSliceExpression,\n IntrinsicCall,\n LogicSignature,\n LoopContinue,\n LoopExit,\n MethodConstant,\n NewArray,\n NewStruct,\n Not,\n NumericComparisonExpression,\n PuyaLibCall,\n Range,\n ReinterpretCast,\n ReturnStatement,\n Reversed,\n RootNodeVisitor,\n SetInnerTransactionFields,\n SingleEvaluation,\n SizeOf,\n SliceExpression,\n StateDelete,\n StateExists,\n StateGet,\n StateGetEx,\n StatementVisitor,\n StringConstant,\n SubmitInnerTransaction,\n Subroutine,\n SubroutineCallExpression,\n Switch,\n TemplateVar,\n TupleExpression,\n TupleItemExpression,\n UInt64AugmentedAssignment,\n UInt64BinaryOperation,\n UInt64PostfixUnaryOperation,\n UInt64UnaryOperation,\n UpdateInnerTransaction,\n VarExpression,\n VoidConstant,\n WhileLoop,\n} from '../nodes'\nimport { Expression } from '../nodes'\n\nexport class FunctionTraverser implements ExpressionVisitor<void>, StatementVisitor<void> {\n visitExpressionStatement(statement: ExpressionStatement): void {\n statement.expr.accept(this)\n }\n\n visitBlock(statement: Block): void {\n for (const s of statement.body) {\n s.accept(this)\n }\n }\n\n visitConvertArray(expression: ConvertArray): void {\n expression.expr.accept(this)\n }\n\n visitCommaExpression(expression: CommaExpression): void {\n for (const expr of expression.expressions) {\n expr.accept(this)\n }\n }\n\n visitArrayLength(expression: ArrayLength): void {\n expression.array.accept(this)\n }\n\n visitArrayReplace(expression: ArrayReplace): void {\n expression.base.accept(this)\n expression.index.accept(this)\n expression.value.accept(this)\n }\n\n visitGoto(statement: Goto): void {}\n\n visitIfElse(statement: IfElse): void {\n statement.condition.accept(this)\n statement.ifBranch.accept(this)\n statement.elseBranch?.accept(this)\n }\n\n visitSwitch(statement: Switch): void {\n statement.value.accept(this)\n for (const [cv, cb] of statement.cases.entries()) {\n cv.accept(this)\n cb.accept(this)\n }\n statement.defaultCase?.accept(this)\n }\n\n visitWhileLoop(statement: WhileLoop): void {\n statement.condition.accept(this)\n statement.loopBody.accept(this)\n }\n\n visitLoopExit(statement: LoopExit): void {}\n\n visitLoopContinue(statement: LoopContinue): void {}\n\n visitReturnStatement(statement: ReturnStatement): void {\n statement.value?.accept(this)\n }\n\n visitAssignmentStatement(statement: AssignmentStatement): void {\n statement.target.accept(this)\n statement.value.accept(this)\n }\n\n visitUInt64AugmentedAssignment(statement: UInt64AugmentedAssignment): void {\n statement.target.accept(this)\n statement.value.accept(this)\n }\n\n visitBigUIntAugmentedAssignment(statement: BigUIntAugmentedAssignment): void {\n statement.target.accept(this)\n statement.value.accept(this)\n }\n\n visitBytesAugmentedAssignment(statement: BytesAugmentedAssignment): void {\n statement.target.accept(this)\n statement.value.accept(this)\n }\n\n visitForInLoop(statement: ForInLoop): void {\n statement.items.accept(this)\n statement.sequence.accept(this)\n statement.loopBody.accept(this)\n }\n\n visitAssertExpression(expression: AssertExpression): void {\n expression.condition?.accept(this)\n }\n\n visitIntegerConstant(expression: IntegerConstant): void {}\n\n visitDecimalConstant(expression: DecimalConstant): void {}\n\n visitBoolConstant(expression: BoolConstant): void {}\n\n visitBytesConstant(expression: BytesConstant): void {}\n\n visitStringConstant(expression: StringConstant): void {}\n\n visitVoidConstant(expression: VoidConstant): void {}\n\n visitTemplateVar(expression: TemplateVar): void {}\n\n visitMethodConstant(expression: MethodConstant): void {}\n\n visitAddressConstant(expression: AddressConstant): void {}\n\n visitARC4Encode(expression: ARC4Encode): void {\n expression.value.accept(this)\n }\n\n visitCopy(expression: Copy): void {\n expression.value.accept(this)\n }\n\n visitArrayConcat(expression: ArrayConcat): void {\n expression.left.accept(this)\n expression.right.accept(this)\n }\n\n visitArrayPop(expression: ArrayPop): void {\n expression.base.accept(this)\n }\n\n visitArrayExtend(expression: ArrayExtend): void {\n expression.base.accept(this)\n expression.other.accept(this)\n }\n\n visitARC4Decode(expression: ARC4Decode): void {\n expression.value.accept(this)\n }\n\n visitIntrinsicCall(expression: IntrinsicCall): void {\n for (const a of expression.stackArgs) {\n a.accept(this)\n }\n }\n\n visitCreateInnerTransaction(expression: CreateInnerTransaction): void {\n for (const v of expression.fields.values()) {\n v.accept(this)\n }\n }\n\n visitUpdateInnerTransaction(expression: UpdateInnerTransaction): void {\n for (const v of expression.fields.values()) {\n v.accept(this)\n }\n }\n\n visitGroupTransactionReference(expression: GroupTransactionReference): void {\n expression.index.accept(this)\n }\n\n visitCheckedMaybe(expression: CheckedMaybe): void {\n expression.expr.accept(this)\n }\n\n visitTupleExpression(expression: TupleExpression): void {\n for (const v of expression.items) {\n v.accept(this)\n }\n }\n\n visitTupleItemExpression(expression: TupleItemExpression): void {\n expression.base.accept(this)\n }\n\n visitVarExpression(expression: VarExpression): void {}\n\n visitInnerTransactionField(expression: InnerTransactionField): void {\n expression.itxn.accept(this)\n expression.arrayIndex?.accept(this)\n }\n\n visitSetInnerTransactionFields(expression: SetInnerTransactionFields): void {\n for (const itxn of expression.itxns) {\n itxn.accept(this)\n }\n }\n\n visitSubmitInnerTransaction(expression: SubmitInnerTransaction): void {\n for (const itxn of expression.itxns) {\n itxn.accept(this)\n }\n }\n\n visitSizeOf(expression: SizeOf): void {}\n\n visitFieldExpression(expression: FieldExpression): void {\n expression.base.accept(this)\n }\n\n visitIndexExpression(expression: IndexExpression): void {\n expression.base.accept(this)\n expression.index.accept(this)\n }\n\n visitSliceExpression(expression: SliceExpression): void {\n expression.base.accept(this)\n expression.beginIndex?.accept(this)\n expression.endIndex?.accept(this)\n }\n\n visitIntersectionSliceExpression(expression: IntersectionSliceExpression): void {\n expression.base.accept(this)\n expression.beginIndex instanceof Expression && expression.beginIndex.accept(this)\n expression.endIndex instanceof Expression && expression.endIndex.accept(this)\n }\n\n visitAppStateExpression(expression: AppStateExpression): void {\n expression.key.accept(this)\n }\n\n visitAppAccountStateExpression(expression: AppAccountStateExpression): void {\n expression.key.accept(this)\n expression.account.accept(this)\n }\n\n visitBoxPrefixedKeyExpression(expression: BoxPrefixedKeyExpression): void {\n expression.key.accept(this)\n expression.prefix.accept(this)\n }\n\n visitBoxValueExpression(expression: BoxValueExpression): void {\n expression.key.accept(this)\n }\n\n visitSingleEvaluation(expression: SingleEvaluation): void {\n expression.source.accept(this)\n }\n\n visitReinterpretCast(expression: ReinterpretCast): void {\n expression.expr.accept(this)\n }\n\n visitNewArray(expression: NewArray): void {\n for (const v of expression.values) {\n v.accept(this)\n }\n }\n\n visitConditionalExpression(expression: ConditionalExpression): void {\n expression.condition.accept(this)\n expression.trueExpr.accept(this)\n expression.falseExpr.accept(this)\n }\n\n visitAssignmentExpression(expression: AssignmentExpression): void {\n expression.target.accept(this)\n expression.value.accept(this)\n }\n\n visitNumericComparisonExpression(expression: NumericComparisonExpression): void {\n expression.lhs.accept(this)\n expression.rhs.accept(this)\n }\n\n visitBytesComparisonExpression(expression: BytesComparisonExpression): void {\n expression.lhs.accept(this)\n expression.rhs.accept(this)\n }\n\n visitSubroutineCallExpression(expression: SubroutineCallExpression): void {\n for (const a of expression.args) {\n a.value.accept(this)\n }\n }\n\n visitPuyaLibCall(expression: PuyaLibCall): void {\n for (const a of expression.args) {\n a.value.accept(this)\n }\n }\n\n visitUInt64UnaryOperation(expression: UInt64UnaryOperation): void {\n expression.expr.accept(this)\n }\n\n visitUInt64PostfixUnaryOperation(expression: UInt64PostfixUnaryOperation): void {\n expression.target.accept(this)\n }\n\n visitBigUIntPostfixUnaryOperation(expression: BigUIntPostfixUnaryOperation): void {\n expression.target.accept(this)\n }\n\n visitBytesUnaryOperation(expression: BytesUnaryOperation): void {\n expression.expr.accept(this)\n }\n\n visitUInt64BinaryOperation(expression: UInt64BinaryOperation): void {\n expression.left.accept(this)\n expression.right.accept(this)\n }\n\n visitBigUIntBinaryOperation(expression: BigUIntBinaryOperation): void {\n expression.left.accept(this)\n expression.right.accept(this)\n }\n\n visitBytesBinaryOperation(expression: BytesBinaryOperation): void {\n expression.left.accept(this)\n expression.right.accept(this)\n }\n\n visitBooleanBinaryOperation(expression: BooleanBinaryOperation): void {\n expression.left.accept(this)\n expression.right.accept(this)\n }\n\n visitNot(expression: Not): void {\n expression.expr.accept(this)\n }\n\n visitEmit(expression: Emit): void {\n expression.value.accept(this)\n }\n\n visitRange(expression: Range): void {\n expression.start.accept(this)\n expression.stop.accept(this)\n expression.step.accept(this)\n }\n\n visitEnumeration(expression: Enumeration): void {\n expression.expr.accept(this)\n }\n\n visitReversed(expression: Reversed): void {\n expression.expr.accept(this)\n }\n\n visitStateGet(expression: StateGet): void {\n expression.default.accept(this)\n expression.field.accept(this)\n }\n\n visitStateGetEx(expression: StateGetEx): void {\n expression.field.accept(this)\n }\n\n visitStateExists(expression: StateExists): void {\n expression.field.accept(this)\n }\n\n visitStateDelete(expression: StateDelete): void {\n expression.field.accept(this)\n }\n\n visitNewStruct(expression: NewStruct): void {\n for (const v of expression.values.values()) {\n v.accept(this)\n }\n }\n\n visitCompiledContract(expression: CompiledContract): void {\n for (const v of expression.templateVariables.values()) {\n v.accept(this)\n }\n for (const v of expression.allocationOverrides.values()) {\n v.accept(this)\n }\n }\n\n visitCompiledLogicSig(expression: CompiledLogicSig): void {\n for (const v of expression.templateVariables.values()) {\n v.accept(this)\n }\n }\n\n visitARC4Router(expression: ARC4Router): void {}\n}\n\nexport class AwstTraverser extends FunctionTraverser implements RootNodeVisitor<void>, ContractMemberNodeVisitor<void> {\n visitContractMethod(contractMemberNode: ContractMethod): void {\n contractMemberNode.body.accept(this)\n }\n visitAppStorageDefinition(contractMemberNode: AppStorageDefinition): void {\n contractMemberNode.key.accept(this)\n }\n visitSubroutine(rootNode: Subroutine): void {\n rootNode.body.accept(this)\n }\n visitLogicSignature(rootNode: LogicSignature): void {\n rootNode.program.accept(this)\n }\n visitContract(rootNode: Contract): void {\n for (const s of rootNode.appState) {\n s.accept(this)\n }\n for (const m of rootNode.methods) {\n m.accept(this)\n }\n }\n}\n","import { Constants } from '../../constants'\nimport { logger } from '../../logger'\nimport type { ARC4Router, AWST, ContractMethod, SubroutineCallExpression } from '../nodes'\nimport { Contract, InstanceSuperMethodTarget } from '../nodes'\nimport { FunctionTraverser } from './awst-traverser'\n\nexport class Arc4ApprovalCallsRouter extends FunctionTraverser {\n static validate(awst: AWST[]) {\n for (const item of awst) {\n if (item instanceof Contract) {\n if (item.methods.some((m) => m.arc4MethodConfig)) {\n const validator = new Arc4ApprovalCallsRouter()\n validator.validate(item.approvalProgram)\n }\n }\n }\n }\n\n #superCalled = false\n #routerCalled = false\n\n validate(approvalProgram: ContractMethod) {\n approvalProgram.body.accept(this)\n if (!this.#superCalled && !this.#routerCalled) {\n logger.warn(\n approvalProgram.sourceLocation,\n 'Contract overrides approval program method but does not appear to call super.approvalProgram(). ARC4 routing may not work as expected',\n )\n }\n }\n\n visitSubroutineCallExpression(expression: SubroutineCallExpression) {\n if (\n expression.target instanceof InstanceSuperMethodTarget &&\n expression.target.memberName === Constants.symbolNames.approvalProgramMethodName\n ) {\n this.#superCalled = true\n }\n super.visitSubroutineCallExpression(expression)\n }\n\n visitARC4Router(expression: ARC4Router) {\n this.#routerCalled = true\n super.visitARC4Router(expression)\n }\n}\n","import type { AWST } from '../nodes'\nimport { Arc4ApprovalCallsRouter } from './arc4-approval-calls-router'\n\ntype ModuleValidator = {\n validate(awst: AWST[]): void\n}\n\nconst validators: ModuleValidator[] = [Arc4ApprovalCallsRouter]\n\nexport function validateAwst(awst: AWST[]): void {\n for (const validator of validators) {\n validator.validate(awst)\n }\n}\n","function positiveMod(x: number, m: number) {\n return ((x % m) + m) % m\n}\nfunction repeat<T>(c: T, n: number): T[] {\n return new Array<T>(n).fill(c)\n}\nfunction* batchBytesToUintN(bytes: Uint8Array, n: number): Generator<bigint> {\n const numberBytes = n / 8\n for (let i = 0; i < bytes.length / numberBytes; i += 1) {\n yield new Array(numberBytes).fill(null).reduce((acc, _, index) => {\n const offset = index + i * numberBytes\n if (offset >= bytes.length) {\n throw new Error('Needs padding')\n }\n return (acc << 8n) + BigInt(bytes[offset])\n }, 0n)\n }\n}\n\n/**\n * This implementation of base85 encoding matches python's base64.b85encode(...) function which is based on the character set of rfc1924\n * but supports arbitrary sized input.\n *\n * It IS NOT an ascii85 implementation\n */\nexport function buildBase85Encoder() {\n const b85Alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!#$%&()*+-;<=>?@^_`{|}~'\n const b85Chars = b85Alphabet.split('')\n const b85DoubleChars = b85Chars.flatMap((c) => b85Chars.map((c2) => c + c2))\n\n function encode(b: Uint8Array, chars: string[], doubleChars: string[]) {\n const padding = positiveMod(-b.length, 4)\n if (padding) {\n b = new Uint8Array([...b, ...repeat(0, padding)])\n }\n let result = ''\n for (const word of batchBytesToUintN(b, 4 * 8)) {\n result += doubleChars[Number(word / 85n ** 3n)]\n result += doubleChars[Number((word / 85n) % 85n ** 2n)]\n result += chars[Number(word % 85n)]\n }\n return result.slice(0, result.length - padding)\n }\n\n return {\n encode(b: Uint8Array) {\n return encode(b, b85Chars, b85DoubleChars)\n },\n encodeUtf8(s: string) {\n const b = new TextEncoder().encode(s)\n return this.encode(b)\n },\n }\n}\n","import type { DeliberateAny } from '../typescript-helpers'\nimport {\n ARC4Router,\n ArrayConcat,\n ArrayLength,\n ArrayPop,\n ArrayReplace,\n AssertExpression,\n AssignmentExpression,\n BigUIntBinaryOperation,\n BigUIntPostfixUnaryOperation,\n BooleanBinaryOperation,\n BoxPrefixedKeyExpression,\n BytesComparisonExpression,\n BytesUnaryOperation,\n CheckedMaybe,\n CommaExpression,\n Emit,\n Enumeration,\n ExpressionStatement,\n FieldExpression,\n Not,\n NumericComparisonExpression,\n PuyaLibCall,\n Range,\n Reversed,\n SetInnerTransactionFields,\n SingleEvaluation,\n SizeOf,\n StateExists,\n StateGet,\n StateGetEx,\n SubmitInnerTransaction,\n TupleItemExpression,\n UInt64BinaryOperation,\n UInt64PostfixUnaryOperation,\n UInt64UnaryOperation,\n UpdateInnerTransaction,\n VoidConstant,\n} from './nodes'\nimport { wtypes } from './wtypes'\n\n/* eslint-disable @typescript-eslint/no-unsafe-function-type */\n\n/**\n * Identifies properties which can be safely omitted from serialization in order\n * to decrease the size of the json.\n *\n * These are typically properties which have init=False on the puya end\n */\nconst doNotSerialize = new Map<Function, string[]>([\n pair(SingleEvaluation, 'wtype'),\n pair(ExpressionStatement, 'sourceLocation'),\n pair(AssertExpression, 'wtype'),\n pair(VoidConstant, 'wtype'),\n pair(ArrayConcat, 'wtype'),\n pair(ArrayPop, 'wtype'),\n pair(ArrayReplace, 'wtype'),\n pair(ArrayLength, 'wtype'),\n pair(SizeOf, 'wtype'),\n pair(UpdateInnerTransaction, 'wtype'),\n pair(CheckedMaybe, 'wtype', 'sourceLocation'),\n pair(TupleItemExpression, 'wtype'),\n pair(SetInnerTransactionFields, 'wtype'),\n pair(SubmitInnerTransaction, 'wtype'),\n pair(FieldExpression, 'wtype'),\n pair(BoxPrefixedKeyExpression, 'wtype'),\n pair(AssignmentExpression, 'wtype'),\n pair(CommaExpression, 'wtype'),\n pair(NumericComparisonExpression, 'wtype'),\n pair(BytesComparisonExpression, 'wtype'),\n pair(PuyaLibCall, 'wtype'),\n pair(UInt64UnaryOperation, 'wtype'),\n pair(UInt64PostfixUnaryOperation, 'wtype'),\n pair(BigUIntPostfixUnaryOperation, 'wtype'),\n pair(BytesUnaryOperation, 'wtype'),\n pair(UInt64BinaryOperation, 'wtype'),\n pair(BigUIntBinaryOperation, 'wtype'),\n pair(BooleanBinaryOperation, 'wtype'),\n pair(Not, 'wtype'),\n pair(Emit, 'wtype'),\n pair(Range, 'wtype'),\n pair(Enumeration, 'wtype'),\n pair(Reversed, 'wtype'),\n pair(StateGet, 'wtype'),\n pair(StateGetEx, 'wtype'),\n pair(StateExists, 'wtype'),\n pair(ARC4Router, 'wtype'),\n\n pair(wtypes.BytesWType, 'name', 'immutable'),\n pair(wtypes.WEnumeration, 'name'),\n pair(wtypes.ReferenceArray, 'name', 'immutable'),\n pair(wtypes.WTuple, 'immutable'),\n pair(wtypes.ARC4UIntN, 'immutable', 'name'),\n pair(wtypes.ARC4UFixedNxM, 'immutable', 'name'),\n pair(wtypes.ARC4Tuple, 'immutable', 'name', 'arc4Alias'),\n pair(wtypes.ARC4DynamicArray, 'name'),\n pair(wtypes.ARC4StaticArray, 'name'),\n pair(wtypes.ARC4Struct, 'arc4Alias', 'immutable'),\n])\n\n/**\n * Helper function which provides type safety when specifying properties to be ignored from a given type\n * @param ctor The constructor of the target type\n * @param excludedKeys A list of keys from that type\n */\nfunction pair<T>(ctor: new (props: DeliberateAny) => T, ...excludedKeys: Array<keyof T & string>): [Function, string[]] {\n return [ctor, excludedKeys]\n}\n\n/**\n * Generates an object with all excluded properties for the given type, set to the value undefined.\n * @param nodeOrWType The constructor for the target type\n */\nexport function generateExcludedPropsObj(nodeOrWType: Function): object {\n const excludedProps = doNotSerialize.get(nodeOrWType)\n if (!excludedProps?.length) return {}\n return Object.fromEntries(excludedProps.map((p) => [p, undefined]))\n}\n","import { snakeCase } from 'change-case'\nimport path from 'node:path'\nimport { Constants } from '../constants'\nimport { InternalError } from '../errors'\nimport { invariant } from '../util'\nimport { buildBase85Encoder } from '../util/base-85'\nimport { ContractReference, LogicSigReference } from './models'\nimport type { RootNode } from './nodes'\nimport { IntrinsicCall, SingleEvaluation } from './nodes'\nimport { generateExcludedPropsObj } from './nodes-meta'\nimport { SourceLocation } from './source-location'\nimport { SymbolToNumber } from './util'\n\ntype JSONWithRaw = typeof JSON & {\n /**\n * This method exists in Node 21+ and several browsers but hasn't made its way into the typescript lib\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/rawJSON\n *\n *\n */\n rawJSON?(value: string): string\n}\n\nfunction serializeBigInt(value: bigint): unknown {\n const jsonWithRaw = JSON as unknown as JSONWithRaw\n if (jsonWithRaw.rawJSON) {\n return jsonWithRaw.rawJSON(`${value}`)\n }\n if (value < 0n) {\n if (value < Number.MIN_SAFE_INTEGER) {\n throw new InternalError(`Cannot safely serialize ${value} to JSON`)\n }\n return Number(value)\n } else {\n if (value > Number.MAX_SAFE_INTEGER) {\n return `${value}`\n }\n return Number(value)\n }\n}\n\nexport class SnakeCaseSerializer<T> {\n constructor(private readonly spaces = 0) {}\n public serialize(obj: T): string {\n return JSON.stringify(obj, (k, v) => this.serializerFunction(k, v), this.spaces)\n }\n private b85 = buildBase85Encoder()\n\n protected serializerFunction(key: string, value: unknown): unknown {\n if (typeof value === 'bigint') {\n return serializeBigInt(value)\n }\n if (value instanceof Uint8Array) {\n return this.b85.encode(value)\n }\n if (value instanceof Object && value.constructor.name !== 'Date' && value.constructor.name !== 'Object') {\n return {\n ...Object.fromEntries(Object.entries(value).map(([key, value]) => [snakeCase(key), value])),\n }\n }\n return value\n }\n}\n\nexport class AwstSerializer extends SnakeCaseSerializer<RootNode[]> {\n constructor(\n private options?: {\n sourcePaths?: 'absolute' | 'relative'\n programDirectory?: string\n spaces?: number\n },\n ) {\n super(options?.spaces ?? 0)\n }\n #singleEvals = new SymbolToNumber()\n\n protected serializerFunction(key: string, value: unknown): unknown {\n if (value instanceof Set) {\n return Array.from(value.keys())\n }\n if (value instanceof Array) {\n return value\n }\n if (value instanceof Map) {\n if (value.size === 0) return {}\n const keyType = typeof value.keys().next().value\n if (keyType === 'string' || keyType === 'number') {\n return Object.fromEntries(value.entries())\n }\n if (keyType === 'bigint') {\n return Object.fromEntries(Array.from(value.entries()).map(([k, v]) => [`${k}`, v]))\n }\n return Array.from(value.entries())\n }\n if (value instanceof Uint8Array) {\n return super.serializerFunction(key, value)\n }\n if (value instanceof ContractReference || value instanceof LogicSigReference) {\n return value.toString()\n }\n if (value instanceof IntrinsicCall) {\n // Convert bigint immediates to number so they serialize without quotes and can be disambiguated from string immediates\n return {\n _type: IntrinsicCall.name,\n ...(super.serializerFunction(key, value) as object),\n immediates: value.immediates.map((i) => {\n if (typeof i === 'bigint') {\n return serializeBigInt(i)\n }\n return i\n }),\n }\n }\n if (value instanceof SourceLocation && value.file) {\n let filePath: string = value.file\n if (this.options?.sourcePaths === 'absolute' && !path.isAbsolute(value.file)) {\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).id),\n ...generateExcludedPropsObj(SingleEvaluation),\n }\n }\n\n if (value instanceof Object && value.constructor.name !== 'Object') {\n return {\n _type: value.constructor.name,\n ...(super.serializerFunction(key, value) as object),\n ...generateExcludedPropsObj(value.constructor),\n }\n }\n return super.serializerFunction(key, value)\n }\n}\n\nexport function jsonSerializeAwst(awst: RootNode[]): string {\n return new AwstSerializer({ spaces: 2 }).serialize(awst)\n}\n","import { Buffer } from 'node:buffer'\nimport { InternalError } from '../errors'\nimport { uint8ArrayToBase32, uint8ArrayToUtf8 } from '../util'\nimport type { ContractReference } from './models'\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\n nodes.RootNodeVisitor<string[]>,\n nodes.ContractMemberNodeVisitor<string[]>,\n nodes.StatementVisitor<string[]>,\n nodes.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 visitCommaExpression(expression: nodes.CommaExpression): string {\n return expression.expressions.map((e) => e.accept(this)).join(', ')\n }\n visitVoidConstant(expression: nodes.VoidConstant): string {\n return `void`\n }\n visitGroupTransactionReference(expression: nodes.GroupTransactionReference): string {\n return `group_transaction(index=${expression.index.accept(this)}, type=${expression.wtype})`\n }\n visitPuyaLibCall(expression: nodes.PuyaLibCall): string {\n return `${expression.func}(${expression.args.map((a) => a.value.accept(this)).join(', ')})`\n }\n visitARC4Router(expression: nodes.ARC4Router): string {\n return `arc4Router()`\n }\n visitAppStorageDefinition(contractMemberNode: nodes.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 visitBoxPrefixedKeyExpression(expression: nodes.BoxPrefixedKeyExpression): string {\n return `BoxMapKey(prefix=${expression.prefix.accept(this)}, key=${expression.key.accept(this)})`\n }\n\n visitBoxValueExpression(expression: nodes.BoxValueExpression): string {\n return `Box[${expression.key.accept(this)}].value`\n }\n visitIntegerConstant(expression: nodes.IntegerConstant): string {\n if (expression.tealAlias) return expression.tealAlias\n return `${expression.value}`\n }\n visitDecimalConstant(expression: nodes.DecimalConstant): string {\n return `${expression.value}m`\n }\n visitBoolConstant(expression: nodes.BoolConstant): string {\n return expression.value ? 'True' : 'False'\n }\n visitBytesConstant(expression: nodes.BytesConstant): string {\n return printBytes(expression.value, expression.encoding)\n }\n visitStringConstant(expression: nodes.StringConstant): string {\n return `\"${expression.value}\"`\n }\n visitTemplateVar(expression: nodes.TemplateVar): string {\n return `TemplateVar[${expression.wtype}](${expression.name})`\n }\n visitMethodConstant(expression: nodes.MethodConstant): string {\n return `Method(\"${expression.value}\")`\n }\n visitAddressConstant(expression: nodes.AddressConstant): string {\n return `Address(\"${expression.value}\")`\n }\n visitARC4Encode(expression: nodes.ARC4Encode): string {\n return `ARC4_ENCODE(${expression.value.accept(this)}, wtype=${expression.wtype})`\n }\n visitCopy(expression: nodes.Copy): string {\n return `copy(${expression.value.accept(this)})`\n }\n visitArrayConcat(expression: nodes.ArrayConcat): string {\n return `${expression.left.accept(this)}.concat(${expression.right.accept(this)})`\n }\n visitArrayPop(expression: nodes.ArrayPop): string {\n return `${expression.base.accept(this)}.pop()`\n }\n visitArrayExtend(expression: nodes.ArrayExtend): string {\n return `${expression.base.accept(this)}.push(...${expression.other.accept(this)})`\n }\n visitArrayLength(expression: nodes.ArrayLength): string {\n return `${expression.array.accept(this)}.length`\n }\n visitArrayReplace(expression: nodes.ArrayReplace): string {\n return `${expression.base.accept(this)}.with(${expression.index.accept(this)}, ${expression.value.accept(this)})`\n }\n visitARC4Decode(expression: nodes.ARC4Decode): string {\n return `ARC4_DECODE(${expression.value.accept(this)})`\n }\n visitIntrinsicCall(expression: nodes.IntrinsicCall): string {\n const immediates = expression.immediates.length ? `<${expression.immediates.map((i) => i).join(', ')}>` : ''\n const stack = expression.stackArgs.map((a) => a.accept(this)).join(', ')\n return `${expression.opCode}${immediates}(${stack})`\n }\n visitCreateInnerTransaction(expression: nodes.CreateInnerTransaction): string {\n const fields = Array.from(expression.fields.entries())\n .map(([f, v]) => `${f}=${v.accept(this)}`)\n .join(', ')\n return `create_inner_transaction(${fields})`\n }\n visitUpdateInnerTransaction(expression: nodes.UpdateInnerTransaction): string {\n const fields = Array.from(expression.fields.entries())\n .map(([f, v]) => `${f}=${v.accept(this)}`)\n .join(', ')\n return `update_inner_transaction(${expression.itxn.accept(this)}, ${fields})`\n }\n visitCheckedMaybe(expression: nodes.CheckedMaybe): string {\n return `checked_maybe(${expression.expr.accept(this)}, comment=${expression.comment})`\n }\n visitTupleExpression(expression: nodes.TupleExpression): string {\n const names = expression.wtype.names\n if (names) {\n return `#{ ${expression.items.map((item, i) => `${names[i]}: ${item.accept(this)}`).join(', ')} }`\n }\n\n return `#[${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 visitSetInnerTransactionFields(expression: nodes.SetInnerTransactionFields): string {\n return `${expression.startWithBegin ? 'begin' : 'next'}_txn(${expression.itxns.map((i) => i.accept(this)).join(', ')})`\n }\n visitSizeOf(expression: nodes.SizeOf): string {\n return `size_of(${expression.sizeWtype})`\n }\n\n visitSubmitInnerTransaction(expression: nodes.SubmitInnerTransaction): string {\n return `submit_txn(${expression.itxns.map((i) => i.accept(this)).join(', ')})`\n }\n visitFieldExpression(expression: nodes.FieldExpression): string {\n return `${expression.base.accept(this)}.${expression.name}`\n }\n visitIndexExpression(expression: nodes.IndexExpression): string {\n return `${expression.base.accept(this)}[${expression.index.accept(this)}]`\n }\n visitSliceExpression(expression: nodes.SliceExpression): string {\n return `${expression.base.accept(this)}[${expression.beginIndex?.accept(this) ?? ''}:${expression.endIndex?.accept(this) ?? ''}]`\n }\n visitAppStateExpression(expression: nodes.AppStateExpression): string {\n return `GlobalState[${expression.key.accept(this)}]`\n }\n visitAppAccountStateExpression(expression: nodes.AppAccountStateExpression): string {\n return `LocalState[${expression.account.accept(this)}][${expression.key.accept(this)}]`\n }\n visitSingleEvaluation(expression: nodes.SingleEvaluation): string {\n const { id, isNew } = this.#singleEval.forSymbol(expression.id)\n if (!isNew) {\n return `$${id}`\n }\n return `($${id} = ${expression.source.accept(this)})`\n }\n visitReinterpretCast(expression: nodes.ReinterpretCast): string {\n const target = expression.expr.accept(this)\n if (expression.wtype.equals(wtypes.boolWType)) {\n return `Boolean(${target})`\n }\n return `reinterpret_cast<${expression.wtype}>(${target})`\n }\n visitNewArray(expression: nodes.NewArray): string {\n return `new ${expression.wtype.name}(${expression.values.map((v) => v.accept(this)).join(', ')})`\n }\n visitConditionalExpression(expression: nodes.ConditionalExpression): string {\n return `(${expression.condition.accept(this)} ? ${expression.trueExpr.accept(this)} : ${expression.falseExpr.accept(this)})`\n }\n visitAssignmentExpression(expression: nodes.AssignmentExpression): string {\n const rvalue =\n expression.value instanceof nodes.AssignmentExpression ? `(${expression.value.accept(this)})` : expression.value.accept(this)\n return `(${expression.target.accept(this)} = ${rvalue})`\n }\n visitNumericComparisonExpression(expression: nodes.NumericComparisonExpression): string {\n return `${expression.lhs.accept(this)} ${expression.operator} ${expression.rhs.accept(this)}`\n }\n visitBytesComparisonExpression(expression: nodes.BytesComparisonExpression): string {\n return `${expression.lhs.accept(this)} ${expression.operator} ${expression.rhs.accept(this)}`\n }\n visitSubroutineCallExpression(expression: nodes.SubroutineCallExpression): string {\n const target = this.visitCallTarget(expression.target)\n return `${target}(${expression.args.map((a) => a.value.accept(this)).join(', ')})`\n }\n visitCallTarget(target: nodes.SubroutineCallExpression['target']) {\n if (target instanceof SubroutineID) return target.target\n if (target instanceof ContractMethodTarget) return `${target.cref}.${target.memberName}`\n if (target instanceof InstanceMethodTarget) return `this.${target.memberName}`\n if (target instanceof InstanceSuperMethodTarget) return `super.${target.memberName}`\n throw new InternalError(`Unhandled target: ${target}`)\n }\n visitUInt64UnaryOperation(expression: nodes.UInt64UnaryOperation): string {\n return `${expression.op}${expression.expr.accept(this)}`\n }\n visitBytesUnaryOperation(expression: nodes.BytesUnaryOperation): string {\n return `${expression.op}${expression.expr.accept(this)}`\n }\n visitUInt64BinaryOperation(expression: nodes.UInt64BinaryOperation): string {\n return `${expression.left.accept(this)} ${expression.op} ${expression.right.accept(this)}`\n }\n visitBigUIntBinaryOperation(expression: nodes.BigUIntBinaryOperation): string {\n return `${expression.left.accept(this)} ${expression.op} ${expression.right.accept(this)}`\n }\n visitBytesBinaryOperation(expression: nodes.BytesBinaryOperation): string {\n return `${expression.left.accept(this)} ${expression.op} ${expression.right.accept(this)}`\n }\n visitBooleanBinaryOperation(expression: nodes.BooleanBinaryOperation): string {\n return `${expression.left.accept(this)} ${expression.op} ${expression.right.accept(this)}`\n }\n visitNot(expression: nodes.Not): string {\n return `!${expression.expr.accept(this)}`\n }\n visitEnumeration(expression: nodes.Enumeration): string {\n return `enumerate(${expression.expr.accept(this)})`\n }\n visitReversed(expression: nodes.Reversed): string {\n return `reversed(${expression.expr.accept(this)})`\n }\n visitStateGet(expression: nodes.StateGet): string {\n return `STATE_GET(${expression.field.accept(this)}, default=${expression.default.accept(this)})`\n }\n\n visitStateDelete(expression: nodes.StateDelete): string {\n return `STATE_DELETE(${expression.field.accept(this)})`\n }\n visitStateGetEx(expression: nodes.StateGetEx): string {\n return `STATE_GET_EX(${expression.field.accept(this)})`\n }\n visitStateExists(expression: nodes.StateExists): string {\n return `STATE_EXISTS(${expression.field.accept(this)})`\n }\n visitNewStruct(expression: nodes.NewStruct): string {\n const props = Array.from(expression.values)\n .map(([k, v]) => `${k}=${v.accept(this)}`)\n .join(', ')\n return `new ${expression.wtype.name}(${props})`\n }\n visitExpressionStatement(statement: nodes.ExpressionStatement): string[] {\n return [statement.expr.accept(this)]\n }\n visitBlock(statement: nodes.Block): string[] {\n return [...(statement.label ? [`${statement.label}:`] : []), ...statement.body.flatMap((b) => b.accept(this))]\n }\n visitIfElse(statement: nodes.IfElse): string[] {\n return [\n `if (${statement.condition.accept(this)}) {`,\n ...indent(statement.ifBranch.accept(this)),\n ...(statement.elseBranch ? ['} else {', ...indent(statement.elseBranch.accept(this)), '}'] : ['}']),\n ]\n }\n visitSwitch(statement: nodes.Switch): string[] {\n return [\n `switch (${statement.value.accept(this)}) {`,\n ...indent(\n Array.from(statement.cases.entries()).flatMap(([clause, block]) => [`case ${clause.accept(this)}:`, ...indent(block.accept(this))]),\n ),\n ...(statement.defaultCase ? indent(['default:', ...indent(statement.defaultCase.accept(this))]) : []),\n '}',\n ]\n }\n visitWhileLoop(statement: nodes.WhileLoop): string[] {\n return [`while (${statement.condition.accept(this)}) {`, ...indent(statement.loopBody.accept(this)), '}']\n }\n visitReturnStatement(statement: nodes.ReturnStatement): string[] {\n return [`return ${statement.value?.accept(this) ?? ''}`]\n }\n visitAssignmentStatement(statement: nodes.AssignmentStatement): string[] {\n return [`${statement.target.accept(this)}: ${statement.target.wtype} = ${statement.value.accept(this)}`]\n }\n visitUInt64AugmentedAssignment(statement: nodes.UInt64AugmentedAssignment): string[] {\n return [`${statement.target.accept(this)} = ${statement.target.accept(this)} ${statement.op} ${statement.value.accept(this)}`]\n }\n visitBigUIntAugmentedAssignment(statement: nodes.BigUIntAugmentedAssignment): string[] {\n return [`${statement.target.accept(this)} = ${statement.target.accept(this)} ${statement.op} ${statement.value.accept(this)}`]\n }\n visitBytesAugmentedAssignment(statement: nodes.BytesAugmentedAssignment): string[] {\n return [`${statement.target.accept(this)} = ${statement.target.accept(this)} ${statement.op} ${statement.value.accept(this)}`]\n }\n visitForInLoop(statement: nodes.ForInLoop): string[] {\n return [\n `for (${statement.items.accept(this)} in ${statement.sequence.accept(this)}) {`,\n ...indent(statement.loopBody.accept(this)),\n '}',\n ]\n }\n visitSubroutine(moduleStatement: nodes.Subroutine): string[] {\n const args = moduleStatement.args.map((a) => `${a.name}: ${a.wtype}`).join(', ')\n return [\n `subroutine ${moduleStatement.name}(${args}): ${moduleStatement.returnType}`,\n '{',\n ...indent(moduleStatement.body.accept(this)),\n '}',\n ]\n }\n visitEmit(expression: nodes.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: nodes.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 visitConvertArray(expression: nodes.ConvertArray): string {\n return `convert_array(${expression.expr.accept(this)}, wtype=${expression.wtype})`\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, nodes.AppStorageDefinition[]>(),\n )\n for (const [name, kind] of [\n ['globals', AppStorageKind.appGlobal],\n ['locals', AppStorageKind.accountLocal],\n ['boxes', AppStorageKind.box],\n ] as const) {\n const items = storageByKind.get(kind)\n if (items?.length) {\n body.push(\n `${name} {`,\n ...indent(\n items.map((g) =>\n g.keyWtype ? `[${g.key.accept(this)}]: ${g.keyWtype} => ${g.storageWtype}` : `[${g.key.accept(this)}]: ${g.storageWtype}`,\n ),\n ),\n '}',\n )\n }\n }\n }\n if (c.reservedScratchSpace.size) {\n body.push(`reservedScratchSpace: [${Array.from(c.reservedScratchSpace).join(', ')}]`)\n }\n if (c.approvalProgram) {\n body.push(...this.visitSpecialMethod(c.approvalProgram, 'approvalProgram'))\n }\n if (c.clearProgram) {\n body.push(...this.visitSpecialMethod(c.clearProgram, 'clearProgram'))\n }\n for (const method of c.methods) {\n body.push(...method.accept(this))\n }\n\n const header = ['contract', c.name]\n\n return [header.join(' '), '{', ...indent(body), '}']\n }\n\n visitSpecialMethod(statement: nodes.ContractMethod, name: string): string[] {\n return [`${name}(): ${statement.returnType}`, '{', ...indent(statement.body.accept(this)), '}', '']\n }\n}\n\nfunction indent(lines: string[], indentSize = ' '): string[] {\n return lines.map((l) => `${indentSize}${l}`)\n}\n","import * as fs from 'node:fs'\nimport upath from 'upath'\nimport { logger } from './logger'\nimport { mkDirIfNotExists } from './util'\n\nexport enum ArtifactKind {\n Awst,\n AwstJson,\n}\n\nexport function writeArtifact<TObj>({\n sourceFile,\n outDir,\n kind,\n obj,\n buildArtifact,\n}: {\n sourceFile: string\n outDir: string\n kind: ArtifactKind\n artifactName?: string\n buildArtifact(obj: TObj): string\n obj: TObj\n}) {\n let outFilePath: string\n switch (kind) {\n case ArtifactKind.Awst:\n outFilePath = upath.join(outDir, `${upath.basename(sourceFile, '.algo.ts')}.awst`)\n break\n case ArtifactKind.AwstJson:\n outFilePath = upath.join(outDir, `${upath.basename(sourceFile, '.algo.ts')}.awst.json`)\n break\n }\n\n const content = buildArtifact(obj)\n logger.info(undefined, `Writing ${outFilePath}`)\n mkDirIfNotExists(upath.dirname(outFilePath))\n fs.writeFileSync(outFilePath, content, 'utf-8')\n}\n","import type ts from 'typescript'\nimport type { AwstBuildContext } from '../awst_build/context/awst-build-context'\nimport { CodeError } from '../errors'\nimport { patchErrorLocation } from '../logger'\nimport type { DeliberateAny } from '../typescript-helpers'\nimport type { MapBaseType, SyntaxKindNameType } from './syntax-names'\nimport { getNodeName, SyntaxKindName } from './syntax-names'\n\ntype UnionToIntersection<T> = (T extends DeliberateAny ? (x: T) => void : never) extends (x: infer TIntersection) => void\n ? TIntersection\n : never\n\nexport type Visitor<T extends { kind: ts.SyntaxKind }, TReturn> = UnionToIntersection<\n T extends DeliberateAny\n ? { [key in T['kind'] as key extends keyof SyntaxKindNameType ? `visit${SyntaxKindNameType[key]}` : never]: (node: T) => TReturn }\n : never\n>\n\n/**\n * This type relies on `T` being a concrete node with a `kind` property that is resolved to a single `SyntaxKind`.\n * There are lots of nodes (such as ts.Expression) which are base types for several nodes which means this type\n * will return `typeof SyntaxKind` instead of `typeof SyntaxKind.someValue` and that will break the rest of the\n * generic types here. `MapBaseType<TNode>` exists to convert these base types into a union of their concrete implementors\n */\nexport type KindForNode<T extends ts.Node> = T extends { kind: infer TKind } ? TKind : never\n\nexport type VisitorMethod<TKind> = TKind extends keyof SyntaxKindNameType ? `visit${SyntaxKindNameType[TKind]}` : never\n\nexport type MethodReturnType<TMethod, TVisitor> = TMethod extends keyof TVisitor\n ? TVisitor[TMethod] extends (...args: DeliberateAny[]) => infer TReturn\n ? TReturn\n : never\n : never\n\nexport type ReturnTypeForNode<T extends ts.Node, TVisitor> = MethodReturnType<VisitorMethod<KindForNode<T>>, TVisitor>\n\nexport const accept = <TSelf extends { context: AwstBuildContext }, T extends ts.Node>(\n visitor: TSelf,\n node: T,\n): ReturnTypeForNode<MapBaseType<T>, TSelf> => {\n const sourceLocation = visitor.context.getSourceLocation(node)\n if (node.kind in SyntaxKindName) {\n const nodeName = getNodeName(node)\n const visitFunction = `visit${nodeName}`\n if (visitFunction in Object.getPrototypeOf(visitor)) {\n return patchErrorLocation(() => Object.getPrototypeOf(visitor)[visitFunction].call(visitor, node), sourceLocation)()\n } else {\n throw new CodeError(`Unsupported syntax visitor ${nodeName}`, { sourceLocation })\n }\n } else {\n throw new CodeError(`Unknown syntax kind ${node.kind}`, { sourceLocation })\n }\n}\n","import { nodeFactory } from '../../../awst/node-factory'\nimport type { Expression } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport { wtypes } from '../../../awst/wtypes'\n\nimport type { PType, PTypeOrClass } from '../../ptypes'\nimport { typeRegistry } from '../../type-registry'\nimport type { InstanceBuilder } from '../index'\nimport { LiteralExpressionBuilder } from '../literal-expression-builder'\nimport { requireBuilderOfType, resolvableToType } from '../util'\n\nexport class ConditionalExpressionBuilder extends LiteralExpressionBuilder {\n readonly isConstant = false\n\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 checkForUnclonedMutables(scenario: string): boolean {\n return this.whenTrue.checkForUnclonedMutables(scenario) || this.whenFalse.checkForUnclonedMutables(scenario)\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 readonly isConstant = false\n\n get ptype(): PType {\n return anyPType\n }\n resolve(): Expression {\n throw new CodeError('Omitted expression cannot be resolved', { sourceLocation: this.sourceLocation })\n }\n resolveLValue(): LValue {\n throw new InternalError('Omitted expression cannot be resolved to an lvalue', { sourceLocation: this.sourceLocation })\n }\n\n resolvableToPType(ptype: PTypeOrClass): boolean {\n throw new InternalError('Omitted expression cannot be resolved to any type', { sourceLocation: this.sourceLocation })\n }\n}\n","import type { SourceLocation } from '../../awst/source-location'\nimport { CodeError } from '../../errors'\nimport type { PType } from '../ptypes'\nimport type { InstanceBuilder } from './index'\nimport { NodeBuilder } from './index'\nimport { isStaticallyIterable, StaticIterator } from './traits/static-iterator'\n\nexport class SpreadExpressionBuilder extends NodeBuilder {\n ptype: PType | undefined = undefined\n constructor(\n private baseExpression: InstanceBuilder,\n sourceLocation: SourceLocation,\n ) {\n super(sourceLocation)\n }\n\n getSpreadItems(): InstanceBuilder[] {\n if (isStaticallyIterable(this.baseExpression)) {\n return this.baseExpression[StaticIterator]()\n }\n throw new CodeError(`Spread operator is not supported on ${this.baseExpression.typeDescription}`, {\n sourceLocation: this.sourceLocation,\n })\n }\n}\n","import { nodeFactory } from '../../awst/node-factory'\nimport type { Expression, LValue, Statement } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { codeInvariant, instanceOfAny, invariant } from '../../util'\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 { OmittedExpressionBuilder } from '../eb/omitted-expression-builder'\nimport { StaticIterator } from '../eb/traits/static-iterator'\nimport { requireInstanceBuilder } from '../eb/util'\nimport type { PType } from '../ptypes'\nimport {\n ArrayLiteralPType,\n BigIntLiteralPType,\n bigIntPType,\n biguintPType,\n InnerTransactionPType,\n isTupleLike,\n ItxnParamsPType,\n MutableTuplePType,\n numberPType,\n NumericLiteralPType,\n ObjectLiteralPType,\n ReadonlyTuplePType,\n Uint64EnumMemberLiteralType,\n Uint64EnumMemberType,\n uint64PType,\n UnionPType,\n} from '../ptypes'\nimport { getIndexType } from '../ptypes/visitors/index-type-visitor'\nimport { instanceEb } from '../type-registry'\n\nexport function handleAssignmentStatement(\n context: AwstBuildContext,\n target: InstanceBuilder,\n source: InstanceBuilder,\n sourceLocation: SourceLocation,\n): Statement {\n return nodeFactory.expressionStatement({ expr: handleAssignment(context, target, source, sourceLocation, true).resolve() })\n}\n\nexport function handleAssignment(\n context: AwstBuildContext,\n target: InstanceBuilder,\n source: InstanceBuilder,\n sourceLocation: SourceLocation,\n isStatement: boolean,\n): InstanceBuilder {\n checkForUnclonedMutables(target, source, sourceLocation)\n\n if (isSpecialItxnType(source)) {\n codeInvariant(isStatement, 'inner transaction results can not be used in assignment expressions')\n return handleItxnAssignment(context, target, source, sourceLocation)\n }\n const narrowedSourceType = narrowSourceType(target.ptype, source.ptype, sourceLocation)\n return buildAssignmentExpression(target, source.resolveToPType(narrowedSourceType), sourceLocation, isStatement)\n}\n\n/**\n * Return the 'type' of the entire assignment expression. This is almost always the source type, with the\n * exception of array literals which are influenced by the assignment target.\n * @param target\n * @param source\n */\nfunction getAssignmentExpressionType(target: PType, source: PType): PType {\n if (source instanceof ArrayLiteralPType) {\n if (instanceOfAny(target, ArrayLiteralPType, MutableTuplePType, ReadonlyTuplePType)) {\n return source.getMutableTupleType()\n } else {\n return source.getArrayType()\n }\n }\n if (source instanceof ObjectLiteralPType) {\n return source.getMutable()\n }\n return source\n}\n\nfunction buildAssignmentValues(\n target: InstanceBuilder,\n source: InstanceBuilder,\n sourceLocation: SourceLocation,\n): { target: LValue; source: Expression } {\n if (target instanceof ArrayLiteralExpressionBuilder) {\n // Destructured array\n const targets: LValue[] = []\n const sources: Expression[] = []\n\n for (const [index, item] of target[StaticIterator]().entries()) {\n if (item instanceof OmittedExpressionBuilder) continue\n const values = buildAssignmentValues(\n item,\n requireInstanceBuilder(source.indexAccess(BigInt(index), source.sourceLocation)),\n sourceLocation,\n )\n targets.push(values.target)\n sources.push(values.source)\n }\n\n return {\n target: nodeFactory.tupleExpression({ items: targets, sourceLocation: target.sourceLocation }),\n source: nodeFactory.tupleExpression({ items: sources, sourceLocation: source.sourceLocation }),\n }\n } else if (target instanceof ObjectLiteralExpressionBuilder) {\n // // Destructured object\n const targets: LValue[] = []\n const sources: Expression[] = []\n for (const [propName] of target.ptype.orderedProperties()) {\n const values = buildAssignmentValues(\n requireInstanceBuilder(target.memberAccess(propName, sourceLocation)),\n requireInstanceBuilder(source.memberAccess(propName, source.sourceLocation)),\n sourceLocation,\n )\n targets.push(values.target)\n sources.push(values.source)\n }\n return {\n target: nodeFactory.tupleExpression({ items: targets, sourceLocation: target.sourceLocation }),\n source: nodeFactory.tupleExpression({ items: sources, sourceLocation: source.sourceLocation }),\n }\n } else {\n return {\n target: target.resolveLValue(),\n source: source.resolveToPType(target.ptype).resolve(),\n }\n }\n}\n\nfunction buildAssignmentExpression(\n target: InstanceBuilder,\n source: InstanceBuilder,\n sourceLocation: SourceLocation,\n isStatement: boolean,\n): InstanceBuilder {\n const expressionType = getAssignmentExpressionType(target.ptype, source.ptype)\n // Skip single eval for non-destructuring assignments\n const sourceSingle =\n isDestructuringAssignment(target) || (!target.ptype.equals(expressionType) && !isStatement) ? source.singleEvaluation() : source\n const assignmentValues = buildAssignmentValues(target, sourceSingle, sourceLocation)\n const assignment = nodeFactory.assignmentExpression({\n target: assignmentValues.target,\n value: assignmentValues.source,\n sourceLocation,\n })\n\n if (target.ptype.equals(expressionType) || isStatement) {\n return instanceEb(assignment, target.ptype)\n } else {\n return instanceEb(\n nodeFactory.commaExpression({\n expressions: [assignment, sourceSingle.resolveToPType(expressionType).resolve()],\n sourceLocation,\n }),\n expressionType,\n )\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 */\nfunction narrowSourceType(targetType: PType | undefined, sourceType: PType, sourceLocation: SourceLocation): PType {\n if (!targetType) return sourceType\n if (sourceType.equals(targetType) && !instanceOfAny(targetType, ArrayLiteralPType, ObjectLiteralPType)) {\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 || t.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 (\n targetType instanceof Uint64EnumMemberLiteralType &&\n sourceType instanceof Uint64EnumMemberType &&\n sourceType.enumType.equals(targetType.enumType)\n ) {\n return targetType\n }\n\n if (sourceType instanceof ArrayLiteralPType) {\n return new ArrayLiteralPType({\n items: sourceType.items.map((itemType, itemIndex) =>\n narrowSourceType(getIndexType(targetType, BigInt(itemIndex), sourceLocation), itemType, sourceLocation),\n ),\n })\n }\n if (sourceType instanceof ObjectLiteralPType) {\n return new ObjectLiteralPType({\n properties: Object.fromEntries(\n sourceType\n .orderedProperties()\n .map(([prop, propType]): [string, PType] => [\n prop,\n narrowSourceType(getIndexType(targetType, prop, sourceLocation), propType, sourceLocation),\n ]),\n ),\n })\n }\n return sourceType\n}\n\nfunction isDestructuringAssignment(target: InstanceBuilder) {\n return target instanceof ArrayLiteralExpressionBuilder || target instanceof ObjectLiteralExpressionBuilder\n}\n\nfunction isSpecialItxnType(source: InstanceBuilder) {\n const checkType = (t: PType) => instanceOfAny(t, InnerTransactionPType, ItxnParamsPType)\n\n return checkType(source.ptype) || (isTupleLike(source.ptype) && source.ptype.items.some(checkType))\n}\n\nfunction handleItxnAssignment(\n context: AwstBuildContext,\n target: InstanceBuilder,\n source: InstanceBuilder,\n sourceLocation: SourceLocation,\n): InstanceBuilder {\n let targetExpression: LValue\n if (target instanceof ArrayLiteralExpressionBuilder) {\n // Destructured array\n const targets: LValue[] = []\n\n for (const [index, item] of target[StaticIterator]().entries()) {\n if (item instanceof OmittedExpressionBuilder) {\n const sourceType = getIndexType(source.ptype, BigInt(index), item.sourceLocation)\n invariant(sourceType, 'RHS must have a type', item.sourceLocation)\n targets.push(\n nodeFactory.varExpression({\n name: context.generateVarName('discard'),\n wtype: sourceType.wtypeOrThrow,\n sourceLocation: item.sourceLocation,\n }),\n )\n } else {\n targets.push(item.resolveLValue())\n }\n }\n targetExpression = nodeFactory.tupleExpression({ items: targets, sourceLocation: target.sourceLocation })\n } else {\n targetExpression = target.resolveLValue()\n }\n\n return instanceEb(\n nodeFactory.assignmentExpression({\n target: targetExpression,\n value: source.resolve(),\n sourceLocation,\n }),\n source.ptype,\n )\n}\n\nfunction checkForUnclonedMutables(target: InstanceBuilder, source: InstanceBuilder, sourceLocation: SourceLocation) {\n if (target instanceof ArrayLiteralExpressionBuilder) {\n for (const [index, item] of target[StaticIterator]().entries()) {\n checkForUnclonedMutables(item, requireInstanceBuilder(source.indexAccess(BigInt(index), source.sourceLocation)), sourceLocation)\n }\n } else if (target instanceof ObjectLiteralExpressionBuilder) {\n for (const [propName] of target.ptype.orderedProperties()) {\n checkForUnclonedMutables(\n requireInstanceBuilder(target.memberAccess(propName, sourceLocation)),\n requireInstanceBuilder(source.memberAccess(propName, source.sourceLocation)),\n sourceLocation,\n )\n }\n } else {\n source.checkForUnclonedMutables('being assigned to another variable')\n }\n}\n","import type * as ts from 'typescript'\nimport { NotSupported } from '../../errors'\nimport type { Visitor } from '../../visitor/visitor'\nimport { accept } from '../../visitor/visitor'\nimport { AwstBuildContext } from '../context/awst-build-context'\n\ntype ObjectNames = ts.PropertyName | ts.PseudoLiteralToken\n\nexport class TextVisitor implements Visitor<ObjectNames, string> {\n get context() {\n return AwstBuildContext.current\n }\n\n visitBigIntLiteral(node: ts.BigIntLiteral): string {\n return node.text\n }\n\n visitTemplateHead(node: ts.TemplateHead): string {\n return node.text\n }\n visitTemplateMiddle(node: ts.TemplateMiddle): string {\n return node.text\n }\n visitTemplateTail(node: ts.TemplateTail): string {\n return node.text\n }\n public accept = <TNode extends ts.Node>(node: TNode) => accept<TextVisitor, TNode>(this, node)\n\n visitIdentifier(node: ts.Identifier): string {\n return node.text\n }\n visitNoSubstitutionTemplateLiteral(node: ts.NoSubstitutionTemplateLiteral): string {\n return node.text\n }\n visitNumericLiteral(node: ts.NumericLiteral): string {\n return node.text\n }\n visitComputedPropertyName(node: ts.ComputedPropertyName): string {\n throw new NotSupported('Computed property names', {\n sourceLocation: this.context.getSourceLocation(node),\n })\n }\n visitPrivateIdentifier(node: ts.PrivateIdentifier): string {\n return node.text\n }\n visitStringLiteral(node: ts.StringLiteral): string {\n return node.text\n }\n}\n","import ts from 'typescript'\nimport { nodeFactory } from '../../awst/node-factory'\nimport { type Expression, type MethodDocumentation } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { CodeError, InternalError, NotSupported } from '../../errors'\nimport { logger } from '../../logger'\nimport { codeInvariant, invariant } from '../../util'\nimport type { Expressions } from '../../visitor/syntax-names'\nimport {\n AugmentedAssignmentBinaryOp,\n AugmentedAssignmentLogicalOpSyntaxes,\n BinaryOpSyntaxes,\n ComparisonOpSyntaxes,\n getNodeName,\n getSyntaxName,\n isKeyOf,\n LogicalOpSyntaxes,\n UnaryExpressionUnaryOps,\n} from '../../visitor/syntax-names'\nimport type { Visitor } from '../../visitor/visitor'\nimport { accept } from '../../visitor/visitor'\nimport { AwstBuildContext } from '../context/awst-build-context'\nimport { InstanceBuilder, NodeBuilder } from '../eb'\nimport { BooleanExpressionBuilder } from '../eb/boolean-expression-builder'\nimport { CloneFunctionBuilder } from '../eb/clone-function-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 { NumericLiteralExpressionBuilder } from '../eb/literal/numeric-literal-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 { OptionalExpressionBuilder } from '../eb/optional-expression-builder'\nimport { SpreadExpressionBuilder } from '../eb/spread-expression-builder'\nimport { StringExpressionBuilder, stringFromTemplate } from '../eb/string-expression-builder'\nimport { requireExpressionOfType, requireInstanceBuilder } from '../eb/util'\nimport { concatArrays } from '../eb/util/array/concat'\nimport type { PType } from '../ptypes'\nimport { BigIntLiteralPType, boolPType, NumericLiteralPType, TransientType } from '../ptypes'\nimport { containsMutableType, isMutableType } from '../ptypes/visitors/contains-mutable-visitor'\nimport { typeRegistry } from '../type-registry'\nimport { handleAssignment } from './assignments'\nimport { TextVisitor } from './text-visitor'\n\nexport abstract class BaseVisitor implements Visitor<Expressions, NodeBuilder> {\n private baseAccept = <TNode extends ts.Node>(node: TNode) => accept<BaseVisitor, TNode>(this, node)\n readonly textVisitor: TextVisitor\n get context() {\n return AwstBuildContext.current\n }\n\n protected constructor() {\n this.textVisitor = new TextVisitor()\n }\n\n logNotSupported(node: ts.Node | undefined, message: string) {\n if (!node) return\n logger.error(new NotSupported(message, { sourceLocation: this.sourceLocation(node) }))\n }\n\n throwNotSupported(node: ts.Node, message: string): never {\n throw new NotSupported(message, { sourceLocation: this.sourceLocation(node) })\n }\n\n visitBigIntLiteral(node: ts.BigIntLiteral): InstanceBuilder {\n const literalValue = BigInt(node.text.slice(0, -1))\n const ptype = this.context.getPTypeForNode(node)\n invariant(ptype instanceof BigIntLiteralPType, 'ptype should be BigIntLiteralPType')\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 NumericLiteralPType, 'ptype should be NumericLiteralPType')\n return new NumericLiteralExpressionBuilder(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 spreadLocation: this.sourceLocation(p),\n },\n ]\n default:\n logger.error(propertySourceLocation, `Unsupported object literal property kind ${getNodeName(p)}`)\n return []\n }\n })\n return ObjectLiteralExpressionBuilder.fromParts(sourceLocation, parts)\n }\n\n visitArrayLiteralExpression(node: ts.ArrayLiteralExpression): NodeBuilder {\n const sourceLocation = this.sourceLocation(node)\n\n if (node.elements.length === 0) {\n return new ArrayLiteralExpressionBuilder(sourceLocation, [])\n }\n\n const toConcat: Array<InstanceBuilder[] | InstanceBuilder> = []\n let itemBuffer: InstanceBuilder[] = []\n for (const element of node.elements) {\n if (ts.isSpreadElement(element)) {\n const spreadExpr = requireInstanceBuilder(this.baseAccept(element.expression))\n if (itemBuffer.length !== 0) {\n toConcat.push(itemBuffer)\n itemBuffer = []\n }\n /*\n If this is a mutable collection which does not contain nested mutable items, we can inject a\n clone for the user since a spread is the same as a shallow clone.\n */\n if (isMutableType(spreadExpr.ptype) && !containsMutableType(spreadExpr.ptype)) {\n toConcat.push(CloneFunctionBuilder.clone(spreadExpr, this.sourceLocation(element)))\n } else {\n if (spreadExpr.checkForUnclonedMutables('being spread into an array literal')) {\n // Add a clone if one is required so we don't get cascading errors\n toConcat.push(CloneFunctionBuilder.clone(spreadExpr, this.sourceLocation(element)))\n } else {\n toConcat.push(spreadExpr)\n }\n }\n } else {\n itemBuffer.push(requireInstanceBuilder(this.baseAccept(element)))\n }\n }\n if (itemBuffer.length !== 0) {\n toConcat.push(itemBuffer)\n }\n\n return toConcat\n .map((i) => (Array.isArray(i) ? new ArrayLiteralExpressionBuilder(sourceLocation, i) : i))\n .reduce((acc, cur) => concatArrays(acc, cur, sourceLocation))\n }\n\n visitSpreadElement(node: ts.SpreadElement): NodeBuilder {\n const base = requireInstanceBuilder(this.baseAccept(node.expression))\n return new SpreadExpressionBuilder(base, this.sourceLocation(node))\n }\n\n visitPropertyAccessExpression(node: ts.PropertyAccessExpression): NodeBuilder {\n this.logNotSupported(node.questionDotToken, 'The optional chaining (?.) operator is not supported')\n const target = this.baseAccept(node.expression)\n if (target instanceof NamespaceBuilder) {\n codeInvariant(!ts.isPrivateIdentifier(node.name), 'Private identifiers are not supported here', this.sourceLocation(node.name))\n return this.context.getBuilderForNode(node.name)\n }\n const property = this.textVisitor.accept(node.name)\n return target.memberAccess(property, this.sourceLocation(node.name))\n }\n\n visitElementAccessExpression(node: ts.ElementAccessExpression): NodeBuilder {\n this.logNotSupported(node.questionDotToken, 'The optional chaining (?.) operator is not supported')\n\n const sourceLocation = this.sourceLocation(node)\n const target = this.baseAccept(node.expression)\n const argument = this.baseAccept(node.argumentExpression)\n return target.indexAccess(requireInstanceBuilder(argument), sourceLocation)\n }\n\n visitCallExpression(node: ts.CallExpression): NodeBuilder {\n this.logNotSupported(node.questionDotToken, 'The optional chaining (?.) operator is not supported')\n const sourceLocation = this.sourceLocation(node)\n const eb = this.baseAccept(node.expression)\n const args = node.arguments\n .map((a) => this.baseAccept(a))\n .flatMap((a) => (a instanceof SpreadExpressionBuilder ? a.getSpreadItems() : a))\n const typeArgs = this.context.getTypeParameters(node)\n return eb.call(args, typeArgs, sourceLocation)\n }\n\n visitNewExpression(node: ts.NewExpression): NodeBuilder {\n const sourceLocation = this.sourceLocation(node)\n const eb = this.baseAccept(node.expression)\n const args =\n node.arguments?.map((a) => this.baseAccept(a)).flatMap((a) => (a instanceof SpreadExpressionBuilder ? a.getSpreadItems() : a)) ?? []\n const typeArgs = this.context.getTypeParameters(node)\n return eb.newCall(args, typeArgs, sourceLocation)\n }\n\n visitTaggedTemplateExpression(node: ts.TaggedTemplateExpression): NodeBuilder {\n const sourceLocation = this.sourceLocation(node)\n const target = this.baseAccept(node.tag)\n const typeArgs = this.context.getTypeParameters(node)\n if (ts.isNoSubstitutionTemplateLiteral(node.template)) {\n return target.taggedTemplate(this.textVisitor.accept(node.template), [], typeArgs, 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, typeArgs, 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 private getBinaryOpKind(token: ts.BinaryOperatorToken): ts.SyntaxKind {\n const sourceLocation = this.sourceLocation(token)\n switch (token.kind) {\n case ts.SyntaxKind.EqualsEqualsToken:\n logger.error(sourceLocation, `Loose equality operator '==' is not supported. Please use strict equality operator '==='`)\n return ts.SyntaxKind.EqualsEqualsEqualsToken\n case ts.SyntaxKind.ExclamationEqualsToken:\n logger.error(sourceLocation, `Loose inequality operator '!=' is not supported. Please use strict inequality operator '!=='`)\n return ts.SyntaxKind.ExclamationEqualsEqualsToken\n default:\n return token.kind\n }\n }\n\n visitBinaryExpression(node: ts.BinaryExpression): NodeBuilder {\n const sourceLocation = this.sourceLocation(node)\n const binaryOpKind = this.getBinaryOpKind(node.operatorToken)\n const isStatement = ts.isExpressionStatement(node.parent)\n\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 handleAssignment(this.context, left, right, sourceLocation, isStatement)\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 handleAssignment(this.context, left, expr, sourceLocation, isStatement)\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 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 stringFromTemplate(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 const target = this.baseAccept(node.expression)\n if (target instanceof OptionalExpressionBuilder) {\n return target.base\n }\n\n throw new CodeError(\n 'The non-null assertion operator \"!\" is not valid here. It is only valid in limited scenarios where built in types require it. Eg. Array.prototype.pop',\n { sourceLocation: this.sourceLocation(node) },\n )\n }\n\n visitSatisfiesExpression(node: ts.SatisfiesExpression): NodeBuilder {\n return this.baseAccept(node.expression)\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 type ts from 'typescript'\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 { BaseVisitor } from './base-visitor'\n\nexport abstract class ClassDefinitionVisitor extends BaseVisitor implements Visitor<ClassElements, void> {\n public accept = <TNode extends ts.Node>(node: TNode) => accept<ClassDefinitionVisitor, TNode>(this, node)\n\n protected visitAllMembers(classDec: ts.ClassDeclaration) {\n for (const member of classDec.members) {\n try {\n this.accept(member)\n } catch (e) {\n invariant(e instanceof Error, 'Only errors should be thrown')\n logger.error(e)\n }\n }\n }\n\n abstract throwNotSupported(node: ts.Node, desc: string): never\n\n visitClassStaticBlockDeclaration(node: ts.ClassStaticBlockDeclaration) {\n this.throwNotSupported(node, 'Class static block declarations')\n }\n visitConstructor(node: ts.ConstructorDeclaration) {\n this.throwNotSupported(node, 'Constructor declarations')\n }\n visitGetAccessor(node: ts.GetAccessorDeclaration) {\n this.throwNotSupported(node, 'Property declarations')\n }\n visitIndexSignature(node: ts.IndexSignatureDeclaration) {\n this.throwNotSupported(node, 'Index signature declarations')\n }\n visitMethodDeclaration(node: ts.MethodDeclaration) {\n this.throwNotSupported(node, 'Method declarations')\n }\n visitPropertyDeclaration(node: ts.PropertyDeclaration) {\n this.throwNotSupported(node, 'Property declarations')\n }\n visitSemicolonClassElement(node: ts.SemicolonClassElement) {\n // Ignore\n }\n visitSetAccessor(node: ts.SetAccessorDeclaration) {\n this.throwNotSupported(node, 'Property declarations')\n }\n}\n","import ts from 'typescript'\nimport { logger } from '../../logger'\nimport { invariant, isIn } from '../../util'\nimport { accept } from '../../visitor/visitor'\nimport { AwstBuildContext } from '../context/awst-build-context'\nimport { DecoratorDataBuilder } from '../eb'\nimport type {\n Arc4AbiDecoratorData,\n Arc4BareDecoratorData,\n DecoratorData,\n DecoratorDataForType,\n DecoratorType,\n ReadonlyDecoratorData,\n RoutingDecoratorData,\n} from '../models/decorator-data'\nimport { BaseVisitor } from './base-visitor'\n\nexport class DecoratorVisitor extends BaseVisitor {\n private accept = <TNode extends ts.Node>(node: TNode) => accept<DecoratorVisitor, TNode>(this, node)\n\n public readonly result: DecoratorData\n\n constructor(node: ts.Decorator) {\n super()\n\n const expr = this.accept(node.expression)\n invariant(expr instanceof DecoratorDataBuilder, 'expr must be DecoratorDataBuilder')\n this.result = expr.resolveDecoratorData()\n }\n\n private static buildDecoratorData(node: { modifiers?: ts.NodeArray<ts.ModifierLike> }): DecoratorData[] {\n return (\n node.modifiers?.flatMap((modifier) => {\n if (!ts.isDecorator(modifier)) return []\n try {\n return AwstBuildContext.current.runInChildContext(() => new DecoratorVisitor(modifier).result)\n } catch (e) {\n invariant(e instanceof Error, 'Only errors should be thrown')\n logger.error(e)\n return []\n }\n }) ?? []\n )\n }\n\n static buildContractData(target: ts.ClassDeclaration) {\n const data = DecoratorVisitor.buildDecoratorData(target)\n return DecoratorVisitor.filterDecoratorData(\n data,\n ['contract'],\n (t) => `${t} is not supported on contracts`,\n 'Only one decorator is allowed per contract.',\n )\n }\n static buildLogicSigData(target: ts.ClassDeclaration) {\n const data = DecoratorVisitor.buildDecoratorData(target)\n return DecoratorVisitor.filterDecoratorData(\n data,\n ['logicsig'],\n (t) => `${t} is not supported on logic signatures`,\n 'Only one decorator is allowed per logic signature.',\n )\n }\n static buildContractMethodData(target: ts.MethodDeclaration): RoutingDecoratorData | undefined {\n let abiDecorator: Arc4AbiDecoratorData | undefined = undefined\n let bareDecorator: Arc4BareDecoratorData | undefined = undefined\n let readonlyDecorator: ReadonlyDecoratorData | undefined = undefined\n for (const data of DecoratorVisitor.buildDecoratorData(target)) {\n switch (data.type) {\n case 'arc4.abimethod':\n if (abiDecorator) {\n logger.error(\n data.sourceLocation,\n 'Only one abimethod decorator is allowed per method. Multiple on complete actions can be provided in a single decorator',\n )\n } else if (bareDecorator) {\n logger.error(data.sourceLocation, 'abimethod and baremethod decorators can not be combined on the one method')\n } else {\n abiDecorator = data\n }\n break\n case 'arc4.baremethod':\n if (bareDecorator) {\n logger.error(\n data.sourceLocation,\n 'Only one baremethod decorator is allowed per method. Multiple on complete actions can be provided in a single decorator',\n )\n } else if (abiDecorator) {\n logger.error(data.sourceLocation, 'abimethod and baremethod decorators can not be combined on the one method')\n } else {\n bareDecorator = data\n }\n break\n case 'arc4.readonly':\n if (readonlyDecorator) {\n logger.error(data.sourceLocation, 'Only one readonly decorator is allowed per method')\n } else {\n readonlyDecorator = data\n }\n break\n default:\n logger.error(data.sourceLocation, `${data.type} is not supported on contract methods`)\n }\n }\n if (abiDecorator) {\n if (readonlyDecorator) {\n if (abiDecorator.readonly === false) {\n logger.error(\n readonlyDecorator.sourceLocation,\n 'abimethod decorator readonly config conflicts with presence of readonly decorator',\n )\n } else {\n abiDecorator.readonly = true\n }\n }\n return abiDecorator\n } else if (bareDecorator) {\n if (readonlyDecorator) {\n logger.error(readonlyDecorator.sourceLocation, 'baremethod cannot be annotated with readonly decorator')\n }\n return bareDecorator\n } else if (readonlyDecorator) {\n return readonlyDecorator\n }\n return undefined\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 { AwstBuildContext } from '../context/awst-build-context'\n\nexport function maybeNodes<T>(condition: boolean, ...nodes: T[]): T[] {\n return condition ? nodes : []\n}\n\nexport function visitInChildContext<TVisitorArgs extends unknown[], TVisitorResult>(\n Visitor: { new (...args: TVisitorArgs): { result: TVisitorResult } },\n ...args: TVisitorArgs\n) {\n return AwstBuildContext.current.runInChildContext((deferred) => {\n const visitor = new Visitor(...args)\n return deferred(() => visitor.result)\n })\n}\n","import ts from 'typescript'\nimport { nodeFactory } from '../../awst/node-factory'\nimport type * as awst from '../../awst/nodes'\nimport type { Block } from '../../awst/nodes'\nimport { Goto, ReturnStatement } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { CodeError, InternalError, NotSupported } from '../../errors'\nimport { logger } from '../../logger'\nimport { codeInvariant, hasFlags, instanceOfAny, invariant } from '../../util'\nimport type { Statements } from '../../visitor/syntax-names'\nimport { getNodeName } from '../../visitor/syntax-names'\nimport type { Visitor } from '../../visitor/visitor'\nimport { accept } from '../../visitor/visitor'\nimport type { InstanceBuilder } from '../eb'\nimport { BuilderComparisonOp } from '../eb'\nimport { CloneFunctionBuilder } from '../eb/clone-function-builder'\nimport { ArrayLiteralExpressionBuilder } from '../eb/literal/array-literal-expression-builder'\nimport { ObjectLiteralExpressionBuilder } from '../eb/literal/object-literal-expression-builder'\nimport { OmittedExpressionBuilder } from '../eb/omitted-expression-builder'\nimport { requireExpressionOfType, requireInstanceBuilder } from '../eb/util'\nimport { FunctionPType } from '../ptypes'\nimport { containsMutableType } from '../ptypes/visitors/contains-mutable-visitor'\nimport { IteratorTypeVisitor } from '../ptypes/visitors/iterator-type-visitor'\nimport { instanceEb, typeRegistry } from '../type-registry'\nimport { handleAssignmentStatement } from './assignments'\nimport { BaseVisitor } from './base-visitor'\nimport { maybeNodes } from './util'\n\n// noinspection JSUnusedGlobalSymbols\nexport abstract class FunctionVisitor\n extends BaseVisitor\n implements\n Visitor<ts.ParameterDeclaration, awst.SubroutineArgument>,\n Visitor<ts.Block, awst.Block>,\n Visitor<Statements, awst.Statement | awst.Statement[]>\n{\n protected accept = <TNode extends ts.Node>(node: TNode) => accept<FunctionVisitor, TNode>(this, node)\n\n protected readonly _functionType: FunctionPType\n\n constructor(protected readonly node: ts.MethodDeclaration | ts.FunctionDeclaration | ts.ConstructorDeclaration) {\n super()\n const type = this.context.getPTypeForNode(node)\n invariant(type instanceof FunctionPType, 'type of function must be FunctionPType')\n this._functionType = type\n }\n\n protected buildFunctionAwst(): {\n args: awst.SubroutineArgument[]\n documentation: awst.MethodDocumentation\n body: awst.Block\n } {\n const node = this.node\n const sourceLocation = this.sourceLocation(node)\n\n const args = node.parameters.map((p) => this.accept(p))\n const assignDestructuredParams = this.evaluateParameterBindingExpressions(node.parameters, sourceLocation)\n codeInvariant(node.body, 'Functions must have a body')\n const body = assignDestructuredParams.length\n ? nodeFactory.block({ sourceLocation }, assignDestructuredParams, this.accept(node.body))\n : this.accept(node.body)\n\n return {\n args,\n body,\n documentation: this.getMethodDocumentation(node),\n }\n }\n\n visitBindingName(bindingName: ts.BindingName, sourceLocation: SourceLocation): InstanceBuilder {\n switch (bindingName.kind) {\n case ts.SyntaxKind.ObjectBindingPattern: {\n const props = Array<[string, InstanceBuilder]>()\n for (const element of bindingName.elements) {\n const sourceLocation = this.sourceLocation(element)\n\n const propertyNameIdentifier = element.propertyName ?? element.name\n invariant(ts.isIdentifier(propertyNameIdentifier), 'propertyName must be an identifier')\n\n const propertyName = this.textVisitor.accept(propertyNameIdentifier)\n codeInvariant(!element.dotDotDotToken, 'Spread operator is not supported here', 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 return ObjectLiteralExpressionBuilder.fromParts(sourceLocation, [{ type: 'properties', properties: Object.fromEntries(props) }])\n }\n case ts.SyntaxKind.ArrayBindingPattern: {\n const items: InstanceBuilder[] = []\n for (const element of bindingName.elements) {\n const sourceLocation = this.context.getSourceLocation(element)\n\n if (ts.isOmittedExpression(element)) {\n items.push(new OmittedExpressionBuilder(sourceLocation))\n } else {\n codeInvariant(!element.initializer, 'Initializer on array binding expression is not supported', sourceLocation)\n codeInvariant(!element.propertyName, 'Property name on array binding expression is not supported', sourceLocation)\n codeInvariant(!element.dotDotDotToken, 'Spread operator is not supported here', sourceLocation)\n\n items.push(this.visitBindingName(element.name, sourceLocation))\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(\n handleAssignmentStatement(this.context, this.visitBindingName(p.name, sourceLocation), paramBuilder, sourceLocation),\n )\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 const isConstDeclaration = hasFlags(node.flags, ts.NodeFlags.Const)\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 /*\n If we encounter a simple const VAR = %VALUE% declaration, and the value is a compile time constant\n store this value as a constant in the context instead of processing the assignment.\n\n visitIdentifier will then resolve this constant instead of a VarExpression then the constant is referenced.\n\n NOTE: This only handles basic expressions for now. Constant values which are destructured from more complex expressions\n are not currently handled. eg. const [myConst] = [\"constant value\"]\n */\n storeConst: if (isConstDeclaration && ts.isIdentifier(d.name)) {\n const targetType = this.context.getPTypeForNode(d.name)\n if (!source.isConstant) break storeConst\n if (!source.resolvableToPType(targetType)) break storeConst\n const builder = source.resolveToPType(targetType)\n if (!builder.isConstant) break storeConst\n this.context.addConstant(d.name, builder)\n return []\n }\n\n return handleAssignmentStatement(this.context, this.visitBindingName(d.name, sourceLocation), source, sourceLocation)\n })\n }\n\n visitVariableStatement(node: ts.VariableStatement): awst.Statement | awst.Statement[] {\n return this.accept(node.declarationList)\n }\n\n visitForStatement(node: ts.ForStatement): awst.Statement | awst.Statement[] {\n const sourceLocation = this.sourceLocation(node)\n let init: awst.Statement[] = []\n if (node.initializer) {\n if (ts.isExpression(node.initializer)) {\n init = [\n nodeFactory.expressionStatement({\n expr: requireInstanceBuilder(this.accept(node.initializer)).resolve(),\n }),\n ]\n } else {\n init = this.accept(node.initializer)\n }\n }\n let incrementor: awst.Statement[] = []\n if (node.incrementor) {\n incrementor = [\n nodeFactory.expressionStatement({\n expr: requireInstanceBuilder(this.accept(node.incrementor)).resolve(),\n }),\n ]\n }\n using ctx = this.context.switchLoopCtx.enterLoop(node, sourceLocation)\n return [\n ...init,\n nodeFactory.whileLoop({\n sourceLocation,\n condition: node.condition ? this.evaluateCondition(node.condition) : nodeFactory.boolConstant({ value: true, sourceLocation }),\n loopBody: nodeFactory.block(\n {\n sourceLocation,\n },\n this.accept(node.statement),\n ...maybeNodes(ctx.hasContinues, ctx.continueTarget),\n incrementor,\n ),\n }),\n ...maybeNodes(ctx.hasBreaks, ctx.breakTarget),\n ]\n }\n\n visitForOfStatement(node: ts.ForOfStatement): awst.Statement | awst.Statement[] {\n const sourceLocation = this.sourceLocation(node)\n const initializerLocation = this.sourceLocation(node.initializer)\n const sequence = requireInstanceBuilder(this.accept(node.expression))\n if (containsMutableType(sequence.ptype)) {\n sequence.checkForUnclonedMutables('when being iterated')\n }\n\n const itemType = IteratorTypeVisitor.accept(sequence.ptype)\n codeInvariant(itemType, `${sequence.ptype} is not iterable`, this.sourceLocation(node.expression))\n let items: InstanceBuilder\n if (ts.isExpression(node.initializer)) {\n items = requireInstanceBuilder(this.accept(node.initializer))\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.visitBindingName(declaration.name, initializerLocation)\n }\n\n const itemVar = instanceEb(\n nodeFactory.varExpression({\n name: this.context.generateVarName('temp'),\n wtype: itemType.wtypeOrThrow,\n sourceLocation: initializerLocation,\n }),\n itemType,\n )\n using ctx = this.context.switchLoopCtx.enterLoop(node, sourceLocation)\n return nodeFactory.block(\n { sourceLocation },\n nodeFactory.forInLoop({\n sourceLocation,\n sequence: sequence.iterate(sourceLocation),\n items: itemVar.resolveLValue(),\n loopBody: nodeFactory.block(\n { sourceLocation },\n handleAssignmentStatement(this.context, items, CloneFunctionBuilder.clone(itemVar, itemVar.sourceLocation), initializerLocation),\n this.accept(node.statement),\n ...maybeNodes(ctx.hasContinues, ctx.continueTarget),\n ),\n }),\n ...maybeNodes(ctx.hasBreaks, ctx.breakTarget),\n )\n }\n visitForInStatement(node: ts.ForInStatement): awst.Statement | awst.Statement[] {\n throw new NotSupported('For in statements', {\n sourceLocation: this.sourceLocation(node),\n })\n }\n visitTryStatement(node: ts.TryStatement): awst.Statement | awst.Statement[] {\n throw new NotSupported('Try statements', {\n sourceLocation: this.sourceLocation(node),\n })\n }\n visitEmptyStatement(node: ts.EmptyStatement): awst.Statement | awst.Statement[] {\n return nodeFactory.block({ sourceLocation: this.sourceLocation(node), comment: 'Empty statement' })\n }\n visitExpressionStatement(node: ts.ExpressionStatement): awst.Statement | awst.Statement[] {\n const expr = requireInstanceBuilder(this.accept(node.expression)).resolve()\n return nodeFactory.expressionStatement({\n expr,\n })\n }\n visitIfStatement(node: ts.IfStatement): awst.Statement | awst.Statement[] {\n const sourceLocation = this.sourceLocation(node)\n const condition = this.evaluateCondition(node.expression)\n\n const ifBranch = nodeFactory.block({ sourceLocation: this.sourceLocation(node.thenStatement) }, this.accept(node.thenStatement))\n const elseBranch =\n node.elseStatement && nodeFactory.block({ sourceLocation: this.sourceLocation(node.elseStatement) }, this.accept(node.elseStatement))\n\n return nodeFactory.ifElse({\n condition,\n ifBranch,\n elseBranch: elseBranch ?? null,\n sourceLocation,\n })\n }\n visitDoStatement(node: ts.DoStatement): awst.Statement | awst.Statement[] {\n const sourceLocation = this.sourceLocation(node)\n using ctx = this.context.switchLoopCtx.enterLoop(node, sourceLocation)\n invariant(ctx.breakTarget.label, 'Break target must have a label')\n return nodeFactory.block(\n { sourceLocation },\n nodeFactory.whileLoop({\n sourceLocation,\n condition: nodeFactory.boolConstant({ value: true, sourceLocation }),\n loopBody: nodeFactory.block(\n { sourceLocation },\n this.accept(node.statement),\n ...maybeNodes(ctx.hasContinues, ctx.continueTarget),\n nodeFactory.ifElse({\n condition: this.evaluateCondition(node.expression, true),\n sourceLocation,\n ifBranch: nodeFactory.block(\n { sourceLocation },\n nodeFactory.goto({ sourceLocation, target: this.context.switchLoopCtx.getBreakTarget(undefined, sourceLocation) }),\n ),\n elseBranch: null,\n }),\n ),\n }),\n ...maybeNodes(ctx.hasBreaks, ctx.breakTarget),\n )\n }\n visitWhileStatement(node: ts.WhileStatement): awst.Statement | awst.Statement[] {\n const sourceLocation = this.sourceLocation(node)\n using ctx = this.context.switchLoopCtx.enterLoop(node, sourceLocation)\n\n return nodeFactory.block(\n { sourceLocation },\n nodeFactory.whileLoop({\n sourceLocation,\n condition: this.evaluateCondition(node.expression),\n loopBody: nodeFactory.block({ sourceLocation }, this.accept(node.statement), ...maybeNodes(ctx.hasContinues, ctx.continueTarget)),\n }),\n ...maybeNodes(ctx.hasBreaks, ctx.breakTarget),\n )\n }\n visitContinueStatement(node: ts.ContinueStatement): awst.Statement | awst.Statement[] {\n const sourceLocation = this.sourceLocation(node)\n\n return nodeFactory.goto({\n sourceLocation,\n target: this.context.switchLoopCtx.getContinueTarget(node.label, sourceLocation),\n })\n }\n visitBreakStatement(node: ts.BreakStatement): awst.Statement | awst.Statement[] {\n const sourceLocation = this.sourceLocation(node)\n\n return nodeFactory.goto({\n sourceLocation,\n target: this.context.switchLoopCtx.getBreakTarget(node.label, sourceLocation),\n })\n }\n visitReturnStatement(node: ts.ReturnStatement): awst.Statement | awst.Statement[] {\n const sourceLocation = this.sourceLocation(node)\n if (!node.expression) {\n return nodeFactory.returnStatement({\n sourceLocation: sourceLocation,\n value: null,\n })\n }\n const returnValue = this.accept(node.expression)\n return nodeFactory.returnStatement({\n sourceLocation: sourceLocation,\n value: requireExpressionOfType(returnValue, this._functionType.returnType),\n })\n }\n visitWithStatement(node: ts.WithStatement): awst.Statement | awst.Statement[] {\n throw new NotSupported('with statements', { sourceLocation: this.sourceLocation(node) })\n }\n visitSwitchStatement(node: ts.SwitchStatement): awst.Statement | awst.Statement[] {\n const sourceLocation = this.sourceLocation(node)\n using ctx = this.context.switchLoopCtx.enterSwitch(node, sourceLocation)\n\n const subject = requireInstanceBuilder(this.accept(node.expression)).singleEvaluation()\n\n let defaultCase: Block | null = null\n\n const clauses: awst.Statement[] = []\n for (const [index, clause] of node.caseBlock.clauses.entries()) {\n const sourceLocation = this.sourceLocation(clause)\n\n const statements = clause.statements.flatMap((s) => this.accept(s))\n const isNotLastCase = index + 1 < node.caseBlock.clauses.length\n const isObviouslyTerminated = instanceOfAny(statements.at(-1), Goto, ReturnStatement)\n const caseBlock = nodeFactory.block(\n {\n sourceLocation,\n },\n ctx.caseTarget(index, sourceLocation),\n statements,\n ...(isNotLastCase && !isObviouslyTerminated ? [ctx.gotoCase(index + 1, sourceLocation)] : []),\n )\n if (clause.kind === ts.SyntaxKind.DefaultClause) {\n defaultCase = caseBlock\n } else {\n const clauseExpr = requireInstanceBuilder(this.accept(clause.expression))\n clauses.push(\n nodeFactory.ifElse({\n condition: subject.compare(clauseExpr, BuilderComparisonOp.eq, clauseExpr.sourceLocation).boolEval(clauseExpr.sourceLocation),\n ifBranch: caseBlock,\n elseBranch: null,\n sourceLocation,\n }),\n )\n }\n }\n if (defaultCase !== null) clauses.push(defaultCase)\n\n return nodeFactory.block(\n {\n sourceLocation,\n },\n ...clauses,\n ...maybeNodes(ctx.hasBreaks, ctx.breakTarget),\n )\n }\n\n visitLabeledStatement(node: ts.LabeledStatement): awst.Statement | awst.Statement[] {\n return this.accept(node.statement)\n }\n visitThrowStatement(node: ts.ThrowStatement): awst.Statement | awst.Statement[] {\n throw new NotSupported('Throw statements', {\n sourceLocation: this.sourceLocation(node),\n })\n }\n visitDebuggerStatement(node: ts.DebuggerStatement): awst.Statement | awst.Statement[] {\n logger.warn(this.sourceLocation(node), 'Ignoring debugger statement')\n return []\n }\n visitImportDeclaration(node: ts.ImportDeclaration): awst.Statement | awst.Statement[] {\n throw new NotSupported('Non-top-level import declarations')\n }\n\n visitBlock(node: ts.Block): awst.Block {\n return nodeFactory.block(\n {\n sourceLocation: this.sourceLocation(node),\n },\n node.statements.flatMap((s) => {\n try {\n return this.accept(s)\n } catch (e) {\n invariant(e instanceof Error, 'Only errors should be thrown')\n logger.error(e)\n return []\n }\n }),\n )\n }\n\n visitParameter(node: ts.ParameterDeclaration): awst.SubroutineArgument {\n const sourceLocation = this.sourceLocation(node)\n codeInvariant(node.type, 'Parameters must have type annotation', sourceLocation)\n codeInvariant(!node.dotDotDotToken, 'Rest parameters are not supported', sourceLocation)\n codeInvariant(!node.questionToken, 'Optional parameters are not supported', sourceLocation)\n if (node.initializer) {\n logger.error(sourceLocation, 'Default parameter values are not supported')\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 return nodeFactory.subroutineArgument({\n sourceLocation,\n name: this.context.resolveDestructuredParamName(node),\n wtype: paramPType.wtypeOrThrow,\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 { ResourceEncoding } from '../../awst'\nimport { ContractReference, OnCompletionAction } from '../../awst/models'\nimport { nodeFactory } from '../../awst/node-factory'\nimport type { ABIMethodArgConstantDefault, ABIMethodArgMemberDefault, ARC4MethodConfig } from '../../awst/nodes'\nimport * as awst from '../../awst/nodes'\nimport { ARC4ABIMethodConfig, ARC4BareMethodConfig, ARC4CreateOption } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { Constants } from '../../constants'\nimport { CodeError } from '../../errors'\nimport { logger } from '../../logger'\nimport { codeInvariant, invariant, isIn, sameSets } from '../../util'\nimport { ptypeToAbiPType } from '../arc4-util'\nimport type { NodeBuilder } from '../eb'\nimport { ContractSuperBuilder, ContractThisBuilder } from '../eb/contract-builder'\nimport { requireExpressionOfType } from '../eb/util'\nimport type { Arc4AbiDecoratorData, RoutingDecoratorData } from '../models/decorator-data'\nimport type { ContractClassPType, FunctionPType } from '../ptypes'\nimport { GlobalStateType, LocalStateType, voidPType } from '../ptypes'\nimport { DecoratorVisitor } from './decorator-visitor'\nimport { FunctionVisitor } from './function-visitor'\nimport { visitInChildContext } from './util'\n\nexport class ContractMethodBaseVisitor extends FunctionVisitor {\n protected readonly _contractType: ContractClassPType\n constructor(node: ts.MethodDeclaration | ts.ConstructorDeclaration, contractType: ContractClassPType) {\n super(node)\n this._contractType = contractType\n }\n visitSuperKeyword(node: ts.SuperExpression): NodeBuilder {\n const sourceLocation = this.sourceLocation(node)\n\n // Only the polytype clustered class should have more than one base type, and it shouldn't have\n // any user code with super calls\n invariant(this._contractType.baseTypes.length === 1, 'Super keyword only valid if contract has a single base type')\n return new ContractSuperBuilder(this._contractType.baseTypes[0], sourceLocation)\n }\n\n visitThisKeyword(node: ts.ThisExpression): NodeBuilder {\n const sourceLocation = this.sourceLocation(node)\n return new ContractThisBuilder(this._contractType, sourceLocation)\n }\n}\n\ntype RoutingProps = {\n allowedCompletionTypes?: OnCompletionAction[]\n create?: ARC4CreateOption\n}\n\nexport class ContractMethodVisitor extends ContractMethodBaseVisitor {\n private readonly metaData: {\n cref: ContractReference\n arc4MethodConfig: ARC4MethodConfig | null\n sourceLocation: SourceLocation\n }\n\n constructor(node: ts.MethodDeclaration, contractType: ContractClassPType) {\n super(node, contractType)\n const sourceLocation = this.sourceLocation(node)\n\n const decorator = DecoratorVisitor.buildContractMethodData(node)\n const cref = ContractReference.fromPType(this._contractType)\n\n const modifiers = this.parseMemberModifiers(node)\n\n const arc4MethodConfig = this.buildArc4Config({\n functionType: this._functionType,\n decorator,\n modifiers,\n methodLocation: sourceLocation,\n })\n\n if (arc4MethodConfig)\n this.context.addArc4Config({\n contractReference: cref,\n sourceLocation,\n arc4MethodConfig,\n memberName: this._functionType.name,\n })\n this.metaData = {\n arc4MethodConfig,\n cref,\n sourceLocation,\n }\n }\n\n get result() {\n const { args, body, documentation } = this.buildFunctionAwst()\n\n return new awst.ContractMethod({\n arc4MethodConfig: this.metaData.arc4MethodConfig,\n memberName: this._functionType.name,\n sourceLocation: this.metaData.sourceLocation,\n args,\n returnType: this._functionType.returnType.wtypeOrThrow,\n body,\n cref: this.metaData.cref,\n documentation,\n inline: null,\n })\n }\n\n public static buildContractMethod(node: ts.MethodDeclaration, contractType: ContractClassPType): () => awst.ContractMethod {\n return visitInChildContext(this, node, contractType)\n }\n\n private buildArc4Config({\n functionType,\n decorator,\n modifiers: { isPublic, isStatic },\n methodLocation,\n }: {\n functionType: FunctionPType\n decorator: RoutingDecoratorData | undefined\n modifiers: { isPublic: boolean; isStatic: boolean }\n methodLocation: SourceLocation\n }): awst.ARC4MethodConfig | null {\n const isProgramMethod = isIn(functionType.name, [\n Constants.symbolNames.approvalProgramMethodName,\n Constants.symbolNames.clearStateProgramMethodName,\n ])\n\n if (decorator && isIn(decorator.type, [Constants.symbolNames.arc4BareDecoratorName, Constants.symbolNames.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 const conventionalDefaults = this.getConventionalRoutingConfig(functionType.name)\n\n this.validateDecoratorRoutingData(functionType, decorator, conventionalDefaults)\n\n // Default routing properties used when these values aren't specified explicitly.\n const unspecifiedDefaults = {\n allowedCompletionTypes: [OnCompletionAction.NoOp],\n create: ARC4CreateOption.disallow,\n }\n\n if (decorator?.type === 'arc4.baremethod') {\n this.checkBareMethodTypes(functionType, methodLocation)\n return new ARC4BareMethodConfig({\n sourceLocation: decorator.sourceLocation,\n allowedCompletionTypes:\n decorator.allowedCompletionTypes ?? conventionalDefaults?.allowedCompletionTypes ?? unspecifiedDefaults.allowedCompletionTypes,\n create: decorator.create ?? conventionalDefaults?.create ?? unspecifiedDefaults.create,\n })\n }\n\n if (decorator?.type === 'arc4.abimethod') {\n this.checkABIMethodTypes(functionType, decorator.resourceEncoding ?? 'value', methodLocation)\n return new ARC4ABIMethodConfig({\n readonly: decorator.readonly ?? false,\n sourceLocation: decorator.sourceLocation,\n allowedCompletionTypes:\n decorator.allowedCompletionTypes ?? conventionalDefaults?.allowedCompletionTypes ?? unspecifiedDefaults.allowedCompletionTypes,\n create: decorator.create ?? conventionalDefaults?.create ?? unspecifiedDefaults.create,\n name: decorator.nameOverride ?? functionType.name,\n resourceEncoding: decorator.resourceEncoding ?? 'value',\n defaultArgs: new Map(\n Object.entries(decorator.defaultArguments).map(([parameterName, argConfig]) => [\n parameterName,\n this.buildDefaultArgument({\n methodName: functionType.name,\n parameterName,\n config: argConfig,\n decoratorLocation: decorator.sourceLocation,\n }),\n ]),\n ),\n })\n } else if (isPublic && this._contractType.isARC4) {\n this.checkABIMethodTypes(functionType, 'value', methodLocation)\n return new ARC4ABIMethodConfig({\n allowedCompletionTypes: conventionalDefaults?.allowedCompletionTypes ?? unspecifiedDefaults.allowedCompletionTypes,\n create: conventionalDefaults?.create ?? unspecifiedDefaults.create,\n sourceLocation: methodLocation,\n name: functionType.name,\n resourceEncoding: 'value',\n readonly: decorator?.readonly ?? false,\n defaultArgs: new Map(),\n })\n }\n return null\n }\n\n private validateDecoratorRoutingData(\n functionType: FunctionPType,\n decorator: RoutingDecoratorData | undefined,\n impliedByConvention: RoutingProps | undefined,\n ) {\n if (!decorator || !impliedByConvention || decorator.type === 'arc4.readonly') return\n\n if (\n decorator.allowedCompletionTypes !== undefined &&\n impliedByConvention.allowedCompletionTypes !== undefined &&\n !sameSets(decorator.allowedCompletionTypes, impliedByConvention.allowedCompletionTypes)\n ) {\n const impliedOcaNames = impliedByConvention.allowedCompletionTypes.map((oca) => OnCompletionAction[oca]).join(', ')\n logger.error(\n decorator.allowedCompletionTypesLocation ?? decorator.sourceLocation,\n `allowActions for conventional routing method '${functionType.name}' must be: ${impliedOcaNames}`,\n )\n }\n if (decorator.create !== undefined && impliedByConvention.create !== undefined && decorator.create !== impliedByConvention.create) {\n const impliedCreateAction = ARC4CreateOption[impliedByConvention.create]\n logger.error(\n decorator.createLocation ?? decorator.sourceLocation,\n `onCreate for conventional routing method '${functionType.name}' must be: ${impliedCreateAction}`,\n )\n }\n }\n\n /**\n * Get routing properties inferred by conventional naming\n * @param methodName The name of the method\n * @private\n */\n private getConventionalRoutingConfig(methodName: string): RoutingProps | undefined {\n switch (methodName) {\n case Constants.symbolNames.conventionalRouting.closeOutOfApplicationMethodName:\n return {\n allowedCompletionTypes: [OnCompletionAction.CloseOut],\n create: ARC4CreateOption.disallow,\n }\n case Constants.symbolNames.conventionalRouting.createApplicationMethodName:\n return {\n create: ARC4CreateOption.require,\n }\n case Constants.symbolNames.conventionalRouting.deleteApplicationMethodName:\n return {\n allowedCompletionTypes: [OnCompletionAction.DeleteApplication],\n }\n case Constants.symbolNames.conventionalRouting.optInToApplicationMethodName:\n return {\n allowedCompletionTypes: [OnCompletionAction.OptIn],\n }\n case Constants.symbolNames.conventionalRouting.updateApplicationMethodName:\n return {\n allowedCompletionTypes: [OnCompletionAction.UpdateApplication],\n create: ARC4CreateOption.disallow,\n }\n default:\n return undefined\n }\n }\n\n checkABIMethodTypes(functionType: FunctionPType, resourceEncoding: ResourceEncoding, sourceLocation: SourceLocation) {\n for (const [, paramType] of functionType.parameters) {\n codeInvariant(\n ptypeToAbiPType(paramType, 'in', resourceEncoding, sourceLocation),\n 'ABI method parameter types must have an ARC4 equivalent',\n sourceLocation,\n )\n }\n codeInvariant(\n ptypeToAbiPType(functionType.returnType, 'out', resourceEncoding, sourceLocation),\n 'ABI method return type must have an ARC4 equivalent',\n sourceLocation,\n )\n }\n\n checkBareMethodTypes(functionType: FunctionPType, sourceLocation: SourceLocation) {\n codeInvariant(functionType.parameters.length === 0, 'Bare methods cannot have any parameters', sourceLocation)\n codeInvariant(functionType.returnType.equals(voidPType), 'Bare method return type must be void', sourceLocation)\n }\n\n private buildDefaultArgument({\n methodName,\n parameterName,\n config,\n decoratorLocation,\n }: {\n methodName: string\n parameterName: string\n config: Arc4AbiDecoratorData['defaultArguments'][string]\n decoratorLocation: SourceLocation\n }): ABIMethodArgMemberDefault | ABIMethodArgConstantDefault {\n const [, paramType] = this._contractType.methods[methodName].parameters.find(([p]) => p === parameterName) ?? [undefined, undefined]\n codeInvariant(\n paramType,\n `Default argument specification '${parameterName}' does not match any parameters on the target method`,\n decoratorLocation,\n )\n if (config.type === 'constant') {\n return nodeFactory.aBIMethodArgConstantDefault({\n value: requireExpressionOfType(config.value, paramType),\n })\n }\n const methodType = this._contractType.methods[config.name]\n if (methodType) {\n codeInvariant(\n methodType.returnType.equals(paramType),\n `Default argument specification for '${parameterName}' does not match parameter type`,\n decoratorLocation,\n )\n return nodeFactory.aBIMethodArgMemberDefault({\n name: config.name,\n })\n }\n const propertyType = this._contractType.properties[config.name]\n if (propertyType instanceof GlobalStateType || propertyType instanceof LocalStateType) {\n codeInvariant(\n propertyType.contentType.equals(paramType),\n `Default argument specification for '${parameterName}' does not match parameter type`,\n decoratorLocation,\n )\n return nodeFactory.aBIMethodArgMemberDefault({\n name: config.name,\n })\n }\n throw new CodeError('Unsupported default argument config', { sourceLocation: decoratorLocation })\n }\n}\n","import ts from 'typescript'\nimport type { ContractReference } from '../../awst/models'\nimport { nodeFactory } from '../../awst/node-factory'\nimport * as awst from '../../awst/nodes'\nimport { logger } from '../../logger'\nimport { codeInvariant, invariant } from '../../util'\nimport type { ContractClassPType } from '../ptypes'\nimport { voidPType } from '../ptypes'\nimport { ContractMethodBaseVisitor } from './contract-method-visitor'\nimport { visitInChildContext } from './util'\n\nexport interface ConstructorInfo {\n propertyInitializerStatements: awst.Statement[]\n cref: ContractReference\n}\n\nexport class ConstructorVisitor extends ContractMethodBaseVisitor {\n private _foundSuperCall = false\n constructor(\n node: ts.ConstructorDeclaration,\n contractType: ContractClassPType,\n private readonly contractInfo: ConstructorInfo,\n ) {\n super(node, contractType)\n }\n\n get result() {\n const sourceLocation = this.sourceLocation(this.node)\n const { args, body, documentation } = this.buildFunctionAwst()\n return new awst.ContractMethod({\n arc4MethodConfig: null,\n memberName: this._functionType.name,\n sourceLocation,\n args,\n returnType: voidPType.wtype,\n body,\n cref: this.contractInfo.cref,\n documentation,\n inline: null,\n })\n }\n\n public static buildConstructor(\n node: ts.ConstructorDeclaration,\n contractType: ContractClassPType,\n constructorMethodInfo: ConstructorInfo,\n ) {\n return visitInChildContext(this, node, contractType, constructorMethodInfo)\n }\n\n visitBlock(node: ts.Block): awst.Block {\n return nodeFactory.block(\n {\n sourceLocation: this.sourceLocation(node),\n },\n node.statements.flatMap((s) => {\n try {\n const statement = this.accept(s)\n if (isSuperCall(s)) {\n // Property initializer statements should be injected immediately after the super() call\n codeInvariant(!this._foundSuperCall, 'A constructor can only contain one call to super()')\n this._foundSuperCall = true\n return nodeFactory.block(\n {\n sourceLocation: this.sourceLocation(s),\n },\n ...(Array.isArray(statement) ? statement : [statement]),\n ...this.contractInfo.propertyInitializerStatements,\n )\n }\n return statement\n } catch (e) {\n invariant(e instanceof Error, 'Only errors should be thrown')\n logger.error(e)\n return []\n }\n }),\n )\n }\n}\n\nfunction isSuperCall(node: ts.Statement) {\n return (\n ts.isExpressionStatement(node) && ts.isCallExpression(node.expression) && node.expression.expression.kind === ts.SyntaxKind.SuperKeyword\n )\n}\n","import ts from 'typescript'\nimport { ContractReference } from '../../awst/models'\nimport { nodeFactory } from '../../awst/node-factory'\nimport type * as awst from '../../awst/nodes'\nimport type { ContractMethod } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { wtypes } from '../../awst/wtypes'\nimport { Constants } from '../../constants'\nimport { CodeError } from '../../errors'\nimport { logger } from '../../logger'\nimport { codeInvariant, invariant } from '../../util'\nimport { ContractSuperBuilder } from '../eb/contract-builder'\nimport { BoxProxyExpressionBuilder } from '../eb/storage/box'\nimport { GlobalStateFunctionResultBuilder } from '../eb/storage/global-state'\nimport { LocalStateFunctionResultBuilder } from '../eb/storage/local-state'\nimport { requireInstanceBuilder } from '../eb/util'\nimport { ContractClassModel } from '../models/contract-class-model'\nimport type { ContractOptionsDecoratorData } from '../models/decorator-data'\nimport type { ContractClassPType } from '../ptypes'\nimport { ClassDefinitionVisitor } from './class-definition-visitor'\nimport { ConstructorVisitor } from './constructor-visitor'\nimport { ContractMethodVisitor } from './contract-method-visitor'\nimport { DecoratorVisitor } from './decorator-visitor'\nimport { visitInChildContext } from './util'\n\nexport class ContractVisitor extends ClassDefinitionVisitor {\n private _ctor?: () => ContractMethod\n private _methods: Array<() => ContractMethod> = []\n private readonly _contractPType: ContractClassPType\n private readonly _propertyInitialization: awst.Statement[] = []\n\n throwNotSupported(node: ts.Node, desc: string): never {\n throw new CodeError(`${desc} are not supported in contract definitions`, {\n sourceLocation: this.sourceLocation(node),\n })\n }\n\n private readonly metaData: {\n isAbstract: boolean\n contractOptions: ContractOptionsDecoratorData | undefined\n sourceLocation: SourceLocation\n description: string | null\n }\n\n constructor(classDec: ts.ClassDeclaration, ptype: ContractClassPType) {\n super()\n const sourceLocation = this.context.getSourceLocation(classDec)\n codeInvariant(classDec.name, 'Anonymous classes are not supported for contracts', sourceLocation)\n\n this._contractPType = ptype\n\n this.metaData = {\n isAbstract: Boolean(classDec.modifiers?.some((m) => m.kind === ts.SyntaxKind.AbstractKeyword)),\n sourceLocation,\n contractOptions: DecoratorVisitor.buildContractData(classDec),\n description: this.getNodeDescription(classDec),\n }\n\n for (const property of classDec.members.filter(ts.isPropertyDeclaration)) {\n this.acceptAndIgnoreBuildErrors(property)\n }\n const ctor = classDec.members.find(ts.isConstructorDeclaration)\n if (ctor) this.acceptAndIgnoreBuildErrors(ctor)\n\n for (const member of classDec.members) {\n if (!ts.isConstructorDeclaration(member) && !ts.isPropertyDeclaration(member)) {\n this.acceptAndIgnoreBuildErrors(member)\n }\n }\n }\n\n get result(): [] | [awst.Contract] {\n const { isAbstract, sourceLocation, contractOptions, description } = this.metaData\n\n let approvalProgram: ContractMethod | null = null\n let clearProgram: ContractMethod | null = null\n const methods: ContractMethod[] = []\n const ctor: ContractMethod | null = this._ctor?.() ?? this.makeDefaultConstructor(sourceLocation)\n\n for (const deferredMethod of this._methods) {\n const contractMethod = deferredMethod()\n switch (contractMethod.memberName) {\n case Constants.symbolNames.approvalProgramMethodName:\n approvalProgram = contractMethod\n break\n case Constants.symbolNames.clearStateProgramMethodName:\n clearProgram = contractMethod\n break\n default:\n methods.push(contractMethod)\n }\n }\n\n const contract = new ContractClassModel({\n type: this._contractPType,\n propertyInitialization: this._propertyInitialization,\n isAbstract: isAbstract,\n appState: this.context.getStorageDefinitionsForContract(this._contractPType),\n ctor,\n methods,\n description,\n approvalProgram,\n clearProgram,\n options: contractOptions,\n sourceLocation: sourceLocation,\n })\n this.context.addToCompilationSet(contract.id, contract)\n const contractClass = this.context.compilationSet.getContractClass(ContractReference.fromPType(this._contractPType))\n if (!contractClass.isAbstract) {\n return [contractClass.buildContract(this.context.compilationSet)]\n }\n return []\n }\n\n private acceptAndIgnoreBuildErrors(node: ts.ClassElement) {\n try {\n this.accept(node)\n } catch (e) {\n invariant(e instanceof Error, 'Only errors should be thrown')\n logger.error(e)\n }\n }\n\n private makeDefaultConstructor(sourceLocation: SourceLocation) {\n // If there is no property initialization, we don't need an implicit constructor\n if (this._propertyInitialization.length === 0) return null\n invariant(this._contractPType.baseTypes.length === 1, 'Only single base type supported for now')\n return nodeFactory.contractMethod({\n memberName: Constants.symbolNames.constructorMethodName,\n cref: ContractReference.fromPType(this._contractPType),\n args: [],\n arc4MethodConfig: null,\n sourceLocation,\n returnType: wtypes.voidWType,\n\n documentation: nodeFactory.methodDocumentation(),\n body: nodeFactory.block(\n { sourceLocation },\n nodeFactory.expressionStatement({\n expr: requireInstanceBuilder(\n new ContractSuperBuilder(this._contractPType.baseTypes[0], sourceLocation).call([], [], sourceLocation),\n ).resolve(),\n }),\n ...this._propertyInitialization,\n ),\n inline: null,\n })\n }\n\n visitConstructor(node: ts.ConstructorDeclaration): void {\n this._ctor = ConstructorVisitor.buildConstructor(node, this._contractPType, {\n cref: ContractReference.fromPType(this._contractPType),\n propertyInitializerStatements: this._propertyInitialization,\n })\n }\n\n visitMethodDeclaration(node: ts.MethodDeclaration): void {\n this._methods.push(ContractMethodVisitor.buildContractMethod(node, this._contractPType))\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 codeInvariant(!node.modifiers?.some((m) => m.kind === ts.SyntaxKind.StaticKeyword), 'Static properties are not supported')\n\n const propertyName = this.textVisitor.accept(node.name)\n codeInvariant(node.initializer, 'Properties must have an initializer', sourceLocation)\n if (node.type) {\n logger.info(sourceLocation, 'Type annotations are not required on initialized properties')\n }\n const initializer = this.accept(node.initializer)\n\n if (initializer instanceof GlobalStateFunctionResultBuilder) {\n const storageDeclaration = initializer.buildStorageDeclaration(\n propertyName,\n this.sourceLocation(node.name),\n this.getNodeDescription(node),\n this._contractPType,\n )\n this.context.addStorageDeclaration(storageDeclaration)\n if (initializer.initialValue) {\n this._propertyInitialization.push(\n nodeFactory.assignmentStatement({\n target: nodeFactory.appStateExpression({\n key: storageDeclaration.key,\n wtype: storageDeclaration.ptype.contentType.wtypeOrThrow,\n sourceLocation: storageDeclaration.sourceLocation,\n existsAssertionMessage: null,\n }),\n value: initializer.initialValue,\n sourceLocation,\n }),\n )\n }\n } else if (initializer instanceof BoxProxyExpressionBuilder || initializer instanceof LocalStateFunctionResultBuilder) {\n this.context.addStorageDeclaration(\n initializer.buildStorageDeclaration(\n propertyName,\n this.sourceLocation(node.name),\n this.getNodeDescription(node),\n this._contractPType,\n ),\n )\n } else {\n logger.error(\n initializer.sourceLocation,\n `Unsupported property type ${initializer.typeDescription}. Only GlobalState, LocalState, and Box proxies can be stored on a contract.`,\n )\n }\n }\n\n public static buildContract(classDec: ts.ClassDeclaration, ptype: ContractClassPType) {\n return visitInChildContext(this, classDec, ptype)\n }\n}\n","import type ts from 'typescript'\nimport * as awst from '../../awst/nodes'\nimport { FunctionVisitor } from './function-visitor'\nimport { visitInChildContext } from './util'\n\nexport class LogicSigProgramVisitor extends FunctionVisitor {\n constructor(node: ts.MethodDeclaration) {\n super(node)\n }\n\n get result() {\n const sourceLocation = this.sourceLocation(this.node)\n const { args, body, documentation } = this.buildFunctionAwst()\n return new awst.Subroutine({\n id: this._functionType.fullName,\n name: this._functionType.name,\n sourceLocation,\n args,\n returnType: this._functionType.returnType.wtypeOrThrow,\n body,\n documentation,\n inline: null,\n })\n }\n\n public static buildLogicSigProgram(node: ts.MethodDeclaration) {\n return visitInChildContext(LogicSigProgramVisitor, node)\n }\n}\n","import type ts from 'typescript'\nimport type { Subroutine } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { Constants } from '../../constants'\nimport { CodeError } from '../../errors'\nimport { logger } from '../../logger'\nimport { codeInvariant, invariant } from '../../util'\nimport type { LogicSigOptionsDecoratorData } from '../models/decorator-data'\nimport { LogicSigClassModel } from '../models/logic-sig-class-model'\nimport type { LogicSigPType } from '../ptypes'\nimport { boolPType, FunctionPType, uint64PType } from '../ptypes'\nimport { ptypeIn } from '../ptypes/util'\nimport { ClassDefinitionVisitor } from './class-definition-visitor'\nimport { DecoratorVisitor } from './decorator-visitor'\nimport { LogicSigProgramVisitor } from './logic-sig-program-visitor'\nimport { visitInChildContext } from './util'\n\nexport class LogicSigVisitor extends ClassDefinitionVisitor {\n throwNotSupported(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 static buildLogicSig(classDec: ts.ClassDeclaration, ptype: LogicSigPType) {\n return visitInChildContext(this, classDec, ptype)\n }\n\n private program?: () => Subroutine\n private readonly metaData: {\n description: string | null\n options: LogicSigOptionsDecoratorData | undefined\n sourceLocation: SourceLocation\n }\n\n constructor(\n classDec: ts.ClassDeclaration,\n private _logicSigPType: LogicSigPType,\n ) {\n super()\n const sourceLocation = this.sourceLocation(classDec)\n\n const options = DecoratorVisitor.buildLogicSigData(classDec)\n\n for (const member of classDec.members) {\n try {\n this.accept(member)\n } catch (e) {\n invariant(e instanceof Error, 'Only errors should be thrown')\n logger.error(e)\n }\n }\n\n this.metaData = {\n options,\n sourceLocation,\n description: this.getNodeDescription(classDec),\n }\n }\n\n get result() {\n const { sourceLocation, options, description } = this.metaData\n\n codeInvariant(this.program, 'Logic signature class must implement a valid program method', sourceLocation)\n\n const logicSig = new LogicSigClassModel({\n bases: [],\n sourceLocation,\n program: this.program(),\n type: this._logicSigPType,\n description,\n options,\n })\n\n this.context.addToCompilationSet(logicSig.id, logicSig)\n return logicSig.buildLogicSignature()\n }\n\n 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.symbolNames.logicSigProgramMethodName) {\n logger.error(\n sourceLocation,\n `LogicSig classes may only contain a program implementation method named '${Constants.symbolNames.logicSigProgramMethodName}'. Consider making '${methodType.name}' a free subroutine.`,\n )\n return\n }\n if (!ptypeIn(methodType.returnType, uint64PType, boolPType)) {\n logger.error(\n sourceLocation,\n `LogicSig program method must return \\`uint64\\` or \\`boolean\\`, found \\`${methodType.returnType.name}\\` `,\n )\n return\n }\n this.program = LogicSigProgramVisitor.buildLogicSigProgram(node)\n }\n}\n","import type ts from 'typescript'\nimport { CodeError } from '../../errors'\nimport type { ClassElements } from '../../visitor/syntax-names'\nimport type { Visitor } from '../../visitor/visitor'\nimport { AwstBuildContext } from '../context/awst-build-context'\nimport type { ARC4StructType } from '../ptypes/arc4-types'\nimport { ClassDefinitionVisitor } from './class-definition-visitor'\n\nexport class StructVisitor extends ClassDefinitionVisitor implements Visitor<ClassElements, void> {\n throwNotSupported(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 static buildStructDef(classDec: ts.ClassDeclaration, ptype: ARC4StructType) {\n return AwstBuildContext.current.runInChildContext(() => {\n new StructVisitor(classDec, ptype)\n return []\n })\n }\n\n constructor(classDec: ts.ClassDeclaration, ptype: ARC4StructType) {\n super()\n this.visitAllMembers(classDec)\n }\n}\n","import type ts from 'typescript'\nimport * as awst from '../../awst/nodes'\nimport { FunctionVisitor } from './function-visitor'\nimport { visitInChildContext } from './util'\n\nexport class SubroutineVisitor extends FunctionVisitor {\n constructor(node: ts.FunctionDeclaration) {\n super(node)\n }\n\n get result() {\n const sourceLocation = this.sourceLocation(this.node)\n\n const { args, body, documentation } = this.buildFunctionAwst()\n\n return new awst.Subroutine({\n id: this._functionType.fullName,\n name: this._functionType.name,\n sourceLocation,\n args,\n returnType: this._functionType.returnType.wtypeOrThrow,\n body,\n documentation,\n inline: null,\n })\n }\n\n public static buildSubroutine(node: ts.FunctionDeclaration) {\n return visitInChildContext(SubroutineVisitor, node)\n }\n}\n","import ts from 'typescript'\nimport type * as awst from '../../awst/nodes'\nimport { CodeError } from '../../errors'\nimport { logger, patchErrorLocation } from '../../logger'\nimport { codeInvariant, expandMaybeArray, invariant } from '../../util'\nimport type { ModuleStatements } from '../../visitor/syntax-names'\nimport type { Visitor } from '../../visitor/visitor'\nimport { accept } from '../../visitor/visitor'\nimport { requireInstanceBuilder } from '../eb/util'\nimport { ContractClassPType, LogicSigPType } from '../ptypes'\nimport { ARC4StructType } from '../ptypes/arc4-types'\nimport { BaseVisitor } from './base-visitor'\nimport { ContractVisitor } from './contract-visitor'\nimport { LogicSigVisitor } from './logic-sig-visitor'\nimport { StructVisitor } from './struct-visitor'\nimport { SubroutineVisitor } from './subroutine-visitor'\n\ntype NodeOrDeferred = awst.AWST[] | awst.AWST | (() => awst.AWST[] | awst.AWST)\n\nexport class SourceFileVisitor extends BaseVisitor implements Visitor<ModuleStatements, NodeOrDeferred> {\n private _moduleStatements: NodeOrDeferred[] = []\n private accept = <TNode extends ts.Node>(node: TNode) => accept<SourceFileVisitor, TNode>(this, node)\n\n constructor(sourceFile: ts.SourceFile) {\n super()\n\n for (const statement of sourceFile.statements) {\n try {\n this._moduleStatements.push(this.accept(statement))\n } catch (e) {\n invariant(e instanceof Error, 'Only errors should be thrown')\n logger.error(e)\n }\n }\n }\n\n visitInterfaceDeclaration(node: ts.InterfaceDeclaration): NodeOrDeferred {\n // Ignore these for now\n return []\n }\n\n visitTypeAliasDeclaration(_node: ts.TypeAliasDeclaration): NodeOrDeferred {\n // Ignore these for now - but maybe we need to do something with them when it comes to structs\n return []\n }\n\n visitFunctionDeclaration(node: ts.FunctionDeclaration): NodeOrDeferred {\n const sourceLocation = this.sourceLocation(node)\n return this.context.runInChildContext(() => patchErrorLocation(SubroutineVisitor.buildSubroutine(node), sourceLocation))\n }\n\n buildModule(): awst.AWST[] {\n return Array.from(this.gatherStatements())\n }\n\n private *gatherStatements(): Generator<awst.AWST, void, void> {\n for (const statements of this._moduleStatements) {\n try {\n if (typeof statements === 'function') {\n for (const s of expandMaybeArray(statements())) {\n yield s\n }\n } else {\n for (const s of expandMaybeArray(statements)) {\n yield s\n }\n }\n } catch (e) {\n invariant(e instanceof Error, 'Only errors should be thrown')\n logger.error(e)\n }\n }\n }\n\n visitVariableStatement(node: ts.VariableStatement): NodeOrDeferred {\n const sourceLocation = this.sourceLocation(node)\n if (!(node.declarationList.flags & ts.NodeFlags.Const)) {\n logger.error(new CodeError(`Module level variable declarations must use the 'const' keyword.`, { sourceLocation }))\n }\n\n return node.declarationList.declarations.flatMap((dec) => {\n if (!dec.initializer) {\n throw new CodeError(`Module level variable declarations must be initialized with a value.`, { sourceLocation })\n }\n if (!ts.isIdentifier(dec.name)) {\n throw new CodeError(`Module level variable declarations must use plain identifiers.`, { sourceLocation })\n }\n const ptype = this.context.getPTypeForNode(dec.name)\n\n const initializerBuilder = this.accept(dec.initializer)\n\n if (ptype.singleton) {\n // Likely aliasing of an algo-ts type - eg const MyArray = FixedArray<uint64>\n invariant(initializerBuilder.ptype?.equals(ptype), 'Initializer type must match target type')\n return []\n }\n const maybeConst = requireInstanceBuilder(initializerBuilder)\n\n codeInvariant(maybeConst.isConstant, 'Module level assignments must be compile time constants')\n\n this.context.addConstant(dec.name, maybeConst)\n\n return []\n })\n }\n visitImportDeclaration(_node: ts.ImportDeclaration): NodeOrDeferred {\n return []\n }\n visitClassDeclaration(node: ts.ClassDeclaration): NodeOrDeferred {\n const sourceLocation = this.sourceLocation(node)\n const ptype = this.context.getPTypeForNode(node)\n\n if (ptype instanceof ContractClassPType) {\n return patchErrorLocation(ContractVisitor.buildContract(node, ptype), sourceLocation)\n } else if (ptype instanceof ARC4StructType) {\n return patchErrorLocation(() => StructVisitor.buildStructDef(node, ptype), sourceLocation)()\n } else if (ptype instanceof LogicSigPType) {\n return patchErrorLocation(LogicSigVisitor.buildLogicSig(node, ptype), sourceLocation)\n } else {\n logger.warn(sourceLocation, `Ignoring class declaration ${ptype.fullName}`)\n return []\n }\n }\n}\n","import { ContractReference } from '../../awst/models'\nimport { nodeFactory } from '../../awst/node-factory'\nimport type { AWST, Expression, Subroutine } from '../../awst/nodes'\nimport { NumericComparison, UInt64BinaryOperator } from '../../awst/nodes'\nimport { SourceLocation } from '../../awst/source-location'\nimport { wtypes } from '../../awst/wtypes'\nimport { Constants } from '../../constants'\nimport { utf8ToUint8Array } from '../../util'\nimport { AwstBuildContext } from '../context/awst-build-context'\nimport { ContractClassModel } from '../models/contract-class-model'\nimport { arc4BaseContractType, baseContractType, itoaMethod } from '../ptypes'\n\nexport function buildLibAwst(): AWST[] {\n const contractCref = ContractReference.fromPType(arc4BaseContractType)\n const baseContractCref = ContractReference.fromPType(baseContractType)\n\n const baseContract = new ContractClassModel({\n type: baseContractType,\n isAbstract: true,\n propertyInitialization: [],\n ctor: nodeFactory.contractMethod({\n memberName: Constants.symbolNames.constructorMethodName,\n cref: baseContractCref,\n args: [],\n arc4MethodConfig: null,\n sourceLocation: SourceLocation.None,\n returnType: wtypes.voidWType,\n documentation: nodeFactory.methodDocumentation(),\n body: nodeFactory.block({ sourceLocation: SourceLocation.None }),\n inline: true,\n }),\n methods: [],\n appState: [],\n options: undefined,\n description: null,\n sourceLocation: SourceLocation.None,\n approvalProgram: null,\n clearProgram: nodeFactory.contractMethod({\n memberName: Constants.symbolNames.clearStateProgramMethodName,\n cref: baseContractCref,\n args: [],\n arc4MethodConfig: null,\n sourceLocation: SourceLocation.None,\n returnType: wtypes.boolWType,\n documentation: nodeFactory.methodDocumentation(),\n body: nodeFactory.block(\n {\n sourceLocation: SourceLocation.None,\n },\n nodeFactory.returnStatement({\n sourceLocation: SourceLocation.None,\n value: nodeFactory.boolConstant({ value: true, sourceLocation: SourceLocation.None }),\n }),\n ),\n inline: null,\n }),\n })\n AwstBuildContext.current.addToCompilationSet(baseContractCref, baseContract)\n const contract = new ContractClassModel({\n type: arc4BaseContractType,\n isAbstract: true,\n propertyInitialization: [],\n ctor: null,\n methods: [],\n appState: [],\n options: undefined,\n description: null,\n clearProgram: null,\n sourceLocation: SourceLocation.None,\n approvalProgram: nodeFactory.contractMethod({\n memberName: Constants.symbolNames.approvalProgramMethodName,\n cref: contractCref,\n args: [],\n arc4MethodConfig: null,\n sourceLocation: SourceLocation.None,\n returnType: wtypes.boolWType,\n documentation: nodeFactory.methodDocumentation(),\n body: nodeFactory.block(\n {\n sourceLocation: SourceLocation.None,\n },\n nodeFactory.returnStatement({\n sourceLocation: SourceLocation.None,\n value: nodeFactory.aRC4Router({ sourceLocation: SourceLocation.None, wtype: wtypes.boolWType }),\n }),\n ),\n inline: null,\n }),\n })\n AwstBuildContext.current.addToCompilationSet(contractCref, contract)\n\n return [buildItoa()]\n}\n\nfunction buildItoa(): Subroutine {\n const digits = nodeFactory.bytesConstant({\n sourceLocation: SourceLocation.None,\n value: utf8ToUint8Array('0123456789'),\n })\n const radix = nodeFactory.uInt64Constant({\n sourceLocation: SourceLocation.None,\n value: 10n,\n })\n const paramRef = nodeFactory.varExpression({\n sourceLocation: SourceLocation.None,\n name: 'i',\n wtype: wtypes.uint64WType,\n })\n\n const charAtIndex = (index: Expression) =>\n nodeFactory.reinterpretCast({\n wtype: wtypes.stringWType,\n sourceLocation: SourceLocation.None,\n expr: nodeFactory.indexExpression({\n sourceLocation: SourceLocation.None,\n wtype: wtypes.bytesWType,\n index: index,\n base: digits,\n }),\n })\n\n return nodeFactory.subroutine({\n returnType: wtypes.stringWType,\n sourceLocation: SourceLocation.None,\n args: [\n nodeFactory.subroutineArgument({\n name: 'i',\n sourceLocation: SourceLocation.None,\n wtype: wtypes.uint64WType,\n }),\n ],\n body: nodeFactory.block(\n { sourceLocation: SourceLocation.None },\n nodeFactory.ifElse({\n condition: nodeFactory.numericComparisonExpression({\n lhs: paramRef,\n rhs: radix,\n operator: NumericComparison.lt,\n sourceLocation: SourceLocation.None,\n }),\n ifBranch: nodeFactory.block(\n { sourceLocation: SourceLocation.None },\n nodeFactory.returnStatement({ value: charAtIndex(paramRef), sourceLocation: SourceLocation.None }),\n ),\n elseBranch: nodeFactory.block(\n { sourceLocation: SourceLocation.None },\n nodeFactory.returnStatement({\n sourceLocation: SourceLocation.None,\n value: nodeFactory.intrinsicCall({\n stackArgs: [\n nodeFactory.subroutineCallExpression({\n sourceLocation: SourceLocation.None,\n args: [\n nodeFactory.callArg({\n name: 'i',\n value: nodeFactory.uInt64BinaryOperation({\n sourceLocation: SourceLocation.None,\n op: UInt64BinaryOperator.floorDiv,\n left: paramRef,\n right: radix,\n }),\n }),\n ],\n target: nodeFactory.subroutineID({ target: itoaMethod.fullName }),\n wtype: wtypes.stringWType,\n }),\n charAtIndex(\n nodeFactory.uInt64BinaryOperation({\n sourceLocation: SourceLocation.None,\n op: UInt64BinaryOperator.mod,\n left: paramRef,\n right: radix,\n }),\n ),\n ],\n immediates: [],\n opCode: 'concat',\n wtype: wtypes.stringWType,\n sourceLocation: SourceLocation.None,\n }),\n }),\n ),\n sourceLocation: SourceLocation.None,\n }),\n ),\n documentation: nodeFactory.methodDocumentation({}),\n inline: null,\n id: itoaMethod.fullName,\n name: itoaMethod.name,\n })\n}\n","import { jsonSerializeAwst } from '../awst/json-serialize-awst'\nimport type { AWST } from '../awst/nodes'\nimport { ToCodeVisitor } from '../awst/to-code-visitor'\nimport { logger } from '../logger'\nimport type { CompileOptions } from '../options'\nimport type { CreateProgramResult } from '../parser'\nimport { invariant } from '../util'\nimport { ArtifactKind, writeArtifact } from '../write-artifact'\nimport { SourceFileVisitor } from './ast-visitors/source-file-visitor'\nimport { AwstBuildContext } from './context/awst-build-context'\nimport { buildLibAwst } from './lib'\nimport type { CompilationSet } from './models/contract-class-model'\n\nexport function buildAwst({ program, sourceFiles }: CreateProgramResult, options: CompileOptions): [AWST[], CompilationSet] {\n return AwstBuildContext.run(program, () => {\n const moduleAwst: AWST[] = buildLibAwst()\n for (const [sourcePath, sourceFile] of Object.entries(sourceFiles)) {\n try {\n AwstBuildContext.current.runInChildContext(() => {\n const visitor = new SourceFileVisitor(sourceFile)\n const algoFile = options.filePaths.find((p) => p.sourceFile === sourcePath)\n\n const module = visitor.buildModule()\n\n if (options.outputAwst && algoFile) {\n writeArtifact({\n sourceFile: sourceFile.fileName,\n outDir: algoFile.outDir,\n kind: ArtifactKind.Awst,\n obj: module,\n buildArtifact(module): string {\n const toCode = new ToCodeVisitor()\n return module.flatMap((s) => s.accept(toCode)).join('\\n')\n },\n })\n }\n if (options.outputAwstJson && algoFile) {\n writeArtifact({\n sourceFile: sourceFile.fileName,\n outDir: algoFile.outDir,\n kind: ArtifactKind.AwstJson,\n obj: module,\n buildArtifact(module): string {\n return jsonSerializeAwst(module)\n },\n })\n }\n moduleAwst.push(...module)\n })\n } catch (e) {\n invariant(e instanceof Error, 'Only errors should be thrown')\n logger.error(e)\n }\n }\n return [moduleAwst, AwstBuildContext.current.compilationSet]\n })\n}\n","import ts from 'typescript'\nimport { logger } from '../logger'\n\nexport function resolveModuleNameLiterals(\n moduleLiterals: readonly ts.StringLiteralLike[],\n containingFile: string,\n redirectedReference: ts.ResolvedProjectReference | undefined,\n options: ts.CompilerOptions,\n): readonly ts.ResolvedModuleWithFailedLookupLocations[] {\n return moduleLiterals.map(({ text: moduleName }) => {\n const result = ts.resolveModuleName(\n moduleName,\n containingFile,\n options,\n {\n fileExists: ts.sys.fileExists,\n readFile: ts.sys.readFile,\n },\n undefined,\n redirectedReference,\n )\n if (!result.resolvedModule && !containingFile.endsWith('.d.ts')) {\n logger.warn(undefined, `Could not resolve typings for module ${moduleName} referenced by file ${containingFile}. `)\n }\n\n return result\n })\n}\n","import ts from 'typescript'\nimport { SourceLocation } from '../awst/source-location'\nimport { logger, LoggingContext } from '../logger'\nimport type { AlgoFile, CompileOptions } from '../options'\nimport type { DeliberateAny } from '../typescript-helpers'\nimport { normalisePath } from '../util'\nimport { resolveModuleNameLiterals } from './resolve-module-name-literals'\n\nexport type SourceFileMapping = Record<string, ts.SourceFile>\nexport type CreateProgramResult = {\n sourceFiles: SourceFileMapping\n program: ts.Program\n programDirectory: string\n}\n\nexport function createTsProgram(options: Pick<CompileOptions, 'filePaths'>): CreateProgramResult {\n const compilerOptions: ts.CompilerOptions = {\n allowJs: false,\n strict: true,\n // Lib names need to be the full file name from the typescript package 'lib' folder.\n lib: ['lib.es2023.full.d.ts'],\n libReplacement: false,\n target: ts.ScriptTarget.ES2023,\n module: ts.ModuleKind.ESNext,\n types: [],\n moduleResolution: ts.ModuleResolutionKind.Bundler,\n }\n\n const host = ts.createCompilerHost(compilerOptions)\n\n const fileMap = options.filePaths.reduce((acc, cur) => acc.set(cur.sourceFile, cur), new Map<string, AlgoFile>())\n const { fileExists, readFile } = host\n host.fileExists = function (fileName): boolean {\n return fileMap.has(fileName) || fileExists(fileName)\n }\n host.readFile = function (fileName): string | undefined {\n const matchedFile = fileMap.get(fileName)\n if (matchedFile?.fileContents) {\n return matchedFile.fileContents\n }\n return readFile(fileName)\n }\n host.resolveModuleNameLiterals = resolveModuleNameLiterals\n\n const program = ts.createProgram(\n options.filePaths.map((p) => p.sourceFile),\n compilerOptions,\n host,\n )\n const programDirectory = program.getCurrentDirectory()\n\n const sourceFiles = Object.fromEntries(\n program\n .getSourceFiles()\n .filter((f) => !f.isDeclarationFile)\n .map((f) => {\n if (!(f as DeliberateAny)['externalModuleIndicator']) {\n logger.warn(\n SourceLocation.fromFile(f, programDirectory),\n 'File is being interpreted as a script because it has no import or export statements. Containing statements will be evaluated in a global context.',\n )\n }\n return [normalisePath(f.fileName, programDirectory), f]\n }),\n )\n\n LoggingContext.current.sourcesByPath = Object.fromEntries(\n Object.entries(sourceFiles).map(([path, file]) => {\n return [path, file.getFullText().replace(/\\r\\n/g, '\\n').split(/\\n/g)]\n }),\n )\n\n reportDiagnostics(program)\n return {\n sourceFiles,\n program,\n programDirectory: program.getCurrentDirectory(),\n }\n}\n\nfunction reportDiagnostics(program: ts.Program) {\n function reportDiagnostic(diagnostic: ts.Diagnostic) {\n if (isDiagnosticWithLocation(diagnostic)) {\n const sourceLocation = SourceLocation.fromDiagnostic(diagnostic, program.getCurrentDirectory())\n const text = typeof diagnostic.messageText === 'string' ? diagnostic.messageText : diagnostic.messageText.messageText\n switch (diagnostic.category) {\n case ts.DiagnosticCategory.Error:\n logger.error(sourceLocation, text)\n break\n case ts.DiagnosticCategory.Warning:\n logger.warn(sourceLocation, text)\n break\n }\n }\n }\n\n function isDiagnosticWithLocation(d: ts.Diagnostic): d is ts.DiagnosticWithLocation {\n return Object.hasOwn(d, 'file')\n }\n\n program.getSemanticDiagnostics().forEach(reportDiagnostic)\n program.getSyntacticDiagnostics().forEach(reportDiagnostic)\n}\n","import path from 'node:path'\nimport ts from 'typescript'\nimport type { SourceFileMapping } from './index'\n\nexport function jsonSerializeSourceFiles(sourceFiles: SourceFileMapping, programDirectory: string) {\n return JSON.stringify(\n Object.fromEntries(Object.entries(sourceFiles).map(([key, value]) => [path.join(programDirectory, key), value] as const)),\n (key, value) => {\n if (ts.isSourceFile(value)) {\n return value.getFullText().replace(/\\r\\n/g, '\\n').split(/\\n/g)\n }\n return value\n },\n 2,\n )\n}\n","import type { AWST } from '../awst/nodes'\nimport type { CompilationSet } from '../awst_build/models/contract-class-model'\nimport type { AlgoFile, CompilationSetMapping } from '../options'\nimport { mkDirIfNotExists } from '../util'\n\nexport function buildCompilationSetMapping({\n awst,\n inputPaths,\n compilationSet,\n}: {\n awst: AWST[]\n inputPaths: AlgoFile[]\n compilationSet: CompilationSet\n}): CompilationSetMapping {\n const setIds = new Set(compilationSet.compilationOutputSet.map((s) => s.id))\n\n return awst.reduce((acc, cur) => {\n if (setIds.has(cur.id.toString())) {\n const matchedPath = inputPaths.find((p) => p.sourceFile === cur.sourceLocation.file)\n if (matchedPath) {\n mkDirIfNotExists(matchedPath.outDir)\n acc[cur.id.toString()] = matchedPath.outDir\n }\n }\n return acc\n }, {} as CompilationSetMapping)\n}\n","import { spawn } from 'cross-spawn'\n\ntype InvokeCliOptions = {\n command: string\n args: string[]\n cwd?: string\n onReceiveLine?(line: string): void\n dontThrowOnNonzeroCode?: boolean\n}\n\ntype InvokeCliResponse = {\n lines: string[]\n code: number\n}\n\nclass InvokeCliError extends Error {\n constructor(public exit: { code?: number | null; signal?: NodeJS.Signals | null }) {\n if (exit.code) {\n super(`Exited with code ${exit.code}`)\n } else if (exit.signal) {\n super(`Exited with signal ${exit.signal}`)\n } else {\n super('Exited with unknown cause')\n }\n }\n}\n\nexport function invokeCli(options: InvokeCliOptions): Promise<InvokeCliResponse> {\n return new Promise<InvokeCliResponse>((resolve, reject) => {\n const lineAggregator = new LineAggregator(options.onReceiveLine)\n const process = spawn(options.command, options.args, {\n stdio: 'pipe',\n })\n\n process.stdout.on('data', (data) => lineAggregator.aggregate(data))\n process.once('close', (code) => {\n if (code !== 0 && !options.dontThrowOnNonzeroCode) {\n reject(new InvokeCliError({ code }))\n }\n lineAggregator.flush()\n resolve({\n code: code ?? 0,\n lines: lineAggregator.lines,\n })\n })\n process.once('exit', (code, signal) => {\n if (signal !== null) {\n reject(new InvokeCliError({ signal }))\n }\n if (code !== 0 && !options.dontThrowOnNonzeroCode) {\n reject(new InvokeCliError({ code }))\n }\n lineAggregator.flush()\n resolve({\n code: code ?? 0,\n lines: lineAggregator.lines,\n })\n })\n process.once('error', reject)\n })\n}\n\nclass LineAggregator {\n #line = ''\n #lines: string[] = []\n constructor(private readonly onLine?: (line: string) => void) {}\n\n aggregate(chunk: Buffer<ArrayBufferLike> | null | undefined) {\n if (chunk === undefined || chunk === null) return\n const text = chunk.toString('utf-8')\n for (const c of text) {\n switch (c) {\n case '\\n':\n this.flushLine()\n break\n case '\\r':\n continue\n default:\n this.#line += c\n break\n }\n }\n }\n\n flush() {\n if (this.#line) this.flushLine()\n }\n\n private flushLine() {\n this.#lines.push(this.#line)\n this.onLine?.(this.#line)\n this.#line = ''\n }\n\n get lines() {\n return this.#lines\n }\n}\n","import { logger } from '../logger'\nimport { invokeCli } from '../util/invoke-cli'\n\nexport async function runPuya({\n command,\n args,\n cwd,\n onOutput,\n}: {\n command: string\n args: string[]\n cwd?: string\n onOutput: (line: string) => void\n}) {\n const result = await invokeCli({\n command,\n args,\n cwd,\n onReceiveLine: onOutput,\n dontThrowOnNonzeroCode: true,\n })\n\n if (result.code !== 0) {\n logger.critical(undefined, `Compilation exited with status ${result.code}`)\n }\n}\n","import { Constants } from '../constants'\nimport { logger } from '../logger'\nimport { runPuya } from './run-puya'\nimport type { SemVer } from './semver'\n\nexport enum VersionCompareVerdict {\n ExactMatch = 'ExactMatch',\n Inconclusive = 'Inconclusive',\n MajorMismatch = 'MajorMismatch',\n MinorMismatch = 'MinorMismatch',\n OlderRevision = 'OlderRevision',\n NewerRevision = 'NewerRevision',\n}\n\nexport async function comparePuyaVersion(puyaPath: string): Promise<{\n target: string\n found?: string\n verdict: VersionCompareVerdict\n}> {\n const target = Constants.targetedPuyaVersion\n\n const versionParser = new VersionParser()\n await runPuya({\n command: puyaPath,\n args: ['--version'],\n onOutput: (line) => versionParser.receiveLine(line),\n })\n\n if (!versionParser.version) return { target, verdict: VersionCompareVerdict.Inconclusive }\n const ver = versionParser.version\n\n // Compare\n const [major, minor, rev] = target.split('.').map((x) => Number(x))\n if (ver.major !== major) return { verdict: VersionCompareVerdict.MajorMismatch, target, found: ver.formatted }\n if (ver.minor !== minor) return { verdict: VersionCompareVerdict.MinorMismatch, target, found: ver.formatted }\n if (ver.rev < rev) return { verdict: VersionCompareVerdict.OlderRevision, target, found: ver.formatted }\n if (ver.rev > rev) return { verdict: VersionCompareVerdict.NewerRevision, target, found: ver.formatted }\n return { verdict: VersionCompareVerdict.ExactMatch, target, found: ver.formatted }\n}\n\nexport async function checkPuyaVersion(puyaPath: string) {\n const result = await comparePuyaVersion(puyaPath)\n\n switch (result.verdict) {\n case VersionCompareVerdict.Inconclusive:\n logger.warn(undefined, `Unable to verify the version of Puya at ${puyaPath}.`)\n break\n case VersionCompareVerdict.MajorMismatch:\n case VersionCompareVerdict.MinorMismatch:\n logger.warn(\n undefined,\n `Version of Puya at ${puyaPath} (${result.found}) does not match targeted version (${result.target}). There may be compatibility issues.`,\n )\n break\n case VersionCompareVerdict.OlderRevision:\n logger.warn(undefined, `Revision of Puya at ${puyaPath} (${result.found}) is older than the targeted revision (${result.target})`)\n break\n case VersionCompareVerdict.NewerRevision:\n logger.debug(undefined, `Revision of Puya at ${puyaPath} (${result.found}) is newer than the targeted revision (${result.target})`)\n break\n }\n}\n\nclass VersionParser {\n #ver: SemVer | undefined\n\n receiveLine(line: string): void {\n const matched = /^puya ((\\d+)\\.(\\d+)\\.(\\d+)(-.*)?)$/.exec(line)\n if (!matched) {\n logger.debug(undefined, `'puya --version' command returned unexpected output: \"${line}\"`)\n } else {\n this.#ver = {\n formatted: matched[1],\n major: Number(matched[2]),\n minor: Number(matched[3]),\n rev: Number(matched[4]),\n suffix: matched[5] ?? '',\n }\n }\n }\n\n get version(): undefined | SemVer {\n return this.#ver\n }\n}\n","import upath from 'upath'\nimport { z } from 'zod'\nimport { SourceLocation } from '../awst/source-location'\nimport { logger, LogLevel } from '../logger'\n\nconst puyaLog = z.object({\n level: z.nativeEnum(LogLevel),\n location: z\n .object({\n file: z.string(),\n line: z.number(),\n end_line: z.number().or(z.null()),\n column: z.number(),\n end_column: z.number().or(z.null()),\n })\n .or(z.null()),\n message: z.string(),\n})\n\nexport function deserializeAndLog(logText: string) {\n try {\n const log = puyaLog.parse(JSON.parse(logText))\n\n const sourceLocation = log.location\n ? new SourceLocation({\n file: upath.normalize(log.location.file),\n line: log.location.line,\n endLine: log.location.end_line ?? log.location.line + 1,\n column: log.location.column,\n endColumn: log.location.end_column ?? log.location.column,\n scope: 'range',\n })\n : undefined\n logger.addLog(log.level, sourceLocation, log.message)\n } catch (e) {\n logger.error(undefined, `Could not parse log output from puya cli ${e}`)\n }\n}\n","import { AwstSerializer, SnakeCaseSerializer } from '../awst/json-serialize-awst'\nimport type { AWST } from '../awst/nodes'\nimport type { CompilationSet } from '../awst_build/models/contract-class-model'\nimport { logger, LogLevel } from '../logger'\nimport type { CompileOptions } from '../options'\nimport type { SourceFileMapping } from '../parser'\nimport { jsonSerializeSourceFiles } from '../parser/json-serialize-source-files'\nimport { generateTempDir } from '../util/generate-temp-file'\nimport { buildCompilationSetMapping } from './build-compilation-set-mapping'\nimport { checkPuyaVersion } from './check-puya-version'\nimport { deserializeAndLog } from './log-deserializer'\nimport { resolvePuyaPath } from './resolve-puya-path'\nimport { runPuya } from './run-puya'\n\nexport async function invokePuya({\n moduleAwst,\n programDirectory,\n sourceFiles,\n options,\n compilationSet,\n}: {\n moduleAwst: AWST[]\n programDirectory: string\n sourceFiles: SourceFileMapping\n options: CompileOptions\n compilationSet: CompilationSet\n}) {\n if (options.customPuyaPath && !options.skipVersionCheck) {\n await checkPuyaVersion(options.customPuyaPath)\n }\n\n const puyaPath = options.customPuyaPath ?? (await resolvePuyaPath())\n\n using buildDir = generateTempDir()\n\n // Write AWST file\n const moduleAwstFile = buildDir.makeFile({ name: 'module', ext: 'awst.json', compress: true })\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 const moduleSourceFile = buildDir.makeFile({ name: 'sources', ext: 'json' })\n logger.debug(undefined, `Write source to ${moduleSourceFile.filePath}`)\n moduleSourceFile.writeFileSync(jsonSerializeSourceFiles(sourceFiles, programDirectory), 'utf-8')\n\n // Write puya options\n const puyaOptions = options.buildPuyaOptions(\n buildCompilationSetMapping({\n awst: moduleAwst,\n inputPaths: options.filePaths,\n compilationSet,\n }),\n )\n const optionsFile = buildDir.makeFile({ name: 'options', ext: 'json' })\n logger.debug(undefined, `Write options to ${optionsFile.filePath}`)\n optionsFile.writeFileSync(new SnakeCaseSerializer().serialize(puyaOptions))\n const puyaArgs = [\n '--options',\n optionsFile.filePath,\n `--awst`,\n moduleAwstFile.filePath,\n `--source-annotations`,\n moduleSourceFile.filePath,\n '--log-level',\n getPuyaLogLevel(options.logLevel),\n '--log-format',\n 'json',\n ]\n // Useful to have this in a var to copy/paste when debugging puya\n const puyaArgsStr = puyaArgs.join(' ')\n logger.debug(undefined, `Invoking puya: ${puyaPath} ${puyaArgsStr}`)\n await runPuya({\n command: puyaPath,\n args: puyaArgs,\n cwd: programDirectory,\n onOutput: deserializeAndLog,\n })\n}\n\nfunction getPuyaLogLevel(logLevel: LogLevel): string {\n switch (logLevel) {\n case LogLevel.Debug:\n return 'debug'\n case LogLevel.Info:\n return 'info'\n case LogLevel.Warning:\n return 'warning'\n case LogLevel.Error:\n return 'error'\n case LogLevel.Critical:\n return 'critical'\n }\n}\n","import type ts from 'typescript'\nimport type { AWST } from './awst/nodes'\nimport { validateAwst } from './awst/validation'\nimport { buildAwst } from './awst_build'\nimport type { CompilationSet } from './awst_build/models/contract-class-model'\nimport { registerPTypes } from './awst_build/ptypes/register'\nimport { typeRegistry } from './awst_build/type-registry'\nimport { logger, LoggingContext } from './logger'\nimport type { CompileOptions } from './options'\nimport { createTsProgram } from './parser'\nimport { invokePuya } from './puya'\n\nexport type CompileResult = {\n programDirectory: string\n awst?: AWST[]\n ast?: Record<string, ts.SourceFile>\n compilationSet?: CompilationSet\n}\n\nexport async function compile(options: CompileOptions): Promise<CompileResult> {\n const loggerCtx = LoggingContext.current\n registerPTypes(typeRegistry)\n const programResult = createTsProgram(options)\n if (loggerCtx.hasErrors()) {\n logger.info(undefined, 'Compilation halted due to parse errors')\n return {\n programDirectory: programResult.programDirectory,\n ast: programResult.sourceFiles,\n }\n }\n const [moduleAwst, compilationSet] = buildAwst(programResult, options)\n validateAwst(moduleAwst)\n\n if (loggerCtx.hasErrors()) {\n logger.info(undefined, 'Compilation halted due to errors')\n return {\n programDirectory: programResult.programDirectory,\n awst: moduleAwst,\n ast: programResult.sourceFiles,\n compilationSet,\n }\n }\n if (!options.dryRun) {\n await invokePuya({\n options,\n moduleAwst,\n programDirectory: programResult.programDirectory,\n compilationSet,\n sourceFiles: programResult.sourceFiles,\n })\n }\n\n return {\n programDirectory: programResult.programDirectory,\n awst: moduleAwst,\n ast: programResult.sourceFiles,\n compilationSet,\n }\n}\n","import { minimatch } from 'minimatch'\nimport upath from 'upath'\n\nexport function determineOutDir(inputPath: string, sourceFile: string, outDir: string) {\n const outDirBase = findMinimalMatch(upath.normalizeTrim(inputPath), sourceFile)\n\n const subPath = upath.dirname(sourceFile.slice(outDirBase.length))\n\n if (upath.isAbsolute(outDir)) {\n return upath.normalizeTrim(upath.join(outDir, subPath))\n }\n return upath.normalizeTrim(upath.join(outDirBase, outDir, subPath))\n}\n\nfunction trimCurrentDir(path: string) {\n return path.startsWith('./') ? path.slice(2) : path\n}\n\nfunction findMinimalMatch(inputPath: string, testPath: string): string {\n if (inputPath === '.' || testPath === '.') {\n return ''\n }\n const [matchedPath] = minimatch.match([trimCurrentDir(testPath)], trimCurrentDir(inputPath))\n if (matchedPath) {\n if (matchedPath.endsWith('.algo.ts')) {\n return upath.dirname(matchedPath)\n }\n return matchedPath\n }\n return findMinimalMatch(inputPath, upath.dirname(testPath))\n}\n","import { globSync } from 'glob'\nimport fs from 'node:fs'\nimport upath from 'upath'\nimport { PuyaError } from '../errors'\nimport { logger } from '../logger'\nimport type { AlgoFile } from '../options'\nimport { normalisePath } from '../util'\nimport { determineOutDir } from './determine-out-dir'\n\nexport const processInputPaths = ({\n paths,\n workingDirectory = process.cwd(),\n outDir = 'out',\n}: {\n paths: string[]\n outDir?: string\n workingDirectory?: string\n}): AlgoFile[] => {\n const filePaths: AlgoFile[] = []\n\n for (const p of paths.map((p) => upath.normalizeTrim(p))) {\n if (p.endsWith('.algo.ts')) {\n if (fs.existsSync(p)) {\n const sourceFile = normalisePath(p, workingDirectory)\n\n filePaths.push({\n sourceFile,\n outDir: determineOutDir(p, sourceFile, outDir),\n })\n } else {\n logger.warn(undefined, `File ${p} could not be found`)\n }\n } else if (p.endsWith('.ts')) {\n logger.warn(undefined, `Ignoring path ${p} as it does use the .algo.ts extension`)\n } else {\n const matches = globSync(upath.join(p, '**/*.algo.ts'))\n if (matches.length) {\n for (const match of matches) {\n const sourceFile = normalisePath(match, workingDirectory)\n filePaths.push({\n sourceFile,\n outDir: determineOutDir(p, sourceFile, outDir),\n })\n }\n } else {\n logger.warn(undefined, `Path '${p}' did not match any .algo.ts files`)\n }\n }\n }\n if (filePaths.length === 0) {\n throw new PuyaError('Input paths did not match any .algo.ts files')\n }\n\n return filePaths.map(replaceOutDirTokens)\n}\n\nfunction replaceOutDirTokens(algoFile: AlgoFile): AlgoFile {\n const replacements = {\n name: upath.basename(algoFile.sourceFile).replace('.algo.ts', ''),\n }\n\n return {\n ...algoFile,\n outDir: algoFile.outDir.replaceAll('[name]', replacements.name),\n }\n}\n","import { LogLevel } from './logger'\nimport type { Props } from './typescript-helpers'\n\nexport interface AlgoFile {\n sourceFile: string\n outDir: string\n fileContents?: string\n}\n\nexport class CompileOptions {\n public readonly filePaths: AlgoFile[]\n public readonly logLevel: LogLevel\n public readonly outputAwst: boolean\n public readonly outputAwstJson: boolean\n public readonly skipVersionCheck: boolean\n /**\n * Don't generate artifacts for puya, or invoke puya\n */\n public readonly dryRun: boolean\n public readonly outputTeal: boolean\n public readonly outputArc32: boolean\n public readonly outputArc56: boolean\n public readonly outputSsaIr: boolean\n public readonly outputOptimizationIr: boolean\n public readonly outputDestructuredIr: boolean\n public readonly outputMemoryIr: boolean\n public readonly outputBytecode: boolean\n public readonly outputSourceMap: boolean\n public readonly debugLevel: number\n public readonly optimizationLevel: number\n public readonly targetAvmVersion: number\n public readonly cliTemplateDefinitions: Record<string, Uint8Array | bigint>\n public readonly templateVarsPrefix: string\n public readonly localsCoalescingStrategy: LocalsCoalescingStrategy\n public readonly customPuyaPath?: string\n\n constructor(options: Partial<Props<CompileOptions>> & { filePaths: AlgoFile[] }) {\n this.filePaths = options.filePaths\n this.logLevel = options.logLevel ?? LogLevel.Info\n this.outputAwst = options.outputAwst ?? false\n this.outputAwstJson = options.outputAwstJson ?? false\n this.skipVersionCheck = options.skipVersionCheck ?? false\n this.dryRun = options.dryRun ?? false\n this.outputTeal = options.outputTeal ?? false\n this.outputArc32 = options.outputArc32 ?? false\n this.outputArc56 = options.outputArc56 ?? false\n this.outputSsaIr = options.outputSsaIr ?? false\n this.outputOptimizationIr = options.outputOptimizationIr ?? false\n this.outputDestructuredIr = options.outputDestructuredIr ?? false\n this.outputMemoryIr = options.outputMemoryIr ?? false\n this.outputBytecode = options.outputBytecode ?? false\n this.outputSourceMap = options.outputSourceMap ?? false\n this.debugLevel = options.debugLevel ?? defaultPuyaOptions.debugLevel\n this.optimizationLevel = options.optimizationLevel ?? defaultPuyaOptions.optimizationLevel\n this.targetAvmVersion = options.targetAvmVersion ?? defaultPuyaOptions.targetAvmVersion\n this.cliTemplateDefinitions = options.cliTemplateDefinitions ?? defaultPuyaOptions.cliTemplateDefinitions\n this.templateVarsPrefix = options.templateVarsPrefix ?? defaultPuyaOptions.templateVarsPrefix\n this.localsCoalescingStrategy = options.localsCoalescingStrategy ?? defaultPuyaOptions.localsCoalescingStrategy\n this.customPuyaPath = options.customPuyaPath ?? process.env.PUYA_PATH\n }\n\n buildPuyaOptions(compilationSet: CompilationSetMapping) {\n return new PuyaOptions({ ...this, compilationSet, resourceEncoding: 'value' })\n }\n}\n\nexport enum LocalsCoalescingStrategy {\n root_operand = 'root_operand',\n root_operand_excluding_args = 'root_operand_excluding_args',\n aggressive = 'aggressive',\n}\nexport type CompilationSetMapping = Record<string, string>\n\nexport const defaultPuyaOptions: PuyaPassThroughOptions = {\n outputTeal: true,\n outputArc32: true,\n outputArc56: true,\n outputSsaIr: false,\n outputSourceMap: true,\n outputOptimizationIr: false,\n outputDestructuredIr: false,\n outputMemoryIr: false,\n outputBytecode: false,\n debugLevel: 1,\n optimizationLevel: 1,\n targetAvmVersion: 10,\n cliTemplateDefinitions: {},\n templateVarsPrefix: 'TMPL_',\n localsCoalescingStrategy: LocalsCoalescingStrategy.root_operand,\n}\nexport type PuyaPassThroughOptions = Omit<PuyaOptions, 'compilationSet'>\n\nexport class PuyaOptions {\n outputTeal: boolean\n outputArc32: boolean\n outputArc56: boolean\n outputSsaIr: boolean\n outputOptimizationIr: boolean\n outputDestructuredIr: boolean\n outputMemoryIr: boolean\n outputBytecode: boolean\n outputSourceMap: boolean\n debugLevel: number\n optimizationLevel: number\n targetAvmVersion: number\n cliTemplateDefinitions: Record<string, Uint8Array | bigint>\n templateVarsPrefix: string\n localsCoalescingStrategy: LocalsCoalescingStrategy\n compilationSet: CompilationSetMapping\n\n constructor(options: Props<PuyaOptions>) {\n this.compilationSet = options.compilationSet\n this.outputTeal = options.outputTeal\n this.outputArc32 = options.outputArc32\n this.outputArc56 = options.outputArc56\n this.outputSsaIr = options.outputSsaIr\n this.outputOptimizationIr = options.outputOptimizationIr\n this.outputDestructuredIr = options.outputDestructuredIr\n this.outputMemoryIr = options.outputMemoryIr\n this.outputBytecode = options.outputBytecode\n this.debugLevel = options.debugLevel\n this.optimizationLevel = options.optimizationLevel\n this.targetAvmVersion = options.targetAvmVersion\n this.cliTemplateDefinitions = options.cliTemplateDefinitions\n this.templateVarsPrefix = options.templateVarsPrefix\n this.localsCoalescingStrategy = options.localsCoalescingStrategy\n this.outputSourceMap = options.outputSourceMap\n }\n}\n"],"names":["isObjectType","integer","arc4Types.UintNType","arc4Types.UFixedNxMType","arc4Types.arc4ByteAlias","arc4Types.arc4StringType","arc4Types.arc4BooleanType","arc4Types.arc4AddressAlias","arc4Types.ARC4TupleType","arc4Types.DynamicArrayType","arc4Types.StaticArrayType","awst.VarExpression","awst.SingleEvaluation","awst.AppStateExpression","awst.AppAccountStateExpression","awst.StateGet","awst.StateGetEx","awst.BoxValueExpression","awst.IndexExpression","awst.TupleItemExpression","awst.FieldExpression","awst.TupleExpression","awst.ReinterpretCast","awst.IntegerConstant","ConcatFunctionBuilder","IndexedTransactionFieldFunctionBuilder","awst.StringConstant","ptypes.accountPType","ptypes.uint64PType","ptypes.ReadonlyTuplePType","ptypes.boolPType","ptypes.bytesPType","ptypes.voidPType","ptypes.applicationPType","ptypes.assetPType","ptypes.BytesPType","ptypes.base64PType","ptypes.biguintPType","ptypes.ecPType","ptypes.ecdsaPType","ptypes.transactionTypeType","ptypes.onCompleteActionType","ptypes.mimcConfigurationsPType","ptypes.vrfVerifyPType","nodes.AssignmentExpression","awst.ContractMethod","awst.Subroutine","fs"],"mappings":"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"}
|