@algorandfoundation/puya-ts 1.2.0-beta.2 → 1.2.0-beta.21

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.
Files changed (67) hide show
  1. package/README.md +7 -5
  2. package/{analyser-service-DSK9g7zQ.js → analyser-service-CGprVWba.js} +409 -372
  3. package/analyser-service-CGprVWba.js.map +1 -0
  4. package/analyserService.mjs +7 -6
  5. package/analyserService.mjs.map +1 -1
  6. package/arc4-clientgen-C7FQSt3R.js +324 -0
  7. package/arc4-clientgen-C7FQSt3R.js.map +1 -0
  8. package/arc4-clientgen.d.ts +6 -0
  9. package/awst/intrinsic-factory.d.ts +4 -2
  10. package/awst/node-factory.d.ts +1 -0
  11. package/awst/nodes.d.ts +22 -2
  12. package/awst/to-code-visitor.d.ts +2 -0
  13. package/awst/validation/awst-traverser.d.ts +3 -1
  14. package/awst/wtypes.d.ts +8 -1
  15. package/awst_build/arc4-util.d.ts +1 -38
  16. package/awst_build/ast-visitors/contract-method-visitor.d.ts +0 -2
  17. package/awst_build/eb/arc28/arc-28-emit-function-builder.d.ts +1 -2
  18. package/awst_build/eb/arc4/uintn.d.ts +1 -1
  19. package/awst_build/eb/arc4/util.d.ts +1 -0
  20. package/awst_build/eb/array-like/util.d.ts +0 -1
  21. package/awst_build/eb/logged-error-builder.d.ts +11 -0
  22. package/awst_build/models/decorator-data.d.ts +1 -0
  23. package/awst_build/ptypes/for-export.d.ts +0 -1
  24. package/awst_build/ptypes/index.d.ts +2 -0
  25. package/bin/puyats-clientgen.d.ts +2 -0
  26. package/bin/puyats-clientgen.mjs +101 -0
  27. package/bin/puyats-clientgen.mjs.map +1 -0
  28. package/bin/puyats-ls.mjs +21 -46
  29. package/bin/puyats-ls.mjs.map +1 -1
  30. package/bin/run-cli.mjs +18 -12
  31. package/bin/run-cli.mjs.map +1 -1
  32. package/{check-node-version-BtcNqlid.js → check-node-version-DcMVGPC-.js} +3 -3
  33. package/{check-node-version-BtcNqlid.js.map → check-node-version-DcMVGPC-.js.map} +1 -1
  34. package/cli/build-command.d.ts +2 -0
  35. package/cli.mjs +36 -76
  36. package/cli.mjs.map +1 -1
  37. package/clientgen.d.ts +1 -0
  38. package/code-fix/{invalid-non-null-assertion.d.ts → no-op-non-null-assertion.d.ts} +1 -1
  39. package/{compile-Cj7vjDbw.js → compile-D0CpLiRh.js} +13 -4
  40. package/compile-D0CpLiRh.js.map +1 -0
  41. package/compile.d.ts +1 -1
  42. package/constants.d.ts +1 -1
  43. package/contract-class-model-CLKobHyV.js +5574 -0
  44. package/contract-class-model-CLKobHyV.js.map +1 -0
  45. package/index.d.ts +1 -1
  46. package/index.mjs +17 -10
  47. package/index.mjs.map +1 -1
  48. package/logger/index.d.ts +1 -0
  49. package/{options-Cbipn6vL.js → options-B93nVWrL.js} +2419 -8288
  50. package/options-B93nVWrL.js.map +1 -0
  51. package/options.d.ts +4 -0
  52. package/package.json +13 -12
  53. package/puya/puya-service.d.ts +5 -1
  54. package/{resolve-puya-path-CsuzbFH2.js → resolve-puya-path-D7qDcdPx.js} +9 -45
  55. package/resolve-puya-path-D7qDcdPx.js.map +1 -0
  56. package/semver-BPw8lYGI.js +45 -0
  57. package/semver-BPw8lYGI.js.map +1 -0
  58. package/util/typed-message-port.d.ts +2 -2
  59. package/util-BhM5b2cL.js +63 -0
  60. package/util-BhM5b2cL.js.map +1 -0
  61. package/visitor/syntax-names.d.ts +190 -190
  62. package/analyser-service-DSK9g7zQ.js.map +0 -1
  63. package/compile-Cj7vjDbw.js.map +0 -1
  64. package/options-Cbipn6vL.js.map +0 -1
  65. package/puya/index.d.ts +0 -14
  66. package/resolve-puya-path-CsuzbFH2.js.map +0 -1
  67. package/util/arc4-signature-parser.d.ts +0 -14
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options-B93nVWrL.js","sources":["../src/util/base-16.ts","../src/awst_build/ptypes/arc4-types.ts","../src/awst_build/type-registry.ts","../src/awst/util.ts","../src/text-edit.ts","../src/code-fix/code-fix.ts","../src/code-fix/requires-arc4-clone.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/util/default-map.ts","../src/util/evolve.ts","../src/awst_build/eb/literal/big-int-literal-expression-builder.ts","../src/awst_build/constant-store.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/arc4-util.ts","../src/awst_build/eb/free-subroutine-expression-builder.ts","../src/awst_build/eb/arc4/util.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/code-fix/requires-non-null-assertion.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/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/awst_build/txn-fields.ts","../src/awst_build/eb/compiled/compile-function.ts","../src/awst_build/eb/transactions/inner-transactions.ts","../src/awst_build/eb/transactions/inner-transaction-params.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/bzero-function-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/logged-error-builder.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/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/util.ts","../src/awst_build/eb/storage/box/box.ts","../src/awst_build/eb/storage/box/box-map.ts","../src/code-fix/global-state-number.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/eb/validate-encoding-function-builder.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/code-fix/no-op-non-null-assertion.ts","../src/code-fix/loose-equality-operator.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/puya/log-deserializer.ts","../node_modules/vscode-jsonrpc/lib/common/is.js","../node_modules/vscode-jsonrpc/lib/common/messages.js","../node_modules/vscode-jsonrpc/lib/common/linkedMap.js","../node_modules/vscode-jsonrpc/lib/common/disposable.js","../node_modules/vscode-jsonrpc/lib/common/ral.js","../node_modules/vscode-jsonrpc/lib/common/events.js","../node_modules/vscode-jsonrpc/lib/common/cancellation.js","../node_modules/vscode-jsonrpc/lib/common/sharedArrayCancellation.js","../node_modules/vscode-jsonrpc/lib/common/semaphore.js","../node_modules/vscode-jsonrpc/lib/common/messageReader.js","../node_modules/vscode-jsonrpc/lib/common/messageWriter.js","../node_modules/vscode-jsonrpc/lib/common/messageBuffer.js","../node_modules/vscode-jsonrpc/lib/common/connection.js","../node_modules/vscode-jsonrpc/lib/common/api.js","../node_modules/vscode-jsonrpc/lib/node/ril.js","../node_modules/vscode-jsonrpc/lib/node/main.js","../node_modules/vscode-jsonrpc/node.js","../src/puya/puya-service.ts","../src/util/sleep.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 { 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 convertBytesFunction = new LibFunctionType({\n name: 'convertBytes',\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 { 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 ts from 'typescript'\n\nexport type Position = {\n line: number\n col: number\n}\n\nexport type Range = {\n start: Position\n end: Position\n}\n\nexport type TextEdit = {\n range: Range\n newText: string\n}\n\nexport function getNodeRange(node: ts.Node): Range {\n const start = node.getSourceFile().getLineAndCharacterOfPosition(node.getStart())\n const end = node.getSourceFile().getLineAndCharacterOfPosition(node.getEnd())\n return {\n start: {\n line: start.line,\n col: start.character,\n },\n end: {\n line: end.line,\n col: end.character,\n },\n }\n}\n","import type { SourceLocation } from '../awst/source-location'\nimport type { LogEvent, LogLevel } from '../logger'\nimport { LogSource } from '../logger'\nimport type { TextEdit } from '../text-edit'\n\nexport abstract class CodeFix {\n readonly logLevel: LogLevel\n readonly errorMessage: string\n readonly fixMessage: string\n readonly sourceLocation: SourceLocation\n readonly edits: readonly TextEdit[]\n\n protected constructor({\n logLevel,\n errorMessage,\n fixMessage,\n sourceLocation,\n edits,\n }: {\n logLevel: LogLevel\n sourceLocation: SourceLocation\n errorMessage: string\n fixMessage: string\n edits: TextEdit[]\n }) {\n this.logLevel = logLevel\n this.errorMessage = errorMessage\n this.fixMessage = fixMessage\n this.sourceLocation = sourceLocation\n this.edits = edits\n }\n\n get logData(): LogEvent {\n return {\n level: this.logLevel,\n sourceLocation: this.sourceLocation,\n message: this.errorMessage,\n logSource: LogSource.CodeFix,\n codeFix: this,\n }\n }\n}\n","import ts from 'typescript'\nimport type { SourceLocation } from '../awst/source-location'\nimport { LogLevel } from '../logger'\nimport type { TextEdit } from '../text-edit'\nimport { getNodeRange } from '../text-edit'\nimport { CodeFix } from './code-fix'\n\nexport class RequiresArc4Clone extends CodeFix {\n constructor({ sourceLocation, errorMessage }: { sourceLocation: SourceLocation; errorMessage: string }) {\n super({\n sourceLocation,\n errorMessage,\n fixMessage: 'Wrap expression in clone(...)',\n logLevel: LogLevel.Error,\n edits: RequiresArc4Clone.buildEdits(sourceLocation.withNode().node),\n })\n }\n\n static buildEdits(node: ts.Node): TextEdit[] {\n const { start, end } = ts.isSpreadAssignment(node) ? getNodeRange(node.expression) : getNodeRange(node)\n return [\n {\n range: {\n start: start,\n end: start,\n },\n newText: 'clone(',\n },\n {\n range: {\n start: end,\n end: end,\n },\n newText: ')',\n },\n ]\n }\n}\n","import type {\n AnyPType,\n ArrayLiteralPType,\n ArrayPType,\n BoxMapPType,\n BoxPType,\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 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 type ts from 'typescript'\nimport { awst, isConstant, isConstantOrTemplateVar } from '../../awst'\nimport { nodeFactory } from '../../awst/node-factory'\nimport { TupleItemExpression } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { RequiresArc4Clone } from '../../code-fix/requires-arc4-clone'\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<ts.CallExpression>): 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 // true if `expr` is an op code such as `bzero` which produces a constant value if all args are constant\n get isConstantOp(): boolean | undefined {\n return undefined\n }\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(\n args: ReadonlyArray<NodeBuilder>,\n typeArgs: ReadonlyArray<PType>,\n sourceLocation: SourceLocation<ts.CallExpression>,\n ): 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<ts.CallExpression>): 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(\n args: ReadonlyArray<NodeBuilder>,\n typeArgs: ReadonlyArray<PType>,\n sourceLocation: SourceLocation<ts.CallExpression>,\n ): 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.addCodeFix(\n new RequiresArc4Clone({\n sourceLocation: this.sourceLocation,\n errorMessage: `cannot create multiple references to a mutable stack type, the value must be copied using clone(...) when ${scenario}`,\n }),\n )\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 ts from 'typescript'\nimport 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<ts.CallExpression>): 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) {\n return (\n (typeof literalValue === 'bigint' && 0 <= literalValue && literalValue < 2n ** ptype.n) ||\n (literalValue instanceof Uint8Array && BigInt(literalValue.byteLength) <= ptype.n / 8n)\n )\n }\n if (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 toString(sourceLocation: SourceLocation): Expression {\n return nodeFactory.stringConstant({\n value: this.value.toString(),\n sourceLocation: sourceLocation,\n })\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: builder.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 type ts from 'typescript'\nimport { nodeFactory } from '../../../awst/node-factory'\nimport type { Expression } from '../../../awst/nodes'\nimport type { SourceLocation } from '../../../awst/source-location'\nimport { InternalError } from '../../../errors'\nimport { logger } from '../../../logger'\nimport { codeInvariant, instanceOfAny } from '../../../util'\nimport type { PType } from '../../ptypes'\nimport { arc28EmitFunction, ArrayLiteralPType, ImmutableObjectPType, MutableObjectPType, stringPType, voidPType } from '../../ptypes'\nimport { ARC4StructType } 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 resolvePropertyValue(builder: InstanceBuilder): Expression {\n if (builder.ptype instanceof ArrayLiteralPType) {\n const tupleType = builder.ptype.getReadonlyTupleType()\n return builder.resolveToPType(tupleType).resolve()\n }\n return builder.resolve()\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation<ts.CallExpression>): 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 signature = requireStringConstant(nameOrObj)\n\n const values = props.map((p) => this.resolvePropertyValue(p))\n return instanceEb(\n nodeFactory.emitFields({\n signature: signature.value,\n values: values,\n wtype: voidPType.wtype,\n sourceLocation,\n }),\n voidPType,\n )\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\n if (eventType instanceof ARC4StructType) {\n return emitStruct(eventBuilder.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 return emitStruct(eventBuilder.resolve(), sourceLocation)\n }\n throw new InternalError('Unexpected type for arg 0 of emit', { sourceLocation })\n }\n}\n\nfunction emitStruct(expression: Expression, sourceLocation: SourceLocation) {\n return instanceEb(\n nodeFactory.emit({\n value: expression,\n wtype: voidPType.wtype,\n sourceLocation,\n }),\n voidPType,\n )\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 { 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 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 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, extractModuleName, hasFlags, instanceOfAny, intersectsFlags, invariant, isIn } from '../util'\nimport type { AbsolutePath } from '../util/absolute-path'\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 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: AbsolutePath,\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 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 if (typeName) {\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\n if (isIntersectionType(tsType)) {\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\n invariant(typeName, 'Non builtin type must have a name', sourceLocation)\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 let declaredIn: SymbolName | undefined = undefined\n const declaredInNode = sig.declaration?.parent\n if (declaredInNode && ts.isClassDeclaration(declaredInNode)) {\n const declaredInType = this.checker.getTypeAtLocation(declaredInNode)\n declaredIn = this.getTypeName(declaredInType, sourceLocation)\n }\n\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 declaredIn,\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, 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: extractModuleName(declaration.getSourceFile().fileName, this.programDirectory),\n name: '*',\n })\n }\n return new SymbolName({ module: extractModuleName(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 { AbsolutePath } from '../../util/absolute-path'\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 type { SymbolName } from '../symbol-name'\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'\nimport type { CompileOptions } from '../../options'\n\nexport type BuildAwstOptions = Pick<CompileOptions, 'filePaths' | 'outputAwst' | 'outputAwstJson' | 'validateAbiReturn'>\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<TNode extends ts.Node>(node: TNode): SourceLocation<TNode>\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 abstract get options(): BuildAwstOptions\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 registerContractType(contractType: ContractClassPType): void\n abstract getContractTypeByName(contractName: SymbolName): ContractClassPType | undefined\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, options: BuildAwstOptions, cb: () => R) {\n const ctx = AwstBuildContextImpl.forProgram(program, options)\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 public readonly options: BuildAwstOptions,\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 private readonly contractTypes: Record<string, ContractClassPType>,\n compilationSet: CompilationSet,\n ) {\n super()\n this.typeChecker = program.getTypeChecker()\n this.typeResolver = new TypeResolver(this.typeChecker, AbsolutePath.resolve({ path: this.program.getCurrentDirectory() }))\n this.#compilationSet = compilationSet\n }\n\n registerContractType(contractType: ContractClassPType): void {\n this.contractTypes[contractType.fullName] = contractType\n }\n getContractTypeByName(contractName: SymbolName): ContractClassPType | undefined {\n return this.contractTypes[contractName.fullName]\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, options: BuildAwstOptions): AwstBuildContext {\n return new AwstBuildContextImpl(\n program,\n options,\n new ConstantStore(program),\n new UniqueNameResolver(),\n new DefaultMap(),\n new DefaultMap(),\n {},\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.options,\n this.constants,\n this.nameResolver.createChild(),\n this.storageDeclarations,\n this.arc4MethodConfig,\n this.contractTypes,\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<TNode extends ts.Node>(node: TNode) {\n return SourceLocation.fromNode(node, AbsolutePath.resolve({ path: 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 { nodeFactory } from '../awst/node-factory'\nimport { ARC4ABIMethodConfig } from '../awst/nodes'\nimport type { SourceLocation } from '../awst/source-location'\nimport { wtypes } from '../awst/wtypes'\nimport { codeInvariant, invariant } from '../util'\nimport { AwstBuildContext } from './context/awst-build-context'\nimport type { FunctionPType } from './ptypes'\n\nexport function arc4ConfigFromType(functionType: FunctionPType, sourceLocation: SourceLocation) {\n codeInvariant(\n functionType.declaredIn,\n `${functionType.name} does not appear to be a contract method. Ensure you are calling a function defined on a contract class eg. abiCall<typeof YourContract.prototype.yourMethod>`,\n sourceLocation,\n )\n\n const contractType = AwstBuildContext.current.getContractTypeByName(functionType.declaredIn)\n invariant(contractType, `${functionType.declaredIn} has not been visited`)\n\n const arc4Config = AwstBuildContext.current.getArc4Config(contractType, functionType.name)\n codeInvariant(\n arc4Config instanceof ARC4ABIMethodConfig,\n `${functionType.name} is not an ABI method. Only ABI compatible methods can be called with this helper.`,\n sourceLocation,\n )\n const methodSelector = buildArc4MethodConstant(functionType, arc4Config, sourceLocation)\n return {\n arc4Config,\n methodSelector,\n }\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 methodSignature = nodeFactory.methodSignature({\n name: arc4Config.name,\n argTypes: functionType.parameters.map(([_, ptype]) => ptype.wtypeOrThrow),\n returnType: functionType.returnType.wtypeOrThrow,\n resourceEncoding: arc4Config.resourceEncoding,\n sourceLocation,\n })\n return nodeFactory.methodConstant({\n value: methodSignature,\n wtype: new wtypes.BytesWType({ length: 4n }),\n sourceLocation,\n })\n}\n","import type ts from 'typescript'\nimport { ContractReference } from '../../awst/models'\nimport { nodeFactory } from '../../awst/node-factory'\nimport type {\n ContractMethodTarget,\n Expression,\n InstanceMethodTarget,\n InstanceSuperMethodTarget,\n LValue,\n MethodConstant,\n SubroutineID,\n} from '../../awst/nodes'\nimport { ARC4ABIMethodConfig } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { CodeError, 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 { InstanceBuilder } from './index'\nimport { parseFunctionArgs } from './util/arg-parsing'\n\nexport abstract class SubroutineExpressionBuilder extends InstanceBuilder {\n public readonly isConstant = true\n resolve(): Expression {\n throw new CodeError('Function reference cannot be used as a value in this context', { sourceLocation: this.sourceLocation })\n }\n\n resolveLValue(): LValue {\n throw CodeError.invalidAssignmentTarget({ sourceLocation: this.sourceLocation, name: 'Function reference' })\n }\n\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<ts.CallExpression>): 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 type ts from 'typescript'\nimport { 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 { arc4ConfigFromType } from '../../arc4-util'\nimport type { PType } from '../../ptypes'\nimport { BytesPType, bytesPType, FunctionPType, stringPType, uint64PType } from '../../ptypes'\nimport {\n ARC4EncodedType,\n convertBytesFunction,\n decodeArc4Function,\n encodeArc4Function,\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 ConvertBytesFunctionBuilder extends FunctionBuilder {\n readonly ptype = convertBytesFunction\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation<ts.CallExpression>): NodeBuilder {\n const {\n ptypes: [ptype],\n args: [theBytes, { prefix, strategy }],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 1,\n funcName: this.typeDescription,\n argSpec: (a) => [\n a.required(bytesPType),\n a.obj({\n prefix: a.optional(stringPType),\n strategy: a.required(stringPType),\n }),\n ],\n\n callLocation: sourceLocation,\n })\n codeInvariant(ptype instanceof ARC4EncodedType, 'Generic type must be an ARC4 encoded type')\n\n const prefixBytes = getPrefixValue(prefix)\n const validate = requireStringConstant(strategy).value === 'validate'\n\n return instanceEb(\n nodeFactory.aRC4FromBytes({\n value: validatePrefix(theBytes, prefixBytes, sourceLocation),\n validate,\n wtype: ptype.wtype,\n sourceLocation,\n }),\n ptype,\n )\n }\n}\n\nexport class EncodeArc4FunctionBuilder extends FunctionBuilder {\n readonly ptype = encodeArc4Function\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation<ts.CallExpression>): 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 return instanceEb(\n nodeFactory.aRC4Encode({\n value: valueToEncode.resolveToPType(valueType).resolve(),\n wtype: wtypes.bytesWType,\n sourceLocation,\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<ts.CallExpression>): 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 \\`convertBytes<${ptype}>\\` instead`,\n sourceLocation,\n )\n\n const prefixBytes = getPrefixValue(prefixType)\n\n return instanceEb(\n nodeFactory.aRC4FromBytes({\n value: validatePrefix(theBytes, prefixBytes, sourceLocation),\n validate: false,\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<ts.CallExpression>): NodeBuilder {\n const methodConstantType = new BytesPType({ length: 4n })\n\n if (typeArgs.length === 1 && args.length === 0) {\n const [functionType] = typeArgs\n codeInvariant(\n functionType instanceof FunctionPType,\n 'Generic type variable TMethod must be a contract method. eg. abiCall<typeof YourContract.prototype.yourMethod>',\n sourceLocation,\n )\n const { methodSelector } = arc4ConfigFromType(functionType, sourceLocation)\n return instanceEb(methodSelector, methodConstantType)\n } else {\n const {\n args: [methodSignature],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n callLocation: sourceLocation,\n funcName: this.typeDescription,\n argSpec: (a) => [a.passthrough()],\n })\n\n if (methodSignature instanceof SubroutineExpressionBuilder) {\n codeInvariant(\n methodSignature instanceof ContractMethodExpressionBuilder,\n `Expected contract instance method, found ${methodSignature.typeDescription}`,\n methodSignature.sourceLocation,\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: nodeFactory.methodSignatureString({ value: requireStringConstant(methodSignature).value, sourceLocation }),\n wtype: methodConstantType.wtype,\n sourceLocation,\n }),\n methodConstantType,\n )\n }\n }\n }\n}\n\n// ABI encoding validation options (used by both lsig and methods)\nexport const validateEncodingMap: Record<string, boolean> = {\n 'unsafe-disabled': false,\n args: true,\n}\n\nexport class SizeOfFunctionBuilder extends FunctionBuilder {\n readonly ptype = sizeOfFunction\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation<ts.CallExpression>): NodeBuilder {\n const {\n ptypes: [typeToEncode],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 1,\n funcName: this.typeDescription,\n argSpec: () => [],\n callLocation: sourceLocation,\n })\n\n return instanceEb(nodeFactory.sizeOf({ sizeWtype: typeToEncode.wtypeOrThrow, wtype: wtypes.uint64WType, sourceLocation }), uint64PType)\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 type ts from 'typescript'\nimport { 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 { validateEncodingMap } from './arc4/util'\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<ts.CallExpression>): 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<ts.CallExpression>): NodeBuilder {\n const {\n args: [{ allowActions, onCreate, readonly, name, resourceEncoding, defaultArguments, validateEncoding }],\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 validateEncoding: 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 validateEncoding: validateEncoding && mapStringConstant(validateEncodingMap, validateEncoding.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, invariant } 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 let encoding = awst.BytesEncoding.unknown\n if (left.encoding === right.encoding) {\n encoding = left.encoding\n }\n return nodeFactory.bytesConstant({\n value: concatValue,\n wtype: left.wtype,\n 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, logError }: { sourceLocation: SourceLocation; comment: string | null; logError?: boolean }) {\n return nodeFactory.assertExpression({\n condition: null,\n sourceLocation,\n wtype: wtypes.voidWType,\n errorMessage: comment,\n logError,\n })\n },\n assert({\n sourceLocation,\n comment,\n condition,\n logError,\n }: {\n sourceLocation: SourceLocation\n comment: string | null\n condition: Expression\n logError?: boolean\n }) {\n return nodeFactory.assertExpression({\n sourceLocation,\n condition,\n wtype: wtypes.voidWType,\n errorMessage: comment,\n logError,\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({ size, sourceLocation, wtype }: { size: bigint | Expression; sourceLocation: SourceLocation; wtype?: wtypes.WType }) {\n // If the size is a bigint and the wtype is a BytesWType with a different length, that's an error\n invariant(\n typeof size !== 'bigint' || !wtype || !(wtype instanceof wtypes.BytesWType) || wtype.length === size,\n 'bzero wtype length must match size',\n )\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 ?? new wtypes.BytesWType({ length: typeof size === 'bigint' ? size : null }),\n })\n },\n} satisfies Record<string, (args: DeliberateAny) => awst.Expression>\n","import type ts from 'typescript'\nimport type { SourceLocation } from '../awst/source-location'\nimport { LogLevel } from '../logger'\nimport type { TextEdit } from '../text-edit'\nimport { getNodeRange } from '../text-edit'\nimport { CodeFix } from './code-fix'\n\nexport class RequiresNonNullAssertion extends CodeFix {\n constructor({ sourceLocation }: { sourceLocation: SourceLocation }) {\n super({\n sourceLocation,\n errorMessage: 'This expression requires a non-null assertion operator \"!\" immediately proceeding it',\n fixMessage: \"Insert required '!'\",\n logLevel: LogLevel.Error,\n edits: RequiresNonNullAssertion.buildEdits(sourceLocation.node),\n })\n }\n\n static buildEdits(node: ts.Node | undefined): TextEdit[] {\n if (!node) return []\n\n const afterExpression = getNodeRange(node).end\n\n return [\n {\n range: {\n start: afterExpression,\n end: afterExpression,\n },\n newText: '!',\n },\n ]\n }\n}\n","import type ts from 'typescript'\nimport type { Expression, LValue } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\n\nimport { RequiresNonNullAssertion } from '../../code-fix/requires-non-null-assertion'\nimport { FixableCodeError } 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 FixableCodeError(new RequiresNonNullAssertion({ sourceLocation: this.sourceLocation }))\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\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation<ts.CallExpression>): 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 type ts from 'typescript'\nimport { 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<ts.CallExpression>): 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 type ts from 'typescript'\nimport { 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<ts.CallExpression>): 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 type ts from 'typescript'\nimport { 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<ts.CallExpression>): 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 type ts from 'typescript'\nimport { 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<ts.CallExpression>): NodeBuilder {\n const {\n args: [start, stop],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n callLocation: sourceLocation,\n funcName: 'slice',\n argSpec: (a) => [a.optional(uint64PType, numberPType), a.optional(uint64PType, numberPType)],\n })\n return instanceEb(\n nodeFactory.intersectionSliceExpression({\n base: this.base,\n sourceLocation: sourceLocation,\n beginIndex: start ? getBigIntOrUint64Expr(start) : null,\n endIndex: stop ? getBigIntOrUint64Expr(stop) : null,\n wtype: this.resultPType.wtype,\n }),\n this.resultPType,\n )\n }\n}\n","import type ts from 'typescript'\nimport 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<ts.CallExpression>): 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 type ts from 'typescript'\nimport { intrinsicFactory } from '../../awst/intrinsic-factory'\nimport { nodeFactory } from '../../awst/node-factory'\nimport type { Expression } from '../../awst/nodes'\nimport { BoolConstant, UInt64BinaryOperator, UInt64PostfixUnaryOperator, UInt64UnaryOperator } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { wtypes } from '../../awst/wtypes'\n\nimport { NotSupported } from '../../errors'\nimport { 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<ts.CallExpression>): 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<ts.CallExpression>): 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 type ts from 'typescript'\nimport { 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<ts.CallExpression>): 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<ts.CallExpression>): 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 type ts from 'typescript'\nimport { 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 { biguintPType, bytesPType, type PType, uint64PType } 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<ts.CallExpression>): 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\nexport class AsUint64FunctionBuilder extends FunctionBuilder {\n constructor(\n private expr: Arc4EncodedBaseExpressionBuilder<ARC4EncodedType>,\n location: SourceLocation,\n ) {\n super(location)\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n return instanceEb(\n nodeFactory.aRC4Decode({\n value: this.expr.resolve(),\n sourceLocation,\n wtype: uint64PType.wtype,\n }),\n uint64PType,\n )\n }\n}\n\nexport class AsBigUintFunctionBuilder extends FunctionBuilder {\n constructor(\n private expr: Arc4EncodedBaseExpressionBuilder<ARC4EncodedType>,\n location: SourceLocation,\n ) {\n super(location)\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n return instanceEb(\n nodeFactory.aRC4Decode({\n value: this.expr.resolve(),\n sourceLocation,\n wtype: biguintPType.wtype,\n }),\n biguintPType,\n )\n }\n}\n","import type ts from 'typescript'\nimport { 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 { wtypes } from '../../../awst/wtypes'\nimport { Constants } from '../../../constants'\nimport { wrapInCodeError } from '../../../errors'\nimport { logger } from '../../../logger'\n\nimport { base32ToUint8Array, bigIntToUint8Array, codeInvariant, invariant } from '../../../util'\nimport type { PType } from '../../ptypes'\nimport { accountPType, bytesPType, 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'\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}`, value.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<ts.CallExpression>): 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 RejectVersion = 'RejectVersion',\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\n rejectVersion: {\n field: TxnField.RejectVersion,\n ptype: uint64PType,\n comment: 'Application version for which the txn must reject',\n },\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 type ts from 'typescript'\nimport { 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<ts.CallExpression>): 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 type ts from 'typescript'\nimport { 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<ts.CallExpression>): 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 ts from 'typescript'\nimport 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<ts.CallExpression>): 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<ts.CallExpression>): 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<ts.CallExpression>): 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<ts.CallExpression>): 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<ts.CallExpression>): 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 type ts from 'typescript'\nimport { OnCompletionAction, TransactionKind } from '../../../awst/models'\nimport { nodeFactory } from '../../../awst/node-factory'\nimport type { ARC4MethodConfig, Expression, MethodConstant, MethodSignatureString } from '../../../awst/nodes'\nimport {\n ARC4ABIMethodConfig,\n ARC4BareMethodConfig,\n ARC4CreateOption,\n CompiledContract,\n IntegerConstant,\n MethodSignature,\n} 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 { arc4ConfigFromType, buildArc4MethodConstant } from '../../arc4-util'\nimport { AwstBuildContext } from '../../context/awst-build-context'\nimport type { PType } from '../../ptypes'\nimport {\n applicationItxnType,\n bytesPType,\n compiledContractType,\n FunctionPType,\n isObjectType,\n ItxnParamsPType,\n voidPType,\n} from '../../ptypes'\nimport {\n abiCallFunction,\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 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<ts.CallExpression>): NodeBuilder {\n const {\n ptypes: [functionType],\n args: [options],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 1,\n argSpec: (a) => [a.required()],\n callLocation: sourceLocation,\n funcName: this.typeDescription,\n })\n codeInvariant(\n functionType instanceof FunctionPType,\n 'Generic type variable TMethod must be a contract method. eg. abiCall<typeof YourContract.prototype.yourMethod>',\n sourceLocation,\n )\n const { methodSelector, arc4Config } = arc4ConfigFromType(functionType, sourceLocation)\n\n const itxnResult = makeApplicationCall({\n fields: options,\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<ts.CallExpression>): 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<ts.CallExpression>): 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<ts.CallExpression>): 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', 'method'])\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\n // Add app args by merging provided args with method selector\n const args: Expression[] = []\n let target: MethodSignature | MethodSignatureString | null\n if (arc4Config instanceof ARC4ABIMethodConfig) {\n invariant(methodSelector && functionType, 'methodSelector and functionType both required for abi calls')\n const appArgs = parseAppArgs({\n fields,\n functionType,\n sourceLocation,\n })\n args.push(...appArgs)\n target = methodSelector.value\n } else {\n target = null\n }\n\n // Build itxn and submit\n itxnGroup.push(\n nodeFactory.aBICall({\n target: target,\n args: args,\n fields: mappedFields,\n sourceLocation,\n wtype: new wtypes.WABICallInnerTransactionFields({\n returnType: functionType\n ? functionType.returnType.wtypeOrThrow\n : target instanceof MethodSignature\n ? target.returnType\n : voidPType.wtype,\n }),\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\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 functionType,\n sourceLocation,\n}: {\n fields?: InstanceBuilder\n functionType: FunctionPType\n sourceLocation: SourceLocation\n}) {\n const appArgsBuilder = fields && fields.hasProperty('args') && fields.memberAccess('args', sourceLocation)\n const appArgs: Expression[] = []\n if (appArgsBuilder) {\n codeInvariant(isStaticallyIterable(appArgsBuilder), 'Unsupported expression for args', appArgsBuilder.sourceLocation)\n appArgs.push(\n ...appArgsBuilder[StaticIterator]().flatMap((arg, index) => {\n const [_, paramType] = functionType.parameters[index]\n\n if (arg.ptype instanceof ItxnParamsPType) {\n return arg.resolve()\n }\n const resolvedArg = requireExpressionOfType(arg, paramType)\n return resolvedArg\n }),\n )\n } else {\n if (fields?.ptype && isObjectType(fields?.ptype)) {\n for (const [k, v] of functionType.parameters) {\n const resolvedArg = requireExpressionOfType(fields.memberAccess(k, sourceLocation), v)\n appArgs.push(resolvedArg)\n }\n }\n }\n return appArgs\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 return nodeFactory.aRC4FromBytes({\n value: unprefixedLog,\n validate: AwstBuildContext.current.options.validateAbiReturn,\n sourceLocation,\n wtype: returnType.wtypeOrThrow,\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 type ts from 'typescript'\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 { 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'\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\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation<ts.CallExpression>): 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 { intrinsicFactory } from '../../../awst/intrinsic-factory'\nimport { nodeFactory } from '../../../awst/node-factory'\nimport type { Expression } from '../../../awst/nodes'\nimport { BytesConstant, 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, BytesPType, bytesPType, 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, AsBigUintFunctionBuilder, AsUint64FunctionBuilder } 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\n if (initialValueBuilder.resolvableToPType(bytesPType)) {\n const originalType = initialValueBuilder.ptype\n const initialValue = initialValueBuilder.resolveToPType(bytesPType).resolve()\n const expectedLength = ptype.n / 8n\n\n // If byte length is compile-time knowable (initialValue is a constant or a fixed size bytes)\n // then construct using reinterpret cast (with zero-padding if shorter).\n // Otherwise throw error\n let sourceLength: bigint | undefined\n if (initialValue instanceof BytesConstant) {\n // Constant bytes: compile-time length check via value\n codeInvariant(isValidLiteralForPType(initialValue.value, ptype), `${initialValue.value} cannot be converted to ${ptype}`)\n sourceLength = BigInt(initialValue.value.byteLength)\n } else if (originalType instanceof BytesPType && originalType.length !== null) {\n // Fixed-size bytes type: compile-time length check via type\n codeInvariant(originalType.length <= expectedLength, `${originalType} cannot be converted to ${ptype}`)\n sourceLength = originalType.length\n }\n\n if (sourceLength !== undefined) {\n return new UintNExpressionBuilder(\n nodeFactory.reinterpretCast({\n expr: padFixedBytesLeft(initialValue, sourceLength, expectedLength, sourceLocation),\n wtype: ptype.wtype,\n sourceLocation,\n }),\n ptype,\n )\n } else {\n throw new CodeError(`Constructing ${ptype} from dynamic length bytes is currently not supported`, { sourceLocation })\n }\n }\n\n throw CodeError.unexpectedUnhandledArgs({ sourceLocation })\n}\n\nfunction padFixedBytesLeft(expr: Expression, currentLength: bigint, targetLength: bigint, sourceLocation: SourceLocation): Expression {\n if (currentLength === targetLength) return expr\n if (expr instanceof BytesConstant) {\n const padded = new Uint8Array(Number(targetLength))\n padded.set(expr.value, Number(targetLength - currentLength))\n return nodeFactory.bytesConstant({\n value: padded,\n wtype: expr.wtype,\n encoding: expr.encoding,\n sourceLocation,\n })\n }\n const padding = intrinsicFactory.bzero({ size: targetLength - currentLength, sourceLocation })\n return intrinsicFactory.bytesConcat({ left: padding, right: expr, 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 memberAccess(name: string, sourceLocation: SourceLocation): NodeBuilder {\n switch (name) {\n case 'asUint64':\n return new AsUint64FunctionBuilder(this, sourceLocation)\n case 'asBigUint':\n return new AsBigUintFunctionBuilder(this, sourceLocation)\n }\n return super.memberAccess(name, sourceLocation)\n }\n}\n","import type ts from 'typescript'\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 { 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\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation<ts.CallExpression>): 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\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation<ts.CallExpression>): 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<ts.CallExpression>): 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<ts.CallExpression>): 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 { 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","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 type ts from 'typescript'\nimport { 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<ts.CallExpression>): 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<ts.CallExpression>): 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 type ts from 'typescript'\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 { 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<ts.CallExpression>): 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 type ts from 'typescript'\nimport { 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<ts.CallExpression>): 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 type ts from 'typescript'\nimport { 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<ts.CallExpression>): 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 errorLocation: initialValue.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 type ts from 'typescript'\nimport { 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(value.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<ts.CallExpression>): 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<ts.CallExpression>): 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 ts from 'typescript'\nimport { isConstant, 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 IntrinsicCall,\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 {\n mapStringConstant,\n requestBuilderOfType,\n requireBuilderOfType,\n requireExpressionOfType,\n requireIntegerConstant,\n requireStringConstant,\n} 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 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 return new BytesExpressionBuilder(result, bytesPType)\n }\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation<ts.CallExpression>): NodeBuilder {\n const exprType = BytesGeneric.parameterise([typeArgs[0] ?? uint64PType])\n const emptyExpr =\n exprType.length === null || exprType.length === 0n\n ? nodeFactory.bytesConstant({\n sourceLocation,\n value: new Uint8Array(0),\n wtype: exprType.wtype,\n })\n : intrinsicFactory.bzero({ size: exprType.length, sourceLocation, wtype: exprType.wtype })\n const empty = new BytesExpressionBuilder(emptyExpr, exprType)\n\n let initialValue: InstanceBuilder | undefined\n if (args[0] !== undefined) {\n for (const t of [numberPType, bigIntPType, uint64PType, biguintPType, stringPType, bytesPType, ArrayLiteralPType]) {\n const builder = requestBuilderOfType(args[0], t)\n if (builder) {\n initialValue = builder\n break\n }\n }\n }\n\n let toFixedStrategy: 'assert-length' | 'unsafe-cast' = 'assert-length'\n if ((!initialValue && args.length) || args.length > 1) {\n const { args: parsedArgs } = parseFunctionArgs({\n args: args,\n typeArgs: [],\n funcName: 'Bytes',\n callLocation: sourceLocation,\n genericTypeArgs: 0,\n argSpec: (a) => [\n ...(args.length > 1 ? [a.passthrough()] : []),\n a.obj({ length: a.required(NumericLiteralPType), strategy: a.optional(stringPType) }),\n ],\n })\n const { strategy } = parsedArgs.at(-1) as unknown as { length: NumericLiteralExpressionBuilder; strategy?: StringExpressionBuilder }\n toFixedStrategy = strategy === undefined ? 'assert-length' : mapStringConstant(fixedConversionStrategyMap, strategy.resolve())\n }\n if (!initialValue) {\n return empty\n }\n let bytesBuilder: InstanceBuilder\n 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 if (exprType.length !== null && bytesBuilder.isConstant && toFixedStrategy !== 'assert-length') {\n logger.error(sourceLocation, `Invalid strategy value of '${toFixedStrategy}'. Expected 'assert-length' for constant values`)\n }\n return exprType.length === null ? bytesBuilder : bytesToFixed(bytesBuilder, exprType, sourceLocation, toFixedStrategy)\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<ts.CallExpression>): NodeBuilder {\n const exprType = BytesGeneric.parameterise([typeArgs[0] ?? uint64PType])\n const valueBuilder = requireBuilderOfType(args[0], stringPType)\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 if (args[1] !== undefined) {\n const {\n args: [_, { strategy }],\n } = parseFunctionArgs({\n args,\n typeArgs: [],\n genericTypeArgs: 0,\n funcName: this.functionName,\n callLocation: sourceLocation,\n argSpec: (a) => [a.passthrough(), a.obj({ length: a.required(NumericLiteralPType), strategy: a.optional(stringPType) })],\n })\n const toFixedStrategy = strategy === undefined ? 'assert-length' : mapStringConstant(fixedConversionStrategyMap, strategy.resolve())\n if (toFixedStrategy !== 'assert-length') {\n logger.error(sourceLocation, `Invalid strategy value of '${toFixedStrategy}'. Expected 'assert-length'`)\n }\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\n get isConstantOp(): boolean {\n return this._expr instanceof IntrinsicCall && this._expr.opCode === 'bzero' && this._expr.stackArgs.every(isConstant)\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<ts.CallExpression>): 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(\n builder: InstanceBuilder,\n fixedType: BytesPType,\n sourceLocation: SourceLocation,\n strategy: 'assert-length' | 'unsafe-cast' = 'assert-length',\n): InstanceBuilder {\n invariant(fixedType.length !== null, 'Should only be called for bytes with a fixed length', sourceLocation)\n\n const expr = builder.resolve()\n if (strategy === 'unsafe-cast') {\n return instanceEb(\n nodeFactory.reinterpretCast({\n expr: expr,\n wtype: fixedType.wtype,\n sourceLocation,\n }),\n fixedType,\n )\n }\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<ts.CallExpression>): 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<ts.CallExpression>): 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<ts.CallExpression>): 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<ts.CallExpression>): 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<ts.CallExpression>): 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 { FunctionBuilder, type NodeBuilder } from '.'\nimport { intrinsicFactory } from '../../awst/intrinsic-factory'\nimport { IntegerConstant } from '../../awst/nodes'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { BytesPType, uint64PType, type PType } from '../ptypes'\nimport { instanceEb } from '../type-registry'\nimport { requestConstantOfType } from './util'\nimport { parseFunctionArgs } from './util/arg-parsing'\n\nexport class BzeroFunctionBuilder extends FunctionBuilder {\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n args: [size],\n } = parseFunctionArgs({\n args,\n typeArgs,\n callLocation: sourceLocation,\n funcName: 'bzero',\n genericTypeArgs: 1,\n argSpec: (a) => [a.required(uint64PType)],\n })\n\n const sizeConst = requestConstantOfType(size, uint64PType)\n const sizeValue = sizeConst instanceof IntegerConstant ? sizeConst.value : null\n const ptype = new BytesPType({ length: sizeValue })\n\n return instanceEb(intrinsicFactory.bzero({ size: size.resolve(), wtype: ptype.wtype, sourceLocation }), ptype)\n }\n}\n","import type ts from 'typescript'\nimport { 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<ts.CallExpression>): 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 type ts from 'typescript'\nimport { 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 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, 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<ts.CallExpression>): 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\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation<ts.CallExpression>): 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<ts.CallExpression>): NodeBuilder {\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\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation<ts.CallExpression>): 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 type ts from 'typescript'\nimport { 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<ts.CallExpression>): 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 type ts from 'typescript'\nimport { intrinsicFactory } from '../../awst/intrinsic-factory'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { logger } from '../../logger'\nimport type { PType } from '../ptypes'\nimport { stringPType } from '../ptypes'\nimport type { InstanceBuilder, NodeBuilder } from './index'\nimport { FunctionBuilder } from './index'\nimport { requestBuilderOfType, requireInstanceBuilder, requireStringConstant } from './util'\nimport { parseFunctionArgs } from './util/arg-parsing'\nimport { VoidExpressionBuilder } from './void-expression-builder'\n\nconst VALID_PREFIXES = new Set(['ERR', 'AER'])\n\nfunction resolveErrorMessage(code: InstanceBuilder, message: InstanceBuilder | undefined, prefix: InstanceBuilder | undefined): string {\n const codeStr = requireStringConstant(code).value\n\n if (codeStr.includes(':')) {\n logger.error(code.sourceLocation, \"error code must not contain domain separator ':'\")\n }\n\n let messageStr: string | undefined\n if (message) {\n messageStr = requireStringConstant(message).value\n if (messageStr.includes(':')) {\n logger.error(message.sourceLocation, \"error message must not contain domain separator ':'\")\n }\n }\n\n let prefixStr = 'ERR'\n if (prefix) {\n prefixStr = requireStringConstant(prefix).value\n if (!VALID_PREFIXES.has(prefixStr)) {\n logger.error(prefix.sourceLocation, 'error prefix must be one of AER, ERR')\n }\n }\n\n return messageStr ? `${prefixStr}:${codeStr}:${messageStr}` : `${prefixStr}:${codeStr}`\n}\n\nfunction resolveMessageAndPrefix(maybeMessageOrOptions: InstanceBuilder | undefined): {\n message: InstanceBuilder | undefined\n prefix: InstanceBuilder | undefined\n} {\n /**\n * Tries to get a field from the optional options object.\n *\n * Returns `undefined` if the field does not exist or no options object was passed.\n */\n function get(field: string) {\n return maybeMessageOrOptions?.hasProperty(field)\n ? requireInstanceBuilder(maybeMessageOrOptions.memberAccess(field, maybeMessageOrOptions.sourceLocation))\n : undefined\n }\n\n // Desugar string-only overload (passing `\"the message\"` instead of `{ message: \"the message\" }`)\n if (maybeMessageOrOptions) {\n const message = requestBuilderOfType(maybeMessageOrOptions, stringPType)\n if (message) {\n return { message: message, prefix: undefined }\n }\n }\n\n const message = get('message')\n const prefix = get('prefix')\n return { message, prefix }\n}\n\nexport class LoggedAssertFunctionBuilder extends FunctionBuilder {\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation<ts.CallExpression>): NodeBuilder {\n const {\n args: [condition, code, maybeMessageOrOptions],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n callLocation: sourceLocation,\n funcName: 'loggedAssert',\n argSpec: (a) => [a.required(), a.required(stringPType), a.optional()],\n })\n\n const { message, prefix } = resolveMessageAndPrefix(maybeMessageOrOptions)\n const errorMessage = resolveErrorMessage(code, message, prefix)\n\n return new VoidExpressionBuilder(\n intrinsicFactory.assert({\n sourceLocation,\n condition: condition!.boolEval(sourceLocation),\n comment: errorMessage,\n logError: true,\n }),\n )\n }\n}\n\nexport class LoggedErrFunctionBuilder extends FunctionBuilder {\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation<ts.CallExpression>): NodeBuilder {\n const {\n args: [code, maybeMessageOrOptions],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 0,\n callLocation: sourceLocation,\n funcName: 'loggedErr',\n argSpec: (a) => [a.required(stringPType), a.optional()],\n })\n\n const { message, prefix } = resolveMessageAndPrefix(maybeMessageOrOptions)\n const errorMessage = resolveErrorMessage(code, message, prefix)\n\n return new VoidExpressionBuilder(\n intrinsicFactory.err({\n sourceLocation,\n comment: errorMessage,\n logError: true,\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 ts from 'typescript'\nimport 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<ts.CallExpression>): 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 ts from 'typescript'\nimport 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 { validateEncodingMap } from './arc4/util'\nimport { DecoratorDataBuilder, FunctionBuilder, InstanceBuilder, type NodeBuilder } from './index'\nimport { mapStringConstant, 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<ts.CallExpression>): NodeBuilder {\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<ts.CallExpression>): NodeBuilder {\n const {\n args: [{ avmVersion, name, scratchSlots, validateEncoding }],\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 validateEncoding: a.optional(stringPType),\n }),\n ],\n })\n\n return new DecoratorDataBuilder(sourceLocation, {\n type: 'logicsig',\n avmVersion: avmVersion ? requireAvmVersion(avmVersion) : undefined,\n name: name ? requireStringConstant(name).value : undefined,\n sourceLocation,\n scratchSlots: scratchSlots && processScratchRanges(scratchSlots),\n validateEncoding: validateEncoding && mapStringConstant(validateEncodingMap, validateEncoding.resolve()),\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 appVersion: {\n type: 'op-mapping',\n op: 'app_params_get',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AppVersion'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.applicationPType, ptypes.uint64PType] }],\n returnType: new ptypes.ReadonlyTuplePType({ items: [ptypes.uint64PType, 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 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 }), ptypes.bytesPType] }],\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 }), ptypes.bytesPType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n { name: 'c', ptypes: [new ptypes.BytesPType({ length: 32n }), ptypes.bytesPType] },\n { name: 'd', ptypes: [new ptypes.BytesPType({ length: 32n }), ptypes.bytesPType] },\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 }), ptypes.bytesPType] },\n { name: 'b', ptypes: [new ptypes.BytesPType({ length: 32n }), ptypes.bytesPType] },\n { name: 'c', ptypes: [new ptypes.BytesPType({ length: 32n }), ptypes.bytesPType] },\n { name: 'd', ptypes: [new ptypes.BytesPType({ length: 32n }), ptypes.bytesPType] },\n { name: 'e', ptypes: [new ptypes.BytesPType({ length: 32n }), ptypes.bytesPType] },\n ],\n returnType: ptypes.boolPType,\n },\n ],\n },\n ed25519verify: {\n type: 'op-mapping',\n op: 'ed25519verify',\n signatures: [\n {\n argNames: ['a', 'b', 'c'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [new ptypes.BytesPType({ length: 64n }), ptypes.bytesPType] },\n { name: 'c', ptypes: [new ptypes.BytesPType({ length: 32n }), ptypes.bytesPType] },\n ],\n returnType: ptypes.boolPType,\n },\n ],\n },\n ed25519verifyBare: {\n type: 'op-mapping',\n op: 'ed25519verify_bare',\n signatures: [\n {\n argNames: ['a', 'b', 'c'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.bytesPType] },\n { name: 'b', ptypes: [new ptypes.BytesPType({ length: 64n }), ptypes.bytesPType] },\n { name: 'c', ptypes: [new ptypes.BytesPType({ length: 32n }), ptypes.bytesPType] },\n ],\n returnType: ptypes.boolPType,\n },\n ],\n },\n exp: {\n type: 'op-mapping',\n op: 'exp',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n ],\n returnType: ptypes.uint64PType,\n },\n ],\n },\n expw: {\n type: 'op-mapping',\n op: 'expw',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.uint64PType] },\n { name: 'b', ptypes: [ptypes.uint64PType] },\n ],\n returnType: new ptypes.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 }), ptypes.bytesPType] },\n { name: 'c', ptypes: [new ptypes.BytesPType({ length: 1793n }), ptypes.bytesPType] },\n ],\n returnType: ptypes.boolPType,\n },\n ],\n },\n gaid: {\n type: 'op-mapping',\n op: 'gaids',\n signatures: [\n { argNames: ['a'], immediateArgs: [], stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }], returnType: ptypes.uint64PType },\n ],\n },\n getBit: {\n type: 'op-mapping',\n op: 'getbit',\n signatures: [\n {\n argNames: ['a', 'b'],\n immediateArgs: [],\n stackArgs: [\n { name: 'a', ptypes: [ptypes.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: new ptypes.BytesPType({ length: 64n }),\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 rejectVersion: {\n type: 'op-mapping',\n op: 'gitxn',\n signatures: [\n {\n argNames: ['t'],\n immediateArgs: [{ name: 't', ptypes: [ptypes.uint64PType] }, 'RejectVersion'],\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: new ptypes.BytesPType({ length: 64n }),\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 rejectVersion: {\n type: 'op-mapping',\n op: 'gtxns',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['RejectVersion'],\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: new ptypes.BytesPType({ length: 64n }) }],\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 rejectVersion: {\n type: 'op-mapping',\n op: 'itxn',\n signatures: [{ argNames: [], immediateArgs: ['RejectVersion'], 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 }), ptypes.bytesPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setSelectionPk: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['SelectionPK'],\n stackArgs: [{ name: 'a', ptypes: [new ptypes.BytesPType({ length: 32n }), ptypes.bytesPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setVoteFirst: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['VoteFirst'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setVoteLast: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['VoteLast'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setVoteKeyDilution: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['VoteKeyDilution'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setType: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['Type'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setTypeEnum: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['TypeEnum'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setXferAsset: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['XferAsset'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.assetPType, ptypes.uint64PType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setAssetAmount: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AssetAmount'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setAssetSender: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AssetSender'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setAssetReceiver: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AssetReceiver'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setAssetCloseTo: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['AssetCloseTo'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setApplicationId: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ApplicationID'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.applicationPType, ptypes.uint64PType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setOnCompletion: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['OnCompletion'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setApplicationArgs: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ApplicationArgs'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setAccounts: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['Accounts'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setApprovalProgram: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ApprovalProgram'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setClearStateProgram: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ClearStateProgram'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setRekeyTo: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['RekeyTo'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setConfigAsset: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ConfigAsset'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.assetPType, ptypes.uint64PType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setConfigAssetTotal: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ConfigAssetTotal'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setConfigAssetDecimals: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ConfigAssetDecimals'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setConfigAssetDefaultFrozen: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ConfigAssetDefaultFrozen'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.boolPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setConfigAssetUnitName: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ConfigAssetUnitName'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setConfigAssetName: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ConfigAssetName'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setConfigAssetUrl: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ConfigAssetURL'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.bytesPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setConfigAssetMetadataHash: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ConfigAssetMetadataHash'],\n stackArgs: [{ name: 'a', ptypes: [new ptypes.BytesPType({ length: 32n }), ptypes.bytesPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setConfigAssetManager: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ConfigAssetManager'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setConfigAssetReserve: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ConfigAssetReserve'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setConfigAssetFreeze: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ConfigAssetFreeze'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setConfigAssetClawback: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ConfigAssetClawback'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setFreezeAsset: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['FreezeAsset'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.assetPType, ptypes.uint64PType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setFreezeAssetAccount: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['FreezeAssetAccount'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.accountPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setFreezeAssetFrozen: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['FreezeAssetFrozen'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.boolPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setAssets: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['Assets'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setApplications: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['Applications'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setGlobalNumUint: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['GlobalNumUint'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setGlobalNumByteSlice: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['GlobalNumByteSlice'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setLocalNumUint: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['LocalNumUint'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setLocalNumByteSlice: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['LocalNumByteSlice'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setExtraProgramPages: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['ExtraProgramPages'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setNonparticipation: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['Nonparticipation'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.boolPType] }],\n returnType: ptypes.voidPType,\n },\n ],\n },\n setStateProofPk: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['StateProofPK'],\n stackArgs: [{ name: 'a', ptypes: [new ptypes.BytesPType({ length: 64n }), 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 setRejectVersion: {\n type: 'op-mapping',\n op: 'itxn_field',\n signatures: [\n {\n argNames: ['a'],\n immediateArgs: ['RejectVersion'],\n stackArgs: [{ name: 'a', ptypes: [ptypes.uint64PType] }],\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: new ptypes.BytesPType({ length: 64n }) }],\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 rejectVersion: {\n type: 'op-mapping',\n op: 'txn',\n signatures: [{ argNames: [], immediateArgs: ['RejectVersion'], 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 }), ptypes.bytesPType] },\n { name: 'c', ptypes: [new ptypes.BytesPType({ length: 32n }), ptypes.bytesPType] },\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 type ts from 'typescript'\nimport { 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 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<ts.CallExpression>): 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 const bytesParamLength = (arg.ptypes.find((ptype) => ptype instanceof BytesPType && ptype.length) as BytesPType)?.length\n if (thisArg.ptype instanceof BytesPType && thisArg.ptype.length && bytesParamLength && bytesParamLength !== thisArg.ptype.length) {\n throw new CodeError(`Argument ${arg.name} must be bytes<${bytesParamLength}>`, {\n sourceLocation,\n })\n }\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 type ts from 'typescript'\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 { 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<ts.CallExpression>): 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<ts.CallExpression>): 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 type ts from 'typescript'\nimport { 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<ts.CallExpression>): 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 version: ['AppVersion', uint64PType],\n },\n fieldBoolComment: 'application exists',\n })\n }\n}\n","import type ts from 'typescript'\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 { 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<ts.CallExpression>): 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<ts.CallExpression>): 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 { 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, 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(this.ptype instanceof BoxPType || this.ptype instanceof BoxMapPType, 'Must be exhaustive check on ptype')\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 ts from 'typescript'\nimport 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\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation<ts.CallExpression>): 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 } 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<TProxyType extends BoxMapPType | BoxPType> 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 { 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 type ts from 'typescript'\nimport { nodeFactory } from '../../../../awst/node-factory'\nimport type { BoxValueExpression, Expression } from '../../../../awst/nodes'\nimport type { SourceLocation } from '../../../../awst/source-location'\nimport { wtypes } from '../../../../awst/wtypes'\nimport { invariant } from '../../../../util'\nimport type { PType } from '../../../ptypes'\nimport { boolPType, BoxPType, 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 BoxFunctionBuilder extends FunctionBuilder {\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation<ts.CallExpression>): 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 'extract':\n return new BoxExtractFunctionBuilder(boxValueExpr, sourceLocation)\n case 'replace':\n return new BoxReplaceFunctionBuilder(boxValueExpr, sourceLocation)\n case 'resize':\n return new BoxResizeFunctionBuilder(boxValueExpr, sourceLocation)\n case 'splice':\n return new BoxSpliceFunctionBuilder(boxValueExpr, sourceLocation)\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<ts.CallExpression>): 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\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation<ts.CallExpression>): 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<ts.CallExpression>): 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<ts.CallExpression>): 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\nexport class BoxResizeFunctionBuilder extends FunctionBuilder {\n constructor(\n private boxValue: BoxValueExpression,\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 funcName: 'Box.resize',\n callLocation: sourceLocation,\n argSpec: (a) => [a.required(uint64PType)],\n })\n return instanceEb(\n nodeFactory.intrinsicCall({\n opCode: 'box_resize',\n stackArgs: [this.boxValue.key, size.resolve()],\n wtype: wtypes.voidWType,\n immediates: [],\n sourceLocation,\n }),\n voidPType,\n )\n }\n}\nexport class BoxExtractFunctionBuilder extends FunctionBuilder {\n constructor(\n private boxValue: BoxValueExpression,\n sourceLocation: SourceLocation,\n ) {\n super(sourceLocation)\n }\n\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: 'Box.extract',\n callLocation: sourceLocation,\n argSpec: (a) => [a.required(uint64PType), a.required(uint64PType)],\n })\n return instanceEb(\n nodeFactory.intrinsicCall({\n opCode: 'box_extract',\n stackArgs: [this.boxValue.key, start.resolve(), length.resolve()],\n wtype: wtypes.bytesWType,\n immediates: [],\n sourceLocation,\n }),\n bytesPType,\n )\n }\n}\nexport class BoxReplaceFunctionBuilder extends FunctionBuilder {\n constructor(\n private boxValue: BoxValueExpression,\n sourceLocation: SourceLocation,\n ) {\n super(sourceLocation)\n }\n\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: 'Box.replace',\n callLocation: sourceLocation,\n argSpec: (a) => [a.required(uint64PType), a.required(bytesPType)],\n })\n return instanceEb(\n nodeFactory.intrinsicCall({\n opCode: 'box_replace',\n stackArgs: [this.boxValue.key, start.resolve(), value.resolve()],\n wtype: wtypes.voidWType,\n immediates: [],\n sourceLocation,\n }),\n voidPType,\n )\n }\n}\n\nexport class BoxSpliceFunctionBuilder extends FunctionBuilder {\n constructor(\n private boxValue: BoxValueExpression,\n sourceLocation: SourceLocation,\n ) {\n super(sourceLocation)\n }\n\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: 'Box.splice',\n callLocation: sourceLocation,\n argSpec: (a) => [a.required(uint64PType), a.required(uint64PType), a.required(bytesPType)],\n })\n return instanceEb(\n nodeFactory.intrinsicCall({\n opCode: 'box_splice',\n stackArgs: [this.boxValue.key, start.resolve(), stop.resolve(), value.resolve()],\n wtype: wtypes.voidWType,\n immediates: [],\n sourceLocation,\n }),\n voidPType,\n )\n }\n}\n","import type ts from 'typescript'\nimport { 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<ts.CallExpression>): 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\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation<ts.CallExpression>): 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 type ts from 'typescript'\nimport type { SourceLocation } from '../awst/source-location'\nimport { transientTypeErrors } from '../awst_build/ptypes/transient-type-errors'\nimport { LogLevel } from '../logger'\nimport type { TextEdit } from '../text-edit'\nimport { getNodeRange } from '../text-edit'\nimport { CodeFix } from './code-fix'\n\nexport class GlobalStateNumber extends CodeFix {\n constructor({ sourceLocation }: { sourceLocation: SourceLocation<ts.CallExpression> }) {\n super({\n sourceLocation,\n errorMessage: transientTypeErrors.nativeNumeric('number').usedAsType,\n fixMessage: 'Use GlobalState<uint64>',\n logLevel: LogLevel.Error,\n edits: GlobalStateNumber.buildEdits(sourceLocation.node),\n })\n }\n\n static buildEdits(node: ts.CallExpression): TextEdit[] {\n if (node.typeArguments?.length) {\n return [\n {\n range: getNodeRange(node.typeArguments[0]),\n newText: 'uint64',\n },\n ]\n } else {\n const afterExpression = getNodeRange(node.expression).end\n\n return [\n {\n range: {\n start: afterExpression,\n end: afterExpression,\n },\n newText: '<uint64>',\n },\n ]\n }\n }\n}\n","import type ts from 'typescript'\nimport { 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 { GlobalStateNumber } from '../../../code-fix/global-state-number'\nimport { logger } from '../../../logger'\nimport { codeInvariant, invariant } from '../../../util'\nimport { AppStorageDeclaration } from '../../models/app-storage-declaration'\nimport type { ContractClassPType, PType } from '../../ptypes'\nimport { boolPType, bytesPType, GlobalStateGeneric, GlobalStateType, numberPType, 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<ts.CallExpression>): NodeBuilder {\n const ptype = GlobalStateGeneric.parameterise(typeArgs)\n if (ptype.contentType.equals(numberPType)) {\n logger.addCodeFix(new GlobalStateNumber({ sourceLocation }))\n }\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(ptype.contentType),\n key: a.optional(stringPType, bytesPType),\n }),\n ],\n funcName: this.typeDescription,\n callLocation: sourceLocation,\n })\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<ts.CallExpression>): 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(\n !this.initialValue,\n 'Global state can only have an initial value specified if being assigned to a contract property',\n this.initialValue?.sourceLocation,\n )\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 type ts from 'typescript'\nimport { 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<ts.CallExpression>): 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<ts.CallExpression>): 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<ts.CallExpression>): 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<ts.CallExpression>): 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 type ts from 'typescript'\nimport { 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<ts.CallExpression>): 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 type ts from 'typescript'\nimport { 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<ts.CallExpression>): 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<ts.CallExpression>): 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 type ts from 'typescript'\nimport { 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 { codeInvariant, enumFromValue, invariant } from '../../../util'\nimport { arc4ConfigFromType } from '../../arc4-util'\nimport type { PType } from '../../ptypes'\nimport { anyItxnParamsType, FunctionPType, 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<ts.CallExpression>): NodeBuilder {\n const itxns: Expression[] = []\n\n if (args.length === 2) {\n // Deprecated overload, [method, fields]\n const {\n args: [functionRef, fields],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 1,\n callLocation: sourceLocation,\n funcName: this.typeDescription,\n argSpec: (a) => [a.passthrough(), a.required()],\n })\n invariant(\n functionRef instanceof ContractMethodExpressionBuilder,\n `Arg 0 of ${this.typeDescription} should be an arc4 contract method`,\n )\n const { methodSelector, arc4Config } = arc4ConfigFromType(functionRef.ptype, sourceLocation)\n\n itxns.push(\n ...buildApplicationCallTxnFields({\n arc4Config,\n methodSelector,\n fields,\n sourceLocation,\n functionType: functionRef.ptype,\n }),\n )\n } else if (typeArgs.length === 0) {\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 ptypes: [functionType],\n args: [fields],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 1,\n argSpec: (a) => [a.required()],\n callLocation: sourceLocation,\n funcName: this.typeDescription,\n })\n codeInvariant(\n functionType instanceof FunctionPType,\n 'Generic type variable TMethod must be a contract method. eg. abiCall<typeof YourContract.prototype.yourMethod>',\n sourceLocation,\n )\n const { methodSelector, arc4Config } = arc4ConfigFromType(functionType, 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.stageInnerTransactions({\n itxns,\n startNewGroup: nodeFactory.boolConstant({ value: this.startWithBegin, sourceLocation }),\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<ts.CallExpression>): 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 ts from 'typescript'\nimport 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<ts.CallExpression>): 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 { nodeFactory } from '../../awst/node-factory'\nimport type { SourceLocation } from '../../awst/source-location'\nimport { wtypes } from '../../awst/wtypes'\nimport { codeInvariant } from '../../util'\nimport { accountPType, BytesPType, validateEncodingFunctionPType, voidPType, type PType } from '../ptypes'\nimport { arc4AddressAlias, StaticBytesType } from '../ptypes/arc4-types'\nimport { instanceEb } from '../type-registry'\nimport { FunctionBuilder, type NodeBuilder } from './index'\nimport { parseFunctionArgs } from './util/arg-parsing'\n\nexport class ValidateEncodingFunctionBuilder extends FunctionBuilder {\n readonly ptype = validateEncodingFunctionPType\n\n call(args: ReadonlyArray<NodeBuilder>, typeArgs: ReadonlyArray<PType>, sourceLocation: SourceLocation): NodeBuilder {\n const {\n ptypes: [ptype],\n args: [theValue],\n } = parseFunctionArgs({\n args,\n typeArgs,\n genericTypeArgs: 1,\n funcName: this.typeDescription,\n argSpec: (a) => [a.required()],\n callLocation: sourceLocation,\n })\n\n codeInvariant(!(ptype instanceof BytesPType) || ptype.length !== null, 'Cannot validate unbounded bytes')\n\n const validateType = ptype.equals(accountPType)\n ? arc4AddressAlias\n : ptype instanceof BytesPType && ptype.length !== null\n ? new StaticBytesType({ length: ptype.length })\n : ptype\n\n codeInvariant(validateType.wtype instanceof wtypes.ARC4Type, 'Can only validate ARC4-encoded types')\n\n const expr = nodeFactory.aRC4FromBytes({\n value: theValue.resolve(),\n validate: true,\n wtype: validateType.wtype,\n sourceLocation,\n })\n\n return instanceEb(\n nodeFactory.commaExpression({\n expressions: [expr, nodeFactory.voidConstant({ sourceLocation })],\n sourceLocation,\n }),\n voidPType,\n )\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 ConvertBytesFunctionBuilder,\n DecodeArc4FunctionBuilder,\n EncodeArc4FunctionBuilder,\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 { BzeroFunctionBuilder } from '../eb/bzero-function-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'\nimport { LoggedAssertFunctionBuilder, LoggedErrFunctionBuilder } from '../eb/logged-error-builder'\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 { BoxExpressionBuilder, BoxFunctionBuilder, BoxMapExpressionBuilder, BoxMapFunctionBuilder } 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 { ValidateEncodingFunctionBuilder } from '../eb/validate-encoding-function-builder'\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 convertBytesFunction,\n decodeArc4Function,\n DynamicArrayGeneric,\n DynamicArrayType,\n DynamicBytesConstructor,\n DynamicBytesType,\n encodeArc4Function,\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 BytesFunction,\n BytesGeneric,\n bytesPType,\n BytesPType,\n bzeroFunction,\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 loggedAssertFunction,\n loggedErrFunction,\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 validateEncodingFunctionPType,\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: loggedAssertFunction, singletonEb: LoggedAssertFunctionBuilder })\n typeRegistry.register({ ptype: loggedErrFunction, singletonEb: LoggedErrFunctionBuilder })\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: validateEncodingFunctionPType, singletonEb: ValidateEncodingFunctionBuilder })\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 overrides\n typeRegistry.register({ ptype: bzeroFunction, singletonEb: BzeroFunctionBuilder })\n typeRegistry.register({\n ptype: new IntrinsicFunctionTypeType({\n name: 'bzeroType',\n }),\n instanceEb: IntrinsicOpGroupOrFunctionTypeBuilder,\n })\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\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: convertBytesFunction, singletonEb: ConvertBytesFunctionBuilder })\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 ABICall,\n AddressConstant,\n AppAccountStateExpression,\n AppStateExpression,\n AppStorageDefinition,\n ARC4Decode,\n ARC4Encode,\n ARC4FromBytes,\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 EmitFields,\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 NamedTupleExpression,\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 StageInnerTransactions,\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 visitStageInnerTransactions(expression: StageInnerTransactions): void {\n expression.startNewGroup.accept(this)\n for (const expr of expression.itxns) {\n expr.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 visitARC4FromBytes(expression: ARC4FromBytes): void {\n expression.value.accept(this)\n }\n\n visitNamedTupleExpression(expression: NamedTupleExpression): void {\n for (const v of expression.values.values()) {\n v.accept(this)\n }\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 visitABICall(expression: ABICall): void {\n for (const a of expression.args) {\n a.accept(this)\n }\n for (const f of expression.fields.values()) {\n f.accept(this)\n }\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 visitEmitFields(expression: EmitFields): void {\n for (const v of expression.values) {\n v.accept(this)\n }\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 StageInnerTransactions,\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(StageInnerTransactions, '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 { InternalError } from '../errors'\nimport { AbsolutePath } from '../util/absolute-path'\nimport { buildBase85Encoder } from '../util/base-85'\nimport { ContractReference, LogicSigReference } from './models'\nimport { IntrinsicCall, SingleEvaluation } from './nodes'\nimport { generateExcludedPropsObj } from './nodes-meta'\nimport { SourceLocation } from './source-location'\nimport { SymbolToNumber } from './util'\n\nfunction serializeBigInt(value: bigint): unknown {\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<T> extends SnakeCaseSerializer<T> {\n constructor(\n private options?: {\n pathsRelativeTo?: AbsolutePath\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 AbsolutePath) {\n if (this.options?.pathsRelativeTo === undefined) {\n return value.toString()\n }\n return value.relativeTo(this.options.pathsRelativeTo)\n }\n if (value instanceof SourceLocation) {\n return {\n ...(super.serializerFunction(key, value) as object),\n scope: undefined,\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","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 if (expression.value instanceof nodes.MethodSignatureString) {\n return `Method(\"${expression.value.value}\")`\n }\n\n const signature = getMethodSignature(expression.value)\n return `Method(${signature},resource_encoding=\"${expression.value.resourceEncoding}\")`\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 visitARC4FromBytes(expression: nodes.ARC4FromBytes): string {\n return `ARC4_FROM_BYTES(${expression.value.accept(this)}, wtype=${expression.wtype}, validate=${expression.validate})`\n }\n visitNamedTupleExpression(expression: nodes.NamedTupleExpression): string {\n return `#{ ${expression.values\n .entries()\n .map(([name, value]) => `${name}: ${value.accept(this)}`)\n .toArray()\n .join(', ')} }`\n }\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 visitStageInnerTransactions(expression: nodes.StageInnerTransactions): string {\n const startNewGroup = expression.startNewGroup.accept(this)\n const itxns = expression.itxns.map((itxn) => itxn.accept(this)).join(', ')\n\n return `stage_itxns=([${itxns}], start_new_group=${startNewGroup})`\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 visitABICall(expression: nodes.ABICall): string {\n let method: string\n if (expression.target instanceof nodes.MethodSignatureString) {\n method = `signature='${expression.target.value}'`\n } else {\n const signature = getMethodSignature(expression.target)\n method = signature ? `signature={${signature}}` : 'signature=null'\n }\n\n const args = expression.args.map((a) => a.accept(this)).join(', ')\n const fields = Array.from(expression.fields.entries())\n .map(([name, expr]) => `${name}=${expr.accept(this)}`)\n .join(', ')\n return `abi_call(${method}, args=(${args}), fields={${fields}})`\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.value.wtype.name}\", ${expression.value.accept(this)})`\n }\n visitEmitFields(expression: nodes.EmitFields): string {\n const values = expression.values.map((v) => v.accept(this)).join(', ')\n return `emit_fields(${expression.signature}, (${values}))`\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 if (!expression.condition) {\n const func = expression.logError ? 'logged_err(' : 'err('\n return `${func}${expression.errorMessage ?? ''})`\n }\n const func = expression.logError ? 'logged_assert(' : 'assert('\n return `${func}${expression.condition.accept(this)}${expression.errorMessage ? `, comment=${expression.errorMessage}` : ''})`\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\nfunction getMethodSignature(method: nodes.MethodSignature | null): string | null {\n if (!method) {\n return null\n }\n const name = method.name\n const args = (method.argTypes ?? []).map((t) => t.name).join(',')\n const return_ = method.returnType.name\n const signature = `name=\"${name}\",args=(${args}),result=${return_}`\n return signature\n}\n","import * as fs from 'node:fs'\nimport pathe from 'pathe'\nimport { logger } from './logger'\nimport { mkDirIfNotExists } from './util'\nimport type { AbsolutePath } from './util/absolute-path'\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: AbsolutePath\n outDir: AbsolutePath\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 = outDir.join(`${sourceFile.basename('.algo.ts')}.awst`).toString()\n break\n case ArtifactKind.AwstJson:\n outFilePath = outDir.join(`${sourceFile.basename('.algo.ts')}.awst.json`).toString()\n break\n }\n\n const content = buildArtifact(obj)\n logger.info(undefined, `Writing ${outFilePath}`)\n mkDirIfNotExists(pathe.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 type ts from 'typescript'\nimport type { SourceLocation } from '../awst/source-location'\nimport { LogLevel } from '../logger'\nimport type { TextEdit } from '../text-edit'\nimport { getNodeRange } from '../text-edit'\nimport { CodeFix } from './code-fix'\n\nexport class NoOpNonNullAssertion extends CodeFix {\n constructor({ sourceLocation }: { sourceLocation: SourceLocation<ts.NonNullExpression> }) {\n super({\n sourceLocation,\n errorMessage: 'The non-null assertion operator \"!\" has no effect (no-op) on non-optional types',\n fixMessage: \"Remove '!'\",\n logLevel: LogLevel.Warning,\n edits: NoOpNonNullAssertion.buildEdits(sourceLocation.node),\n })\n }\n\n static buildEdits(node: ts.NonNullExpression): TextEdit[] {\n return [\n {\n range: {\n start: getNodeRange(node.expression).end,\n end: getNodeRange(node).end,\n },\n newText: '',\n },\n ]\n }\n}\n","import type ts from 'typescript'\nimport type { SourceLocation } from '../awst/source-location'\nimport { LogLevel } from '../logger'\nimport type { TextEdit } from '../text-edit'\nimport { getNodeRange } from '../text-edit'\nimport { CodeFix } from './code-fix'\n\nexport class LooseEqualityOperator extends CodeFix {\n constructor({\n sourceLocation,\n errorMessage,\n operatorRequired,\n }: {\n sourceLocation: SourceLocation<ts.BinaryOperatorToken>\n errorMessage: string\n operatorRequired: string\n }) {\n super({\n sourceLocation,\n errorMessage,\n fixMessage: `Replace with ${operatorRequired}`,\n logLevel: LogLevel.Error,\n edits: LooseEqualityOperator.buildEdits(sourceLocation.node, operatorRequired),\n })\n }\n\n static buildEdits(node: ts.BinaryOperatorToken, operatorRequired: string): TextEdit[] {\n return [\n {\n range: getNodeRange(node),\n newText: operatorRequired,\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'\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 { NoOpNonNullAssertion } from '../../code-fix/no-op-non-null-assertion'\nimport { LooseEqualityOperator } from '../../code-fix/loose-equality-operator'\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 { instanceEb, 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<TNode extends ts.Node>(node: TNode): SourceLocation<TNode> {\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))\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.addCodeFix(\n new LooseEqualityOperator({\n sourceLocation,\n errorMessage: `Loose equality operator '==' is not supported. Please use strict equality operator '==='`,\n operatorRequired: '===',\n }),\n )\n return ts.SyntaxKind.EqualsEqualsEqualsToken\n case ts.SyntaxKind.ExclamationEqualsToken:\n logger.addCodeFix(\n new LooseEqualityOperator({\n sourceLocation,\n errorMessage: `Loose inequality operator '!=' is not supported. Please use strict inequality operator '!=='`,\n operatorRequired: '!==',\n }),\n )\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 } else if (binaryOpKind === ts.SyntaxKind.CommaToken) {\n const left = requireInstanceBuilder(this.baseAccept(node.left))\n const right = requireInstanceBuilder(this.baseAccept(node.right))\n return instanceEb(\n nodeFactory.commaExpression({\n expressions: [left.resolve(), right.resolve()],\n sourceLocation,\n }),\n right.ptype,\n )\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 logger.addCodeFix(new NoOpNonNullAssertion({ sourceLocation: this.sourceLocation(node) }))\n return target\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 { 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 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 pure: false,\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 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 validateEncoding: decorator.validateEncoding ?? null,\n defaultArgs: new Map(\n Object.entries(decorator.defaultArguments).map(([parameterName, argConfig]) => [\n parameterName,\n this.buildDefaultArgument({\n methodName: functionType.name,\n parameterName,\n config: argConfig,\n decoratorLocation: decorator.sourceLocation,\n }),\n ]),\n ),\n })\n } else if (isPublic && this._contractType.isARC4) {\n return new ARC4ABIMethodConfig({\n allowedCompletionTypes: conventionalDefaults?.allowedCompletionTypes ?? unspecifiedDefaults.allowedCompletionTypes,\n create: conventionalDefaults?.create ?? unspecifiedDefaults.create,\n sourceLocation: methodLocation,\n name: functionType.name,\n resourceEncoding: 'value',\n validateEncoding: null,\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 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 pure: false,\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 { BoxProxyExpressionBuilder } from '../eb/storage/box'\nimport { GlobalStateFunctionResultBuilder } from '../eb/storage/global-state'\nimport { LocalStateFunctionResultBuilder } from '../eb/storage/local-state'\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 this.context.registerContractType(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: nodeFactory.subroutineCallExpression({\n target: nodeFactory.instanceSuperMethodTarget({\n memberName: Constants.symbolNames.constructorMethodName,\n }),\n args: [],\n sourceLocation,\n wtype: wtypes.voidWType,\n }),\n }),\n ...this._propertyInitialization,\n ),\n inline: null,\n pure: false,\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 pure: false,\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 pure: false,\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 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 || maybeConst.isConstantOp, '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 pure: false,\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 pure: false,\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 pure: false,\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 pure: false,\n id: itoaMethod.fullName,\n name: itoaMethod.name,\n })\n}\n","import { AwstSerializer } from '../awst/json-serialize-awst'\nimport type { AWST } from '../awst/nodes'\nimport { ToCodeVisitor } from '../awst/to-code-visitor'\nimport type { AlgoFile } from '../options'\nimport type { CreateProgramResult } from '../parser'\nimport { ArtifactKind, writeArtifact } from '../write-artifact'\nimport { SourceFileVisitor } from './ast-visitors/source-file-visitor'\nimport type { BuildAwstOptions } from './context/awst-build-context'\nimport { AwstBuildContext } from './context/awst-build-context'\nimport { buildLibAwst } from './lib'\nimport type { CompilationSet } from './models/contract-class-model'\n\ntype DeferredModule = () => {\n awst: AWST[]\n algoFile: AlgoFile | undefined\n}\n\ntype AwstBuildResult = {\n moduleAwst: AWST[]\n compilationSet: CompilationSet\n}\n\nexport function buildAwst({ program, sourceFiles, programDirectory }: CreateProgramResult, options: BuildAwstOptions): AwstBuildResult {\n return AwstBuildContext.run(program, options, () => {\n const moduleAwst: AWST[] = buildLibAwst()\n const deferredModules: DeferredModule[] = []\n for (const [sourcePath, sourceFile] of Object.entries(sourceFiles)) {\n deferredModules.push(\n AwstBuildContext.current.runInChildContext((deferred) => {\n const visitor = new SourceFileVisitor(sourceFile)\n const algoFile = options.filePaths.find((p) => p.sourceFile.toString() === sourcePath)\n\n return deferred(() => ({ awst: visitor.buildModule(), algoFile }))\n }),\n )\n }\n for (const deferredModule of deferredModules) {\n const { awst, algoFile } = deferredModule()\n moduleAwst.push(...awst)\n if (options.outputAwst && algoFile) {\n writeArtifact({\n sourceFile: algoFile.sourceFile,\n outDir: algoFile.outDir,\n kind: ArtifactKind.Awst,\n obj: awst,\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: algoFile.sourceFile,\n outDir: algoFile.outDir,\n kind: ArtifactKind.AwstJson,\n obj: awst,\n buildArtifact(module): string {\n return new AwstSerializer({ spaces: 2, pathsRelativeTo: programDirectory }).serialize(module)\n },\n })\n }\n }\n return {\n moduleAwst,\n compilationSet: AwstBuildContext.current.compilationSet,\n }\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, LogLevel, LogSource } from '../logger'\nimport type { CompileOptions } from '../options'\nimport type { DeliberateAny } from '../typescript-helpers'\nimport { AbsolutePath } from '../util/absolute-path'\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: AbsolutePath\n}\n\nconst ProgramCache: {\n previousProgram?: undefined | ts.Program\n} = {}\n\nexport function createTsProgram(options: Pick<CompileOptions, 'filePaths' | 'sourceFileProvider'>): 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 if (options.sourceFileProvider) {\n const { fileExists, readFile } = host\n const overridden = options.sourceFileProvider({ fileExists, readFile })\n host.fileExists = overridden.fileExists\n host.readFile = overridden.readFile\n }\n\n host.resolveModuleNameLiterals = resolveModuleNameLiterals\n\n const program = ts.createProgram(\n options.filePaths.map((p) => p.sourceFile.toString()),\n compilerOptions,\n host,\n ProgramCache.previousProgram,\n )\n ProgramCache.previousProgram = program\n const programDirectory = AbsolutePath.resolve({ path: 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 [AbsolutePath.resolve({ path: f.fileName, workingDirectory: programDirectory }).toString(), f]\n }),\n )\n\n LoggingContext.current.setSourcesByPath(\n Object.fromEntries(\n Object.entries(sourceFiles).map(([path, file]) => {\n return [path, file.getFullText().split(/\\n/g)]\n }),\n ),\n )\n\n reportDiagnostics(program)\n\n return {\n sourceFiles,\n program,\n programDirectory: AbsolutePath.resolve({ path: 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, AbsolutePath.resolve({ path: 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.addLog({\n logSource: LogSource.TypeScript,\n message: text,\n sourceLocation,\n level: LogLevel.Error,\n })\n break\n case ts.DiagnosticCategory.Warning:\n logger.addLog({\n logSource: LogSource.TypeScript,\n message: text,\n sourceLocation,\n level: LogLevel.Warning,\n })\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 { SourceLocation } from '../awst/source-location'\nimport type { LogEvent } from '../logger'\nimport { logger, LogLevel, LogSource } from '../logger'\nimport { invariant } from '../util'\nimport { AbsolutePath } from '../util/absolute-path'\n\nfunction parseString(x: unknown) {\n invariant(typeof x === 'string', `expected string, received ${typeof x}`)\n return x\n}\nfunction parseNullOrString(x: unknown) {\n if (x === null) return null\n return parseString(x)\n}\nfunction parseNumber(x: unknown) {\n invariant(typeof x === 'number', `expected number, received ${typeof x}`)\n return x\n}\nfunction parseNullOrNumber(x: unknown) {\n if (x === null) return null\n return parseNumber(x)\n}\nfunction parseLogLevel(x: unknown) {\n switch (x) {\n case LogLevel.Error:\n case LogLevel.Info:\n case LogLevel.Warning:\n case LogLevel.Debug:\n case LogLevel.Critical:\n return x\n default:\n invariant(false, `expected LogLevel, received ${x}`)\n }\n}\nfunction parseSourceLocation(x: unknown) {\n invariant(typeof x === 'object', `expected object, received ${typeof x}`)\n if (x === null) return null\n const obj = x as Record<string, unknown>\n return {\n file: parseNullOrString(obj.file),\n line: parseNumber(obj.line),\n end_line: parseNullOrNumber(obj.end_line),\n column: parseNullOrNumber(obj.column),\n end_column: parseNullOrNumber(obj.end_column),\n }\n}\n\nfunction parsePuyaLog(x: unknown) {\n invariant(typeof x === 'object' && x !== null, `expected object, received ${typeof x}`)\n const obj = x as Record<string, unknown>\n return {\n level: parseLogLevel(obj.level),\n message: parseString(obj.message),\n location: parseSourceLocation(obj.location),\n }\n}\n\nexport function deserializePuyaLog(puyaLog: unknown): LogEvent {\n const log = parsePuyaLog(puyaLog)\n\n const sourceLocation = log.location?.file\n ? new SourceLocation({\n file: AbsolutePath.resolve({ path: log.location.file }),\n line: log.location.line,\n endLine: log.location.end_line ?? log.location.line + 1,\n column: log.location.column ?? 0,\n endColumn: log.location.end_column ?? log.location.column ?? 0,\n scope: 'range',\n node: undefined,\n })\n : undefined\n return { ...log, sourceLocation, logSource: LogSource.Puya }\n}\n\nexport function deserializeAndLog(log: unknown) {\n try {\n logger.addLog(deserializePuyaLog(log))\n } catch (e) {\n logger.error(undefined, `Could not parse log output from puya cli ${e}`)\n }\n}\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.stringArray = exports.array = exports.func = exports.error = exports.number = exports.string = exports.boolean = void 0;\nfunction boolean(value) {\n return value === true || value === false;\n}\nexports.boolean = boolean;\nfunction string(value) {\n return typeof value === 'string' || value instanceof String;\n}\nexports.string = string;\nfunction number(value) {\n return typeof value === 'number' || value instanceof Number;\n}\nexports.number = number;\nfunction error(value) {\n return value instanceof Error;\n}\nexports.error = error;\nfunction func(value) {\n return typeof value === 'function';\n}\nexports.func = func;\nfunction array(value) {\n return Array.isArray(value);\n}\nexports.array = array;\nfunction stringArray(value) {\n return array(value) && value.every(elem => string(elem));\n}\nexports.stringArray = stringArray;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Message = exports.NotificationType9 = exports.NotificationType8 = exports.NotificationType7 = exports.NotificationType6 = exports.NotificationType5 = exports.NotificationType4 = exports.NotificationType3 = exports.NotificationType2 = exports.NotificationType1 = exports.NotificationType0 = exports.NotificationType = exports.RequestType9 = exports.RequestType8 = exports.RequestType7 = exports.RequestType6 = exports.RequestType5 = exports.RequestType4 = exports.RequestType3 = exports.RequestType2 = exports.RequestType1 = exports.RequestType = exports.RequestType0 = exports.AbstractMessageSignature = exports.ParameterStructures = exports.ResponseError = exports.ErrorCodes = void 0;\nconst is = require(\"./is\");\n/**\n * Predefined error codes.\n */\nvar ErrorCodes;\n(function (ErrorCodes) {\n // Defined by JSON RPC\n ErrorCodes.ParseError = -32700;\n ErrorCodes.InvalidRequest = -32600;\n ErrorCodes.MethodNotFound = -32601;\n ErrorCodes.InvalidParams = -32602;\n ErrorCodes.InternalError = -32603;\n /**\n * This is the start range of JSON RPC reserved error codes.\n * It doesn't denote a real error code. No application error codes should\n * be defined between the start and end range. For backwards\n * compatibility the `ServerNotInitialized` and the `UnknownErrorCode`\n * are left in the range.\n *\n * @since 3.16.0\n */\n ErrorCodes.jsonrpcReservedErrorRangeStart = -32099;\n /** @deprecated use jsonrpcReservedErrorRangeStart */\n ErrorCodes.serverErrorStart = -32099;\n /**\n * An error occurred when write a message to the transport layer.\n */\n ErrorCodes.MessageWriteError = -32099;\n /**\n * An error occurred when reading a message from the transport layer.\n */\n ErrorCodes.MessageReadError = -32098;\n /**\n * The connection got disposed or lost and all pending responses got\n * rejected.\n */\n ErrorCodes.PendingResponseRejected = -32097;\n /**\n * The connection is inactive and a use of it failed.\n */\n ErrorCodes.ConnectionInactive = -32096;\n /**\n * Error code indicating that a server received a notification or\n * request before the server has received the `initialize` request.\n */\n ErrorCodes.ServerNotInitialized = -32002;\n ErrorCodes.UnknownErrorCode = -32001;\n /**\n * This is the end range of JSON RPC reserved error codes.\n * It doesn't denote a real error code.\n *\n * @since 3.16.0\n */\n ErrorCodes.jsonrpcReservedErrorRangeEnd = -32000;\n /** @deprecated use jsonrpcReservedErrorRangeEnd */\n ErrorCodes.serverErrorEnd = -32000;\n})(ErrorCodes || (exports.ErrorCodes = ErrorCodes = {}));\n/**\n * An error object return in a response in case a request\n * has failed.\n */\nclass ResponseError extends Error {\n constructor(code, message, data) {\n super(message);\n this.code = is.number(code) ? code : ErrorCodes.UnknownErrorCode;\n this.data = data;\n Object.setPrototypeOf(this, ResponseError.prototype);\n }\n toJson() {\n const result = {\n code: this.code,\n message: this.message\n };\n if (this.data !== undefined) {\n result.data = this.data;\n }\n return result;\n }\n}\nexports.ResponseError = ResponseError;\nclass ParameterStructures {\n constructor(kind) {\n this.kind = kind;\n }\n static is(value) {\n return value === ParameterStructures.auto || value === ParameterStructures.byName || value === ParameterStructures.byPosition;\n }\n toString() {\n return this.kind;\n }\n}\nexports.ParameterStructures = ParameterStructures;\n/**\n * The parameter structure is automatically inferred on the number of parameters\n * and the parameter type in case of a single param.\n */\nParameterStructures.auto = new ParameterStructures('auto');\n/**\n * Forces `byPosition` parameter structure. This is useful if you have a single\n * parameter which has a literal type.\n */\nParameterStructures.byPosition = new ParameterStructures('byPosition');\n/**\n * Forces `byName` parameter structure. This is only useful when having a single\n * parameter. The library will report errors if used with a different number of\n * parameters.\n */\nParameterStructures.byName = new ParameterStructures('byName');\n/**\n * An abstract implementation of a MessageType.\n */\nclass AbstractMessageSignature {\n constructor(method, numberOfParams) {\n this.method = method;\n this.numberOfParams = numberOfParams;\n }\n get parameterStructures() {\n return ParameterStructures.auto;\n }\n}\nexports.AbstractMessageSignature = AbstractMessageSignature;\n/**\n * Classes to type request response pairs\n */\nclass RequestType0 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 0);\n }\n}\nexports.RequestType0 = RequestType0;\nclass RequestType extends AbstractMessageSignature {\n constructor(method, _parameterStructures = ParameterStructures.auto) {\n super(method, 1);\n this._parameterStructures = _parameterStructures;\n }\n get parameterStructures() {\n return this._parameterStructures;\n }\n}\nexports.RequestType = RequestType;\nclass RequestType1 extends AbstractMessageSignature {\n constructor(method, _parameterStructures = ParameterStructures.auto) {\n super(method, 1);\n this._parameterStructures = _parameterStructures;\n }\n get parameterStructures() {\n return this._parameterStructures;\n }\n}\nexports.RequestType1 = RequestType1;\nclass RequestType2 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 2);\n }\n}\nexports.RequestType2 = RequestType2;\nclass RequestType3 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 3);\n }\n}\nexports.RequestType3 = RequestType3;\nclass RequestType4 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 4);\n }\n}\nexports.RequestType4 = RequestType4;\nclass RequestType5 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 5);\n }\n}\nexports.RequestType5 = RequestType5;\nclass RequestType6 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 6);\n }\n}\nexports.RequestType6 = RequestType6;\nclass RequestType7 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 7);\n }\n}\nexports.RequestType7 = RequestType7;\nclass RequestType8 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 8);\n }\n}\nexports.RequestType8 = RequestType8;\nclass RequestType9 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 9);\n }\n}\nexports.RequestType9 = RequestType9;\nclass NotificationType extends AbstractMessageSignature {\n constructor(method, _parameterStructures = ParameterStructures.auto) {\n super(method, 1);\n this._parameterStructures = _parameterStructures;\n }\n get parameterStructures() {\n return this._parameterStructures;\n }\n}\nexports.NotificationType = NotificationType;\nclass NotificationType0 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 0);\n }\n}\nexports.NotificationType0 = NotificationType0;\nclass NotificationType1 extends AbstractMessageSignature {\n constructor(method, _parameterStructures = ParameterStructures.auto) {\n super(method, 1);\n this._parameterStructures = _parameterStructures;\n }\n get parameterStructures() {\n return this._parameterStructures;\n }\n}\nexports.NotificationType1 = NotificationType1;\nclass NotificationType2 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 2);\n }\n}\nexports.NotificationType2 = NotificationType2;\nclass NotificationType3 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 3);\n }\n}\nexports.NotificationType3 = NotificationType3;\nclass NotificationType4 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 4);\n }\n}\nexports.NotificationType4 = NotificationType4;\nclass NotificationType5 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 5);\n }\n}\nexports.NotificationType5 = NotificationType5;\nclass NotificationType6 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 6);\n }\n}\nexports.NotificationType6 = NotificationType6;\nclass NotificationType7 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 7);\n }\n}\nexports.NotificationType7 = NotificationType7;\nclass NotificationType8 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 8);\n }\n}\nexports.NotificationType8 = NotificationType8;\nclass NotificationType9 extends AbstractMessageSignature {\n constructor(method) {\n super(method, 9);\n }\n}\nexports.NotificationType9 = NotificationType9;\nvar Message;\n(function (Message) {\n /**\n * Tests if the given message is a request message\n */\n function isRequest(message) {\n const candidate = message;\n return candidate && is.string(candidate.method) && (is.string(candidate.id) || is.number(candidate.id));\n }\n Message.isRequest = isRequest;\n /**\n * Tests if the given message is a notification message\n */\n function isNotification(message) {\n const candidate = message;\n return candidate && is.string(candidate.method) && message.id === void 0;\n }\n Message.isNotification = isNotification;\n /**\n * Tests if the given message is a response message\n */\n function isResponse(message) {\n const candidate = message;\n return candidate && (candidate.result !== void 0 || !!candidate.error) && (is.string(candidate.id) || is.number(candidate.id) || candidate.id === null);\n }\n Message.isResponse = isResponse;\n})(Message || (exports.Message = Message = {}));\n","\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar _a;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LRUCache = exports.LinkedMap = exports.Touch = void 0;\nvar Touch;\n(function (Touch) {\n Touch.None = 0;\n Touch.First = 1;\n Touch.AsOld = Touch.First;\n Touch.Last = 2;\n Touch.AsNew = Touch.Last;\n})(Touch || (exports.Touch = Touch = {}));\nclass LinkedMap {\n constructor() {\n this[_a] = 'LinkedMap';\n this._map = new Map();\n this._head = undefined;\n this._tail = undefined;\n this._size = 0;\n this._state = 0;\n }\n clear() {\n this._map.clear();\n this._head = undefined;\n this._tail = undefined;\n this._size = 0;\n this._state++;\n }\n isEmpty() {\n return !this._head && !this._tail;\n }\n get size() {\n return this._size;\n }\n get first() {\n return this._head?.value;\n }\n get last() {\n return this._tail?.value;\n }\n has(key) {\n return this._map.has(key);\n }\n get(key, touch = Touch.None) {\n const item = this._map.get(key);\n if (!item) {\n return undefined;\n }\n if (touch !== Touch.None) {\n this.touch(item, touch);\n }\n return item.value;\n }\n set(key, value, touch = Touch.None) {\n let item = this._map.get(key);\n if (item) {\n item.value = value;\n if (touch !== Touch.None) {\n this.touch(item, touch);\n }\n }\n else {\n item = { key, value, next: undefined, previous: undefined };\n switch (touch) {\n case Touch.None:\n this.addItemLast(item);\n break;\n case Touch.First:\n this.addItemFirst(item);\n break;\n case Touch.Last:\n this.addItemLast(item);\n break;\n default:\n this.addItemLast(item);\n break;\n }\n this._map.set(key, item);\n this._size++;\n }\n return this;\n }\n delete(key) {\n return !!this.remove(key);\n }\n remove(key) {\n const item = this._map.get(key);\n if (!item) {\n return undefined;\n }\n this._map.delete(key);\n this.removeItem(item);\n this._size--;\n return item.value;\n }\n shift() {\n if (!this._head && !this._tail) {\n return undefined;\n }\n if (!this._head || !this._tail) {\n throw new Error('Invalid list');\n }\n const item = this._head;\n this._map.delete(item.key);\n this.removeItem(item);\n this._size--;\n return item.value;\n }\n forEach(callbackfn, thisArg) {\n const state = this._state;\n let current = this._head;\n while (current) {\n if (thisArg) {\n callbackfn.bind(thisArg)(current.value, current.key, this);\n }\n else {\n callbackfn(current.value, current.key, this);\n }\n if (this._state !== state) {\n throw new Error(`LinkedMap got modified during iteration.`);\n }\n current = current.next;\n }\n }\n keys() {\n const state = this._state;\n let current = this._head;\n const iterator = {\n [Symbol.iterator]: () => {\n return iterator;\n },\n next: () => {\n if (this._state !== state) {\n throw new Error(`LinkedMap got modified during iteration.`);\n }\n if (current) {\n const result = { value: current.key, done: false };\n current = current.next;\n return result;\n }\n else {\n return { value: undefined, done: true };\n }\n }\n };\n return iterator;\n }\n values() {\n const state = this._state;\n let current = this._head;\n const iterator = {\n [Symbol.iterator]: () => {\n return iterator;\n },\n next: () => {\n if (this._state !== state) {\n throw new Error(`LinkedMap got modified during iteration.`);\n }\n if (current) {\n const result = { value: current.value, done: false };\n current = current.next;\n return result;\n }\n else {\n return { value: undefined, done: true };\n }\n }\n };\n return iterator;\n }\n entries() {\n const state = this._state;\n let current = this._head;\n const iterator = {\n [Symbol.iterator]: () => {\n return iterator;\n },\n next: () => {\n if (this._state !== state) {\n throw new Error(`LinkedMap got modified during iteration.`);\n }\n if (current) {\n const result = { value: [current.key, current.value], done: false };\n current = current.next;\n return result;\n }\n else {\n return { value: undefined, done: true };\n }\n }\n };\n return iterator;\n }\n [(_a = Symbol.toStringTag, Symbol.iterator)]() {\n return this.entries();\n }\n trimOld(newSize) {\n if (newSize >= this.size) {\n return;\n }\n if (newSize === 0) {\n this.clear();\n return;\n }\n let current = this._head;\n let currentSize = this.size;\n while (current && currentSize > newSize) {\n this._map.delete(current.key);\n current = current.next;\n currentSize--;\n }\n this._head = current;\n this._size = currentSize;\n if (current) {\n current.previous = undefined;\n }\n this._state++;\n }\n addItemFirst(item) {\n // First time Insert\n if (!this._head && !this._tail) {\n this._tail = item;\n }\n else if (!this._head) {\n throw new Error('Invalid list');\n }\n else {\n item.next = this._head;\n this._head.previous = item;\n }\n this._head = item;\n this._state++;\n }\n addItemLast(item) {\n // First time Insert\n if (!this._head && !this._tail) {\n this._head = item;\n }\n else if (!this._tail) {\n throw new Error('Invalid list');\n }\n else {\n item.previous = this._tail;\n this._tail.next = item;\n }\n this._tail = item;\n this._state++;\n }\n removeItem(item) {\n if (item === this._head && item === this._tail) {\n this._head = undefined;\n this._tail = undefined;\n }\n else if (item === this._head) {\n // This can only happened if size === 1 which is handle\n // by the case above.\n if (!item.next) {\n throw new Error('Invalid list');\n }\n item.next.previous = undefined;\n this._head = item.next;\n }\n else if (item === this._tail) {\n // This can only happened if size === 1 which is handle\n // by the case above.\n if (!item.previous) {\n throw new Error('Invalid list');\n }\n item.previous.next = undefined;\n this._tail = item.previous;\n }\n else {\n const next = item.next;\n const previous = item.previous;\n if (!next || !previous) {\n throw new Error('Invalid list');\n }\n next.previous = previous;\n previous.next = next;\n }\n item.next = undefined;\n item.previous = undefined;\n this._state++;\n }\n touch(item, touch) {\n if (!this._head || !this._tail) {\n throw new Error('Invalid list');\n }\n if ((touch !== Touch.First && touch !== Touch.Last)) {\n return;\n }\n if (touch === Touch.First) {\n if (item === this._head) {\n return;\n }\n const next = item.next;\n const previous = item.previous;\n // Unlink the item\n if (item === this._tail) {\n // previous must be defined since item was not head but is tail\n // So there are more than on item in the map\n previous.next = undefined;\n this._tail = previous;\n }\n else {\n // Both next and previous are not undefined since item was neither head nor tail.\n next.previous = previous;\n previous.next = next;\n }\n // Insert the node at head\n item.previous = undefined;\n item.next = this._head;\n this._head.previous = item;\n this._head = item;\n this._state++;\n }\n else if (touch === Touch.Last) {\n if (item === this._tail) {\n return;\n }\n const next = item.next;\n const previous = item.previous;\n // Unlink the item.\n if (item === this._head) {\n // next must be defined since item was not tail but is head\n // So there are more than on item in the map\n next.previous = undefined;\n this._head = next;\n }\n else {\n // Both next and previous are not undefined since item was neither head nor tail.\n next.previous = previous;\n previous.next = next;\n }\n item.next = undefined;\n item.previous = this._tail;\n this._tail.next = item;\n this._tail = item;\n this._state++;\n }\n }\n toJSON() {\n const data = [];\n this.forEach((value, key) => {\n data.push([key, value]);\n });\n return data;\n }\n fromJSON(data) {\n this.clear();\n for (const [key, value] of data) {\n this.set(key, value);\n }\n }\n}\nexports.LinkedMap = LinkedMap;\nclass LRUCache extends LinkedMap {\n constructor(limit, ratio = 1) {\n super();\n this._limit = limit;\n this._ratio = Math.min(Math.max(0, ratio), 1);\n }\n get limit() {\n return this._limit;\n }\n set limit(limit) {\n this._limit = limit;\n this.checkTrim();\n }\n get ratio() {\n return this._ratio;\n }\n set ratio(ratio) {\n this._ratio = Math.min(Math.max(0, ratio), 1);\n this.checkTrim();\n }\n get(key, touch = Touch.AsNew) {\n return super.get(key, touch);\n }\n peek(key) {\n return super.get(key, Touch.None);\n }\n set(key, value) {\n super.set(key, value, Touch.Last);\n this.checkTrim();\n return this;\n }\n checkTrim() {\n if (this.size > this._limit) {\n this.trimOld(Math.round(this._limit * this._ratio));\n }\n }\n}\nexports.LRUCache = LRUCache;\n","\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Disposable = void 0;\nvar Disposable;\n(function (Disposable) {\n function create(func) {\n return {\n dispose: func\n };\n }\n Disposable.create = create;\n})(Disposable || (exports.Disposable = Disposable = {}));\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nlet _ral;\nfunction RAL() {\n if (_ral === undefined) {\n throw new Error(`No runtime abstraction layer installed`);\n }\n return _ral;\n}\n(function (RAL) {\n function install(ral) {\n if (ral === undefined) {\n throw new Error(`No runtime abstraction layer provided`);\n }\n _ral = ral;\n }\n RAL.install = install;\n})(RAL || (RAL = {}));\nexports.default = RAL;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Emitter = exports.Event = void 0;\nconst ral_1 = require(\"./ral\");\nvar Event;\n(function (Event) {\n const _disposable = { dispose() { } };\n Event.None = function () { return _disposable; };\n})(Event || (exports.Event = Event = {}));\nclass CallbackList {\n add(callback, context = null, bucket) {\n if (!this._callbacks) {\n this._callbacks = [];\n this._contexts = [];\n }\n this._callbacks.push(callback);\n this._contexts.push(context);\n if (Array.isArray(bucket)) {\n bucket.push({ dispose: () => this.remove(callback, context) });\n }\n }\n remove(callback, context = null) {\n if (!this._callbacks) {\n return;\n }\n let foundCallbackWithDifferentContext = false;\n for (let i = 0, len = this._callbacks.length; i < len; i++) {\n if (this._callbacks[i] === callback) {\n if (this._contexts[i] === context) {\n // callback & context match => remove it\n this._callbacks.splice(i, 1);\n this._contexts.splice(i, 1);\n return;\n }\n else {\n foundCallbackWithDifferentContext = true;\n }\n }\n }\n if (foundCallbackWithDifferentContext) {\n throw new Error('When adding a listener with a context, you should remove it with the same context');\n }\n }\n invoke(...args) {\n if (!this._callbacks) {\n return [];\n }\n const ret = [], callbacks = this._callbacks.slice(0), contexts = this._contexts.slice(0);\n for (let i = 0, len = callbacks.length; i < len; i++) {\n try {\n ret.push(callbacks[i].apply(contexts[i], args));\n }\n catch (e) {\n // eslint-disable-next-line no-console\n (0, ral_1.default)().console.error(e);\n }\n }\n return ret;\n }\n isEmpty() {\n return !this._callbacks || this._callbacks.length === 0;\n }\n dispose() {\n this._callbacks = undefined;\n this._contexts = undefined;\n }\n}\nclass Emitter {\n constructor(_options) {\n this._options = _options;\n }\n /**\n * For the public to allow to subscribe\n * to events from this Emitter\n */\n get event() {\n if (!this._event) {\n this._event = (listener, thisArgs, disposables) => {\n if (!this._callbacks) {\n this._callbacks = new CallbackList();\n }\n if (this._options && this._options.onFirstListenerAdd && this._callbacks.isEmpty()) {\n this._options.onFirstListenerAdd(this);\n }\n this._callbacks.add(listener, thisArgs);\n const result = {\n dispose: () => {\n if (!this._callbacks) {\n // disposable is disposed after emitter is disposed.\n return;\n }\n this._callbacks.remove(listener, thisArgs);\n result.dispose = Emitter._noop;\n if (this._options && this._options.onLastListenerRemove && this._callbacks.isEmpty()) {\n this._options.onLastListenerRemove(this);\n }\n }\n };\n if (Array.isArray(disposables)) {\n disposables.push(result);\n }\n return result;\n };\n }\n return this._event;\n }\n /**\n * To be kept private to fire an event to\n * subscribers\n */\n fire(event) {\n if (this._callbacks) {\n this._callbacks.invoke.call(this._callbacks, event);\n }\n }\n dispose() {\n if (this._callbacks) {\n this._callbacks.dispose();\n this._callbacks = undefined;\n }\n }\n}\nexports.Emitter = Emitter;\nEmitter._noop = function () { };\n","\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CancellationTokenSource = exports.CancellationToken = void 0;\nconst ral_1 = require(\"./ral\");\nconst Is = require(\"./is\");\nconst events_1 = require(\"./events\");\nvar CancellationToken;\n(function (CancellationToken) {\n CancellationToken.None = Object.freeze({\n isCancellationRequested: false,\n onCancellationRequested: events_1.Event.None\n });\n CancellationToken.Cancelled = Object.freeze({\n isCancellationRequested: true,\n onCancellationRequested: events_1.Event.None\n });\n function is(value) {\n const candidate = value;\n return candidate && (candidate === CancellationToken.None\n || candidate === CancellationToken.Cancelled\n || (Is.boolean(candidate.isCancellationRequested) && !!candidate.onCancellationRequested));\n }\n CancellationToken.is = is;\n})(CancellationToken || (exports.CancellationToken = CancellationToken = {}));\nconst shortcutEvent = Object.freeze(function (callback, context) {\n const handle = (0, ral_1.default)().timer.setTimeout(callback.bind(context), 0);\n return { dispose() { handle.dispose(); } };\n});\nclass MutableToken {\n constructor() {\n this._isCancelled = false;\n }\n cancel() {\n if (!this._isCancelled) {\n this._isCancelled = true;\n if (this._emitter) {\n this._emitter.fire(undefined);\n this.dispose();\n }\n }\n }\n get isCancellationRequested() {\n return this._isCancelled;\n }\n get onCancellationRequested() {\n if (this._isCancelled) {\n return shortcutEvent;\n }\n if (!this._emitter) {\n this._emitter = new events_1.Emitter();\n }\n return this._emitter.event;\n }\n dispose() {\n if (this._emitter) {\n this._emitter.dispose();\n this._emitter = undefined;\n }\n }\n}\nclass CancellationTokenSource {\n get token() {\n if (!this._token) {\n // be lazy and create the token only when\n // actually needed\n this._token = new MutableToken();\n }\n return this._token;\n }\n cancel() {\n if (!this._token) {\n // save an object by returning the default\n // cancelled token when cancellation happens\n // before someone asks for the token\n this._token = CancellationToken.Cancelled;\n }\n else {\n this._token.cancel();\n }\n }\n dispose() {\n if (!this._token) {\n // ensure to initialize with an empty token if we had none\n this._token = CancellationToken.None;\n }\n else if (this._token instanceof MutableToken) {\n // actually dispose\n this._token.dispose();\n }\n }\n}\nexports.CancellationTokenSource = CancellationTokenSource;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SharedArrayReceiverStrategy = exports.SharedArraySenderStrategy = void 0;\nconst cancellation_1 = require(\"./cancellation\");\nvar CancellationState;\n(function (CancellationState) {\n CancellationState.Continue = 0;\n CancellationState.Cancelled = 1;\n})(CancellationState || (CancellationState = {}));\nclass SharedArraySenderStrategy {\n constructor() {\n this.buffers = new Map();\n }\n enableCancellation(request) {\n if (request.id === null) {\n return;\n }\n const buffer = new SharedArrayBuffer(4);\n const data = new Int32Array(buffer, 0, 1);\n data[0] = CancellationState.Continue;\n this.buffers.set(request.id, buffer);\n request.$cancellationData = buffer;\n }\n async sendCancellation(_conn, id) {\n const buffer = this.buffers.get(id);\n if (buffer === undefined) {\n return;\n }\n const data = new Int32Array(buffer, 0, 1);\n Atomics.store(data, 0, CancellationState.Cancelled);\n }\n cleanup(id) {\n this.buffers.delete(id);\n }\n dispose() {\n this.buffers.clear();\n }\n}\nexports.SharedArraySenderStrategy = SharedArraySenderStrategy;\nclass SharedArrayBufferCancellationToken {\n constructor(buffer) {\n this.data = new Int32Array(buffer, 0, 1);\n }\n get isCancellationRequested() {\n return Atomics.load(this.data, 0) === CancellationState.Cancelled;\n }\n get onCancellationRequested() {\n throw new Error(`Cancellation over SharedArrayBuffer doesn't support cancellation events`);\n }\n}\nclass SharedArrayBufferCancellationTokenSource {\n constructor(buffer) {\n this.token = new SharedArrayBufferCancellationToken(buffer);\n }\n cancel() {\n }\n dispose() {\n }\n}\nclass SharedArrayReceiverStrategy {\n constructor() {\n this.kind = 'request';\n }\n createCancellationTokenSource(request) {\n const buffer = request.$cancellationData;\n if (buffer === undefined) {\n return new cancellation_1.CancellationTokenSource();\n }\n return new SharedArrayBufferCancellationTokenSource(buffer);\n }\n}\nexports.SharedArrayReceiverStrategy = SharedArrayReceiverStrategy;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Semaphore = void 0;\nconst ral_1 = require(\"./ral\");\nclass Semaphore {\n constructor(capacity = 1) {\n if (capacity <= 0) {\n throw new Error('Capacity must be greater than 0');\n }\n this._capacity = capacity;\n this._active = 0;\n this._waiting = [];\n }\n lock(thunk) {\n return new Promise((resolve, reject) => {\n this._waiting.push({ thunk, resolve, reject });\n this.runNext();\n });\n }\n get active() {\n return this._active;\n }\n runNext() {\n if (this._waiting.length === 0 || this._active === this._capacity) {\n return;\n }\n (0, ral_1.default)().timer.setImmediate(() => this.doRunNext());\n }\n doRunNext() {\n if (this._waiting.length === 0 || this._active === this._capacity) {\n return;\n }\n const next = this._waiting.shift();\n this._active++;\n if (this._active > this._capacity) {\n throw new Error(`To many thunks active`);\n }\n try {\n const result = next.thunk();\n if (result instanceof Promise) {\n result.then((value) => {\n this._active--;\n next.resolve(value);\n this.runNext();\n }, (err) => {\n this._active--;\n next.reject(err);\n this.runNext();\n });\n }\n else {\n this._active--;\n next.resolve(result);\n this.runNext();\n }\n }\n catch (err) {\n this._active--;\n next.reject(err);\n this.runNext();\n }\n }\n}\nexports.Semaphore = Semaphore;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ReadableStreamMessageReader = exports.AbstractMessageReader = exports.MessageReader = void 0;\nconst ral_1 = require(\"./ral\");\nconst Is = require(\"./is\");\nconst events_1 = require(\"./events\");\nconst semaphore_1 = require(\"./semaphore\");\nvar MessageReader;\n(function (MessageReader) {\n function is(value) {\n let candidate = value;\n return candidate && Is.func(candidate.listen) && Is.func(candidate.dispose) &&\n Is.func(candidate.onError) && Is.func(candidate.onClose) && Is.func(candidate.onPartialMessage);\n }\n MessageReader.is = is;\n})(MessageReader || (exports.MessageReader = MessageReader = {}));\nclass AbstractMessageReader {\n constructor() {\n this.errorEmitter = new events_1.Emitter();\n this.closeEmitter = new events_1.Emitter();\n this.partialMessageEmitter = new events_1.Emitter();\n }\n dispose() {\n this.errorEmitter.dispose();\n this.closeEmitter.dispose();\n }\n get onError() {\n return this.errorEmitter.event;\n }\n fireError(error) {\n this.errorEmitter.fire(this.asError(error));\n }\n get onClose() {\n return this.closeEmitter.event;\n }\n fireClose() {\n this.closeEmitter.fire(undefined);\n }\n get onPartialMessage() {\n return this.partialMessageEmitter.event;\n }\n firePartialMessage(info) {\n this.partialMessageEmitter.fire(info);\n }\n asError(error) {\n if (error instanceof Error) {\n return error;\n }\n else {\n return new Error(`Reader received error. Reason: ${Is.string(error.message) ? error.message : 'unknown'}`);\n }\n }\n}\nexports.AbstractMessageReader = AbstractMessageReader;\nvar ResolvedMessageReaderOptions;\n(function (ResolvedMessageReaderOptions) {\n function fromOptions(options) {\n let charset;\n let result;\n let contentDecoder;\n const contentDecoders = new Map();\n let contentTypeDecoder;\n const contentTypeDecoders = new Map();\n if (options === undefined || typeof options === 'string') {\n charset = options ?? 'utf-8';\n }\n else {\n charset = options.charset ?? 'utf-8';\n if (options.contentDecoder !== undefined) {\n contentDecoder = options.contentDecoder;\n contentDecoders.set(contentDecoder.name, contentDecoder);\n }\n if (options.contentDecoders !== undefined) {\n for (const decoder of options.contentDecoders) {\n contentDecoders.set(decoder.name, decoder);\n }\n }\n if (options.contentTypeDecoder !== undefined) {\n contentTypeDecoder = options.contentTypeDecoder;\n contentTypeDecoders.set(contentTypeDecoder.name, contentTypeDecoder);\n }\n if (options.contentTypeDecoders !== undefined) {\n for (const decoder of options.contentTypeDecoders) {\n contentTypeDecoders.set(decoder.name, decoder);\n }\n }\n }\n if (contentTypeDecoder === undefined) {\n contentTypeDecoder = (0, ral_1.default)().applicationJson.decoder;\n contentTypeDecoders.set(contentTypeDecoder.name, contentTypeDecoder);\n }\n return { charset, contentDecoder, contentDecoders, contentTypeDecoder, contentTypeDecoders };\n }\n ResolvedMessageReaderOptions.fromOptions = fromOptions;\n})(ResolvedMessageReaderOptions || (ResolvedMessageReaderOptions = {}));\nclass ReadableStreamMessageReader extends AbstractMessageReader {\n constructor(readable, options) {\n super();\n this.readable = readable;\n this.options = ResolvedMessageReaderOptions.fromOptions(options);\n this.buffer = (0, ral_1.default)().messageBuffer.create(this.options.charset);\n this._partialMessageTimeout = 10000;\n this.nextMessageLength = -1;\n this.messageToken = 0;\n this.readSemaphore = new semaphore_1.Semaphore(1);\n }\n set partialMessageTimeout(timeout) {\n this._partialMessageTimeout = timeout;\n }\n get partialMessageTimeout() {\n return this._partialMessageTimeout;\n }\n listen(callback) {\n this.nextMessageLength = -1;\n this.messageToken = 0;\n this.partialMessageTimer = undefined;\n this.callback = callback;\n const result = this.readable.onData((data) => {\n this.onData(data);\n });\n this.readable.onError((error) => this.fireError(error));\n this.readable.onClose(() => this.fireClose());\n return result;\n }\n onData(data) {\n try {\n this.buffer.append(data);\n while (true) {\n if (this.nextMessageLength === -1) {\n const headers = this.buffer.tryReadHeaders(true);\n if (!headers) {\n return;\n }\n const contentLength = headers.get('content-length');\n if (!contentLength) {\n this.fireError(new Error(`Header must provide a Content-Length property.\\n${JSON.stringify(Object.fromEntries(headers))}`));\n return;\n }\n const length = parseInt(contentLength);\n if (isNaN(length)) {\n this.fireError(new Error(`Content-Length value must be a number. Got ${contentLength}`));\n return;\n }\n this.nextMessageLength = length;\n }\n const body = this.buffer.tryReadBody(this.nextMessageLength);\n if (body === undefined) {\n /** We haven't received the full message yet. */\n this.setPartialMessageTimer();\n return;\n }\n this.clearPartialMessageTimer();\n this.nextMessageLength = -1;\n // Make sure that we convert one received message after the\n // other. Otherwise it could happen that a decoding of a second\n // smaller message finished before the decoding of a first larger\n // message and then we would deliver the second message first.\n this.readSemaphore.lock(async () => {\n const bytes = this.options.contentDecoder !== undefined\n ? await this.options.contentDecoder.decode(body)\n : body;\n const message = await this.options.contentTypeDecoder.decode(bytes, this.options);\n this.callback(message);\n }).catch((error) => {\n this.fireError(error);\n });\n }\n }\n catch (error) {\n this.fireError(error);\n }\n }\n clearPartialMessageTimer() {\n if (this.partialMessageTimer) {\n this.partialMessageTimer.dispose();\n this.partialMessageTimer = undefined;\n }\n }\n setPartialMessageTimer() {\n this.clearPartialMessageTimer();\n if (this._partialMessageTimeout <= 0) {\n return;\n }\n this.partialMessageTimer = (0, ral_1.default)().timer.setTimeout((token, timeout) => {\n this.partialMessageTimer = undefined;\n if (token === this.messageToken) {\n this.firePartialMessage({ messageToken: token, waitingTime: timeout });\n this.setPartialMessageTimer();\n }\n }, this._partialMessageTimeout, this.messageToken, this._partialMessageTimeout);\n }\n}\nexports.ReadableStreamMessageReader = ReadableStreamMessageReader;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WriteableStreamMessageWriter = exports.AbstractMessageWriter = exports.MessageWriter = void 0;\nconst ral_1 = require(\"./ral\");\nconst Is = require(\"./is\");\nconst semaphore_1 = require(\"./semaphore\");\nconst events_1 = require(\"./events\");\nconst ContentLength = 'Content-Length: ';\nconst CRLF = '\\r\\n';\nvar MessageWriter;\n(function (MessageWriter) {\n function is(value) {\n let candidate = value;\n return candidate && Is.func(candidate.dispose) && Is.func(candidate.onClose) &&\n Is.func(candidate.onError) && Is.func(candidate.write);\n }\n MessageWriter.is = is;\n})(MessageWriter || (exports.MessageWriter = MessageWriter = {}));\nclass AbstractMessageWriter {\n constructor() {\n this.errorEmitter = new events_1.Emitter();\n this.closeEmitter = new events_1.Emitter();\n }\n dispose() {\n this.errorEmitter.dispose();\n this.closeEmitter.dispose();\n }\n get onError() {\n return this.errorEmitter.event;\n }\n fireError(error, message, count) {\n this.errorEmitter.fire([this.asError(error), message, count]);\n }\n get onClose() {\n return this.closeEmitter.event;\n }\n fireClose() {\n this.closeEmitter.fire(undefined);\n }\n asError(error) {\n if (error instanceof Error) {\n return error;\n }\n else {\n return new Error(`Writer received error. Reason: ${Is.string(error.message) ? error.message : 'unknown'}`);\n }\n }\n}\nexports.AbstractMessageWriter = AbstractMessageWriter;\nvar ResolvedMessageWriterOptions;\n(function (ResolvedMessageWriterOptions) {\n function fromOptions(options) {\n if (options === undefined || typeof options === 'string') {\n return { charset: options ?? 'utf-8', contentTypeEncoder: (0, ral_1.default)().applicationJson.encoder };\n }\n else {\n return { charset: options.charset ?? 'utf-8', contentEncoder: options.contentEncoder, contentTypeEncoder: options.contentTypeEncoder ?? (0, ral_1.default)().applicationJson.encoder };\n }\n }\n ResolvedMessageWriterOptions.fromOptions = fromOptions;\n})(ResolvedMessageWriterOptions || (ResolvedMessageWriterOptions = {}));\nclass WriteableStreamMessageWriter extends AbstractMessageWriter {\n constructor(writable, options) {\n super();\n this.writable = writable;\n this.options = ResolvedMessageWriterOptions.fromOptions(options);\n this.errorCount = 0;\n this.writeSemaphore = new semaphore_1.Semaphore(1);\n this.writable.onError((error) => this.fireError(error));\n this.writable.onClose(() => this.fireClose());\n }\n async write(msg) {\n return this.writeSemaphore.lock(async () => {\n const payload = this.options.contentTypeEncoder.encode(msg, this.options).then((buffer) => {\n if (this.options.contentEncoder !== undefined) {\n return this.options.contentEncoder.encode(buffer);\n }\n else {\n return buffer;\n }\n });\n return payload.then((buffer) => {\n const headers = [];\n headers.push(ContentLength, buffer.byteLength.toString(), CRLF);\n headers.push(CRLF);\n return this.doWrite(msg, headers, buffer);\n }, (error) => {\n this.fireError(error);\n throw error;\n });\n });\n }\n async doWrite(msg, headers, data) {\n try {\n await this.writable.write(headers.join(''), 'ascii');\n return this.writable.write(data);\n }\n catch (error) {\n this.handleError(error, msg);\n return Promise.reject(error);\n }\n }\n handleError(error, msg) {\n this.errorCount++;\n this.fireError(error, msg, this.errorCount);\n }\n end() {\n this.writable.end();\n }\n}\nexports.WriteableStreamMessageWriter = WriteableStreamMessageWriter;\n","\"use strict\";\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AbstractMessageBuffer = void 0;\nconst CR = 13;\nconst LF = 10;\nconst CRLF = '\\r\\n';\nclass AbstractMessageBuffer {\n constructor(encoding = 'utf-8') {\n this._encoding = encoding;\n this._chunks = [];\n this._totalLength = 0;\n }\n get encoding() {\n return this._encoding;\n }\n append(chunk) {\n const toAppend = typeof chunk === 'string' ? this.fromString(chunk, this._encoding) : chunk;\n this._chunks.push(toAppend);\n this._totalLength += toAppend.byteLength;\n }\n tryReadHeaders(lowerCaseKeys = false) {\n if (this._chunks.length === 0) {\n return undefined;\n }\n let state = 0;\n let chunkIndex = 0;\n let offset = 0;\n let chunkBytesRead = 0;\n row: while (chunkIndex < this._chunks.length) {\n const chunk = this._chunks[chunkIndex];\n offset = 0;\n column: while (offset < chunk.length) {\n const value = chunk[offset];\n switch (value) {\n case CR:\n switch (state) {\n case 0:\n state = 1;\n break;\n case 2:\n state = 3;\n break;\n default:\n state = 0;\n }\n break;\n case LF:\n switch (state) {\n case 1:\n state = 2;\n break;\n case 3:\n state = 4;\n offset++;\n break row;\n default:\n state = 0;\n }\n break;\n default:\n state = 0;\n }\n offset++;\n }\n chunkBytesRead += chunk.byteLength;\n chunkIndex++;\n }\n if (state !== 4) {\n return undefined;\n }\n // The buffer contains the two CRLF at the end. So we will\n // have two empty lines after the split at the end as well.\n const buffer = this._read(chunkBytesRead + offset);\n const result = new Map();\n const headers = this.toString(buffer, 'ascii').split(CRLF);\n if (headers.length < 2) {\n return result;\n }\n for (let i = 0; i < headers.length - 2; i++) {\n const header = headers[i];\n const index = header.indexOf(':');\n if (index === -1) {\n throw new Error(`Message header must separate key and value using ':'\\n${header}`);\n }\n const key = header.substr(0, index);\n const value = header.substr(index + 1).trim();\n result.set(lowerCaseKeys ? key.toLowerCase() : key, value);\n }\n return result;\n }\n tryReadBody(length) {\n if (this._totalLength < length) {\n return undefined;\n }\n return this._read(length);\n }\n get numberOfBytes() {\n return this._totalLength;\n }\n _read(byteCount) {\n if (byteCount === 0) {\n return this.emptyBuffer();\n }\n if (byteCount > this._totalLength) {\n throw new Error(`Cannot read so many bytes!`);\n }\n if (this._chunks[0].byteLength === byteCount) {\n // super fast path, precisely first chunk must be returned\n const chunk = this._chunks[0];\n this._chunks.shift();\n this._totalLength -= byteCount;\n return this.asNative(chunk);\n }\n if (this._chunks[0].byteLength > byteCount) {\n // fast path, the reading is entirely within the first chunk\n const chunk = this._chunks[0];\n const result = this.asNative(chunk, byteCount);\n this._chunks[0] = chunk.slice(byteCount);\n this._totalLength -= byteCount;\n return result;\n }\n const result = this.allocNative(byteCount);\n let resultOffset = 0;\n let chunkIndex = 0;\n while (byteCount > 0) {\n const chunk = this._chunks[chunkIndex];\n if (chunk.byteLength > byteCount) {\n // this chunk will survive\n const chunkPart = chunk.slice(0, byteCount);\n result.set(chunkPart, resultOffset);\n resultOffset += byteCount;\n this._chunks[chunkIndex] = chunk.slice(byteCount);\n this._totalLength -= byteCount;\n byteCount -= byteCount;\n }\n else {\n // this chunk will be entirely read\n result.set(chunk, resultOffset);\n resultOffset += chunk.byteLength;\n this._chunks.shift();\n this._totalLength -= chunk.byteLength;\n byteCount -= chunk.byteLength;\n }\n }\n return result;\n }\n}\nexports.AbstractMessageBuffer = AbstractMessageBuffer;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createMessageConnection = exports.ConnectionOptions = exports.MessageStrategy = exports.CancellationStrategy = exports.CancellationSenderStrategy = exports.CancellationReceiverStrategy = exports.RequestCancellationReceiverStrategy = exports.IdCancellationReceiverStrategy = exports.ConnectionStrategy = exports.ConnectionError = exports.ConnectionErrors = exports.LogTraceNotification = exports.SetTraceNotification = exports.TraceFormat = exports.TraceValues = exports.Trace = exports.NullLogger = exports.ProgressType = exports.ProgressToken = void 0;\nconst ral_1 = require(\"./ral\");\nconst Is = require(\"./is\");\nconst messages_1 = require(\"./messages\");\nconst linkedMap_1 = require(\"./linkedMap\");\nconst events_1 = require(\"./events\");\nconst cancellation_1 = require(\"./cancellation\");\nvar CancelNotification;\n(function (CancelNotification) {\n CancelNotification.type = new messages_1.NotificationType('$/cancelRequest');\n})(CancelNotification || (CancelNotification = {}));\nvar ProgressToken;\n(function (ProgressToken) {\n function is(value) {\n return typeof value === 'string' || typeof value === 'number';\n }\n ProgressToken.is = is;\n})(ProgressToken || (exports.ProgressToken = ProgressToken = {}));\nvar ProgressNotification;\n(function (ProgressNotification) {\n ProgressNotification.type = new messages_1.NotificationType('$/progress');\n})(ProgressNotification || (ProgressNotification = {}));\nclass ProgressType {\n constructor() {\n }\n}\nexports.ProgressType = ProgressType;\nvar StarRequestHandler;\n(function (StarRequestHandler) {\n function is(value) {\n return Is.func(value);\n }\n StarRequestHandler.is = is;\n})(StarRequestHandler || (StarRequestHandler = {}));\nexports.NullLogger = Object.freeze({\n error: () => { },\n warn: () => { },\n info: () => { },\n log: () => { }\n});\nvar Trace;\n(function (Trace) {\n Trace[Trace[\"Off\"] = 0] = \"Off\";\n Trace[Trace[\"Messages\"] = 1] = \"Messages\";\n Trace[Trace[\"Compact\"] = 2] = \"Compact\";\n Trace[Trace[\"Verbose\"] = 3] = \"Verbose\";\n})(Trace || (exports.Trace = Trace = {}));\nvar TraceValues;\n(function (TraceValues) {\n /**\n * Turn tracing off.\n */\n TraceValues.Off = 'off';\n /**\n * Trace messages only.\n */\n TraceValues.Messages = 'messages';\n /**\n * Compact message tracing.\n */\n TraceValues.Compact = 'compact';\n /**\n * Verbose message tracing.\n */\n TraceValues.Verbose = 'verbose';\n})(TraceValues || (exports.TraceValues = TraceValues = {}));\n(function (Trace) {\n function fromString(value) {\n if (!Is.string(value)) {\n return Trace.Off;\n }\n value = value.toLowerCase();\n switch (value) {\n case 'off':\n return Trace.Off;\n case 'messages':\n return Trace.Messages;\n case 'compact':\n return Trace.Compact;\n case 'verbose':\n return Trace.Verbose;\n default:\n return Trace.Off;\n }\n }\n Trace.fromString = fromString;\n function toString(value) {\n switch (value) {\n case Trace.Off:\n return 'off';\n case Trace.Messages:\n return 'messages';\n case Trace.Compact:\n return 'compact';\n case Trace.Verbose:\n return 'verbose';\n default:\n return 'off';\n }\n }\n Trace.toString = toString;\n})(Trace || (exports.Trace = Trace = {}));\nvar TraceFormat;\n(function (TraceFormat) {\n TraceFormat[\"Text\"] = \"text\";\n TraceFormat[\"JSON\"] = \"json\";\n})(TraceFormat || (exports.TraceFormat = TraceFormat = {}));\n(function (TraceFormat) {\n function fromString(value) {\n if (!Is.string(value)) {\n return TraceFormat.Text;\n }\n value = value.toLowerCase();\n if (value === 'json') {\n return TraceFormat.JSON;\n }\n else {\n return TraceFormat.Text;\n }\n }\n TraceFormat.fromString = fromString;\n})(TraceFormat || (exports.TraceFormat = TraceFormat = {}));\nvar SetTraceNotification;\n(function (SetTraceNotification) {\n SetTraceNotification.type = new messages_1.NotificationType('$/setTrace');\n})(SetTraceNotification || (exports.SetTraceNotification = SetTraceNotification = {}));\nvar LogTraceNotification;\n(function (LogTraceNotification) {\n LogTraceNotification.type = new messages_1.NotificationType('$/logTrace');\n})(LogTraceNotification || (exports.LogTraceNotification = LogTraceNotification = {}));\nvar ConnectionErrors;\n(function (ConnectionErrors) {\n /**\n * The connection is closed.\n */\n ConnectionErrors[ConnectionErrors[\"Closed\"] = 1] = \"Closed\";\n /**\n * The connection got disposed.\n */\n ConnectionErrors[ConnectionErrors[\"Disposed\"] = 2] = \"Disposed\";\n /**\n * The connection is already in listening mode.\n */\n ConnectionErrors[ConnectionErrors[\"AlreadyListening\"] = 3] = \"AlreadyListening\";\n})(ConnectionErrors || (exports.ConnectionErrors = ConnectionErrors = {}));\nclass ConnectionError extends Error {\n constructor(code, message) {\n super(message);\n this.code = code;\n Object.setPrototypeOf(this, ConnectionError.prototype);\n }\n}\nexports.ConnectionError = ConnectionError;\nvar ConnectionStrategy;\n(function (ConnectionStrategy) {\n function is(value) {\n const candidate = value;\n return candidate && Is.func(candidate.cancelUndispatched);\n }\n ConnectionStrategy.is = is;\n})(ConnectionStrategy || (exports.ConnectionStrategy = ConnectionStrategy = {}));\nvar IdCancellationReceiverStrategy;\n(function (IdCancellationReceiverStrategy) {\n function is(value) {\n const candidate = value;\n return candidate && (candidate.kind === undefined || candidate.kind === 'id') && Is.func(candidate.createCancellationTokenSource) && (candidate.dispose === undefined || Is.func(candidate.dispose));\n }\n IdCancellationReceiverStrategy.is = is;\n})(IdCancellationReceiverStrategy || (exports.IdCancellationReceiverStrategy = IdCancellationReceiverStrategy = {}));\nvar RequestCancellationReceiverStrategy;\n(function (RequestCancellationReceiverStrategy) {\n function is(value) {\n const candidate = value;\n return candidate && candidate.kind === 'request' && Is.func(candidate.createCancellationTokenSource) && (candidate.dispose === undefined || Is.func(candidate.dispose));\n }\n RequestCancellationReceiverStrategy.is = is;\n})(RequestCancellationReceiverStrategy || (exports.RequestCancellationReceiverStrategy = RequestCancellationReceiverStrategy = {}));\nvar CancellationReceiverStrategy;\n(function (CancellationReceiverStrategy) {\n CancellationReceiverStrategy.Message = Object.freeze({\n createCancellationTokenSource(_) {\n return new cancellation_1.CancellationTokenSource();\n }\n });\n function is(value) {\n return IdCancellationReceiverStrategy.is(value) || RequestCancellationReceiverStrategy.is(value);\n }\n CancellationReceiverStrategy.is = is;\n})(CancellationReceiverStrategy || (exports.CancellationReceiverStrategy = CancellationReceiverStrategy = {}));\nvar CancellationSenderStrategy;\n(function (CancellationSenderStrategy) {\n CancellationSenderStrategy.Message = Object.freeze({\n sendCancellation(conn, id) {\n return conn.sendNotification(CancelNotification.type, { id });\n },\n cleanup(_) { }\n });\n function is(value) {\n const candidate = value;\n return candidate && Is.func(candidate.sendCancellation) && Is.func(candidate.cleanup);\n }\n CancellationSenderStrategy.is = is;\n})(CancellationSenderStrategy || (exports.CancellationSenderStrategy = CancellationSenderStrategy = {}));\nvar CancellationStrategy;\n(function (CancellationStrategy) {\n CancellationStrategy.Message = Object.freeze({\n receiver: CancellationReceiverStrategy.Message,\n sender: CancellationSenderStrategy.Message\n });\n function is(value) {\n const candidate = value;\n return candidate && CancellationReceiverStrategy.is(candidate.receiver) && CancellationSenderStrategy.is(candidate.sender);\n }\n CancellationStrategy.is = is;\n})(CancellationStrategy || (exports.CancellationStrategy = CancellationStrategy = {}));\nvar MessageStrategy;\n(function (MessageStrategy) {\n function is(value) {\n const candidate = value;\n return candidate && Is.func(candidate.handleMessage);\n }\n MessageStrategy.is = is;\n})(MessageStrategy || (exports.MessageStrategy = MessageStrategy = {}));\nvar ConnectionOptions;\n(function (ConnectionOptions) {\n function is(value) {\n const candidate = value;\n return candidate && (CancellationStrategy.is(candidate.cancellationStrategy) || ConnectionStrategy.is(candidate.connectionStrategy) || MessageStrategy.is(candidate.messageStrategy));\n }\n ConnectionOptions.is = is;\n})(ConnectionOptions || (exports.ConnectionOptions = ConnectionOptions = {}));\nvar ConnectionState;\n(function (ConnectionState) {\n ConnectionState[ConnectionState[\"New\"] = 1] = \"New\";\n ConnectionState[ConnectionState[\"Listening\"] = 2] = \"Listening\";\n ConnectionState[ConnectionState[\"Closed\"] = 3] = \"Closed\";\n ConnectionState[ConnectionState[\"Disposed\"] = 4] = \"Disposed\";\n})(ConnectionState || (ConnectionState = {}));\nfunction createMessageConnection(messageReader, messageWriter, _logger, options) {\n const logger = _logger !== undefined ? _logger : exports.NullLogger;\n let sequenceNumber = 0;\n let notificationSequenceNumber = 0;\n let unknownResponseSequenceNumber = 0;\n const version = '2.0';\n let starRequestHandler = undefined;\n const requestHandlers = new Map();\n let starNotificationHandler = undefined;\n const notificationHandlers = new Map();\n const progressHandlers = new Map();\n let timer;\n let messageQueue = new linkedMap_1.LinkedMap();\n let responsePromises = new Map();\n let knownCanceledRequests = new Set();\n let requestTokens = new Map();\n let trace = Trace.Off;\n let traceFormat = TraceFormat.Text;\n let tracer;\n let state = ConnectionState.New;\n const errorEmitter = new events_1.Emitter();\n const closeEmitter = new events_1.Emitter();\n const unhandledNotificationEmitter = new events_1.Emitter();\n const unhandledProgressEmitter = new events_1.Emitter();\n const disposeEmitter = new events_1.Emitter();\n const cancellationStrategy = (options && options.cancellationStrategy) ? options.cancellationStrategy : CancellationStrategy.Message;\n function createRequestQueueKey(id) {\n if (id === null) {\n throw new Error(`Can't send requests with id null since the response can't be correlated.`);\n }\n return 'req-' + id.toString();\n }\n function createResponseQueueKey(id) {\n if (id === null) {\n return 'res-unknown-' + (++unknownResponseSequenceNumber).toString();\n }\n else {\n return 'res-' + id.toString();\n }\n }\n function createNotificationQueueKey() {\n return 'not-' + (++notificationSequenceNumber).toString();\n }\n function addMessageToQueue(queue, message) {\n if (messages_1.Message.isRequest(message)) {\n queue.set(createRequestQueueKey(message.id), message);\n }\n else if (messages_1.Message.isResponse(message)) {\n queue.set(createResponseQueueKey(message.id), message);\n }\n else {\n queue.set(createNotificationQueueKey(), message);\n }\n }\n function cancelUndispatched(_message) {\n return undefined;\n }\n function isListening() {\n return state === ConnectionState.Listening;\n }\n function isClosed() {\n return state === ConnectionState.Closed;\n }\n function isDisposed() {\n return state === ConnectionState.Disposed;\n }\n function closeHandler() {\n if (state === ConnectionState.New || state === ConnectionState.Listening) {\n state = ConnectionState.Closed;\n closeEmitter.fire(undefined);\n }\n // If the connection is disposed don't sent close events.\n }\n function readErrorHandler(error) {\n errorEmitter.fire([error, undefined, undefined]);\n }\n function writeErrorHandler(data) {\n errorEmitter.fire(data);\n }\n messageReader.onClose(closeHandler);\n messageReader.onError(readErrorHandler);\n messageWriter.onClose(closeHandler);\n messageWriter.onError(writeErrorHandler);\n function triggerMessageQueue() {\n if (timer || messageQueue.size === 0) {\n return;\n }\n timer = (0, ral_1.default)().timer.setImmediate(() => {\n timer = undefined;\n processMessageQueue();\n });\n }\n function handleMessage(message) {\n if (messages_1.Message.isRequest(message)) {\n handleRequest(message);\n }\n else if (messages_1.Message.isNotification(message)) {\n handleNotification(message);\n }\n else if (messages_1.Message.isResponse(message)) {\n handleResponse(message);\n }\n else {\n handleInvalidMessage(message);\n }\n }\n function processMessageQueue() {\n if (messageQueue.size === 0) {\n return;\n }\n const message = messageQueue.shift();\n try {\n const messageStrategy = options?.messageStrategy;\n if (MessageStrategy.is(messageStrategy)) {\n messageStrategy.handleMessage(message, handleMessage);\n }\n else {\n handleMessage(message);\n }\n }\n finally {\n triggerMessageQueue();\n }\n }\n const callback = (message) => {\n try {\n // We have received a cancellation message. Check if the message is still in the queue\n // and cancel it if allowed to do so.\n if (messages_1.Message.isNotification(message) && message.method === CancelNotification.type.method) {\n const cancelId = message.params.id;\n const key = createRequestQueueKey(cancelId);\n const toCancel = messageQueue.get(key);\n if (messages_1.Message.isRequest(toCancel)) {\n const strategy = options?.connectionStrategy;\n const response = (strategy && strategy.cancelUndispatched) ? strategy.cancelUndispatched(toCancel, cancelUndispatched) : cancelUndispatched(toCancel);\n if (response && (response.error !== undefined || response.result !== undefined)) {\n messageQueue.delete(key);\n requestTokens.delete(cancelId);\n response.id = toCancel.id;\n traceSendingResponse(response, message.method, Date.now());\n messageWriter.write(response).catch(() => logger.error(`Sending response for canceled message failed.`));\n return;\n }\n }\n const cancellationToken = requestTokens.get(cancelId);\n // The request is already running. Cancel the token\n if (cancellationToken !== undefined) {\n cancellationToken.cancel();\n traceReceivedNotification(message);\n return;\n }\n else {\n // Remember the cancel but still queue the message to\n // clean up state in process message.\n knownCanceledRequests.add(cancelId);\n }\n }\n addMessageToQueue(messageQueue, message);\n }\n finally {\n triggerMessageQueue();\n }\n };\n function handleRequest(requestMessage) {\n if (isDisposed()) {\n // we return here silently since we fired an event when the\n // connection got disposed.\n return;\n }\n function reply(resultOrError, method, startTime) {\n const message = {\n jsonrpc: version,\n id: requestMessage.id\n };\n if (resultOrError instanceof messages_1.ResponseError) {\n message.error = resultOrError.toJson();\n }\n else {\n message.result = resultOrError === undefined ? null : resultOrError;\n }\n traceSendingResponse(message, method, startTime);\n messageWriter.write(message).catch(() => logger.error(`Sending response failed.`));\n }\n function replyError(error, method, startTime) {\n const message = {\n jsonrpc: version,\n id: requestMessage.id,\n error: error.toJson()\n };\n traceSendingResponse(message, method, startTime);\n messageWriter.write(message).catch(() => logger.error(`Sending response failed.`));\n }\n function replySuccess(result, method, startTime) {\n // The JSON RPC defines that a response must either have a result or an error\n // So we can't treat undefined as a valid response result.\n if (result === undefined) {\n result = null;\n }\n const message = {\n jsonrpc: version,\n id: requestMessage.id,\n result: result\n };\n traceSendingResponse(message, method, startTime);\n messageWriter.write(message).catch(() => logger.error(`Sending response failed.`));\n }\n traceReceivedRequest(requestMessage);\n const element = requestHandlers.get(requestMessage.method);\n let type;\n let requestHandler;\n if (element) {\n type = element.type;\n requestHandler = element.handler;\n }\n const startTime = Date.now();\n if (requestHandler || starRequestHandler) {\n const tokenKey = requestMessage.id ?? String(Date.now()); //\n const cancellationSource = IdCancellationReceiverStrategy.is(cancellationStrategy.receiver)\n ? cancellationStrategy.receiver.createCancellationTokenSource(tokenKey)\n : cancellationStrategy.receiver.createCancellationTokenSource(requestMessage);\n if (requestMessage.id !== null && knownCanceledRequests.has(requestMessage.id)) {\n cancellationSource.cancel();\n }\n if (requestMessage.id !== null) {\n requestTokens.set(tokenKey, cancellationSource);\n }\n try {\n let handlerResult;\n if (requestHandler) {\n if (requestMessage.params === undefined) {\n if (type !== undefined && type.numberOfParams !== 0) {\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InvalidParams, `Request ${requestMessage.method} defines ${type.numberOfParams} params but received none.`), requestMessage.method, startTime);\n return;\n }\n handlerResult = requestHandler(cancellationSource.token);\n }\n else if (Array.isArray(requestMessage.params)) {\n if (type !== undefined && type.parameterStructures === messages_1.ParameterStructures.byName) {\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InvalidParams, `Request ${requestMessage.method} defines parameters by name but received parameters by position`), requestMessage.method, startTime);\n return;\n }\n handlerResult = requestHandler(...requestMessage.params, cancellationSource.token);\n }\n else {\n if (type !== undefined && type.parameterStructures === messages_1.ParameterStructures.byPosition) {\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InvalidParams, `Request ${requestMessage.method} defines parameters by position but received parameters by name`), requestMessage.method, startTime);\n return;\n }\n handlerResult = requestHandler(requestMessage.params, cancellationSource.token);\n }\n }\n else if (starRequestHandler) {\n handlerResult = starRequestHandler(requestMessage.method, requestMessage.params, cancellationSource.token);\n }\n const promise = handlerResult;\n if (!handlerResult) {\n requestTokens.delete(tokenKey);\n replySuccess(handlerResult, requestMessage.method, startTime);\n }\n else if (promise.then) {\n promise.then((resultOrError) => {\n requestTokens.delete(tokenKey);\n reply(resultOrError, requestMessage.method, startTime);\n }, error => {\n requestTokens.delete(tokenKey);\n if (error instanceof messages_1.ResponseError) {\n replyError(error, requestMessage.method, startTime);\n }\n else if (error && Is.string(error.message)) {\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InternalError, `Request ${requestMessage.method} failed with message: ${error.message}`), requestMessage.method, startTime);\n }\n else {\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InternalError, `Request ${requestMessage.method} failed unexpectedly without providing any details.`), requestMessage.method, startTime);\n }\n });\n }\n else {\n requestTokens.delete(tokenKey);\n reply(handlerResult, requestMessage.method, startTime);\n }\n }\n catch (error) {\n requestTokens.delete(tokenKey);\n if (error instanceof messages_1.ResponseError) {\n reply(error, requestMessage.method, startTime);\n }\n else if (error && Is.string(error.message)) {\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InternalError, `Request ${requestMessage.method} failed with message: ${error.message}`), requestMessage.method, startTime);\n }\n else {\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InternalError, `Request ${requestMessage.method} failed unexpectedly without providing any details.`), requestMessage.method, startTime);\n }\n }\n }\n else {\n replyError(new messages_1.ResponseError(messages_1.ErrorCodes.MethodNotFound, `Unhandled method ${requestMessage.method}`), requestMessage.method, startTime);\n }\n }\n function handleResponse(responseMessage) {\n if (isDisposed()) {\n // See handle request.\n return;\n }\n if (responseMessage.id === null) {\n if (responseMessage.error) {\n logger.error(`Received response message without id: Error is: \\n${JSON.stringify(responseMessage.error, undefined, 4)}`);\n }\n else {\n logger.error(`Received response message without id. No further error information provided.`);\n }\n }\n else {\n const key = responseMessage.id;\n const responsePromise = responsePromises.get(key);\n traceReceivedResponse(responseMessage, responsePromise);\n if (responsePromise !== undefined) {\n responsePromises.delete(key);\n try {\n if (responseMessage.error) {\n const error = responseMessage.error;\n responsePromise.reject(new messages_1.ResponseError(error.code, error.message, error.data));\n }\n else if (responseMessage.result !== undefined) {\n responsePromise.resolve(responseMessage.result);\n }\n else {\n throw new Error('Should never happen.');\n }\n }\n catch (error) {\n if (error.message) {\n logger.error(`Response handler '${responsePromise.method}' failed with message: ${error.message}`);\n }\n else {\n logger.error(`Response handler '${responsePromise.method}' failed unexpectedly.`);\n }\n }\n }\n }\n }\n function handleNotification(message) {\n if (isDisposed()) {\n // See handle request.\n return;\n }\n let type = undefined;\n let notificationHandler;\n if (message.method === CancelNotification.type.method) {\n const cancelId = message.params.id;\n knownCanceledRequests.delete(cancelId);\n traceReceivedNotification(message);\n return;\n }\n else {\n const element = notificationHandlers.get(message.method);\n if (element) {\n notificationHandler = element.handler;\n type = element.type;\n }\n }\n if (notificationHandler || starNotificationHandler) {\n try {\n traceReceivedNotification(message);\n if (notificationHandler) {\n if (message.params === undefined) {\n if (type !== undefined) {\n if (type.numberOfParams !== 0 && type.parameterStructures !== messages_1.ParameterStructures.byName) {\n logger.error(`Notification ${message.method} defines ${type.numberOfParams} params but received none.`);\n }\n }\n notificationHandler();\n }\n else if (Array.isArray(message.params)) {\n // There are JSON-RPC libraries that send progress message as positional params although\n // specified as named. So convert them if this is the case.\n const params = message.params;\n if (message.method === ProgressNotification.type.method && params.length === 2 && ProgressToken.is(params[0])) {\n notificationHandler({ token: params[0], value: params[1] });\n }\n else {\n if (type !== undefined) {\n if (type.parameterStructures === messages_1.ParameterStructures.byName) {\n logger.error(`Notification ${message.method} defines parameters by name but received parameters by position`);\n }\n if (type.numberOfParams !== message.params.length) {\n logger.error(`Notification ${message.method} defines ${type.numberOfParams} params but received ${params.length} arguments`);\n }\n }\n notificationHandler(...params);\n }\n }\n else {\n if (type !== undefined && type.parameterStructures === messages_1.ParameterStructures.byPosition) {\n logger.error(`Notification ${message.method} defines parameters by position but received parameters by name`);\n }\n notificationHandler(message.params);\n }\n }\n else if (starNotificationHandler) {\n starNotificationHandler(message.method, message.params);\n }\n }\n catch (error) {\n if (error.message) {\n logger.error(`Notification handler '${message.method}' failed with message: ${error.message}`);\n }\n else {\n logger.error(`Notification handler '${message.method}' failed unexpectedly.`);\n }\n }\n }\n else {\n unhandledNotificationEmitter.fire(message);\n }\n }\n function handleInvalidMessage(message) {\n if (!message) {\n logger.error('Received empty message.');\n return;\n }\n logger.error(`Received message which is neither a response nor a notification message:\\n${JSON.stringify(message, null, 4)}`);\n // Test whether we find an id to reject the promise\n const responseMessage = message;\n if (Is.string(responseMessage.id) || Is.number(responseMessage.id)) {\n const key = responseMessage.id;\n const responseHandler = responsePromises.get(key);\n if (responseHandler) {\n responseHandler.reject(new Error('The received response has neither a result nor an error property.'));\n }\n }\n }\n function stringifyTrace(params) {\n if (params === undefined || params === null) {\n return undefined;\n }\n switch (trace) {\n case Trace.Verbose:\n return JSON.stringify(params, null, 4);\n case Trace.Compact:\n return JSON.stringify(params);\n default:\n return undefined;\n }\n }\n function traceSendingRequest(message) {\n if (trace === Trace.Off || !tracer) {\n return;\n }\n if (traceFormat === TraceFormat.Text) {\n let data = undefined;\n if ((trace === Trace.Verbose || trace === Trace.Compact) && message.params) {\n data = `Params: ${stringifyTrace(message.params)}\\n\\n`;\n }\n tracer.log(`Sending request '${message.method} - (${message.id})'.`, data);\n }\n else {\n logLSPMessage('send-request', message);\n }\n }\n function traceSendingNotification(message) {\n if (trace === Trace.Off || !tracer) {\n return;\n }\n if (traceFormat === TraceFormat.Text) {\n let data = undefined;\n if (trace === Trace.Verbose || trace === Trace.Compact) {\n if (message.params) {\n data = `Params: ${stringifyTrace(message.params)}\\n\\n`;\n }\n else {\n data = 'No parameters provided.\\n\\n';\n }\n }\n tracer.log(`Sending notification '${message.method}'.`, data);\n }\n else {\n logLSPMessage('send-notification', message);\n }\n }\n function traceSendingResponse(message, method, startTime) {\n if (trace === Trace.Off || !tracer) {\n return;\n }\n if (traceFormat === TraceFormat.Text) {\n let data = undefined;\n if (trace === Trace.Verbose || trace === Trace.Compact) {\n if (message.error && message.error.data) {\n data = `Error data: ${stringifyTrace(message.error.data)}\\n\\n`;\n }\n else {\n if (message.result) {\n data = `Result: ${stringifyTrace(message.result)}\\n\\n`;\n }\n else if (message.error === undefined) {\n data = 'No result returned.\\n\\n';\n }\n }\n }\n tracer.log(`Sending response '${method} - (${message.id})'. Processing request took ${Date.now() - startTime}ms`, data);\n }\n else {\n logLSPMessage('send-response', message);\n }\n }\n function traceReceivedRequest(message) {\n if (trace === Trace.Off || !tracer) {\n return;\n }\n if (traceFormat === TraceFormat.Text) {\n let data = undefined;\n if ((trace === Trace.Verbose || trace === Trace.Compact) && message.params) {\n data = `Params: ${stringifyTrace(message.params)}\\n\\n`;\n }\n tracer.log(`Received request '${message.method} - (${message.id})'.`, data);\n }\n else {\n logLSPMessage('receive-request', message);\n }\n }\n function traceReceivedNotification(message) {\n if (trace === Trace.Off || !tracer || message.method === LogTraceNotification.type.method) {\n return;\n }\n if (traceFormat === TraceFormat.Text) {\n let data = undefined;\n if (trace === Trace.Verbose || trace === Trace.Compact) {\n if (message.params) {\n data = `Params: ${stringifyTrace(message.params)}\\n\\n`;\n }\n else {\n data = 'No parameters provided.\\n\\n';\n }\n }\n tracer.log(`Received notification '${message.method}'.`, data);\n }\n else {\n logLSPMessage('receive-notification', message);\n }\n }\n function traceReceivedResponse(message, responsePromise) {\n if (trace === Trace.Off || !tracer) {\n return;\n }\n if (traceFormat === TraceFormat.Text) {\n let data = undefined;\n if (trace === Trace.Verbose || trace === Trace.Compact) {\n if (message.error && message.error.data) {\n data = `Error data: ${stringifyTrace(message.error.data)}\\n\\n`;\n }\n else {\n if (message.result) {\n data = `Result: ${stringifyTrace(message.result)}\\n\\n`;\n }\n else if (message.error === undefined) {\n data = 'No result returned.\\n\\n';\n }\n }\n }\n if (responsePromise) {\n const error = message.error ? ` Request failed: ${message.error.message} (${message.error.code}).` : '';\n tracer.log(`Received response '${responsePromise.method} - (${message.id})' in ${Date.now() - responsePromise.timerStart}ms.${error}`, data);\n }\n else {\n tracer.log(`Received response ${message.id} without active response promise.`, data);\n }\n }\n else {\n logLSPMessage('receive-response', message);\n }\n }\n function logLSPMessage(type, message) {\n if (!tracer || trace === Trace.Off) {\n return;\n }\n const lspMessage = {\n isLSPMessage: true,\n type,\n message,\n timestamp: Date.now()\n };\n tracer.log(lspMessage);\n }\n function throwIfClosedOrDisposed() {\n if (isClosed()) {\n throw new ConnectionError(ConnectionErrors.Closed, 'Connection is closed.');\n }\n if (isDisposed()) {\n throw new ConnectionError(ConnectionErrors.Disposed, 'Connection is disposed.');\n }\n }\n function throwIfListening() {\n if (isListening()) {\n throw new ConnectionError(ConnectionErrors.AlreadyListening, 'Connection is already listening');\n }\n }\n function throwIfNotListening() {\n if (!isListening()) {\n throw new Error('Call listen() first.');\n }\n }\n function undefinedToNull(param) {\n if (param === undefined) {\n return null;\n }\n else {\n return param;\n }\n }\n function nullToUndefined(param) {\n if (param === null) {\n return undefined;\n }\n else {\n return param;\n }\n }\n function isNamedParam(param) {\n return param !== undefined && param !== null && !Array.isArray(param) && typeof param === 'object';\n }\n function computeSingleParam(parameterStructures, param) {\n switch (parameterStructures) {\n case messages_1.ParameterStructures.auto:\n if (isNamedParam(param)) {\n return nullToUndefined(param);\n }\n else {\n return [undefinedToNull(param)];\n }\n case messages_1.ParameterStructures.byName:\n if (!isNamedParam(param)) {\n throw new Error(`Received parameters by name but param is not an object literal.`);\n }\n return nullToUndefined(param);\n case messages_1.ParameterStructures.byPosition:\n return [undefinedToNull(param)];\n default:\n throw new Error(`Unknown parameter structure ${parameterStructures.toString()}`);\n }\n }\n function computeMessageParams(type, params) {\n let result;\n const numberOfParams = type.numberOfParams;\n switch (numberOfParams) {\n case 0:\n result = undefined;\n break;\n case 1:\n result = computeSingleParam(type.parameterStructures, params[0]);\n break;\n default:\n result = [];\n for (let i = 0; i < params.length && i < numberOfParams; i++) {\n result.push(undefinedToNull(params[i]));\n }\n if (params.length < numberOfParams) {\n for (let i = params.length; i < numberOfParams; i++) {\n result.push(null);\n }\n }\n break;\n }\n return result;\n }\n const connection = {\n sendNotification: (type, ...args) => {\n throwIfClosedOrDisposed();\n let method;\n let messageParams;\n if (Is.string(type)) {\n method = type;\n const first = args[0];\n let paramStart = 0;\n let parameterStructures = messages_1.ParameterStructures.auto;\n if (messages_1.ParameterStructures.is(first)) {\n paramStart = 1;\n parameterStructures = first;\n }\n let paramEnd = args.length;\n const numberOfParams = paramEnd - paramStart;\n switch (numberOfParams) {\n case 0:\n messageParams = undefined;\n break;\n case 1:\n messageParams = computeSingleParam(parameterStructures, args[paramStart]);\n break;\n default:\n if (parameterStructures === messages_1.ParameterStructures.byName) {\n throw new Error(`Received ${numberOfParams} parameters for 'by Name' notification parameter structure.`);\n }\n messageParams = args.slice(paramStart, paramEnd).map(value => undefinedToNull(value));\n break;\n }\n }\n else {\n const params = args;\n method = type.method;\n messageParams = computeMessageParams(type, params);\n }\n const notificationMessage = {\n jsonrpc: version,\n method: method,\n params: messageParams\n };\n traceSendingNotification(notificationMessage);\n return messageWriter.write(notificationMessage).catch((error) => {\n logger.error(`Sending notification failed.`);\n throw error;\n });\n },\n onNotification: (type, handler) => {\n throwIfClosedOrDisposed();\n let method;\n if (Is.func(type)) {\n starNotificationHandler = type;\n }\n else if (handler) {\n if (Is.string(type)) {\n method = type;\n notificationHandlers.set(type, { type: undefined, handler });\n }\n else {\n method = type.method;\n notificationHandlers.set(type.method, { type, handler });\n }\n }\n return {\n dispose: () => {\n if (method !== undefined) {\n notificationHandlers.delete(method);\n }\n else {\n starNotificationHandler = undefined;\n }\n }\n };\n },\n onProgress: (_type, token, handler) => {\n if (progressHandlers.has(token)) {\n throw new Error(`Progress handler for token ${token} already registered`);\n }\n progressHandlers.set(token, handler);\n return {\n dispose: () => {\n progressHandlers.delete(token);\n }\n };\n },\n sendProgress: (_type, token, value) => {\n // This should not await but simple return to ensure that we don't have another\n // async scheduling. Otherwise one send could overtake another send.\n return connection.sendNotification(ProgressNotification.type, { token, value });\n },\n onUnhandledProgress: unhandledProgressEmitter.event,\n sendRequest: (type, ...args) => {\n throwIfClosedOrDisposed();\n throwIfNotListening();\n let method;\n let messageParams;\n let token = undefined;\n if (Is.string(type)) {\n method = type;\n const first = args[0];\n const last = args[args.length - 1];\n let paramStart = 0;\n let parameterStructures = messages_1.ParameterStructures.auto;\n if (messages_1.ParameterStructures.is(first)) {\n paramStart = 1;\n parameterStructures = first;\n }\n let paramEnd = args.length;\n if (cancellation_1.CancellationToken.is(last)) {\n paramEnd = paramEnd - 1;\n token = last;\n }\n const numberOfParams = paramEnd - paramStart;\n switch (numberOfParams) {\n case 0:\n messageParams = undefined;\n break;\n case 1:\n messageParams = computeSingleParam(parameterStructures, args[paramStart]);\n break;\n default:\n if (parameterStructures === messages_1.ParameterStructures.byName) {\n throw new Error(`Received ${numberOfParams} parameters for 'by Name' request parameter structure.`);\n }\n messageParams = args.slice(paramStart, paramEnd).map(value => undefinedToNull(value));\n break;\n }\n }\n else {\n const params = args;\n method = type.method;\n messageParams = computeMessageParams(type, params);\n const numberOfParams = type.numberOfParams;\n token = cancellation_1.CancellationToken.is(params[numberOfParams]) ? params[numberOfParams] : undefined;\n }\n const id = sequenceNumber++;\n let disposable;\n if (token) {\n disposable = token.onCancellationRequested(() => {\n const p = cancellationStrategy.sender.sendCancellation(connection, id);\n if (p === undefined) {\n logger.log(`Received no promise from cancellation strategy when cancelling id ${id}`);\n return Promise.resolve();\n }\n else {\n return p.catch(() => {\n logger.log(`Sending cancellation messages for id ${id} failed`);\n });\n }\n });\n }\n const requestMessage = {\n jsonrpc: version,\n id: id,\n method: method,\n params: messageParams\n };\n traceSendingRequest(requestMessage);\n if (typeof cancellationStrategy.sender.enableCancellation === 'function') {\n cancellationStrategy.sender.enableCancellation(requestMessage);\n }\n return new Promise(async (resolve, reject) => {\n const resolveWithCleanup = (r) => {\n resolve(r);\n cancellationStrategy.sender.cleanup(id);\n disposable?.dispose();\n };\n const rejectWithCleanup = (r) => {\n reject(r);\n cancellationStrategy.sender.cleanup(id);\n disposable?.dispose();\n };\n const responsePromise = { method: method, timerStart: Date.now(), resolve: resolveWithCleanup, reject: rejectWithCleanup };\n try {\n responsePromises.set(id, responsePromise);\n await messageWriter.write(requestMessage);\n }\n catch (error) {\n // Writing the message failed. So we need to delete it from the response promises and\n // reject it.\n responsePromises.delete(id);\n responsePromise.reject(new messages_1.ResponseError(messages_1.ErrorCodes.MessageWriteError, error.message ? error.message : 'Unknown reason'));\n logger.error(`Sending request failed.`);\n throw error;\n }\n });\n },\n onRequest: (type, handler) => {\n throwIfClosedOrDisposed();\n let method = null;\n if (StarRequestHandler.is(type)) {\n method = undefined;\n starRequestHandler = type;\n }\n else if (Is.string(type)) {\n method = null;\n if (handler !== undefined) {\n method = type;\n requestHandlers.set(type, { handler: handler, type: undefined });\n }\n }\n else {\n if (handler !== undefined) {\n method = type.method;\n requestHandlers.set(type.method, { type, handler });\n }\n }\n return {\n dispose: () => {\n if (method === null) {\n return;\n }\n if (method !== undefined) {\n requestHandlers.delete(method);\n }\n else {\n starRequestHandler = undefined;\n }\n }\n };\n },\n hasPendingResponse: () => {\n return responsePromises.size > 0;\n },\n trace: async (_value, _tracer, sendNotificationOrTraceOptions) => {\n let _sendNotification = false;\n let _traceFormat = TraceFormat.Text;\n if (sendNotificationOrTraceOptions !== undefined) {\n if (Is.boolean(sendNotificationOrTraceOptions)) {\n _sendNotification = sendNotificationOrTraceOptions;\n }\n else {\n _sendNotification = sendNotificationOrTraceOptions.sendNotification || false;\n _traceFormat = sendNotificationOrTraceOptions.traceFormat || TraceFormat.Text;\n }\n }\n trace = _value;\n traceFormat = _traceFormat;\n if (trace === Trace.Off) {\n tracer = undefined;\n }\n else {\n tracer = _tracer;\n }\n if (_sendNotification && !isClosed() && !isDisposed()) {\n await connection.sendNotification(SetTraceNotification.type, { value: Trace.toString(_value) });\n }\n },\n onError: errorEmitter.event,\n onClose: closeEmitter.event,\n onUnhandledNotification: unhandledNotificationEmitter.event,\n onDispose: disposeEmitter.event,\n end: () => {\n messageWriter.end();\n },\n dispose: () => {\n if (isDisposed()) {\n return;\n }\n state = ConnectionState.Disposed;\n disposeEmitter.fire(undefined);\n const error = new messages_1.ResponseError(messages_1.ErrorCodes.PendingResponseRejected, 'Pending response rejected since connection got disposed');\n for (const promise of responsePromises.values()) {\n promise.reject(error);\n }\n responsePromises = new Map();\n requestTokens = new Map();\n knownCanceledRequests = new Set();\n messageQueue = new linkedMap_1.LinkedMap();\n // Test for backwards compatibility\n if (Is.func(messageWriter.dispose)) {\n messageWriter.dispose();\n }\n if (Is.func(messageReader.dispose)) {\n messageReader.dispose();\n }\n },\n listen: () => {\n throwIfClosedOrDisposed();\n throwIfListening();\n state = ConnectionState.Listening;\n messageReader.listen(callback);\n },\n inspect: () => {\n // eslint-disable-next-line no-console\n (0, ral_1.default)().console.log('inspect');\n }\n };\n connection.onNotification(LogTraceNotification.type, (params) => {\n if (trace === Trace.Off || !tracer) {\n return;\n }\n const verbose = trace === Trace.Verbose || trace === Trace.Compact;\n tracer.log(params.message, verbose ? params.verbose : undefined);\n });\n connection.onNotification(ProgressNotification.type, (params) => {\n const handler = progressHandlers.get(params.token);\n if (handler) {\n handler(params.value);\n }\n else {\n unhandledProgressEmitter.fire(params);\n }\n });\n return connection;\n}\nexports.createMessageConnection = createMessageConnection;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\n/// <reference path=\"../../typings/thenable.d.ts\" />\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProgressType = exports.ProgressToken = exports.createMessageConnection = exports.NullLogger = exports.ConnectionOptions = exports.ConnectionStrategy = exports.AbstractMessageBuffer = exports.WriteableStreamMessageWriter = exports.AbstractMessageWriter = exports.MessageWriter = exports.ReadableStreamMessageReader = exports.AbstractMessageReader = exports.MessageReader = exports.SharedArrayReceiverStrategy = exports.SharedArraySenderStrategy = exports.CancellationToken = exports.CancellationTokenSource = exports.Emitter = exports.Event = exports.Disposable = exports.LRUCache = exports.Touch = exports.LinkedMap = exports.ParameterStructures = exports.NotificationType9 = exports.NotificationType8 = exports.NotificationType7 = exports.NotificationType6 = exports.NotificationType5 = exports.NotificationType4 = exports.NotificationType3 = exports.NotificationType2 = exports.NotificationType1 = exports.NotificationType0 = exports.NotificationType = exports.ErrorCodes = exports.ResponseError = exports.RequestType9 = exports.RequestType8 = exports.RequestType7 = exports.RequestType6 = exports.RequestType5 = exports.RequestType4 = exports.RequestType3 = exports.RequestType2 = exports.RequestType1 = exports.RequestType0 = exports.RequestType = exports.Message = exports.RAL = void 0;\nexports.MessageStrategy = exports.CancellationStrategy = exports.CancellationSenderStrategy = exports.CancellationReceiverStrategy = exports.ConnectionError = exports.ConnectionErrors = exports.LogTraceNotification = exports.SetTraceNotification = exports.TraceFormat = exports.TraceValues = exports.Trace = void 0;\nconst messages_1 = require(\"./messages\");\nObject.defineProperty(exports, \"Message\", { enumerable: true, get: function () { return messages_1.Message; } });\nObject.defineProperty(exports, \"RequestType\", { enumerable: true, get: function () { return messages_1.RequestType; } });\nObject.defineProperty(exports, \"RequestType0\", { enumerable: true, get: function () { return messages_1.RequestType0; } });\nObject.defineProperty(exports, \"RequestType1\", { enumerable: true, get: function () { return messages_1.RequestType1; } });\nObject.defineProperty(exports, \"RequestType2\", { enumerable: true, get: function () { return messages_1.RequestType2; } });\nObject.defineProperty(exports, \"RequestType3\", { enumerable: true, get: function () { return messages_1.RequestType3; } });\nObject.defineProperty(exports, \"RequestType4\", { enumerable: true, get: function () { return messages_1.RequestType4; } });\nObject.defineProperty(exports, \"RequestType5\", { enumerable: true, get: function () { return messages_1.RequestType5; } });\nObject.defineProperty(exports, \"RequestType6\", { enumerable: true, get: function () { return messages_1.RequestType6; } });\nObject.defineProperty(exports, \"RequestType7\", { enumerable: true, get: function () { return messages_1.RequestType7; } });\nObject.defineProperty(exports, \"RequestType8\", { enumerable: true, get: function () { return messages_1.RequestType8; } });\nObject.defineProperty(exports, \"RequestType9\", { enumerable: true, get: function () { return messages_1.RequestType9; } });\nObject.defineProperty(exports, \"ResponseError\", { enumerable: true, get: function () { return messages_1.ResponseError; } });\nObject.defineProperty(exports, \"ErrorCodes\", { enumerable: true, get: function () { return messages_1.ErrorCodes; } });\nObject.defineProperty(exports, \"NotificationType\", { enumerable: true, get: function () { return messages_1.NotificationType; } });\nObject.defineProperty(exports, \"NotificationType0\", { enumerable: true, get: function () { return messages_1.NotificationType0; } });\nObject.defineProperty(exports, \"NotificationType1\", { enumerable: true, get: function () { return messages_1.NotificationType1; } });\nObject.defineProperty(exports, \"NotificationType2\", { enumerable: true, get: function () { return messages_1.NotificationType2; } });\nObject.defineProperty(exports, \"NotificationType3\", { enumerable: true, get: function () { return messages_1.NotificationType3; } });\nObject.defineProperty(exports, \"NotificationType4\", { enumerable: true, get: function () { return messages_1.NotificationType4; } });\nObject.defineProperty(exports, \"NotificationType5\", { enumerable: true, get: function () { return messages_1.NotificationType5; } });\nObject.defineProperty(exports, \"NotificationType6\", { enumerable: true, get: function () { return messages_1.NotificationType6; } });\nObject.defineProperty(exports, \"NotificationType7\", { enumerable: true, get: function () { return messages_1.NotificationType7; } });\nObject.defineProperty(exports, \"NotificationType8\", { enumerable: true, get: function () { return messages_1.NotificationType8; } });\nObject.defineProperty(exports, \"NotificationType9\", { enumerable: true, get: function () { return messages_1.NotificationType9; } });\nObject.defineProperty(exports, \"ParameterStructures\", { enumerable: true, get: function () { return messages_1.ParameterStructures; } });\nconst linkedMap_1 = require(\"./linkedMap\");\nObject.defineProperty(exports, \"LinkedMap\", { enumerable: true, get: function () { return linkedMap_1.LinkedMap; } });\nObject.defineProperty(exports, \"LRUCache\", { enumerable: true, get: function () { return linkedMap_1.LRUCache; } });\nObject.defineProperty(exports, \"Touch\", { enumerable: true, get: function () { return linkedMap_1.Touch; } });\nconst disposable_1 = require(\"./disposable\");\nObject.defineProperty(exports, \"Disposable\", { enumerable: true, get: function () { return disposable_1.Disposable; } });\nconst events_1 = require(\"./events\");\nObject.defineProperty(exports, \"Event\", { enumerable: true, get: function () { return events_1.Event; } });\nObject.defineProperty(exports, \"Emitter\", { enumerable: true, get: function () { return events_1.Emitter; } });\nconst cancellation_1 = require(\"./cancellation\");\nObject.defineProperty(exports, \"CancellationTokenSource\", { enumerable: true, get: function () { return cancellation_1.CancellationTokenSource; } });\nObject.defineProperty(exports, \"CancellationToken\", { enumerable: true, get: function () { return cancellation_1.CancellationToken; } });\nconst sharedArrayCancellation_1 = require(\"./sharedArrayCancellation\");\nObject.defineProperty(exports, \"SharedArraySenderStrategy\", { enumerable: true, get: function () { return sharedArrayCancellation_1.SharedArraySenderStrategy; } });\nObject.defineProperty(exports, \"SharedArrayReceiverStrategy\", { enumerable: true, get: function () { return sharedArrayCancellation_1.SharedArrayReceiverStrategy; } });\nconst messageReader_1 = require(\"./messageReader\");\nObject.defineProperty(exports, \"MessageReader\", { enumerable: true, get: function () { return messageReader_1.MessageReader; } });\nObject.defineProperty(exports, \"AbstractMessageReader\", { enumerable: true, get: function () { return messageReader_1.AbstractMessageReader; } });\nObject.defineProperty(exports, \"ReadableStreamMessageReader\", { enumerable: true, get: function () { return messageReader_1.ReadableStreamMessageReader; } });\nconst messageWriter_1 = require(\"./messageWriter\");\nObject.defineProperty(exports, \"MessageWriter\", { enumerable: true, get: function () { return messageWriter_1.MessageWriter; } });\nObject.defineProperty(exports, \"AbstractMessageWriter\", { enumerable: true, get: function () { return messageWriter_1.AbstractMessageWriter; } });\nObject.defineProperty(exports, \"WriteableStreamMessageWriter\", { enumerable: true, get: function () { return messageWriter_1.WriteableStreamMessageWriter; } });\nconst messageBuffer_1 = require(\"./messageBuffer\");\nObject.defineProperty(exports, \"AbstractMessageBuffer\", { enumerable: true, get: function () { return messageBuffer_1.AbstractMessageBuffer; } });\nconst connection_1 = require(\"./connection\");\nObject.defineProperty(exports, \"ConnectionStrategy\", { enumerable: true, get: function () { return connection_1.ConnectionStrategy; } });\nObject.defineProperty(exports, \"ConnectionOptions\", { enumerable: true, get: function () { return connection_1.ConnectionOptions; } });\nObject.defineProperty(exports, \"NullLogger\", { enumerable: true, get: function () { return connection_1.NullLogger; } });\nObject.defineProperty(exports, \"createMessageConnection\", { enumerable: true, get: function () { return connection_1.createMessageConnection; } });\nObject.defineProperty(exports, \"ProgressToken\", { enumerable: true, get: function () { return connection_1.ProgressToken; } });\nObject.defineProperty(exports, \"ProgressType\", { enumerable: true, get: function () { return connection_1.ProgressType; } });\nObject.defineProperty(exports, \"Trace\", { enumerable: true, get: function () { return connection_1.Trace; } });\nObject.defineProperty(exports, \"TraceValues\", { enumerable: true, get: function () { return connection_1.TraceValues; } });\nObject.defineProperty(exports, \"TraceFormat\", { enumerable: true, get: function () { return connection_1.TraceFormat; } });\nObject.defineProperty(exports, \"SetTraceNotification\", { enumerable: true, get: function () { return connection_1.SetTraceNotification; } });\nObject.defineProperty(exports, \"LogTraceNotification\", { enumerable: true, get: function () { return connection_1.LogTraceNotification; } });\nObject.defineProperty(exports, \"ConnectionErrors\", { enumerable: true, get: function () { return connection_1.ConnectionErrors; } });\nObject.defineProperty(exports, \"ConnectionError\", { enumerable: true, get: function () { return connection_1.ConnectionError; } });\nObject.defineProperty(exports, \"CancellationReceiverStrategy\", { enumerable: true, get: function () { return connection_1.CancellationReceiverStrategy; } });\nObject.defineProperty(exports, \"CancellationSenderStrategy\", { enumerable: true, get: function () { return connection_1.CancellationSenderStrategy; } });\nObject.defineProperty(exports, \"CancellationStrategy\", { enumerable: true, get: function () { return connection_1.CancellationStrategy; } });\nObject.defineProperty(exports, \"MessageStrategy\", { enumerable: true, get: function () { return connection_1.MessageStrategy; } });\nconst ral_1 = require(\"./ral\");\nexports.RAL = ral_1.default;\n","\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst util_1 = require(\"util\");\nconst api_1 = require(\"../common/api\");\nclass MessageBuffer extends api_1.AbstractMessageBuffer {\n constructor(encoding = 'utf-8') {\n super(encoding);\n }\n emptyBuffer() {\n return MessageBuffer.emptyBuffer;\n }\n fromString(value, encoding) {\n return Buffer.from(value, encoding);\n }\n toString(value, encoding) {\n if (value instanceof Buffer) {\n return value.toString(encoding);\n }\n else {\n return new util_1.TextDecoder(encoding).decode(value);\n }\n }\n asNative(buffer, length) {\n if (length === undefined) {\n return buffer instanceof Buffer ? buffer : Buffer.from(buffer);\n }\n else {\n return buffer instanceof Buffer ? buffer.slice(0, length) : Buffer.from(buffer, 0, length);\n }\n }\n allocNative(length) {\n return Buffer.allocUnsafe(length);\n }\n}\nMessageBuffer.emptyBuffer = Buffer.allocUnsafe(0);\nclass ReadableStreamWrapper {\n constructor(stream) {\n this.stream = stream;\n }\n onClose(listener) {\n this.stream.on('close', listener);\n return api_1.Disposable.create(() => this.stream.off('close', listener));\n }\n onError(listener) {\n this.stream.on('error', listener);\n return api_1.Disposable.create(() => this.stream.off('error', listener));\n }\n onEnd(listener) {\n this.stream.on('end', listener);\n return api_1.Disposable.create(() => this.stream.off('end', listener));\n }\n onData(listener) {\n this.stream.on('data', listener);\n return api_1.Disposable.create(() => this.stream.off('data', listener));\n }\n}\nclass WritableStreamWrapper {\n constructor(stream) {\n this.stream = stream;\n }\n onClose(listener) {\n this.stream.on('close', listener);\n return api_1.Disposable.create(() => this.stream.off('close', listener));\n }\n onError(listener) {\n this.stream.on('error', listener);\n return api_1.Disposable.create(() => this.stream.off('error', listener));\n }\n onEnd(listener) {\n this.stream.on('end', listener);\n return api_1.Disposable.create(() => this.stream.off('end', listener));\n }\n write(data, encoding) {\n return new Promise((resolve, reject) => {\n const callback = (error) => {\n if (error === undefined || error === null) {\n resolve();\n }\n else {\n reject(error);\n }\n };\n if (typeof data === 'string') {\n this.stream.write(data, encoding, callback);\n }\n else {\n this.stream.write(data, callback);\n }\n });\n }\n end() {\n this.stream.end();\n }\n}\nconst _ril = Object.freeze({\n messageBuffer: Object.freeze({\n create: (encoding) => new MessageBuffer(encoding)\n }),\n applicationJson: Object.freeze({\n encoder: Object.freeze({\n name: 'application/json',\n encode: (msg, options) => {\n try {\n return Promise.resolve(Buffer.from(JSON.stringify(msg, undefined, 0), options.charset));\n }\n catch (err) {\n return Promise.reject(err);\n }\n }\n }),\n decoder: Object.freeze({\n name: 'application/json',\n decode: (buffer, options) => {\n try {\n if (buffer instanceof Buffer) {\n return Promise.resolve(JSON.parse(buffer.toString(options.charset)));\n }\n else {\n return Promise.resolve(JSON.parse(new util_1.TextDecoder(options.charset).decode(buffer)));\n }\n }\n catch (err) {\n return Promise.reject(err);\n }\n }\n })\n }),\n stream: Object.freeze({\n asReadableStream: (stream) => new ReadableStreamWrapper(stream),\n asWritableStream: (stream) => new WritableStreamWrapper(stream)\n }),\n console: console,\n timer: Object.freeze({\n setTimeout(callback, ms, ...args) {\n const handle = setTimeout(callback, ms, ...args);\n return { dispose: () => clearTimeout(handle) };\n },\n setImmediate(callback, ...args) {\n const handle = setImmediate(callback, ...args);\n return { dispose: () => clearImmediate(handle) };\n },\n setInterval(callback, ms, ...args) {\n const handle = setInterval(callback, ms, ...args);\n return { dispose: () => clearInterval(handle) };\n }\n })\n});\nfunction RIL() {\n return _ril;\n}\n(function (RIL) {\n function install() {\n api_1.RAL.install(_ril);\n }\n RIL.install = install;\n})(RIL || (RIL = {}));\nexports.default = RIL;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createMessageConnection = exports.createServerSocketTransport = exports.createClientSocketTransport = exports.createServerPipeTransport = exports.createClientPipeTransport = exports.generateRandomPipeName = exports.StreamMessageWriter = exports.StreamMessageReader = exports.SocketMessageWriter = exports.SocketMessageReader = exports.PortMessageWriter = exports.PortMessageReader = exports.IPCMessageWriter = exports.IPCMessageReader = void 0;\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ----------------------------------------------------------------------------------------- */\nconst ril_1 = require(\"./ril\");\n// Install the node runtime abstract.\nril_1.default.install();\nconst path = require(\"path\");\nconst os = require(\"os\");\nconst crypto_1 = require(\"crypto\");\nconst net_1 = require(\"net\");\nconst api_1 = require(\"../common/api\");\n__exportStar(require(\"../common/api\"), exports);\nclass IPCMessageReader extends api_1.AbstractMessageReader {\n constructor(process) {\n super();\n this.process = process;\n let eventEmitter = this.process;\n eventEmitter.on('error', (error) => this.fireError(error));\n eventEmitter.on('close', () => this.fireClose());\n }\n listen(callback) {\n this.process.on('message', callback);\n return api_1.Disposable.create(() => this.process.off('message', callback));\n }\n}\nexports.IPCMessageReader = IPCMessageReader;\nclass IPCMessageWriter extends api_1.AbstractMessageWriter {\n constructor(process) {\n super();\n this.process = process;\n this.errorCount = 0;\n const eventEmitter = this.process;\n eventEmitter.on('error', (error) => this.fireError(error));\n eventEmitter.on('close', () => this.fireClose);\n }\n write(msg) {\n try {\n if (typeof this.process.send === 'function') {\n this.process.send(msg, undefined, undefined, (error) => {\n if (error) {\n this.errorCount++;\n this.handleError(error, msg);\n }\n else {\n this.errorCount = 0;\n }\n });\n }\n return Promise.resolve();\n }\n catch (error) {\n this.handleError(error, msg);\n return Promise.reject(error);\n }\n }\n handleError(error, msg) {\n this.errorCount++;\n this.fireError(error, msg, this.errorCount);\n }\n end() {\n }\n}\nexports.IPCMessageWriter = IPCMessageWriter;\nclass PortMessageReader extends api_1.AbstractMessageReader {\n constructor(port) {\n super();\n this.onData = new api_1.Emitter;\n port.on('close', () => this.fireClose);\n port.on('error', (error) => this.fireError(error));\n port.on('message', (message) => {\n this.onData.fire(message);\n });\n }\n listen(callback) {\n return this.onData.event(callback);\n }\n}\nexports.PortMessageReader = PortMessageReader;\nclass PortMessageWriter extends api_1.AbstractMessageWriter {\n constructor(port) {\n super();\n this.port = port;\n this.errorCount = 0;\n port.on('close', () => this.fireClose());\n port.on('error', (error) => this.fireError(error));\n }\n write(msg) {\n try {\n this.port.postMessage(msg);\n return Promise.resolve();\n }\n catch (error) {\n this.handleError(error, msg);\n return Promise.reject(error);\n }\n }\n handleError(error, msg) {\n this.errorCount++;\n this.fireError(error, msg, this.errorCount);\n }\n end() {\n }\n}\nexports.PortMessageWriter = PortMessageWriter;\nclass SocketMessageReader extends api_1.ReadableStreamMessageReader {\n constructor(socket, encoding = 'utf-8') {\n super((0, ril_1.default)().stream.asReadableStream(socket), encoding);\n }\n}\nexports.SocketMessageReader = SocketMessageReader;\nclass SocketMessageWriter extends api_1.WriteableStreamMessageWriter {\n constructor(socket, options) {\n super((0, ril_1.default)().stream.asWritableStream(socket), options);\n this.socket = socket;\n }\n dispose() {\n super.dispose();\n this.socket.destroy();\n }\n}\nexports.SocketMessageWriter = SocketMessageWriter;\nclass StreamMessageReader extends api_1.ReadableStreamMessageReader {\n constructor(readable, encoding) {\n super((0, ril_1.default)().stream.asReadableStream(readable), encoding);\n }\n}\nexports.StreamMessageReader = StreamMessageReader;\nclass StreamMessageWriter extends api_1.WriteableStreamMessageWriter {\n constructor(writable, options) {\n super((0, ril_1.default)().stream.asWritableStream(writable), options);\n }\n}\nexports.StreamMessageWriter = StreamMessageWriter;\nconst XDG_RUNTIME_DIR = process.env['XDG_RUNTIME_DIR'];\nconst safeIpcPathLengths = new Map([\n ['linux', 107],\n ['darwin', 103]\n]);\nfunction generateRandomPipeName() {\n const randomSuffix = (0, crypto_1.randomBytes)(21).toString('hex');\n if (process.platform === 'win32') {\n return `\\\\\\\\.\\\\pipe\\\\vscode-jsonrpc-${randomSuffix}-sock`;\n }\n let result;\n if (XDG_RUNTIME_DIR) {\n result = path.join(XDG_RUNTIME_DIR, `vscode-ipc-${randomSuffix}.sock`);\n }\n else {\n result = path.join(os.tmpdir(), `vscode-${randomSuffix}.sock`);\n }\n const limit = safeIpcPathLengths.get(process.platform);\n if (limit !== undefined && result.length > limit) {\n (0, ril_1.default)().console.warn(`WARNING: IPC handle \"${result}\" is longer than ${limit} characters.`);\n }\n return result;\n}\nexports.generateRandomPipeName = generateRandomPipeName;\nfunction createClientPipeTransport(pipeName, encoding = 'utf-8') {\n let connectResolve;\n const connected = new Promise((resolve, _reject) => {\n connectResolve = resolve;\n });\n return new Promise((resolve, reject) => {\n let server = (0, net_1.createServer)((socket) => {\n server.close();\n connectResolve([\n new SocketMessageReader(socket, encoding),\n new SocketMessageWriter(socket, encoding)\n ]);\n });\n server.on('error', reject);\n server.listen(pipeName, () => {\n server.removeListener('error', reject);\n resolve({\n onConnected: () => { return connected; }\n });\n });\n });\n}\nexports.createClientPipeTransport = createClientPipeTransport;\nfunction createServerPipeTransport(pipeName, encoding = 'utf-8') {\n const socket = (0, net_1.createConnection)(pipeName);\n return [\n new SocketMessageReader(socket, encoding),\n new SocketMessageWriter(socket, encoding)\n ];\n}\nexports.createServerPipeTransport = createServerPipeTransport;\nfunction createClientSocketTransport(port, encoding = 'utf-8') {\n let connectResolve;\n const connected = new Promise((resolve, _reject) => {\n connectResolve = resolve;\n });\n return new Promise((resolve, reject) => {\n const server = (0, net_1.createServer)((socket) => {\n server.close();\n connectResolve([\n new SocketMessageReader(socket, encoding),\n new SocketMessageWriter(socket, encoding)\n ]);\n });\n server.on('error', reject);\n server.listen(port, '127.0.0.1', () => {\n server.removeListener('error', reject);\n resolve({\n onConnected: () => { return connected; }\n });\n });\n });\n}\nexports.createClientSocketTransport = createClientSocketTransport;\nfunction createServerSocketTransport(port, encoding = 'utf-8') {\n const socket = (0, net_1.createConnection)(port, '127.0.0.1');\n return [\n new SocketMessageReader(socket, encoding),\n new SocketMessageWriter(socket, encoding)\n ];\n}\nexports.createServerSocketTransport = createServerSocketTransport;\nfunction isReadableStream(value) {\n const candidate = value;\n return candidate.read !== undefined && candidate.addListener !== undefined;\n}\nfunction isWritableStream(value) {\n const candidate = value;\n return candidate.write !== undefined && candidate.addListener !== undefined;\n}\nfunction createMessageConnection(input, output, logger, options) {\n if (!logger) {\n logger = api_1.NullLogger;\n }\n const reader = isReadableStream(input) ? new StreamMessageReader(input) : input;\n const writer = isWritableStream(output) ? new StreamMessageWriter(output) : output;\n if (api_1.ConnectionStrategy.is(options)) {\n options = { connectionStrategy: options };\n }\n return (0, api_1.createMessageConnection)(reader, writer, logger, options);\n}\nexports.createMessageConnection = createMessageConnection;\n","/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ----------------------------------------------------------------------------------------- */\n'use strict';\n\nmodule.exports = require('./lib/node/main');","import type { Arc56Contract } from '@algorandfoundation/algokit-utils/abi'\nimport { spawn } from 'cross-spawn'\nimport * as rpc from 'vscode-jsonrpc/node'\nimport { AwstSerializer, SnakeCaseSerializer } from '../awst/json-serialize-awst'\nimport type { RootNode } from '../awst/nodes'\nimport type { SourceLocation } from '../awst/source-location'\nimport { InternalError } from '../errors'\nimport { logger } from '../logger'\nimport type { PuyaOptions } from '../options'\nimport type { AbsolutePath } from '../util/absolute-path'\n\ninterface AnalyseParams {\n awst: RootNode[]\n base_path: string\n}\ninterface CompileParams {\n awst: RootNode[]\n options: PuyaOptions\n base_path: string\n log_level: string\n source_annotations: Record<string, string[]>\n}\ninterface Log {\n level: string\n message: string\n location?: SourceLocation\n}\ninterface LogResult {\n logs: Log[]\n}\n\ninterface CompileResult extends LogResult {\n arc56: Record<string, Arc56Contract>\n}\n\nexport type PuyaServiceOptions = {\n puyaPath: string\n}\n\nexport class PuyaService {\n private readonly connection: rpc.MessageConnection\n\n public constructor(options: PuyaServiceOptions) {\n this.connection = getPuyaServiceConnection(options.puyaPath)\n }\n\n async analyse(programDirectory: AbsolutePath, awst: RootNode[]): Promise<LogResult> {\n logger.debug(undefined, `puya serve: analyse: ${programDirectory}`)\n const type = new rpc.RequestType<AnalyseParams, LogResult, void>('analyse')\n return await this.connection.sendRequest(type, { awst, base_path: programDirectory.toString() })\n }\n async compile(params: CompileParams): Promise<CompileResult> {\n logger.debug(undefined, `puya serve: compile ${params.base_path}`)\n const type = new rpc.RequestType<CompileParams, CompileResult, void>('compile')\n return await this.connection.sendRequest(type, params)\n }\n async shutdown(): Promise<void> {\n const type = new rpc.NotificationType('shutdown')\n await this.connection.sendNotification(type)\n this.connection.end()\n }\n}\n\nfunction getPuyaServiceConnection(path: string) {\n logger.debug(undefined, `puya serve: using ${path}`)\n const childProcess = spawn(path, ['serve'], {\n stdio: ['pipe', 'pipe', 'pipe'],\n env: { ...process.env, NO_COLOR: '1' },\n })\n logger.debug(undefined, `puya serve: running`)\n const connection = rpc.createMessageConnection(\n new rpc.StreamMessageReader(childProcess.stdout),\n new rpc.StreamMessageWriter(childProcess.stdin, {\n contentTypeEncoder: {\n name: 'awst',\n encode: encodeMessage,\n },\n }),\n )\n let stderr = ''\n childProcess.stderr.on('data', (chunk) => {\n stderr += typeof chunk === 'string' ? chunk : `${chunk}`\n })\n childProcess.once('error', (e) => {\n throw new InternalError(`puya server: exited prematurely ${e} - stderr: ${stderr}`)\n })\n connection.onError(([error]) => {\n throw new InternalError('puya server: connection error', { cause: error })\n })\n\n connection.listen()\n logger.debug(undefined, `puya serve: connection listening`)\n return connection\n}\n\nfunction encodeMessage(msg: rpc.Message, options: rpc.ContentTypeEncoderOptions): Promise<Uint8Array> {\n const params = 'params' in msg ? msg.params : undefined\n let serializer = undefined\n if (typeof params === 'object' && params !== null) {\n const programDirectory = 'base_path' in params ? params.base_path : undefined\n if (typeof programDirectory === 'string') {\n serializer = new AwstSerializer()\n }\n }\n if (serializer === undefined) {\n serializer = new SnakeCaseSerializer()\n }\n const json = serializer.serialize(msg)\n const encoder = new TextEncoder()\n const uint8Array = encoder.encode(json)\n return Promise.resolve(uint8Array)\n}\n","export function sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms))\n}\n\n/**\n * Since node is single threaded (unless using workers) a long-running synchronous operation may hold up\n * processing of other events (such as changed files). Awaiting this function allows the currently executing\n * code to relinquish control of the thread whilst adding a continuation of this code to the event queue.\n */\nexport function relinquishThread(): Promise<void> {\n return sleep(1)\n}\n","import { minimatch } from 'minimatch'\nimport pathe from 'pathe'\n\nexport function determineOutDir(inputPath: string, sourceFile: string, outDir: string) {\n const outDirBase = findMinimalMatch(normalizeTrim(inputPath), sourceFile)\n\n const subPath = pathe.dirname(sourceFile.slice(outDirBase.length))\n\n if (pathe.isAbsolute(outDir)) {\n return normalizeTrim(pathe.join(outDir, subPath))\n }\n return normalizeTrim(pathe.join(outDirBase, outDir, subPath))\n}\n\nfunction trimCurrentDir(path: string) {\n return path.startsWith('./') ? path.slice(2) : path\n}\n\nfunction normalizeTrim(path: string): string {\n return pathe.normalize(path).replace(/\\/$/, '')\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 pathe.dirname(matchedPath)\n }\n return matchedPath\n }\n return findMinimalMatch(inputPath, pathe.dirname(testPath))\n}\n","import { globSync } from 'glob'\nimport pathe, { normalize } from 'pathe'\n\nimport { PuyaError } from '../errors'\nimport { logger } from '../logger'\nimport type { AlgoFile } from '../options'\nimport { AbsolutePath } from '../util/absolute-path'\nimport { determineOutDir } from './determine-out-dir'\n\nexport const processInputPaths = ({\n paths,\n ignoreUnmatchedPaths,\n workingDirectory = AbsolutePath.resolve({ path: process.cwd() }),\n outDir = 'out',\n}: {\n ignoreUnmatchedPaths?: boolean\n paths: string[]\n outDir?: string\n workingDirectory?: AbsolutePath\n}): AlgoFile[] => {\n const filePaths: AlgoFile[] = []\n\n for (const p of paths.map((p) => pathe.normalize(p))) {\n const globPath = p.endsWith('.algo.ts') ? p : pathe.join(p, '**/*.algo.ts')\n const matches = globSync(globPath)\n if (matches.length) {\n for (const match of matches) {\n filePaths.push({\n sourceFile: AbsolutePath.resolve({ path: match, workingDirectory }),\n outDir: AbsolutePath.resolve({ path: determineOutDir(p, normalize(match), outDir), workingDirectory }),\n })\n }\n } else {\n if (ignoreUnmatchedPaths) continue\n logger.warn(undefined, `Path '${p}' did not match any .algo.ts files`)\n }\n }\n\n if (filePaths.length === 0 && !ignoreUnmatchedPaths) {\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: algoFile.sourceFile.basename('.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'\nimport type { AbsolutePath } from './util/absolute-path'\n\nexport interface AlgoFile {\n sourceFile: AbsolutePath\n outDir: AbsolutePath\n}\n\nexport type FileExistsMethod = (fileName: string) => boolean\nexport type ReadFileMethod = (fileName: string) => string | undefined\nexport type SourceFileProvider = { fileExists: FileExistsMethod; readFile: ReadFileMethod }\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 outputClient: 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 treatWarningsAsErrors: boolean\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 public readonly validateAbiArgs: boolean\n public readonly validateAbiReturn: boolean\n\n public readonly sourceFileProvider?: (defaultProvider: SourceFileProvider) => SourceFileProvider\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 || options.outputClient) ?? false\n this.outputClient = options.outputClient ?? 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.treatWarningsAsErrors = options.treatWarningsAsErrors ?? defaultPuyaOptions.treatWarningsAsErrors\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 this.sourceFileProvider = options.sourceFileProvider\n this.validateAbiArgs = options.validateAbiArgs ?? defaultPuyaOptions.validateAbiArgs\n this.validateAbiReturn = options.validateAbiReturn ?? defaultPuyaOptions.validateAbiReturn\n }\n\n buildPuyaOptions(compilationSet: CompilationSetMapping) {\n return new PuyaOptions({\n ...this,\n compilationSet,\n resourceEncoding: 'value',\n })\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 outputClient: false,\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 treatWarningsAsErrors: false,\n targetAvmVersion: 11,\n cliTemplateDefinitions: {},\n templateVarsPrefix: 'TMPL_',\n localsCoalescingStrategy: LocalsCoalescingStrategy.root_operand,\n validateAbiArgs: true,\n validateAbiReturn: true,\n}\nexport type PuyaPassThroughOptions = Omit<PuyaOptions, 'compilationSet'>\n\nexport class PuyaOptions {\n outputTeal: boolean\n outputArc32: boolean\n outputArc56: boolean\n outputClient: 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 treatWarningsAsErrors: boolean\n targetAvmVersion: number\n cliTemplateDefinitions: Record<string, Uint8Array | bigint>\n templateVarsPrefix: string\n localsCoalescingStrategy: LocalsCoalescingStrategy\n compilationSet: CompilationSetMapping\n validateAbiArgs: boolean\n validateAbiReturn: boolean\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.outputClient = options.outputClient\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.treatWarningsAsErrors = options.treatWarningsAsErrors\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 this.validateAbiArgs = options.validateAbiArgs\n this.validateAbiReturn = options.validateAbiReturn\n }\n}\n"],"names":["awst.VarExpression","awst.SingleEvaluation","awst.AppStateExpression","awst.AppAccountStateExpression","awst.StateGet","awst.StateGetEx","awst.BoxValueExpression","awst.IndexExpression","awst.TupleItemExpression","awst.FieldExpression","awst.TupleExpression","awst.ReinterpretCast","isObjectType","awst.BytesEncoding","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","Buffer","nodes.MethodSignatureString","nodes.AssignmentExpression","pathe","awst.ContractMethod","awst.Subroutine","require$$0","require$$1","require$$2","require$$3","exports","require$$4","require$$5","require$$6","require$$7","require$$8","require$$9","require$$10","this","rpc.RequestType","rpc.NotificationType","rpc.createMessageConnection","rpc.StreamMessageReader","rpc.StreamMessageWriter"],"mappings":"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","x_google_ignoreList":[160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176]}