@algorandfoundation/algorand-typescript 0.0.1-alpha.2 → 0.0.1-alpha.3

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.
@@ -14,14 +14,12 @@ export declare const checkUint64: (v: bigint) => bigint;
14
14
  export declare const checkBigUint: (v: bigint) => bigint;
15
15
  export declare const checkBytes: (v: Uint8Array) => Uint8Array;
16
16
  export declare abstract class AlgoTsPrimitiveCls {
17
- private readonly _type;
18
- constructor(t: string);
19
17
  static [Symbol.hasInstance](x: unknown): x is AlgoTsPrimitiveCls;
20
- abstract valueOf(): bigint | string | boolean;
18
+ abstract valueOf(): bigint | string;
21
19
  abstract toBytes(): BytesCls;
22
20
  }
23
21
  export declare class Uint64Cls extends AlgoTsPrimitiveCls {
24
- readonly value: bigint;
22
+ #private;
25
23
  constructor(value: bigint | number | string);
26
24
  static [Symbol.hasInstance](x: unknown): x is Uint64Cls;
27
25
  static fromCompat(v: StubUint64Compat): Uint64Cls;
@@ -33,7 +31,7 @@ export declare class Uint64Cls extends AlgoTsPrimitiveCls {
33
31
  asNumber(): number;
34
32
  }
35
33
  export declare class BigUintCls extends AlgoTsPrimitiveCls {
36
- readonly value: bigint;
34
+ #private;
37
35
  constructor(value: bigint);
38
36
  valueOf(): bigint;
39
37
  toBytes(): BytesCls;
@@ -246,24 +246,44 @@ const checkBytes = (v) => {
246
246
  throw new AvmError(`Bytes length ${v.length} exceeds maximum length ${MAX_BYTES_SIZE}`);
247
247
  return v;
248
248
  };
249
- class AlgoTsPrimitiveCls {
250
- _type = AlgoTsPrimitiveCls.name;
251
- constructor(t) {
252
- this._type = `${AlgoTsPrimitiveCls.name}.${t}`;
249
+ /**
250
+ * Verifies that an object is an instance of a type based on its name rather than reference equality.
251
+ *
252
+ * This is useful in scenarios where a module loader has loaded a module twice and hence two instances of a
253
+ * type do not have reference equality on their constructors.
254
+ * @param subject The object to check
255
+ * @param typeCtor The ctor of the type
256
+ */
257
+ function isInstanceOfTypeByName(subject, typeCtor) {
258
+ if (subject === null || typeof subject !== 'object')
259
+ return false;
260
+ let ctor = subject.constructor;
261
+ while (typeof ctor === 'function') {
262
+ if (ctor.name === typeCtor.name)
263
+ return true;
264
+ ctor = Object.getPrototypeOf(ctor);
253
265
  }
266
+ return false;
267
+ }
268
+ class AlgoTsPrimitiveCls {
254
269
  static [Symbol.hasInstance](x) {
255
- return x instanceof Object && '_type' in x && x['_type'].startsWith(AlgoTsPrimitiveCls.name);
270
+ return isInstanceOfTypeByName(x, AlgoTsPrimitiveCls);
256
271
  }
257
272
  }
258
273
  class Uint64Cls extends AlgoTsPrimitiveCls {
259
- value;
274
+ #value;
260
275
  constructor(value) {
261
- super(Uint64Cls.name);
262
- this.value = BigInt(value);
263
- checkUint64(this.value);
276
+ super();
277
+ this.#value = BigInt(value);
278
+ checkUint64(this.#value);
279
+ Object.defineProperty(this, 'uint64', {
280
+ value: this.#value.toString(),
281
+ writable: false,
282
+ enumerable: true,
283
+ });
264
284
  }
265
285
  static [Symbol.hasInstance](x) {
266
- return x instanceof Object && '_type' in x && x['_type'].endsWith(Uint64Cls.name);
286
+ return isInstanceOfTypeByName(x, Uint64Cls);
267
287
  }
268
288
  static fromCompat(v) {
269
289
  if (typeof v == 'boolean')
@@ -280,50 +300,55 @@ class Uint64Cls extends AlgoTsPrimitiveCls {
280
300
  return Uint64Cls.fromCompat(v).asNumber();
281
301
  }
282
302
  valueOf() {
283
- return this.value;
303
+ return this.#value;
284
304
  }
285
305
  toBytes(isDynamic = false) {
286
- return new BytesCls(bigIntToUint8Array(this.value, isDynamic ? 'dynamic' : 8));
306
+ return new BytesCls(bigIntToUint8Array(this.#value, isDynamic ? 'dynamic' : 8));
287
307
  }
288
308
  asAlgoTs() {
289
309
  return this;
290
310
  }
291
311
  asBigInt() {
292
- return this.value;
312
+ return this.#value;
293
313
  }
294
314
  asNumber() {
295
- if (this.value > Number.MAX_SAFE_INTEGER) {
315
+ if (this.#value > Number.MAX_SAFE_INTEGER) {
296
316
  throw new AvmError('value cannot be safely converted to a number');
297
317
  }
298
- return Number(this.value);
318
+ return Number(this.#value);
299
319
  }
300
320
  }
301
321
  class BigUintCls extends AlgoTsPrimitiveCls {
302
- value;
322
+ #value;
303
323
  constructor(value) {
304
- super(BigUintCls.name);
305
- this.value = value;
324
+ super();
325
+ this.#value = value;
326
+ Object.defineProperty(this, 'biguint', {
327
+ value: value.toString(),
328
+ writable: false,
329
+ enumerable: true,
330
+ });
306
331
  }
307
332
  valueOf() {
308
- return this.value;
333
+ return this.#value;
309
334
  }
310
335
  toBytes() {
311
- return new BytesCls(bigIntToUint8Array(this.value));
336
+ return new BytesCls(bigIntToUint8Array(this.#value));
312
337
  }
313
338
  asAlgoTs() {
314
339
  return this;
315
340
  }
316
341
  asBigInt() {
317
- return this.value;
342
+ return this.#value;
318
343
  }
319
344
  asNumber() {
320
- if (this.value > Number.MAX_SAFE_INTEGER) {
345
+ if (this.#value > Number.MAX_SAFE_INTEGER) {
321
346
  throw new AvmError('value cannot be safely converted to a number');
322
347
  }
323
- return Number(this.value);
348
+ return Number(this.#value);
324
349
  }
325
350
  static [Symbol.hasInstance](x) {
326
- return x instanceof Object && '_type' in x && x['_type'].endsWith(BigUintCls.name);
351
+ return isInstanceOfTypeByName(x, BigUintCls);
327
352
  }
328
353
  static fromCompat(v) {
329
354
  if (typeof v == 'boolean')
@@ -333,7 +358,7 @@ class BigUintCls extends AlgoTsPrimitiveCls {
333
358
  if (typeof v == 'bigint')
334
359
  return new BigUintCls(v);
335
360
  if (v instanceof Uint64Cls)
336
- return new BigUintCls(v.value);
361
+ return new BigUintCls(v.valueOf());
337
362
  if (v instanceof BytesCls)
338
363
  return v.toBigUint();
339
364
  if (v instanceof BigUintCls)
@@ -344,9 +369,15 @@ class BigUintCls extends AlgoTsPrimitiveCls {
344
369
  class BytesCls extends AlgoTsPrimitiveCls {
345
370
  #v;
346
371
  constructor(v) {
347
- super(BytesCls.name);
372
+ super();
348
373
  this.#v = v;
349
374
  checkBytes(this.#v);
375
+ // Add an enumerable property for debugging code to show
376
+ Object.defineProperty(this, 'bytes', {
377
+ value: uint8ArrayToHex(this.#v),
378
+ writable: false,
379
+ enumerable: true,
380
+ });
350
381
  }
351
382
  get length() {
352
383
  return new Uint64Cls(this.#v.length);
@@ -408,10 +439,10 @@ class BytesCls extends AlgoTsPrimitiveCls {
408
439
  return new BytesCls(result);
409
440
  }
410
441
  valueOf() {
411
- return uint8ArrayToUtf8(this.#v);
442
+ return uint8ArrayToHex(this.#v);
412
443
  }
413
444
  static [Symbol.hasInstance](x) {
414
- return x instanceof Object && '_type' in x && x['_type'].endsWith(BytesCls.name);
445
+ return isInstanceOfTypeByName(x, BytesCls);
415
446
  }
416
447
  static fromCompat(v) {
417
448
  if (v === undefined)
@@ -451,7 +482,7 @@ class BytesCls extends AlgoTsPrimitiveCls {
451
482
  return new BigUintCls(uint8ArrayToBigInt(this.#v));
452
483
  }
453
484
  toString() {
454
- return this.valueOf();
485
+ return uint8ArrayToUtf8(this.#v);
455
486
  }
456
487
  asAlgoTs() {
457
488
  return this;
@@ -738,4 +769,4 @@ var index = /*#__PURE__*/Object.freeze({
738
769
  });
739
770
 
740
771
  export { AssertError as A, BytesCls as B, Contract as C, DynamicArray as D, OpUpFeeSource as O, Str as S, Tuple as T, Uint64 as U, errors as a, err as b, ctxMgr as c, assert as d, encodingUtil as e, assertMatch as f, ensureBudget as g, abimethod as h, index as i, BaseContract as j, BigUint as k, log as l, match as m, Bytes as n, OnCompleteAction as o, primitives as p, baremethod as q, UintN as r, UFixedNxM as s, Byte as t, urange as u, Bool as v, StaticArray as w, Address as x };
741
- //# sourceMappingURL=index-7MfWJL4Q.js.map
772
+ //# sourceMappingURL=index-CAZZKmeS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-CAZZKmeS.js","sources":["../src/impl/base-32.ts","../src/impl/errors.ts","../src/impl/encoding-util.ts","../src/impl/name-of-type.ts","../src/impl/primitives.ts","../src/primitives.ts","../src/execution-context.ts","../src/util.ts","../src/base-contract.ts","../src/arc4/encoded-types.ts","../src/arc4/index.ts"],"sourcesContent":["const BASE32_ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'.split('')\n\nconst CHAR_TO_NUM = BASE32_ALPHABET.reduce((acc, cur, index) => ((acc[cur] = index), acc), {} as Record<string, number>)\n\nexport const base32ToUint8Array = (value: string): Uint8Array => {\n let allChars = value\n .split('')\n .filter((c) => c !== '=')\n .map((c) => {\n const cUpper = c.toUpperCase()\n if (cUpper in CHAR_TO_NUM) return CHAR_TO_NUM[cUpper]\n throw new Error(`Invalid base32 char ${c}`)\n })\n const bytes = new Array<number>()\n while (allChars.length) {\n const [a, b, c, d, e, f, g, h, ...rest] = allChars\n if (a === undefined || b === undefined) break\n bytes.push(((a << 3) | (b >>> 2)) & 255)\n if (c === undefined || d === undefined) break\n bytes.push(((b << 6) | (c << 1) | (d >>> 4)) & 255)\n if (e === undefined) break\n bytes.push(((d << 4) | (e >>> 1)) & 255)\n if (f === undefined || g === undefined) break\n bytes.push(((e << 7) | (f << 2) | (g >>> 3)) & 255)\n if (h === undefined) break\n bytes.push(((g << 5) | h) & 255)\n allChars = rest\n }\n return new Uint8Array(bytes)\n}\n\nexport const uint8ArrayToBase32 = (value: Uint8Array): string => {\n let allBytes = Array.from(value)\n let base32str = ''\n while (allBytes.length) {\n const [a, b, c, d, e, ...rest] = allBytes ?? [0, 0, 0, 0, 0]\n\n if (allBytes.length < 1) break\n base32str += BASE32_ALPHABET[a >>> 3]\n base32str += BASE32_ALPHABET[((a << 2) | ((b || 0) >>> 6)) & 32]\n if (allBytes.length < 2) break\n base32str += BASE32_ALPHABET[(b >>> 1) & 31]\n base32str += BASE32_ALPHABET[((b << 4) | (c >>> 4)) & 31]\n if (allBytes.length < 3) break\n base32str += BASE32_ALPHABET[((c << 1) | (d >>> 7)) & 31]\n if (allBytes.length < 4) break\n base32str += BASE32_ALPHABET[(d >>> 2) & 31]\n base32str += BASE32_ALPHABET[((d << 3) | (e >>> 5)) & 31]\n if (allBytes.length < 5) break\n base32str += BASE32_ALPHABET[e & 31]\n allBytes = rest\n }\n return base32str\n}\n","/**\n * Raised when an `err` op is encountered, or when the testing VM is asked to do something that would cause\n * the AVM to fail.\n */\nexport class AvmError extends Error {\n constructor(message: string) {\n super(message)\n }\n}\nexport function avmError(message: string): never {\n throw new AvmError(message)\n}\n/**\n * Raised when an assertion fails\n */\nexport class AssertError extends AvmError {\n constructor(message: string) {\n super(message)\n }\n}\n\n/**\n * Raised when testing code errors\n */\nexport class InternalError extends Error {\n constructor(message: string, options?: ErrorOptions) {\n super(message, options)\n }\n}\n\nexport function internalError(message: string): never {\n throw new InternalError(message)\n}\n\n/**\n * Raised when unsupported user code is encountered\n */\nexport class CodeError extends Error {\n constructor(message: string, options?: ErrorOptions) {\n super(message, options)\n }\n}\n\nexport function codeError(message: string): never {\n throw new CodeError(message)\n}\n","import { TextDecoder } from 'node:util'\nimport { AvmError } from './errors'\n\nexport const uint8ArrayToBigInt = (v: Uint8Array): bigint => {\n // Assume big-endian\n return Array.from(v)\n .toReversed()\n .map((byte_value, i): bigint => BigInt(byte_value) << BigInt(i * 8))\n .reduce((a, b) => a + b, 0n)\n}\n\nexport const bigIntToUint8Array = (val: bigint, fixedSize: number | 'dynamic' = 'dynamic'): Uint8Array => {\n if (val === 0n && fixedSize === 'dynamic') {\n return new Uint8Array(0)\n }\n const maxBytes = fixedSize === 'dynamic' ? undefined : fixedSize\n\n let hex = val.toString(16)\n\n // Pad the hex with zeros so it matches the size in bytes\n if (fixedSize !== 'dynamic' && hex.length !== fixedSize * 2) {\n hex = hex.padStart(fixedSize * 2, '0')\n } else if (hex.length % 2 == 1) {\n // Pad to 'whole' byte\n hex = `0${hex}`\n }\n if (maxBytes && hex.length > maxBytes * 2) {\n throw new AvmError(`Cannot encode ${val} as ${maxBytes} bytes as it would overflow`)\n }\n const byteArray = new Uint8Array(hex.length / 2)\n for (let i = 0, j = 0; i < hex.length / 2; i++, j += 2) {\n byteArray[i] = parseInt(hex.slice(j, j + 2), 16)\n }\n return byteArray\n}\n\nexport const utf8ToUint8Array = (value: string): Uint8Array => {\n const encoder = new TextEncoder()\n return encoder.encode(value)\n}\n\nexport const uint8ArrayToUtf8 = (value: Uint8Array): string => {\n const decoder = new TextDecoder()\n return decoder.decode(value)\n}\n\nexport const uint8ArrayToHex = (value: Uint8Array): string => Buffer.from(value).toString('hex')\n\nexport const uint8ArrayToBase64 = (value: Uint8Array): string => Buffer.from(value).toString('base64')\n\nexport const uint8ArrayToBase64Url = (value: Uint8Array): string => Buffer.from(value).toString('base64url')\n\nexport { uint8ArrayToBase32 } from './base-32'\n","export const nameOfType = (x: unknown) => {\n if (typeof x === 'object') {\n if (x === null) return 'Null'\n if (x === undefined) return 'undefined'\n if ('constructor' in x) {\n return x.constructor.name\n }\n }\n return typeof x\n}\n","import type { biguint, BigUintCompat, bytes, BytesCompat, uint64, Uint64Compat } from '../index'\nimport { DeliberateAny } from '../typescript-helpers'\nimport { base32ToUint8Array } from './base-32'\nimport { bigIntToUint8Array, uint8ArrayToBigInt, uint8ArrayToHex, uint8ArrayToUtf8, utf8ToUint8Array } from './encoding-util'\nimport { avmError, AvmError, internalError } from './errors'\nimport { nameOfType } from './name-of-type'\n\nconst MAX_UINT8 = 2 ** 8 - 1\nconst MAX_BYTES_SIZE = 4096\n\nexport type StubBigUintCompat = BigUintCompat | BigUintCls | Uint64Cls\nexport type StubBytesCompat = BytesCompat | BytesCls\nexport type StubUint64Compat = Uint64Compat | Uint64Cls\n\nexport function toExternalValue(val: uint64): bigint\nexport function toExternalValue(val: biguint): bigint\nexport function toExternalValue(val: bytes): Uint8Array\nexport function toExternalValue(val: string): string\nexport function toExternalValue(val: uint64 | biguint | bytes | string) {\n const instance = val as unknown\n if (instance instanceof BytesCls) return instance.asUint8Array()\n if (instance instanceof Uint64Cls) return instance.asBigInt()\n if (instance instanceof BigUintCls) return instance.asBigInt()\n if (typeof val === 'string') return val\n}\nexport const toBytes = (val: unknown): bytes => {\n if (val instanceof AlgoTsPrimitiveCls) return val.toBytes().asAlgoTs()\n\n switch (typeof val) {\n case 'string':\n return BytesCls.fromCompat(val).asAlgoTs()\n case 'bigint':\n return BigUintCls.fromCompat(val).toBytes().asAlgoTs()\n case 'number':\n return Uint64Cls.fromCompat(val).toBytes().asAlgoTs()\n default:\n internalError(`Unsupported arg type ${nameOfType(val)}`)\n }\n}\n\nexport const isBytes = (v: unknown): v is StubBytesCompat => {\n if (typeof v === 'string') return true\n if (v instanceof BytesCls) return true\n return v instanceof Uint8Array\n}\n\nexport const isUint64 = (v: unknown): v is StubUint64Compat => {\n if (typeof v == 'boolean') return true\n if (typeof v == 'number') return true\n if (typeof v == 'bigint') return true\n return v instanceof Uint64Cls\n}\n\nexport const isBigUint = (v: unknown): v is biguint => {\n return v instanceof BigUintCls\n}\n\nexport const checkUint64 = (v: bigint): bigint => {\n const u64 = BigInt.asUintN(64, v)\n if (u64 !== v) throw new AvmError(`Uint64 over or underflow`)\n return u64\n}\nexport const checkBigUint = (v: bigint): bigint => {\n const uBig = BigInt.asUintN(64 * 8, v)\n if (uBig !== v) throw new AvmError(`BigUint over or underflow`)\n return uBig\n}\n\nexport const checkBytes = (v: Uint8Array): Uint8Array => {\n if (v.length > MAX_BYTES_SIZE) throw new AvmError(`Bytes length ${v.length} exceeds maximum length ${MAX_BYTES_SIZE}`)\n return v\n}\n\n/**\n * Verifies that an object is an instance of a type based on its name rather than reference equality.\n *\n * This is useful in scenarios where a module loader has loaded a module twice and hence two instances of a\n * type do not have reference equality on their constructors.\n * @param subject The object to check\n * @param typeCtor The ctor of the type\n */\nfunction isInstanceOfTypeByName(subject: unknown, typeCtor: { name: string }): boolean {\n if (subject === null || typeof subject !== 'object') return false\n\n let ctor = subject.constructor\n while (typeof ctor === 'function') {\n if (ctor.name === typeCtor.name) return true\n ctor = Object.getPrototypeOf(ctor)\n }\n return false\n}\n\nexport abstract class AlgoTsPrimitiveCls {\n static [Symbol.hasInstance](x: unknown): x is AlgoTsPrimitiveCls {\n return isInstanceOfTypeByName(x, AlgoTsPrimitiveCls)\n }\n\n abstract valueOf(): bigint | string\n abstract toBytes(): BytesCls\n}\n\nexport class Uint64Cls extends AlgoTsPrimitiveCls {\n readonly #value: bigint\n constructor(value: bigint | number | string) {\n super()\n this.#value = BigInt(value)\n checkUint64(this.#value)\n\n Object.defineProperty(this, 'uint64', {\n value: this.#value.toString(),\n writable: false,\n enumerable: true,\n })\n }\n static [Symbol.hasInstance](x: unknown): x is Uint64Cls {\n return isInstanceOfTypeByName(x, Uint64Cls)\n }\n static fromCompat(v: StubUint64Compat): Uint64Cls {\n if (typeof v == 'boolean') return new Uint64Cls(v ? 1n : 0n)\n if (typeof v == 'number') return new Uint64Cls(BigInt(v))\n if (typeof v == 'bigint') return new Uint64Cls(v)\n if (v instanceof Uint64Cls) return v\n internalError(`Cannot convert ${v} to uint64`)\n }\n\n static getNumber(v: StubUint64Compat): number {\n return Uint64Cls.fromCompat(v).asNumber()\n }\n\n valueOf(): bigint {\n return this.#value\n }\n\n toBytes(isDynamic: boolean = false): BytesCls {\n return new BytesCls(bigIntToUint8Array(this.#value, isDynamic ? 'dynamic' : 8))\n }\n\n asAlgoTs(): uint64 {\n return this as unknown as uint64\n }\n\n asBigInt(): bigint {\n return this.#value\n }\n asNumber(): number {\n if (this.#value > Number.MAX_SAFE_INTEGER) {\n throw new AvmError('value cannot be safely converted to a number')\n }\n return Number(this.#value)\n }\n}\n\nexport class BigUintCls extends AlgoTsPrimitiveCls {\n readonly #value: bigint\n constructor(value: bigint) {\n super()\n this.#value = value\n Object.defineProperty(this, 'biguint', {\n value: value.toString(),\n writable: false,\n enumerable: true,\n })\n }\n valueOf(): bigint {\n return this.#value\n }\n\n toBytes(): BytesCls {\n return new BytesCls(bigIntToUint8Array(this.#value))\n }\n\n asAlgoTs(): biguint {\n return this as unknown as biguint\n }\n\n asBigInt(): bigint {\n return this.#value\n }\n asNumber(): number {\n if (this.#value > Number.MAX_SAFE_INTEGER) {\n throw new AvmError('value cannot be safely converted to a number')\n }\n return Number(this.#value)\n }\n static [Symbol.hasInstance](x: unknown): x is BigUintCls {\n return isInstanceOfTypeByName(x, BigUintCls)\n }\n static fromCompat(v: StubBigUintCompat): BigUintCls {\n if (typeof v == 'boolean') return new BigUintCls(v ? 1n : 0n)\n if (typeof v == 'number') return new BigUintCls(BigInt(v))\n if (typeof v == 'bigint') return new BigUintCls(v)\n if (v instanceof Uint64Cls) return new BigUintCls(v.valueOf())\n if (v instanceof BytesCls) return v.toBigUint()\n if (v instanceof BigUintCls) return v\n internalError(`Cannot convert ${nameOfType(v)} to BigUint`)\n }\n}\n\nexport class BytesCls extends AlgoTsPrimitiveCls {\n readonly #v: Uint8Array\n constructor(v: Uint8Array) {\n super()\n this.#v = v\n checkBytes(this.#v)\n // Add an enumerable property for debugging code to show\n Object.defineProperty(this, 'bytes', {\n value: uint8ArrayToHex(this.#v),\n writable: false,\n enumerable: true,\n })\n }\n\n get length() {\n return new Uint64Cls(this.#v.length)\n }\n\n toBytes(): BytesCls {\n return this\n }\n\n at(i: StubUint64Compat): BytesCls {\n const start = Uint64Cls.fromCompat(i).asNumber()\n return new BytesCls(this.#v.slice(start, start + 1))\n }\n\n slice(start: StubUint64Compat, end: StubUint64Compat): BytesCls {\n const startNumber = start instanceof Uint64Cls ? start.asNumber() : start\n const endNumber = end instanceof Uint64Cls ? end.asNumber() : end\n const sliced = arrayUtil.arraySlice(this.#v, startNumber, endNumber)\n return new BytesCls(sliced)\n }\n\n concat(other: StubBytesCompat): BytesCls {\n const otherArray = BytesCls.fromCompat(other).asUint8Array()\n const mergedArray = new Uint8Array(this.#v.length + otherArray.length)\n mergedArray.set(this.#v)\n mergedArray.set(otherArray, this.#v.length)\n return new BytesCls(mergedArray)\n }\n\n bitwiseAnd(other: StubBytesCompat): BytesCls {\n return this.bitwiseOp(other, (a, b) => a & b)\n }\n\n bitwiseOr(other: StubBytesCompat): BytesCls {\n return this.bitwiseOp(other, (a, b) => a | b)\n }\n\n bitwiseXor(other: StubBytesCompat): BytesCls {\n return this.bitwiseOp(other, (a, b) => a ^ b)\n }\n\n bitwiseInvert(): BytesCls {\n const result = new Uint8Array(this.#v.length)\n this.#v.forEach((v, i) => {\n result[i] = ~v & MAX_UINT8\n })\n return new BytesCls(result)\n }\n\n equals(other: StubBytesCompat): boolean {\n const otherArray = BytesCls.fromCompat(other).asUint8Array()\n if (this.#v.length !== otherArray.length) return false\n for (let i = 0; i < this.#v.length; i++) {\n if (this.#v[i] !== otherArray[i]) return false\n }\n return true\n }\n\n private bitwiseOp(other: StubBytesCompat, op: (a: number, b: number) => number): BytesCls {\n const otherArray = BytesCls.fromCompat(other).asUint8Array()\n const result = new Uint8Array(Math.max(this.#v.length, otherArray.length))\n for (let i = result.length - 1; i >= 0; i--) {\n const thisIndex = i - (result.length - this.#v.length)\n const otherIndex = i - (result.length - otherArray.length)\n result[i] = op(this.#v[thisIndex] ?? 0, otherArray[otherIndex] ?? 0)\n }\n return new BytesCls(result)\n }\n\n valueOf(): string {\n return uint8ArrayToHex(this.#v)\n }\n\n static [Symbol.hasInstance](x: unknown): x is BytesCls {\n return isInstanceOfTypeByName(x, BytesCls)\n }\n\n static fromCompat(v: StubBytesCompat | undefined): BytesCls {\n if (v === undefined) return new BytesCls(new Uint8Array())\n if (typeof v === 'string') return new BytesCls(utf8ToUint8Array(v))\n if (v instanceof BytesCls) return v\n if (v instanceof Uint8Array) return new BytesCls(v)\n internalError(`Cannot convert ${nameOfType(v)} to bytes`)\n }\n\n static fromInterpolation(template: TemplateStringsArray, replacements: StubBytesCompat[]) {\n return template\n .flatMap((templateText, index) => {\n const replacement = replacements[index]\n if (replacement) {\n return [BytesCls.fromCompat(templateText), BytesCls.fromCompat(replacement)]\n }\n return [BytesCls.fromCompat(templateText)]\n })\n .reduce((a, b) => a.concat(b))\n }\n\n static fromHex(hex: string): BytesCls {\n return new BytesCls(Uint8Array.from(Buffer.from(hex, 'hex')))\n }\n\n static fromBase64(b64: string): BytesCls {\n return new BytesCls(Uint8Array.from(Buffer.from(b64, 'base64')))\n }\n\n static fromBase32(b32: string): BytesCls {\n return new BytesCls(base32ToUint8Array(b32))\n }\n\n toUint64(): Uint64Cls {\n return new Uint64Cls(uint8ArrayToBigInt(this.#v))\n }\n toBigUint(): BigUintCls {\n return new BigUintCls(uint8ArrayToBigInt(this.#v))\n }\n toString(): string {\n return uint8ArrayToUtf8(this.#v)\n }\n\n asAlgoTs(): bytes {\n return this as unknown as bytes\n }\n\n asUint8Array(): Uint8Array {\n return this.#v\n }\n}\n\nexport const arrayUtil = new (class {\n arrayAt<T>(arrayLike: T[], index: StubUint64Compat): T {\n return arrayLike.at(Uint64Cls.fromCompat(index).asNumber()) ?? avmError('Index out of bounds')\n }\n arraySlice(arrayLike: Uint8Array, start: StubUint64Compat, end: StubUint64Compat): Uint8Array\n arraySlice<T>(arrayLike: T[], start: StubUint64Compat, end: StubUint64Compat): T[]\n arraySlice<T>(arrayLike: T[] | Uint8Array, start: StubUint64Compat, end: StubUint64Compat) {\n return arrayLike.slice(Uint64Cls.getNumber(start), Uint64Cls.getNumber(end)) as DeliberateAny\n }\n})()\n","import { BigUintCls, BytesCls, Uint64Cls } from './impl/primitives'\n\nexport type Uint64Compat = uint64 | bigint | boolean | number\nexport type BigUintCompat = Uint64Compat | bigint | bytes | number\nexport type StringCompat = string\nexport type BytesCompat = bytes | string | Uint8Array\n\n/**\n * An unsigned integer of exactly 64 bits\n */\nexport type uint64 = {\n __type?: 'uint64'\n} & number\n\n/**\n * Create a uint64 value\n * @param v The value to use\n */\nexport function Uint64(v: bigint): uint64\nexport function Uint64(v: number): uint64\nexport function Uint64(v: boolean): uint64\nexport function Uint64(v: Uint64Compat): uint64 {\n return Uint64Cls.fromCompat(v).asAlgoTs()\n}\n\n/**\n * An unsigned integer of up to 512 bits\n *\n * Stored as a big-endian variable byte array\n */\nexport type biguint = {\n __type?: 'biguint'\n} & bigint\n\n/**\n * Create a biguint value\n * @param v The value to use\n */\nexport function BigUint(v: bigint): biguint\nexport function BigUint(v: boolean): biguint\nexport function BigUint(v: number): biguint\nexport function BigUint(v: bytes): biguint\nexport function BigUint(v: BigUintCompat): biguint {\n return BigUintCls.fromCompat(v).asAlgoTs()\n}\n\nexport type bytes = {\n readonly length: uint64\n\n at(i: Uint64Compat): bytes\n\n concat(other: BytesCompat): bytes\n\n bitwiseAnd(other: BytesCompat): bytes\n\n bitwiseOr(other: BytesCompat): bytes\n\n bitwiseXor(other: BytesCompat): bytes\n\n bitwiseInvert(): bytes\n\n equals(other: BytesCompat): boolean\n\n toString(): string\n}\n\nexport function Bytes(value: TemplateStringsArray, ...replacements: BytesCompat[]): bytes\nexport function Bytes(value: BytesCompat): bytes\nexport function Bytes(): bytes\nexport function Bytes(value?: BytesCompat | TemplateStringsArray, ...replacements: BytesCompat[]): bytes {\n if (isTemplateStringsArray(value)) {\n return BytesCls.fromInterpolation(value, replacements).asAlgoTs()\n } else {\n return BytesCls.fromCompat(value).asAlgoTs()\n }\n}\n\n/**\n * Create a new bytes value from a hexadecimal encoded string\n * @param hex\n */\nBytes.fromHex = (hex: string): bytes => {\n return BytesCls.fromHex(hex).asAlgoTs()\n}\n/**\n * Create a new bytes value from a base 64 encoded string\n * @param b64\n */\nBytes.fromBase64 = (b64: string): bytes => {\n return BytesCls.fromBase64(b64).asAlgoTs()\n}\n\n/**\n * Create a new bytes value from a base 32 encoded string\n * @param b32\n */\nBytes.fromBase32 = (b32: string): bytes => {\n return BytesCls.fromBase32(b32).asAlgoTs()\n}\n\nfunction isTemplateStringsArray(v: unknown): v is TemplateStringsArray {\n return Boolean(v) && Array.isArray(v) && typeof v[0] === 'string'\n}\n\nexport interface BytesBacked {\n get bytes(): bytes\n}\n","import { Contract, gtxn, itxn } from '.'\nimport { AbiMethodConfig, BareMethodConfig } from './arc4'\nimport { OpsNamespace } from './op-types'\nimport { bytes, uint64 } from './primitives'\nimport { Account, Application, Asset } from './reference'\n\nexport type ExecutionContext = {\n log(value: bytes): void\n application(id?: uint64): Application\n asset(id?: uint64): Asset\n account(address?: bytes): Account\n op: Partial<OpsNamespace>\n abiMetadata: {\n captureMethodConfig<T extends Contract>(contract: T, methodName: string, config?: AbiMethodConfig<T> | BareMethodConfig): void\n }\n gtxn: {\n Transaction: typeof gtxn.Transaction\n PaymentTxn: typeof gtxn.PaymentTxn\n KeyRegistrationTxn: typeof gtxn.KeyRegistrationTxn\n AssetConfigTxn: typeof gtxn.AssetConfigTxn\n AssetTransferTxn: typeof gtxn.AssetTransferTxn\n AssetFreezeTxn: typeof gtxn.AssetFreezeTxn\n ApplicationTxn: typeof gtxn.ApplicationTxn\n }\n itxn: {\n submitGroup: typeof itxn.submitGroup\n payment: typeof itxn.payment\n keyRegistration: typeof itxn.keyRegistration\n assetConfig: typeof itxn.assetConfig\n assetTransfer: typeof itxn.assetTransfer\n assetFreeze: typeof itxn.assetFreeze\n applicationCall: typeof itxn.applicationCall\n }\n}\n\ndeclare global {\n // eslint-disable-next-line no-var\n var puyaTsExecutionContext: ExecutionContext | undefined\n}\n\nexport const ctxMgr = {\n set instance(ctx: ExecutionContext) {\n const instance = global.puyaTsExecutionContext\n if (instance != undefined) throw new Error('Execution context has already been set')\n global.puyaTsExecutionContext = ctx\n },\n get instance() {\n const instance = global.puyaTsExecutionContext\n if (instance == undefined) throw new Error('No execution context has been set')\n return instance\n },\n reset() {\n global.puyaTsExecutionContext = undefined\n },\n}\n","import { biguint, BigUintCompat, BytesCompat, StringCompat, uint64, Uint64Compat } from './primitives'\nimport { ctxMgr } from './execution-context'\nimport { AssertError, AvmError } from './impl/errors'\nimport { toBytes } from './impl/primitives'\n\nexport function log(...args: Array<Uint64Compat | BytesCompat | BigUintCompat | StringCompat>): void {\n ctxMgr.instance.log(args.map(toBytes).reduce((left, right) => left.concat(right)))\n}\n\nexport function assert(condition: unknown, message?: string): asserts condition {\n if (!condition) {\n throw new AssertError(message ?? 'Assertion failed')\n }\n}\n\nexport function err(message?: string): never {\n throw new AvmError(message ?? 'Err')\n}\n\ntype NumericComparison<T> = T | { lessThan: T } | { greaterThan: T } | { greaterThanEq: T } | { lessThanEq: T } | { between: [T, T] }\n\ntype ComparisonFor<T> = T extends uint64 | biguint ? NumericComparison<T> : T\n\ntype MatchTest<T> = {\n [key in keyof T]?: ComparisonFor<T[key]>\n}\n\nexport function match<T>(subject: T, test: MatchTest<T>): boolean {\n return true\n}\nexport function assertMatch<T>(subject: T, test: MatchTest<T>, message?: string): boolean {\n return true\n}\n\nexport enum OpUpFeeSource {\n GroupCredit = 0,\n AppAccount = 1,\n Any = 2,\n}\n\nexport function ensureBudget(budget: uint64, feeSource: OpUpFeeSource = OpUpFeeSource.GroupCredit) {\n throw new Error('Not implemented')\n}\n\nexport function urange(stop: Uint64Compat): IterableIterator<uint64>\nexport function urange(start: Uint64Compat, stop: Uint64Compat): IterableIterator<uint64>\nexport function urange(start: Uint64Compat, stop: Uint64Compat, step: Uint64Compat): IterableIterator<uint64>\nexport function urange(a: Uint64Compat, b?: Uint64Compat, c?: Uint64Compat): IterableIterator<uint64> {\n throw new Error('Not implemented')\n}\n","import { uint64 } from './primitives'\n\nexport abstract class BaseContract {\n public abstract approvalProgram(): boolean | uint64\n public clearStateProgram(): boolean | uint64 {\n return true\n }\n}\n","import { biguint, BigUintCompat, Bytes, bytes, BytesBacked, StringCompat, uint64, Uint64Compat } from '../primitives'\nimport { err } from '../util'\nimport { Account } from '../reference'\nimport { arrayUtil } from '../impl/primitives'\n\nexport type BitSize = 8 | 16 | 32 | 64 | 128 | 256 | 512\ntype NativeForArc4Int<N extends BitSize> = N extends 8 | 16 | 32 | 64 ? uint64 : biguint\ntype CompatForArc4Int<N extends BitSize> = N extends 8 | 16 | 32 | 64 ? Uint64Compat : BigUintCompat\n\nabstract class AbiEncoded implements BytesBacked {\n get bytes(): bytes {\n throw new Error('todo')\n }\n}\n\nexport class Str extends AbiEncoded {\n constructor(s: StringCompat) {\n super()\n }\n get native(): string {\n throw new Error('TODO')\n }\n}\nexport class UintN<N extends BitSize> extends AbiEncoded {\n constructor(v?: CompatForArc4Int<N>) {\n super()\n }\n get native(): NativeForArc4Int<N> {\n throw new Error('TODO')\n }\n}\nexport class UFixedNxM<N extends BitSize, M extends number> {\n constructor(v: `${number}:${number}`, n?: N, m?: M) {}\n\n get native(): NativeForArc4Int<N> {\n throw new Error('TODO')\n }\n}\n\nexport class Byte extends UintN<8> {\n constructor(v: Uint64Compat) {\n super(v)\n }\n get native(): uint64 {\n throw new Error('TODO')\n }\n}\nexport class Bool {\n #v: boolean\n constructor(v: boolean) {\n this.#v = v\n }\n\n get native(): boolean {\n return this.#v\n }\n}\n\nabstract class Arc4Array<TItem> extends AbiEncoded {\n protected constructor(protected items: TItem[]) {\n super()\n }\n get length(): uint64 {\n throw new Error('TODO')\n }\n at(index: Uint64Compat): TItem {\n return arrayUtil.arrayAt(this.items, index)\n }\n slice(start: Uint64Compat, end: Uint64Compat): DynamicArray<TItem> {\n return new DynamicArray(...arrayUtil.arraySlice(this.items, start, end))\n }\n [Symbol.iterator](): IterableIterator<TItem> {\n return this.items[Symbol.iterator]()\n }\n entries(): IterableIterator<readonly [uint64, TItem]> {\n throw new Error('TODO')\n }\n keys(): IterableIterator<uint64> {\n throw new Error('TODO')\n }\n}\n\nexport class StaticArray<TItem, TLength extends number> extends Arc4Array<TItem> {\n constructor()\n constructor(...items: TItem[] & { length: TLength })\n constructor(...items: TItem[])\n constructor(...items: TItem[] & { length: TLength }) {\n super(items)\n }\n\n copy(): StaticArray<TItem, TLength> {\n return new StaticArray<TItem, TLength>(...this.items)\n }\n}\n\nexport class DynamicArray<TItem> extends Arc4Array<TItem> {\n constructor(...items: TItem[]) {\n super(items)\n }\n push(...items: TItem[]): void {}\n pop(): TItem {\n throw new Error('Not implemented')\n }\n\n copy(): DynamicArray<TItem> {\n return new DynamicArray<TItem>(...this.items)\n }\n}\n\ntype ItemAt<TTuple extends unknown[], TIndex extends number> = undefined extends TTuple[TIndex] ? never : TTuple[TIndex]\n\nexport class Tuple<TTuple extends unknown[]> {\n #items: TTuple\n constructor(...items: TTuple) {\n this.#items = items\n }\n\n at<TIndex extends number>(index: TIndex): ItemAt<TTuple, TIndex> {\n return (this.#items[index] ?? err('Index out of bounds')) as ItemAt<TTuple, TIndex>\n }\n\n get native(): TTuple {\n return this.#items\n }\n}\n\nexport class Address extends StaticArray<Byte, 32> {\n constructor(value: Account | string | bytes) {\n super()\n }\n\n get native(): Account {\n throw new Error('TODO')\n }\n}\n","import { BaseContract } from '../base-contract'\nimport { ctxMgr } from '../execution-context'\nimport { Uint64 } from '../primitives'\nimport { DeliberateAny } from '../typescript-helpers'\n\nexport * from './encoded-types'\n\nexport class Contract extends BaseContract {\n override approvalProgram(): boolean {\n return true\n }\n}\n\nexport type CreateOptions = 'allow' | 'disallow' | 'require'\nexport type OnCompleteActionStr = 'NoOp' | 'OptIn' | 'ClearState' | 'CloseOut' | 'UpdateApplication' | 'DeleteApplication'\n\nexport enum OnCompleteAction {\n NoOp = Uint64(0),\n OptIn = Uint64(1),\n CloseOut = Uint64(2),\n ClearState = Uint64(3),\n UpdateApplication = Uint64(4),\n DeleteApplication = Uint64(5),\n}\n\nexport type DefaultArgument<TContract extends Contract> = { constant: string | boolean | number | bigint } | { from: keyof TContract }\nexport type AbiMethodConfig<TContract extends Contract> = {\n /**\n * Which on complete action(s) are allowed when invoking this method.\n * @default 'NoOp'\n */\n allowActions?: OnCompleteActionStr | OnCompleteActionStr[]\n /**\n * Whether this method should be callable when creating the application.\n * @default 'disallow'\n */\n onCreate?: CreateOptions\n /**\n * Does the method only perform read operations (no mutation of chain state)\n * @default false\n */\n readonly?: boolean\n /**\n * Override the name used to generate the abi method selector\n */\n name?: string\n\n defaultArguments?: Record<string, DefaultArgument<TContract>>\n}\nexport function abimethod<TContract extends Contract>(config?: AbiMethodConfig<TContract>) {\n return function <TArgs extends DeliberateAny[], TReturn>(\n target: (this: TContract, ...args: TArgs) => TReturn,\n ctx: ClassMethodDecoratorContext<TContract>,\n ): (this: TContract, ...args: TArgs) => TReturn {\n ctx.addInitializer(function () {\n ctxMgr.instance.abiMetadata.captureMethodConfig(this, target.name, config)\n })\n return target\n }\n}\n\nexport type BareMethodConfig = {\n /**\n * Which on complete action(s) are allowed when invoking this method.\n * @default 'NoOp'\n */\n allowActions?: OnCompleteActionStr | OnCompleteActionStr[]\n /**\n * Whether this method should be callable when creating the application.\n * @default 'disallow'\n */\n onCreate?: CreateOptions\n}\nexport function baremethod<TContract extends Contract>(config?: BareMethodConfig) {\n return function <TArgs extends DeliberateAny[], TReturn>(\n target: (this: TContract, ...args: TArgs) => TReturn,\n ctx: ClassMethodDecoratorContext<TContract>,\n ): (this: TContract, ...args: TArgs) => TReturn {\n ctx.addInitializer(function () {\n ctxMgr.instance.abiMetadata.captureMethodConfig(this, target.name, config)\n })\n return target\n }\n}\n"],"names":[],"mappings":"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"}
package/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
- import { c as ctxMgr, A as AssertError, B as BytesCls, e as encodingUtil, a as errors, p as primitives } from './index-7MfWJL4Q.js';
2
- export { j as BaseContract, k as BigUint, n as Bytes, C as Contract, O as OpUpFeeSource, U as Uint64, h as abimethod, i as arc4, d as assert, f as assertMatch, g as ensureBudget, b as err, l as log, m as match, u as urange } from './index-7MfWJL4Q.js';
1
+ import { c as ctxMgr, A as AssertError, B as BytesCls, e as encodingUtil, a as errors, p as primitives } from './index-CAZZKmeS.js';
2
+ export { j as BaseContract, k as BigUint, n as Bytes, C as Contract, O as OpUpFeeSource, U as Uint64, h as abimethod, i as arc4, d as assert, f as assertMatch, g as ensureBudget, b as err, l as log, m as match, u as urange } from './index-CAZZKmeS.js';
3
3
  import 'node:util';
4
4
 
5
5
  function Account(address) {
package/index2.mjs CHANGED
@@ -1,3 +1,3 @@
1
- export { x as Address, v as Bool, t as Byte, C as Contract, D as DynamicArray, o as OnCompleteAction, w as StaticArray, S as Str, T as Tuple, s as UFixedNxM, r as UintN, h as abimethod, q as baremethod } from './index-7MfWJL4Q.js';
1
+ export { x as Address, v as Bool, t as Byte, C as Contract, D as DynamicArray, o as OnCompleteAction, w as StaticArray, S as Str, T as Tuple, s as UFixedNxM, r as UintN, h as abimethod, q as baremethod } from './index-CAZZKmeS.js';
2
2
  import 'node:util';
3
3
  //# sourceMappingURL=index2.mjs.map
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "**"
5
5
  ],
6
6
  "name": "@algorandfoundation/algorand-typescript",
7
- "version": "0.0.1-alpha.2",
7
+ "version": "0.0.1-alpha.3",
8
8
  "description": "This package contains definitions for the types which comprise Algorand TypeScript which can be compiled to run on the Algorand Virtual Machine using the Puya compiler.",
9
9
  "private": false,
10
10
  "overrides": {
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-7MfWJL4Q.js","sources":["../src/impl/base-32.ts","../src/impl/errors.ts","../src/impl/encoding-util.ts","../src/impl/name-of-type.ts","../src/impl/primitives.ts","../src/primitives.ts","../src/execution-context.ts","../src/util.ts","../src/base-contract.ts","../src/arc4/encoded-types.ts","../src/arc4/index.ts"],"sourcesContent":["const BASE32_ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'.split('')\n\nconst CHAR_TO_NUM = BASE32_ALPHABET.reduce((acc, cur, index) => ((acc[cur] = index), acc), {} as Record<string, number>)\n\nexport const base32ToUint8Array = (value: string): Uint8Array => {\n let allChars = value\n .split('')\n .filter((c) => c !== '=')\n .map((c) => {\n const cUpper = c.toUpperCase()\n if (cUpper in CHAR_TO_NUM) return CHAR_TO_NUM[cUpper]\n throw new Error(`Invalid base32 char ${c}`)\n })\n const bytes = new Array<number>()\n while (allChars.length) {\n const [a, b, c, d, e, f, g, h, ...rest] = allChars\n if (a === undefined || b === undefined) break\n bytes.push(((a << 3) | (b >>> 2)) & 255)\n if (c === undefined || d === undefined) break\n bytes.push(((b << 6) | (c << 1) | (d >>> 4)) & 255)\n if (e === undefined) break\n bytes.push(((d << 4) | (e >>> 1)) & 255)\n if (f === undefined || g === undefined) break\n bytes.push(((e << 7) | (f << 2) | (g >>> 3)) & 255)\n if (h === undefined) break\n bytes.push(((g << 5) | h) & 255)\n allChars = rest\n }\n return new Uint8Array(bytes)\n}\n\nexport const uint8ArrayToBase32 = (value: Uint8Array): string => {\n let allBytes = Array.from(value)\n let base32str = ''\n while (allBytes.length) {\n const [a, b, c, d, e, ...rest] = allBytes ?? [0, 0, 0, 0, 0]\n\n if (allBytes.length < 1) break\n base32str += BASE32_ALPHABET[a >>> 3]\n base32str += BASE32_ALPHABET[((a << 2) | ((b || 0) >>> 6)) & 32]\n if (allBytes.length < 2) break\n base32str += BASE32_ALPHABET[(b >>> 1) & 31]\n base32str += BASE32_ALPHABET[((b << 4) | (c >>> 4)) & 31]\n if (allBytes.length < 3) break\n base32str += BASE32_ALPHABET[((c << 1) | (d >>> 7)) & 31]\n if (allBytes.length < 4) break\n base32str += BASE32_ALPHABET[(d >>> 2) & 31]\n base32str += BASE32_ALPHABET[((d << 3) | (e >>> 5)) & 31]\n if (allBytes.length < 5) break\n base32str += BASE32_ALPHABET[e & 31]\n allBytes = rest\n }\n return base32str\n}\n","/**\n * Raised when an `err` op is encountered, or when the testing VM is asked to do something that would cause\n * the AVM to fail.\n */\nexport class AvmError extends Error {\n constructor(message: string) {\n super(message)\n }\n}\nexport function avmError(message: string): never {\n throw new AvmError(message)\n}\n/**\n * Raised when an assertion fails\n */\nexport class AssertError extends AvmError {\n constructor(message: string) {\n super(message)\n }\n}\n\n/**\n * Raised when testing code errors\n */\nexport class InternalError extends Error {\n constructor(message: string, options?: ErrorOptions) {\n super(message, options)\n }\n}\n\nexport function internalError(message: string): never {\n throw new InternalError(message)\n}\n\n/**\n * Raised when unsupported user code is encountered\n */\nexport class CodeError extends Error {\n constructor(message: string, options?: ErrorOptions) {\n super(message, options)\n }\n}\n\nexport function codeError(message: string): never {\n throw new CodeError(message)\n}\n","import { TextDecoder } from 'node:util'\nimport { AvmError } from './errors'\n\nexport const uint8ArrayToBigInt = (v: Uint8Array): bigint => {\n // Assume big-endian\n return Array.from(v)\n .toReversed()\n .map((byte_value, i): bigint => BigInt(byte_value) << BigInt(i * 8))\n .reduce((a, b) => a + b, 0n)\n}\n\nexport const bigIntToUint8Array = (val: bigint, fixedSize: number | 'dynamic' = 'dynamic'): Uint8Array => {\n if (val === 0n && fixedSize === 'dynamic') {\n return new Uint8Array(0)\n }\n const maxBytes = fixedSize === 'dynamic' ? undefined : fixedSize\n\n let hex = val.toString(16)\n\n // Pad the hex with zeros so it matches the size in bytes\n if (fixedSize !== 'dynamic' && hex.length !== fixedSize * 2) {\n hex = hex.padStart(fixedSize * 2, '0')\n } else if (hex.length % 2 == 1) {\n // Pad to 'whole' byte\n hex = `0${hex}`\n }\n if (maxBytes && hex.length > maxBytes * 2) {\n throw new AvmError(`Cannot encode ${val} as ${maxBytes} bytes as it would overflow`)\n }\n const byteArray = new Uint8Array(hex.length / 2)\n for (let i = 0, j = 0; i < hex.length / 2; i++, j += 2) {\n byteArray[i] = parseInt(hex.slice(j, j + 2), 16)\n }\n return byteArray\n}\n\nexport const utf8ToUint8Array = (value: string): Uint8Array => {\n const encoder = new TextEncoder()\n return encoder.encode(value)\n}\n\nexport const uint8ArrayToUtf8 = (value: Uint8Array): string => {\n const decoder = new TextDecoder()\n return decoder.decode(value)\n}\n\nexport const uint8ArrayToHex = (value: Uint8Array): string => Buffer.from(value).toString('hex')\n\nexport const uint8ArrayToBase64 = (value: Uint8Array): string => Buffer.from(value).toString('base64')\n\nexport const uint8ArrayToBase64Url = (value: Uint8Array): string => Buffer.from(value).toString('base64url')\n\nexport { uint8ArrayToBase32 } from './base-32'\n","export const nameOfType = (x: unknown) => {\n if (typeof x === 'object') {\n if (x === null) return 'Null'\n if (x === undefined) return 'undefined'\n if ('constructor' in x) {\n return x.constructor.name\n }\n }\n return typeof x\n}\n","import type { biguint, BigUintCompat, bytes, BytesCompat, uint64, Uint64Compat } from '../index'\nimport { DeliberateAny } from '../typescript-helpers'\nimport { base32ToUint8Array } from './base-32'\nimport { bigIntToUint8Array, uint8ArrayToBigInt, uint8ArrayToUtf8, utf8ToUint8Array } from './encoding-util'\nimport { avmError, AvmError, internalError } from './errors'\nimport { nameOfType } from './name-of-type'\n\nconst MAX_UINT8 = 2 ** 8 - 1\nconst MAX_BYTES_SIZE = 4096\n\nexport type StubBigUintCompat = BigUintCompat | BigUintCls | Uint64Cls\nexport type StubBytesCompat = BytesCompat | BytesCls\nexport type StubUint64Compat = Uint64Compat | Uint64Cls\n\nexport function toExternalValue(val: uint64): bigint\nexport function toExternalValue(val: biguint): bigint\nexport function toExternalValue(val: bytes): Uint8Array\nexport function toExternalValue(val: string): string\nexport function toExternalValue(val: uint64 | biguint | bytes | string) {\n const instance = val as unknown\n if (instance instanceof BytesCls) return instance.asUint8Array()\n if (instance instanceof Uint64Cls) return instance.asBigInt()\n if (instance instanceof BigUintCls) return instance.asBigInt()\n if (typeof val === 'string') return val\n}\nexport const toBytes = (val: unknown): bytes => {\n if (val instanceof AlgoTsPrimitiveCls) return val.toBytes().asAlgoTs()\n\n switch (typeof val) {\n case 'string':\n return BytesCls.fromCompat(val).asAlgoTs()\n case 'bigint':\n return BigUintCls.fromCompat(val).toBytes().asAlgoTs()\n case 'number':\n return Uint64Cls.fromCompat(val).toBytes().asAlgoTs()\n default:\n internalError(`Unsupported arg type ${nameOfType(val)}`)\n }\n}\n\nexport const isBytes = (v: unknown): v is StubBytesCompat => {\n if (typeof v === 'string') return true\n if (v instanceof BytesCls) return true\n return v instanceof Uint8Array\n}\n\nexport const isUint64 = (v: unknown): v is StubUint64Compat => {\n if (typeof v == 'boolean') return true\n if (typeof v == 'number') return true\n if (typeof v == 'bigint') return true\n return v instanceof Uint64Cls\n}\n\nexport const isBigUint = (v: unknown): v is biguint => {\n return v instanceof BigUintCls\n}\n\nexport const checkUint64 = (v: bigint): bigint => {\n const u64 = BigInt.asUintN(64, v)\n if (u64 !== v) throw new AvmError(`Uint64 over or underflow`)\n return u64\n}\nexport const checkBigUint = (v: bigint): bigint => {\n const uBig = BigInt.asUintN(64 * 8, v)\n if (uBig !== v) throw new AvmError(`BigUint over or underflow`)\n return uBig\n}\n\nexport const checkBytes = (v: Uint8Array): Uint8Array => {\n if (v.length > MAX_BYTES_SIZE) throw new AvmError(`Bytes length ${v.length} exceeds maximum length ${MAX_BYTES_SIZE}`)\n return v\n}\n\nexport abstract class AlgoTsPrimitiveCls {\n private readonly _type: string = AlgoTsPrimitiveCls.name\n\n constructor(t: string) {\n this._type = `${AlgoTsPrimitiveCls.name}.${t}`\n }\n\n static [Symbol.hasInstance](x: unknown): x is AlgoTsPrimitiveCls {\n return x instanceof Object && '_type' in x && (x as { _type: string })['_type'].startsWith(AlgoTsPrimitiveCls.name)\n }\n\n abstract valueOf(): bigint | string | boolean\n abstract toBytes(): BytesCls\n}\n\nexport class Uint64Cls extends AlgoTsPrimitiveCls {\n public readonly value: bigint\n constructor(value: bigint | number | string) {\n super(Uint64Cls.name)\n this.value = BigInt(value)\n checkUint64(this.value)\n }\n static [Symbol.hasInstance](x: unknown): x is Uint64Cls {\n return x instanceof Object && '_type' in x && (x as { _type: string })['_type'].endsWith(Uint64Cls.name)\n }\n static fromCompat(v: StubUint64Compat): Uint64Cls {\n if (typeof v == 'boolean') return new Uint64Cls(v ? 1n : 0n)\n if (typeof v == 'number') return new Uint64Cls(BigInt(v))\n if (typeof v == 'bigint') return new Uint64Cls(v)\n if (v instanceof Uint64Cls) return v\n internalError(`Cannot convert ${v} to uint64`)\n }\n\n static getNumber(v: StubUint64Compat): number {\n return Uint64Cls.fromCompat(v).asNumber()\n }\n\n valueOf(): bigint {\n return this.value\n }\n\n toBytes(isDynamic: boolean = false): BytesCls {\n return new BytesCls(bigIntToUint8Array(this.value, isDynamic ? 'dynamic' : 8))\n }\n\n asAlgoTs(): uint64 {\n return this as unknown as uint64\n }\n\n asBigInt(): bigint {\n return this.value\n }\n asNumber(): number {\n if (this.value > Number.MAX_SAFE_INTEGER) {\n throw new AvmError('value cannot be safely converted to a number')\n }\n return Number(this.value)\n }\n}\n\nexport class BigUintCls extends AlgoTsPrimitiveCls {\n constructor(public readonly value: bigint) {\n super(BigUintCls.name)\n }\n valueOf(): bigint {\n return this.value\n }\n\n toBytes(): BytesCls {\n return new BytesCls(bigIntToUint8Array(this.value))\n }\n\n asAlgoTs(): biguint {\n return this as unknown as biguint\n }\n\n asBigInt(): bigint {\n return this.value\n }\n asNumber(): number {\n if (this.value > Number.MAX_SAFE_INTEGER) {\n throw new AvmError('value cannot be safely converted to a number')\n }\n return Number(this.value)\n }\n static [Symbol.hasInstance](x: unknown): x is BigUintCls {\n return x instanceof Object && '_type' in x && (x as { _type: string })['_type'].endsWith(BigUintCls.name)\n }\n static fromCompat(v: StubBigUintCompat): BigUintCls {\n if (typeof v == 'boolean') return new BigUintCls(v ? 1n : 0n)\n if (typeof v == 'number') return new BigUintCls(BigInt(v))\n if (typeof v == 'bigint') return new BigUintCls(v)\n if (v instanceof Uint64Cls) return new BigUintCls(v.value)\n if (v instanceof BytesCls) return v.toBigUint()\n if (v instanceof BigUintCls) return v\n internalError(`Cannot convert ${nameOfType(v)} to BigUint`)\n }\n}\n\nexport class BytesCls extends AlgoTsPrimitiveCls {\n #v: Uint8Array\n constructor(v: Uint8Array) {\n super(BytesCls.name)\n this.#v = v\n checkBytes(this.#v)\n }\n\n get length() {\n return new Uint64Cls(this.#v.length)\n }\n\n toBytes(): BytesCls {\n return this\n }\n\n at(i: StubUint64Compat): BytesCls {\n const start = Uint64Cls.fromCompat(i).asNumber()\n return new BytesCls(this.#v.slice(start, start + 1))\n }\n\n slice(start: StubUint64Compat, end: StubUint64Compat): BytesCls {\n const startNumber = start instanceof Uint64Cls ? start.asNumber() : start\n const endNumber = end instanceof Uint64Cls ? end.asNumber() : end\n const sliced = arrayUtil.arraySlice(this.#v, startNumber, endNumber)\n return new BytesCls(sliced)\n }\n\n concat(other: StubBytesCompat): BytesCls {\n const otherArray = BytesCls.fromCompat(other).asUint8Array()\n const mergedArray = new Uint8Array(this.#v.length + otherArray.length)\n mergedArray.set(this.#v)\n mergedArray.set(otherArray, this.#v.length)\n return new BytesCls(mergedArray)\n }\n\n bitwiseAnd(other: StubBytesCompat): BytesCls {\n return this.bitwiseOp(other, (a, b) => a & b)\n }\n\n bitwiseOr(other: StubBytesCompat): BytesCls {\n return this.bitwiseOp(other, (a, b) => a | b)\n }\n\n bitwiseXor(other: StubBytesCompat): BytesCls {\n return this.bitwiseOp(other, (a, b) => a ^ b)\n }\n\n bitwiseInvert(): BytesCls {\n const result = new Uint8Array(this.#v.length)\n this.#v.forEach((v, i) => {\n result[i] = ~v & MAX_UINT8\n })\n return new BytesCls(result)\n }\n\n equals(other: StubBytesCompat): boolean {\n const otherArray = BytesCls.fromCompat(other).asUint8Array()\n if (this.#v.length !== otherArray.length) return false\n for (let i = 0; i < this.#v.length; i++) {\n if (this.#v[i] !== otherArray[i]) return false\n }\n return true\n }\n\n private bitwiseOp(other: StubBytesCompat, op: (a: number, b: number) => number): BytesCls {\n const otherArray = BytesCls.fromCompat(other).asUint8Array()\n const result = new Uint8Array(Math.max(this.#v.length, otherArray.length))\n for (let i = result.length - 1; i >= 0; i--) {\n const thisIndex = i - (result.length - this.#v.length)\n const otherIndex = i - (result.length - otherArray.length)\n result[i] = op(this.#v[thisIndex] ?? 0, otherArray[otherIndex] ?? 0)\n }\n return new BytesCls(result)\n }\n\n valueOf(): string {\n return uint8ArrayToUtf8(this.#v)\n }\n\n static [Symbol.hasInstance](x: unknown): x is BytesCls {\n return x instanceof Object && '_type' in x && (x as { _type: string })['_type'].endsWith(BytesCls.name)\n }\n\n static fromCompat(v: StubBytesCompat | undefined): BytesCls {\n if (v === undefined) return new BytesCls(new Uint8Array())\n if (typeof v === 'string') return new BytesCls(utf8ToUint8Array(v))\n if (v instanceof BytesCls) return v\n if (v instanceof Uint8Array) return new BytesCls(v)\n internalError(`Cannot convert ${nameOfType(v)} to bytes`)\n }\n\n static fromInterpolation(template: TemplateStringsArray, replacements: StubBytesCompat[]) {\n return template\n .flatMap((templateText, index) => {\n const replacement = replacements[index]\n if (replacement) {\n return [BytesCls.fromCompat(templateText), BytesCls.fromCompat(replacement)]\n }\n return [BytesCls.fromCompat(templateText)]\n })\n .reduce((a, b) => a.concat(b))\n }\n\n static fromHex(hex: string): BytesCls {\n return new BytesCls(Uint8Array.from(Buffer.from(hex, 'hex')))\n }\n\n static fromBase64(b64: string): BytesCls {\n return new BytesCls(Uint8Array.from(Buffer.from(b64, 'base64')))\n }\n\n static fromBase32(b32: string): BytesCls {\n return new BytesCls(base32ToUint8Array(b32))\n }\n\n toUint64(): Uint64Cls {\n return new Uint64Cls(uint8ArrayToBigInt(this.#v))\n }\n toBigUint(): BigUintCls {\n return new BigUintCls(uint8ArrayToBigInt(this.#v))\n }\n toString(): string {\n return this.valueOf()\n }\n\n asAlgoTs(): bytes {\n return this as unknown as bytes\n }\n\n asUint8Array(): Uint8Array {\n return this.#v\n }\n}\n\nexport const arrayUtil = new (class {\n arrayAt<T>(arrayLike: T[], index: StubUint64Compat): T {\n return arrayLike.at(Uint64Cls.fromCompat(index).asNumber()) ?? avmError('Index out of bounds')\n }\n arraySlice(arrayLike: Uint8Array, start: StubUint64Compat, end: StubUint64Compat): Uint8Array\n arraySlice<T>(arrayLike: T[], start: StubUint64Compat, end: StubUint64Compat): T[]\n arraySlice<T>(arrayLike: T[] | Uint8Array, start: StubUint64Compat, end: StubUint64Compat) {\n return arrayLike.slice(Uint64Cls.getNumber(start), Uint64Cls.getNumber(end)) as DeliberateAny\n }\n})()\n","import { BigUintCls, BytesCls, Uint64Cls } from './impl/primitives'\n\nexport type Uint64Compat = uint64 | bigint | boolean | number\nexport type BigUintCompat = Uint64Compat | bigint | bytes | number\nexport type StringCompat = string\nexport type BytesCompat = bytes | string | Uint8Array\n\n/**\n * An unsigned integer of exactly 64 bits\n */\nexport type uint64 = {\n __type?: 'uint64'\n} & number\n\n/**\n * Create a uint64 value\n * @param v The value to use\n */\nexport function Uint64(v: bigint): uint64\nexport function Uint64(v: number): uint64\nexport function Uint64(v: boolean): uint64\nexport function Uint64(v: Uint64Compat): uint64 {\n return Uint64Cls.fromCompat(v).asAlgoTs()\n}\n\n/**\n * An unsigned integer of up to 512 bits\n *\n * Stored as a big-endian variable byte array\n */\nexport type biguint = {\n __type?: 'biguint'\n} & bigint\n\n/**\n * Create a biguint value\n * @param v The value to use\n */\nexport function BigUint(v: bigint): biguint\nexport function BigUint(v: boolean): biguint\nexport function BigUint(v: number): biguint\nexport function BigUint(v: bytes): biguint\nexport function BigUint(v: BigUintCompat): biguint {\n return BigUintCls.fromCompat(v).asAlgoTs()\n}\n\nexport type bytes = {\n readonly length: uint64\n\n at(i: Uint64Compat): bytes\n\n concat(other: BytesCompat): bytes\n\n bitwiseAnd(other: BytesCompat): bytes\n\n bitwiseOr(other: BytesCompat): bytes\n\n bitwiseXor(other: BytesCompat): bytes\n\n bitwiseInvert(): bytes\n\n equals(other: BytesCompat): boolean\n\n toString(): string\n}\n\nexport function Bytes(value: TemplateStringsArray, ...replacements: BytesCompat[]): bytes\nexport function Bytes(value: BytesCompat): bytes\nexport function Bytes(): bytes\nexport function Bytes(value?: BytesCompat | TemplateStringsArray, ...replacements: BytesCompat[]): bytes {\n if (isTemplateStringsArray(value)) {\n return BytesCls.fromInterpolation(value, replacements).asAlgoTs()\n } else {\n return BytesCls.fromCompat(value).asAlgoTs()\n }\n}\n\n/**\n * Create a new bytes value from a hexadecimal encoded string\n * @param hex\n */\nBytes.fromHex = (hex: string): bytes => {\n return BytesCls.fromHex(hex).asAlgoTs()\n}\n/**\n * Create a new bytes value from a base 64 encoded string\n * @param b64\n */\nBytes.fromBase64 = (b64: string): bytes => {\n return BytesCls.fromBase64(b64).asAlgoTs()\n}\n\n/**\n * Create a new bytes value from a base 32 encoded string\n * @param b32\n */\nBytes.fromBase32 = (b32: string): bytes => {\n return BytesCls.fromBase32(b32).asAlgoTs()\n}\n\nfunction isTemplateStringsArray(v: unknown): v is TemplateStringsArray {\n return Boolean(v) && Array.isArray(v) && typeof v[0] === 'string'\n}\n\nexport interface BytesBacked {\n get bytes(): bytes\n}\n","import { Contract, gtxn, itxn } from '.'\nimport { AbiMethodConfig, BareMethodConfig } from './arc4'\nimport { OpsNamespace } from './op-types'\nimport { bytes, uint64 } from './primitives'\nimport { Account, Application, Asset } from './reference'\n\nexport type ExecutionContext = {\n log(value: bytes): void\n application(id?: uint64): Application\n asset(id?: uint64): Asset\n account(address?: bytes): Account\n op: Partial<OpsNamespace>\n abiMetadata: {\n captureMethodConfig<T extends Contract>(contract: T, methodName: string, config?: AbiMethodConfig<T> | BareMethodConfig): void\n }\n gtxn: {\n Transaction: typeof gtxn.Transaction\n PaymentTxn: typeof gtxn.PaymentTxn\n KeyRegistrationTxn: typeof gtxn.KeyRegistrationTxn\n AssetConfigTxn: typeof gtxn.AssetConfigTxn\n AssetTransferTxn: typeof gtxn.AssetTransferTxn\n AssetFreezeTxn: typeof gtxn.AssetFreezeTxn\n ApplicationTxn: typeof gtxn.ApplicationTxn\n }\n itxn: {\n submitGroup: typeof itxn.submitGroup\n payment: typeof itxn.payment\n keyRegistration: typeof itxn.keyRegistration\n assetConfig: typeof itxn.assetConfig\n assetTransfer: typeof itxn.assetTransfer\n assetFreeze: typeof itxn.assetFreeze\n applicationCall: typeof itxn.applicationCall\n }\n}\n\ndeclare global {\n // eslint-disable-next-line no-var\n var puyaTsExecutionContext: ExecutionContext | undefined\n}\n\nexport const ctxMgr = {\n set instance(ctx: ExecutionContext) {\n const instance = global.puyaTsExecutionContext\n if (instance != undefined) throw new Error('Execution context has already been set')\n global.puyaTsExecutionContext = ctx\n },\n get instance() {\n const instance = global.puyaTsExecutionContext\n if (instance == undefined) throw new Error('No execution context has been set')\n return instance\n },\n reset() {\n global.puyaTsExecutionContext = undefined\n },\n}\n","import { biguint, BigUintCompat, BytesCompat, StringCompat, uint64, Uint64Compat } from './primitives'\nimport { ctxMgr } from './execution-context'\nimport { AssertError, AvmError } from './impl/errors'\nimport { toBytes } from './impl/primitives'\n\nexport function log(...args: Array<Uint64Compat | BytesCompat | BigUintCompat | StringCompat>): void {\n ctxMgr.instance.log(args.map(toBytes).reduce((left, right) => left.concat(right)))\n}\n\nexport function assert(condition: unknown, message?: string): asserts condition {\n if (!condition) {\n throw new AssertError(message ?? 'Assertion failed')\n }\n}\n\nexport function err(message?: string): never {\n throw new AvmError(message ?? 'Err')\n}\n\ntype NumericComparison<T> = T | { lessThan: T } | { greaterThan: T } | { greaterThanEq: T } | { lessThanEq: T } | { between: [T, T] }\n\ntype ComparisonFor<T> = T extends uint64 | biguint ? NumericComparison<T> : T\n\ntype MatchTest<T> = {\n [key in keyof T]?: ComparisonFor<T[key]>\n}\n\nexport function match<T>(subject: T, test: MatchTest<T>): boolean {\n return true\n}\nexport function assertMatch<T>(subject: T, test: MatchTest<T>, message?: string): boolean {\n return true\n}\n\nexport enum OpUpFeeSource {\n GroupCredit = 0,\n AppAccount = 1,\n Any = 2,\n}\n\nexport function ensureBudget(budget: uint64, feeSource: OpUpFeeSource = OpUpFeeSource.GroupCredit) {\n throw new Error('Not implemented')\n}\n\nexport function urange(stop: Uint64Compat): IterableIterator<uint64>\nexport function urange(start: Uint64Compat, stop: Uint64Compat): IterableIterator<uint64>\nexport function urange(start: Uint64Compat, stop: Uint64Compat, step: Uint64Compat): IterableIterator<uint64>\nexport function urange(a: Uint64Compat, b?: Uint64Compat, c?: Uint64Compat): IterableIterator<uint64> {\n throw new Error('Not implemented')\n}\n","import { uint64 } from './primitives'\n\nexport abstract class BaseContract {\n public abstract approvalProgram(): boolean | uint64\n public clearStateProgram(): boolean | uint64 {\n return true\n }\n}\n","import { biguint, BigUintCompat, Bytes, bytes, BytesBacked, StringCompat, uint64, Uint64Compat } from '../primitives'\nimport { err } from '../util'\nimport { Account } from '../reference'\nimport { arrayUtil } from '../impl/primitives'\n\nexport type BitSize = 8 | 16 | 32 | 64 | 128 | 256 | 512\ntype NativeForArc4Int<N extends BitSize> = N extends 8 | 16 | 32 | 64 ? uint64 : biguint\ntype CompatForArc4Int<N extends BitSize> = N extends 8 | 16 | 32 | 64 ? Uint64Compat : BigUintCompat\n\nabstract class AbiEncoded implements BytesBacked {\n get bytes(): bytes {\n throw new Error('todo')\n }\n}\n\nexport class Str extends AbiEncoded {\n constructor(s: StringCompat) {\n super()\n }\n get native(): string {\n throw new Error('TODO')\n }\n}\nexport class UintN<N extends BitSize> extends AbiEncoded {\n constructor(v?: CompatForArc4Int<N>) {\n super()\n }\n get native(): NativeForArc4Int<N> {\n throw new Error('TODO')\n }\n}\nexport class UFixedNxM<N extends BitSize, M extends number> {\n constructor(v: `${number}:${number}`, n?: N, m?: M) {}\n\n get native(): NativeForArc4Int<N> {\n throw new Error('TODO')\n }\n}\n\nexport class Byte extends UintN<8> {\n constructor(v: Uint64Compat) {\n super(v)\n }\n get native(): uint64 {\n throw new Error('TODO')\n }\n}\nexport class Bool {\n #v: boolean\n constructor(v: boolean) {\n this.#v = v\n }\n\n get native(): boolean {\n return this.#v\n }\n}\n\nabstract class Arc4Array<TItem> extends AbiEncoded {\n protected constructor(protected items: TItem[]) {\n super()\n }\n get length(): uint64 {\n throw new Error('TODO')\n }\n at(index: Uint64Compat): TItem {\n return arrayUtil.arrayAt(this.items, index)\n }\n slice(start: Uint64Compat, end: Uint64Compat): DynamicArray<TItem> {\n return new DynamicArray(...arrayUtil.arraySlice(this.items, start, end))\n }\n [Symbol.iterator](): IterableIterator<TItem> {\n return this.items[Symbol.iterator]()\n }\n entries(): IterableIterator<readonly [uint64, TItem]> {\n throw new Error('TODO')\n }\n keys(): IterableIterator<uint64> {\n throw new Error('TODO')\n }\n}\n\nexport class StaticArray<TItem, TLength extends number> extends Arc4Array<TItem> {\n constructor()\n constructor(...items: TItem[] & { length: TLength })\n constructor(...items: TItem[])\n constructor(...items: TItem[] & { length: TLength }) {\n super(items)\n }\n\n copy(): StaticArray<TItem, TLength> {\n return new StaticArray<TItem, TLength>(...this.items)\n }\n}\n\nexport class DynamicArray<TItem> extends Arc4Array<TItem> {\n constructor(...items: TItem[]) {\n super(items)\n }\n push(...items: TItem[]): void {}\n pop(): TItem {\n throw new Error('Not implemented')\n }\n\n copy(): DynamicArray<TItem> {\n return new DynamicArray<TItem>(...this.items)\n }\n}\n\ntype ItemAt<TTuple extends unknown[], TIndex extends number> = undefined extends TTuple[TIndex] ? never : TTuple[TIndex]\n\nexport class Tuple<TTuple extends unknown[]> {\n #items: TTuple\n constructor(...items: TTuple) {\n this.#items = items\n }\n\n at<TIndex extends number>(index: TIndex): ItemAt<TTuple, TIndex> {\n return (this.#items[index] ?? err('Index out of bounds')) as ItemAt<TTuple, TIndex>\n }\n\n get native(): TTuple {\n return this.#items\n }\n}\n\nexport class Address extends StaticArray<Byte, 32> {\n constructor(value: Account | string | bytes) {\n super()\n }\n\n get native(): Account {\n throw new Error('TODO')\n }\n}\n","import { BaseContract } from '../base-contract'\nimport { ctxMgr } from '../execution-context'\nimport { Uint64 } from '../primitives'\nimport { DeliberateAny } from '../typescript-helpers'\n\nexport * from './encoded-types'\n\nexport class Contract extends BaseContract {\n override approvalProgram(): boolean {\n return true\n }\n}\n\nexport type CreateOptions = 'allow' | 'disallow' | 'require'\nexport type OnCompleteActionStr = 'NoOp' | 'OptIn' | 'ClearState' | 'CloseOut' | 'UpdateApplication' | 'DeleteApplication'\n\nexport enum OnCompleteAction {\n NoOp = Uint64(0),\n OptIn = Uint64(1),\n CloseOut = Uint64(2),\n ClearState = Uint64(3),\n UpdateApplication = Uint64(4),\n DeleteApplication = Uint64(5),\n}\n\nexport type DefaultArgument<TContract extends Contract> = { constant: string | boolean | number | bigint } | { from: keyof TContract }\nexport type AbiMethodConfig<TContract extends Contract> = {\n /**\n * Which on complete action(s) are allowed when invoking this method.\n * @default 'NoOp'\n */\n allowActions?: OnCompleteActionStr | OnCompleteActionStr[]\n /**\n * Whether this method should be callable when creating the application.\n * @default 'disallow'\n */\n onCreate?: CreateOptions\n /**\n * Does the method only perform read operations (no mutation of chain state)\n * @default false\n */\n readonly?: boolean\n /**\n * Override the name used to generate the abi method selector\n */\n name?: string\n\n defaultArguments?: Record<string, DefaultArgument<TContract>>\n}\nexport function abimethod<TContract extends Contract>(config?: AbiMethodConfig<TContract>) {\n return function <TArgs extends DeliberateAny[], TReturn>(\n target: (this: TContract, ...args: TArgs) => TReturn,\n ctx: ClassMethodDecoratorContext<TContract>,\n ): (this: TContract, ...args: TArgs) => TReturn {\n ctx.addInitializer(function () {\n ctxMgr.instance.abiMetadata.captureMethodConfig(this, target.name, config)\n })\n return target\n }\n}\n\nexport type BareMethodConfig = {\n /**\n * Which on complete action(s) are allowed when invoking this method.\n * @default 'NoOp'\n */\n allowActions?: OnCompleteActionStr | OnCompleteActionStr[]\n /**\n * Whether this method should be callable when creating the application.\n * @default 'disallow'\n */\n onCreate?: CreateOptions\n}\nexport function baremethod<TContract extends Contract>(config?: BareMethodConfig) {\n return function <TArgs extends DeliberateAny[], TReturn>(\n target: (this: TContract, ...args: TArgs) => TReturn,\n ctx: ClassMethodDecoratorContext<TContract>,\n ): (this: TContract, ...args: TArgs) => TReturn {\n ctx.addInitializer(function () {\n ctxMgr.instance.abiMetadata.captureMethodConfig(this, target.name, config)\n })\n return target\n }\n}\n"],"names":[],"mappings":"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"}