@algorandfoundation/algorand-typescript 0.0.1-alpha.13 → 0.0.1-alpha.14

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.
@@ -5,6 +5,7 @@ type NativeForArc4Int<N extends BitSize> = N extends 8 | 16 | 32 | 64 ? uint64 :
5
5
  type CompatForArc4Int<N extends BitSize> = N extends 8 | 16 | 32 | 64 ? Uint64Compat : BigUintCompat;
6
6
  declare abstract class AbiEncoded implements BytesBacked {
7
7
  get bytes(): bytes;
8
+ equals(other: this): boolean;
8
9
  }
9
10
  export declare class Str extends AbiEncoded {
10
11
  constructor(s: StringCompat);
@@ -19,25 +20,45 @@ export declare class UFixedNxM<N extends BitSize, M extends number> {
19
20
  get native(): NativeForArc4Int<N>;
20
21
  }
21
22
  export declare class Byte extends UintN<8> {
22
- constructor(v: Uint64Compat);
23
- get native(): uint64;
23
+ constructor(v?: Uint64Compat);
24
24
  }
25
25
  export declare class Bool {
26
26
  #private;
27
- constructor(v: boolean);
27
+ constructor(v?: boolean);
28
28
  get native(): boolean;
29
29
  }
30
- declare abstract class Arc4Array<TItem> extends AbiEncoded {
30
+ declare abstract class Arc4ReadonlyArray<TItem extends AbiEncoded> extends AbiEncoded {
31
31
  protected items: TItem[];
32
32
  protected constructor(items: TItem[]);
33
+ /**
34
+ * Returns the current length of this array
35
+ */
33
36
  get length(): uint64;
37
+ /**
38
+ * Returns the item at the given index.
39
+ * Negative indexes are taken from the end.
40
+ * @param index The index of the item to retrieve
41
+ */
34
42
  at(index: Uint64Compat): TItem;
35
- slice(start: Uint64Compat, end: Uint64Compat): DynamicArray<TItem>;
43
+ /**
44
+ * Returns an iterator for the items in this array
45
+ */
36
46
  [Symbol.iterator](): IterableIterator<TItem>;
47
+ /**
48
+ * Returns an iterator for a tuple of the indexes and items in this array
49
+ */
37
50
  entries(): IterableIterator<readonly [uint64, TItem]>;
51
+ /**
52
+ * Returns an iterator for the indexes in this array
53
+ */
38
54
  keys(): IterableIterator<uint64>;
55
+ /**
56
+ * Get or set the item at the specified index.
57
+ * Negative indexes are not supported
58
+ */
59
+ [index: uint64]: TItem;
39
60
  }
40
- export declare class StaticArray<TItem, TLength extends number> extends Arc4Array<TItem> {
61
+ export declare class StaticArray<TItem extends AbiEncoded, TLength extends number> extends Arc4ReadonlyArray<TItem> {
41
62
  constructor();
42
63
  constructor(...items: TItem[] & {
43
64
  length: TLength;
@@ -45,9 +66,16 @@ export declare class StaticArray<TItem, TLength extends number> extends Arc4Arra
45
66
  constructor(...items: TItem[]);
46
67
  copy(): StaticArray<TItem, TLength>;
47
68
  }
48
- export declare class DynamicArray<TItem> extends Arc4Array<TItem> {
69
+ export declare class DynamicArray<TItem extends AbiEncoded> extends Arc4ReadonlyArray<TItem> {
49
70
  constructor(...items: TItem[]);
71
+ /**
72
+ * Push a number of items into this array
73
+ * @param items The items to be added to this array
74
+ */
50
75
  push(...items: TItem[]): void;
76
+ /**
77
+ * Pop a single item from this array
78
+ */
51
79
  pop(): TItem;
52
80
  copy(): DynamicArray<TItem>;
53
81
  }
@@ -58,8 +86,8 @@ export declare class Tuple<TTuple extends unknown[]> {
58
86
  at<TIndex extends number>(index: TIndex): ItemAt<TTuple, TIndex>;
59
87
  get native(): TTuple;
60
88
  }
61
- export declare class Address extends StaticArray<Byte, 32> {
62
- constructor(value: Account | string | bytes);
89
+ export declare class Address extends Arc4ReadonlyArray<Byte> {
90
+ constructor(value?: Account | string | bytes);
63
91
  get native(): Account;
64
92
  }
65
93
  export {};
package/arc4/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- export { A as Address, s as Bool, r as Byte, C as Contract, D as DynamicArray, k as OnCompleteAction, t as StaticArray, S as Str, T as Tuple, q as UFixedNxM, o as UintN, g as abimethod, n as baremethod } from '../index-CWa8GSj0.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, g as abimethod, q as baremethod } from '../index-hpwu00-P.js';
2
2
  import '../execution-context-BznYSiE4.js';
3
3
  import 'node:buffer';
4
4
  import 'node:util';
@@ -13,6 +13,7 @@ export declare const toBytes: (val: unknown) => bytes;
13
13
  * @param v
14
14
  */
15
15
  export declare const getNumber: (v: StubUint64Compat) => number;
16
+ export declare const getUint8Array: (v: StubBytesCompat) => Uint8Array;
16
17
  export declare const isBytes: (v: unknown) => v is StubBytesCompat;
17
18
  export declare const isUint64: (v: unknown) => v is StubUint64Compat;
18
19
  export declare const checkUint64: (v: bigint) => bigint;
@@ -248,6 +248,9 @@ const getNumber = (v) => {
248
248
  return v.asNumber();
249
249
  internalError(`Cannot convert ${v} to number`);
250
250
  };
251
+ const getUint8Array = (v) => {
252
+ return BytesCls.fromCompat(v).asUint8Array();
253
+ };
251
254
  const isBytes = (v) => {
252
255
  if (typeof v === 'string')
253
256
  return true;
@@ -256,8 +259,6 @@ const isBytes = (v) => {
256
259
  return v instanceof Uint8Array;
257
260
  };
258
261
  const isUint64 = (v) => {
259
- if (typeof v == 'boolean')
260
- return true;
261
262
  if (typeof v == 'number')
262
263
  return true;
263
264
  if (typeof v == 'bigint')
@@ -553,6 +554,7 @@ var primitives = /*#__PURE__*/Object.freeze({
553
554
  checkBytes: checkBytes,
554
555
  checkUint64: checkUint64,
555
556
  getNumber: getNumber,
557
+ getUint8Array: getUint8Array,
556
558
  isBytes: isBytes,
557
559
  isUint64: isUint64,
558
560
  toBytes: toBytes,
@@ -646,6 +648,16 @@ function urange(a, b, c) {
646
648
  throw new Error('Not implemented');
647
649
  }
648
650
 
651
+ function Account(address) {
652
+ return ctxMgr.instance.account(address);
653
+ }
654
+ function Asset(assetId) {
655
+ return ctxMgr.instance.asset(assetId);
656
+ }
657
+ function Application(applicationId) {
658
+ return ctxMgr.instance.application(applicationId);
659
+ }
660
+
649
661
  class BaseContract {
650
662
  clearStateProgram() {
651
663
  return true;
@@ -656,6 +668,9 @@ class AbiEncoded {
656
668
  get bytes() {
657
669
  throw new Error('todo');
658
670
  }
671
+ equals(other) {
672
+ return this.bytes.equals(other.bytes);
673
+ }
659
674
  }
660
675
  class Str extends AbiEncoded {
661
676
  constructor(s) {
@@ -683,45 +698,85 @@ class Byte extends UintN {
683
698
  constructor(v) {
684
699
  super(v);
685
700
  }
686
- get native() {
687
- throw new Error('TODO');
688
- }
689
701
  }
690
702
  class Bool {
691
703
  #v;
692
704
  constructor(v) {
693
- this.#v = v;
705
+ this.#v = v ?? false;
694
706
  }
695
707
  get native() {
696
708
  return this.#v;
697
709
  }
698
710
  }
699
- class Arc4Array extends AbiEncoded {
711
+ class Arc4ReadonlyArray extends AbiEncoded {
700
712
  items;
701
713
  constructor(items) {
702
714
  super();
703
- this.items = items;
715
+ this.items = items.slice();
716
+ return new Proxy(this, {
717
+ get(target, prop) {
718
+ if (isUint64(prop)) {
719
+ const idx = getNumber(prop);
720
+ if (idx < target.items.length)
721
+ return target.items[idx];
722
+ avmError('Index out of bounds');
723
+ }
724
+ return Reflect.get(target, prop);
725
+ },
726
+ set(target, prop, value) {
727
+ if (isUint64(prop)) {
728
+ const idx = getNumber(prop);
729
+ if (idx < target.items.length) {
730
+ target.items[idx] = value;
731
+ return true;
732
+ }
733
+ avmError('Index out of bounds');
734
+ }
735
+ avmError('Property is not writable');
736
+ },
737
+ });
704
738
  }
739
+ /**
740
+ * Returns the current length of this array
741
+ */
705
742
  get length() {
706
- throw new Error('TODO');
743
+ return Uint64(this.items.length);
707
744
  }
745
+ /**
746
+ * Returns the item at the given index.
747
+ * Negative indexes are taken from the end.
748
+ * @param index The index of the item to retrieve
749
+ */
708
750
  at(index) {
709
751
  return arrayUtil.arrayAt(this.items, index);
710
752
  }
711
753
  slice(start, end) {
712
754
  return new DynamicArray(...arrayUtil.arraySlice(this.items, start, end));
713
755
  }
756
+ /**
757
+ * Returns an iterator for the items in this array
758
+ */
714
759
  [Symbol.iterator]() {
715
760
  return this.items[Symbol.iterator]();
716
761
  }
717
- entries() {
718
- throw new Error('TODO');
762
+ /**
763
+ * Returns an iterator for a tuple of the indexes and items in this array
764
+ */
765
+ *entries() {
766
+ for (const [idx, item] of this.items.entries()) {
767
+ yield [Uint64(idx), item];
768
+ }
719
769
  }
720
- keys() {
721
- throw new Error('TODO');
770
+ /**
771
+ * Returns an iterator for the indexes in this array
772
+ */
773
+ *keys() {
774
+ for (const idx of this.items.keys()) {
775
+ yield Uint64(idx);
776
+ }
722
777
  }
723
778
  }
724
- class StaticArray extends Arc4Array {
779
+ class StaticArray extends Arc4ReadonlyArray {
725
780
  constructor(...items) {
726
781
  super(items);
727
782
  }
@@ -729,13 +784,25 @@ class StaticArray extends Arc4Array {
729
784
  return new StaticArray(...this.items);
730
785
  }
731
786
  }
732
- class DynamicArray extends Arc4Array {
787
+ class DynamicArray extends Arc4ReadonlyArray {
733
788
  constructor(...items) {
734
789
  super(items);
735
790
  }
736
- push(...items) { }
791
+ /**
792
+ * Push a number of items into this array
793
+ * @param items The items to be added to this array
794
+ */
795
+ push(...items) {
796
+ this.items.push(...items);
797
+ }
798
+ /**
799
+ * Pop a single item from this array
800
+ */
737
801
  pop() {
738
- throw new Error('Not implemented');
802
+ const item = this.items.pop();
803
+ if (item === undefined)
804
+ avmError('The array is empty');
805
+ return item;
739
806
  }
740
807
  copy() {
741
808
  return new DynamicArray(...this.items);
@@ -753,12 +820,27 @@ class Tuple {
753
820
  return this.#items;
754
821
  }
755
822
  }
756
- class Address extends StaticArray {
823
+ class Address extends Arc4ReadonlyArray {
757
824
  constructor(value) {
758
- super();
825
+ let byteValues;
826
+ if (value === undefined) {
827
+ byteValues = new Uint8Array(32);
828
+ }
829
+ else if (typeof value === 'string') {
830
+ // Interpret as base 32
831
+ byteValues = BytesCls.fromBase32(value).asUint8Array();
832
+ }
833
+ else if (isBytes(value)) {
834
+ byteValues = getUint8Array(value);
835
+ }
836
+ else {
837
+ byteValues = getUint8Array(value.bytes);
838
+ }
839
+ avmInvariant(byteValues.length === 32, 'Addresses should be 32 bytes');
840
+ super(Array.from(byteValues).map((b) => new Byte(b)));
759
841
  }
760
842
  get native() {
761
- throw new Error('TODO');
843
+ return Account(Bytes(this.items.map((i) => i.native)));
762
844
  }
763
845
  }
764
846
 
@@ -810,5 +892,5 @@ var index = /*#__PURE__*/Object.freeze({
810
892
  baremethod: baremethod
811
893
  });
812
894
 
813
- export { Address as A, BaseContract 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, assert as c, assertMatch as d, encodingUtil as e, ensureBudget as f, abimethod as g, BigUint as h, index as i, Bytes as j, OnCompleteAction as k, log as l, match as m, baremethod as n, UintN as o, primitives as p, UFixedNxM as q, Byte as r, Bool as s, StaticArray as t, urange as u };
814
- //# sourceMappingURL=index-CWa8GSj0.js.map
895
+ export { Account as A, BaseContract 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, assert as c, assertMatch as d, encodingUtil as e, ensureBudget as f, abimethod as g, BigUint as h, index as i, Bytes as j, Asset as k, log as l, match as m, Application 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 };
896
+ //# sourceMappingURL=index-hpwu00-P.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-hpwu00-P.js","sources":["../src/impl/errors.ts","../src/impl/base-32.ts","../src/impl/encoding-util.ts","../src/impl/name-of-type.ts","../src/impl/primitives.ts","../src/primitives.ts","../src/util.ts","../src/reference.ts","../src/base-contract.ts","../src/arc4/encoded-types.ts","../src/arc4/index.ts"],"sourcesContent":["/**\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\nexport function avmInvariant(condition: unknown, message: string): asserts condition {\n if (!condition) {\n throw new AvmError(message)\n }\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","const BASE32_ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'.split('')\n\nconst CHAR_TO_NUM = BASE32_ALPHABET.reduce((acc, cur, index) => ((acc[cur] = index), acc), {} as Record<string, number>)\n\nexport const base32ToUint8Array = (value: string): Uint8Array => {\n let allChars = value\n .split('')\n .filter((c) => c !== '=')\n .map((c) => {\n const cUpper = c.toUpperCase()\n if (cUpper in CHAR_TO_NUM) return CHAR_TO_NUM[cUpper]\n throw new Error(`Invalid base32 char ${c}`)\n })\n const bytes = new Array<number>()\n while (allChars.length) {\n const [a, b, c, d, e, f, g, h, ...rest] = allChars\n if (a === undefined || b === undefined) break\n bytes.push(((a << 3) | (b >>> 2)) & 255)\n if (c === undefined || d === undefined) break\n bytes.push(((b << 6) | (c << 1) | (d >>> 4)) & 255)\n if (e === undefined) break\n bytes.push(((d << 4) | (e >>> 1)) & 255)\n if (f === undefined || g === undefined) break\n bytes.push(((e << 7) | (f << 2) | (g >>> 3)) & 255)\n if (h === undefined) break\n bytes.push(((g << 5) | h) & 255)\n allChars = rest\n }\n return new Uint8Array(bytes)\n}\n\nexport const uint8ArrayToBase32 = (value: Uint8Array): string => {\n let allBytes = Array.from(value)\n let base32str = ''\n while (allBytes.length) {\n const [a, b, c, d, e, ...rest] = allBytes ?? [0, 0, 0, 0, 0]\n\n if (allBytes.length < 1) break\n base32str += BASE32_ALPHABET[a >>> 3]\n base32str += BASE32_ALPHABET[((a << 2) | ((b || 0) >>> 6)) & 31]\n if (allBytes.length < 2) break\n base32str += BASE32_ALPHABET[(b >>> 1) & 31]\n base32str += BASE32_ALPHABET[((b << 4) | (c >>> 4)) & 31]\n if (allBytes.length < 3) break\n base32str += BASE32_ALPHABET[((c << 1) | (d >>> 7)) & 31]\n if (allBytes.length < 4) break\n base32str += BASE32_ALPHABET[(d >>> 2) & 31]\n base32str += BASE32_ALPHABET[((d << 3) | (e >>> 5)) & 31]\n if (allBytes.length < 5) break\n base32str += BASE32_ALPHABET[e & 31]\n allBytes = rest\n }\n return base32str\n}\n","import { Buffer } from 'node:buffer'\nimport { 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 hexToUint8Array = (value: string): Uint8Array => {\n if (value.length % 2 !== 0) {\n // TODO: Verify AVM behaviour is to fail\n throw new AvmError('Hex string must have even number of characters')\n }\n return Uint8Array.from(Buffer.from(value, 'hex'))\n}\n\nexport const base64ToUint8Array = (value: string): Uint8Array => {\n return Uint8Array.from(Buffer.from(value, 'base64'))\n}\n\nexport const 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 { base32ToUint8Array } from './base-32'\nimport {\n base64ToUint8Array,\n bigIntToUint8Array,\n hexToUint8Array,\n uint8ArrayToBigInt,\n uint8ArrayToHex,\n uint8ArrayToUtf8,\n utf8ToUint8Array,\n} from './encoding-util'\nimport { avmError, AvmError, avmInvariant, 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\n/**\n * Convert a StubUint64Compat value into a 'number' if possible.\n * This value may be negative\n * @param v\n */\nexport const getNumber = (v: StubUint64Compat): number => {\n if (typeof v == 'boolean') return v ? 1 : 0\n if (typeof v == 'number') return v\n if (typeof v == 'bigint') {\n avmInvariant(\n v <= BigInt(Number.MAX_SAFE_INTEGER) && v >= BigInt(Number.MIN_SAFE_INTEGER),\n 'value cannot be safely converted to a number',\n )\n return Number(v)\n }\n if (v instanceof Uint64Cls) return v.asNumber()\n internalError(`Cannot convert ${v} to number`)\n}\n\nexport const getUint8Array = (v: StubBytesCompat): Uint8Array => {\n return BytesCls.fromCompat(v).asUint8Array()\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 == 'number') return true\n if (typeof v == 'bigint') return true\n return v instanceof Uint64Cls\n}\n\nexport const checkUint64 = (v: bigint): bigint => {\n const u64 = BigInt.asUintN(64, v)\n if (u64 !== v) throw new AvmError(`Uint64 overflow 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 overflow 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 valueOf(): bigint {\n return this.#value\n }\n\n toBytes(): BytesCls {\n return new BytesCls(bigIntToUint8Array(this.#value, 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 return new BytesCls(arrayUtil.arrayAt(this.#v, i))\n }\n\n slice(start: undefined | StubUint64Compat, end: undefined | StubUint64Compat): BytesCls {\n const sliced = arrayUtil.arraySlice(this.#v, start, end)\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 | Uint8Array | 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(hexToUint8Array(hex))\n }\n\n static fromBase64(b64: string): BytesCls {\n return new BytesCls(base64ToUint8Array(b64))\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\n toBigUint(): BigUintCls {\n return new BigUintCls(uint8ArrayToBigInt(this.#v))\n }\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 ArrayUtil {\n arrayAt(arrayLike: Uint8Array, index: StubUint64Compat): Uint8Array\n arrayAt<T>(arrayLike: T[], index: StubUint64Compat): T\n arrayAt<T>(arrayLike: T[] | Uint8Array, index: StubUint64Compat): T | Uint8Array\n arrayAt<T>(arrayLike: T[] | Uint8Array, index: StubUint64Compat): T | Uint8Array {\n const indexNum = getNumber(index)\n if (arrayLike instanceof Uint8Array) {\n const res = arrayLike.slice(indexNum, indexNum === -1 ? undefined : indexNum + 1)\n avmInvariant(res.length, 'Index out of bounds')\n return res\n }\n return arrayLike.at(indexNum) ?? avmError('Index out of bounds')\n }\n arraySlice(arrayLike: Uint8Array, start: undefined | StubUint64Compat, end: undefined | StubUint64Compat): Uint8Array\n arraySlice<T>(arrayLike: T[], start: undefined | StubUint64Compat, end: undefined | StubUint64Compat): T[]\n arraySlice<T>(arrayLike: T[] | Uint8Array, start: undefined | StubUint64Compat, end: undefined | StubUint64Compat): Uint8Array | T[]\n arraySlice<T>(arrayLike: T[] | Uint8Array, start: undefined | StubUint64Compat, end: undefined | StubUint64Compat) {\n const startNum = start === undefined ? undefined : getNumber(start)\n const endNum = end === undefined ? undefined : getNumber(end)\n if (arrayLike instanceof Uint8Array) {\n return arrayLike.slice(startNum, endNum)\n } else {\n return arrayLike.slice(startNum, endNum)\n }\n }\n})()\n","import { CodeError } from './impl/errors'\nimport { BigUintCls, BytesCls, getNumber, Uint64Cls } from './impl/primitives'\n\nexport type Uint64Compat = uint64 | bigint | boolean | number\nexport type BigUintCompat = bigint | bytes | number | boolean\nexport type StringCompat = string\nexport type BytesCompat = bytes | string\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 from a bigint literal\n */\nexport function Uint64(v: bigint): uint64\n/**\n * Create a uint64 from a number literal\n */\nexport function Uint64(v: number): uint64\n/**\n * Create a uint64 from a boolean value. True is 1, False is 0\n */\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 from a bigint literal\n */\nexport function BigUint(v: bigint): biguint\n/**\n * Create a biguint from a boolean value (true = 1, false = 0)\n */\nexport function BigUint(v: boolean): biguint\n/**\n * Create a biguint from a uint64 value\n */\nexport function BigUint(v: uint64): biguint\n/**\n * Create a biguint from a number literal\n */\nexport function BigUint(v: number): biguint\n/**\n * Create a biguint from a byte array interpreted as a big-endian number\n */\nexport function BigUint(v: bytes): biguint\n/**\n * Create a biguint from a string literal containing the decimal digits\n */\nexport function BigUint(v: string): biguint\n/**\n * Create a biguint with the default value of 0\n */\nexport function BigUint(): biguint\nexport function BigUint(v?: BigUintCompat | string): biguint {\n if (typeof v === 'string') v = BigInt(v)\n else if (v === undefined) v = 0n\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 slice(): bytes\n slice(start: Uint64Compat): bytes\n slice(start: Uint64Compat, end: Uint64Compat): bytes\n slice(start?: Uint64Compat, end?: Uint64Compat): bytes\n\n toString(): string\n}\n\n/**\n * Create a byte array from a string interpolation template and compatible replacements\n * @param value\n * @param replacements\n */\nexport function Bytes(value: TemplateStringsArray, ...replacements: BytesCompat[]): bytes\n/**\n * Create a byte array from a utf8 string\n */\nexport function Bytes(value: string): bytes\n/**\n * No op, returns the provided byte array.\n */\nexport function Bytes(value: bytes): bytes\n/**\n * Create a byte array from a biguint value encoded as a variable length big-endian number\n */\nexport function Bytes(value: biguint): bytes\n/**\n * Create a byte array from a uint64 value encoded as a fixed length 64-bit number\n */\nexport function Bytes(value: uint64): bytes\n/**\n * Create a byte array from an Iterable<uint64> where each item is interpreted as a single byte and must be between 0 and 255 inclusively\n */\nexport function Bytes(value: Iterable<uint64>): bytes\n/**\n * Create an empty byte array\n */\nexport function Bytes(): bytes\nexport function Bytes(\n value?: BytesCompat | TemplateStringsArray | biguint | uint64 | Iterable<number>,\n ...replacements: BytesCompat[]\n): bytes {\n if (isTemplateStringsArray(value)) {\n return BytesCls.fromInterpolation(value, replacements).asAlgoTs()\n } else if (typeof value === 'bigint' || value instanceof BigUintCls) {\n return BigUintCls.fromCompat(value).toBytes().asAlgoTs()\n } else if (typeof value === 'number' || value instanceof Uint64Cls) {\n return Uint64Cls.fromCompat(value).toBytes().asAlgoTs()\n } else if (typeof value === 'object' && Symbol.iterator in value) {\n const valueItems = Array.from(value).map((v) => getNumber(v))\n const invalidValue = valueItems.find((v) => v < 0 && v > 255)\n if (invalidValue) {\n throw new CodeError(`Cannot convert ${invalidValue} to a byte`)\n }\n return new BytesCls(new Uint8Array(value)).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 { 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 { ctxMgr } from './execution-context'\nimport { bytes, uint64 } from './primitives'\n\nexport type Account = {\n readonly bytes: bytes\n\n /**\n * Account balance in microalgos\n *\n * Account must be an available resource\n */\n readonly balance: uint64\n\n /**\n * Minimum required balance for account, in microalgos\n *\n * Account must be an available resource\n */\n readonly minBalance: uint64\n\n /**\n * Address the account is rekeyed to\n *\n * Account must be an available resource\n */\n readonly authAddress: Account\n\n /**\n * The total number of uint64 values allocated by this account in Global and Local States.\n *\n * Account must be an available resource\n */\n readonly totalNumUint: uint64\n\n /**\n * The total number of byte array values allocated by this account in Global and Local States.\n *\n * Account must be an available resource\n */\n readonly totalNumByteSlice: uint64\n\n /**\n * The number of extra app code pages used by this account.\n *\n * Account must be an available resource\n */\n readonly totalExtraAppPages: uint64\n\n /**\n * The number of existing apps created by this account.\n *\n * Account must be an available resource\n */\n readonly totalAppsCreated: uint64\n\n /**\n * The number of apps this account is opted into.\n *\n * Account must be an available resource\n */\n readonly totalAppsOptedIn: uint64\n\n /**\n * The number of existing ASAs created by this account.\n *\n * Account must be an available resource\n */\n readonly totalAssetsCreated: uint64\n\n /**\n * The numbers of ASAs held by this account (including ASAs this account created).\n *\n * Account must be an available resource\n */\n readonly totalAssets: uint64\n\n /**\n * The number of existing boxes created by this account's app.\n *\n * Account must be an available resource\n */\n readonly totalBoxes: uint64\n\n /**\n * The total number of bytes used by this account's app's box keys and values.\n *\n * Account must be an available resource\n */\n readonly totalBoxBytes: uint64\n\n /**\n * Returns true if this account is opted in to the specified Asset or Application.\n * Note: Account and Asset/Application must be an available resource\n *\n * @param assetOrApp\n */\n isOptedIn(assetOrApp: Asset | Application): boolean\n}\n\nexport function Account(): Account\nexport function Account(address: bytes): Account\nexport function Account(address?: bytes): Account {\n return ctxMgr.instance.account(address)\n}\n\nexport function Asset(): Asset\nexport function Asset(assetId: uint64): Asset\nexport function Asset(assetId?: uint64): Asset {\n return ctxMgr.instance.asset(assetId)\n}\n/**\n * An Asset on the Algorand network.\n */\nexport type Asset = {\n /**\n * Returns the id of the Asset\n */\n readonly id: uint64\n\n /**\n * Total number of units of this asset\n */\n readonly total: uint64\n\n /**\n * @see AssetParams.decimals\n */\n readonly decimals: uint64\n\n /**\n * Frozen by default or not\n */\n readonly defaultFrozen: boolean\n\n /**\n * Asset unit name\n */\n readonly unitName: bytes\n\n /**\n * Asset name\n */\n readonly name: bytes\n\n /**\n * URL with additional info about the asset\n */\n readonly url: bytes\n\n /**\n * Arbitrary commitment\n */\n readonly metadataHash: bytes\n\n /**\n * Manager address\n */\n readonly manager: Account\n\n /**\n * Reserve address\n */\n readonly reserve: Account\n\n /**\n * Freeze address\n */\n readonly freeze: Account\n\n /**\n * Clawback address\n */\n readonly clawback: Account\n\n /**\n * Creator address\n */\n readonly creator: Account\n\n /**\n * Amount of the asset unit held by this account. Fails if the account has not\n * opted in to the asset.\n * Asset and supplied Account must be an available resource\n * @param account Account\n * @return balance: uint64\n */\n balance(account: Account): uint64\n\n /**\n * Is the asset frozen or not. Fails if the account has not\n * opted in to the asset.\n * Asset and supplied Account must be an available resource\n * @param account Account\n * @return isFrozen: boolean\n */\n frozen(account: Account): boolean\n}\n\nexport function Application(): Application\nexport function Application(applicationId: uint64): Application\nexport function Application(applicationId?: uint64): Application {\n return ctxMgr.instance.application(applicationId)\n}\n\n/**\n * An Application on the Algorand network.\n */\nexport type Application = {\n /**\n * The id of this application on the current network\n */\n readonly id: uint64\n /**\n * Bytecode of Approval Program\n */\n readonly approvalProgram: bytes\n\n /**\n * Bytecode of Clear State Program\n */\n readonly clearStateProgram: bytes\n\n /**\n * Number of uint64 values allowed in Global State\n */\n readonly globalNumUint: uint64\n\n /**\n * Number of byte array values allowed in Global State\n */\n readonly globalNumBytes: uint64\n\n /**\n * Number of uint64 values allowed in Local State\n */\n readonly localNumUint: uint64\n\n /**\n * Number of byte array values allowed in Local State\n */\n readonly localNumBytes: uint64\n\n /**\n * Number of Extra Program Pages of code space\n */\n readonly extraProgramPages: uint64\n\n /**\n * Creator address\n */\n readonly creator: Account\n\n /**\n * Address for which this application has authority\n */\n readonly address: Account\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 { avmError, avmInvariant } from '../impl/errors'\nimport { arrayUtil, BytesCls, getNumber, getUint8Array, isBytes, isUint64 } from '../impl/primitives'\nimport { biguint, BigUintCompat, Bytes, bytes, BytesBacked, StringCompat, Uint64, uint64, Uint64Compat } from '../primitives'\nimport { Account } from '../reference'\nimport { err } from '../util'\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 equals(other: this): boolean {\n return this.bytes.equals(other.bytes)\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}\nexport class Bool {\n #v: boolean\n constructor(v?: boolean) {\n this.#v = v ?? false\n }\n\n get native(): boolean {\n return this.#v\n }\n}\n\nabstract class Arc4ReadonlyArray<TItem extends AbiEncoded> extends AbiEncoded {\n protected items: TItem[]\n protected constructor(items: TItem[]) {\n super()\n this.items = items.slice()\n return new Proxy(this, {\n get(target, prop) {\n if (isUint64(prop)) {\n const idx = getNumber(prop)\n if (idx < target.items.length) return target.items[idx]\n avmError('Index out of bounds')\n }\n return Reflect.get(target, prop)\n },\n set(target, prop, value) {\n if (isUint64(prop)) {\n const idx = getNumber(prop)\n if (idx < target.items.length) {\n target.items[idx] = value\n return true\n }\n avmError('Index out of bounds')\n }\n avmError('Property is not writable')\n },\n })\n }\n\n /**\n * Returns the current length of this array\n */\n get length(): uint64 {\n return Uint64(this.items.length)\n }\n\n /**\n * Returns the item at the given index.\n * Negative indexes are taken from the end.\n * @param index The index of the item to retrieve\n */\n at(index: Uint64Compat): TItem {\n return arrayUtil.arrayAt(this.items, index)\n }\n\n /** @internal\n * Create a new Dynamic array with all items from this array\n */\n slice(): DynamicArray<TItem>\n /** @internal\n * Create a new DynamicArray with all items up till `end`.\n * Negative indexes are taken from the end.\n * @param end An index in which to stop copying items.\n */\n slice(end: Uint64Compat): DynamicArray<TItem>\n /** @internal\n * Create a new DynamicArray with items from `start`, up until `end`\n * Negative indexes are taken from the end.\n * @param start An index in which to start copying items.\n * @param end An index in which to stop copying items\n */\n slice(start: Uint64Compat, end: Uint64Compat): DynamicArray<TItem>\n slice(start?: Uint64Compat, end?: Uint64Compat): DynamicArray<TItem> {\n return new DynamicArray(...arrayUtil.arraySlice(this.items, start, end))\n }\n\n /**\n * Returns an iterator for the items in this array\n */\n [Symbol.iterator](): IterableIterator<TItem> {\n return this.items[Symbol.iterator]()\n }\n\n /**\n * Returns an iterator for a tuple of the indexes and items in this array\n */\n *entries(): IterableIterator<readonly [uint64, TItem]> {\n for (const [idx, item] of this.items.entries()) {\n yield [Uint64(idx), item]\n }\n }\n\n /**\n * Returns an iterator for the indexes in this array\n */\n *keys(): IterableIterator<uint64> {\n for (const idx of this.items.keys()) {\n yield Uint64(idx)\n }\n }\n\n /**\n * Get or set the item at the specified index.\n * Negative indexes are not supported\n */\n [index: uint64]: TItem\n}\n\nexport class StaticArray<TItem extends AbiEncoded, TLength extends number> extends Arc4ReadonlyArray<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 AbiEncoded> extends Arc4ReadonlyArray<TItem> {\n constructor(...items: TItem[]) {\n super(items)\n }\n\n /**\n * Push a number of items into this array\n * @param items The items to be added to this array\n */\n push(...items: TItem[]): void {\n this.items.push(...items)\n }\n\n /**\n * Pop a single item from this array\n */\n pop(): TItem {\n const item = this.items.pop()\n if (item === undefined) avmError('The array is empty')\n return item\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 Arc4ReadonlyArray<Byte> {\n constructor(value?: Account | string | bytes) {\n let byteValues: Uint8Array\n if (value === undefined) {\n byteValues = new Uint8Array(32)\n } else if (typeof value === 'string') {\n // Interpret as base 32\n byteValues = BytesCls.fromBase32(value).asUint8Array()\n } else if (isBytes(value)) {\n byteValues = getUint8Array(value)\n } else {\n byteValues = getUint8Array(value.bytes)\n }\n avmInvariant(byteValues.length === 32, 'Addresses should be 32 bytes')\n super(Array.from(byteValues).map((b) => new Byte(b)))\n }\n\n get native(): Account {\n return Account(Bytes(this.items.map((i) => i.native)))\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,21 +1,11 @@
1
- import { e as encodingUtil, a as errors, p as primitives } from './index-CWa8GSj0.js';
2
- export { B as BaseContract, h as BigUint, j as Bytes, C as Contract, O as OpUpFeeSource, U as Uint64, g as abimethod, i as arc4, c as assert, d as assertMatch, f as ensureBudget, b as err, l as log, m as match, u as urange } from './index-CWa8GSj0.js';
3
- import { c as ctxMgr } from './execution-context-BznYSiE4.js';
1
+ import { e as encodingUtil, a as errors, p as primitives } from './index-hpwu00-P.js';
2
+ export { A as Account, n as Application, k as Asset, B as BaseContract, h as BigUint, j as Bytes, C as Contract, O as OpUpFeeSource, U as Uint64, g as abimethod, i as arc4, c as assert, d as assertMatch, f as ensureBudget, b as err, l as log, m as match, u as urange } from './index-hpwu00-P.js';
4
3
  import { o as opTypes } from './op-BLuSBcoz.js';
5
4
  export { G as Global, T as Txn, a as op } from './op-BLuSBcoz.js';
5
+ import { c as ctxMgr } from './execution-context-BznYSiE4.js';
6
6
  import 'node:buffer';
7
7
  import 'node:util';
8
8
 
9
- function Account(address) {
10
- return ctxMgr.instance.account(address);
11
- }
12
- function Asset(assetId) {
13
- return ctxMgr.instance.asset(assetId);
14
- }
15
- function Application(applicationId) {
16
- return ctxMgr.instance.application(applicationId);
17
- }
18
-
19
9
  var internal = /*#__PURE__*/Object.freeze({
20
10
  __proto__: null,
21
11
  ctxMgr: ctxMgr,
@@ -141,5 +131,5 @@ var TransactionType;
141
131
  TransactionType[TransactionType["ApplicationCall"] = 6] = "ApplicationCall";
142
132
  })(TransactionType || (TransactionType = {}));
143
133
 
144
- export { Account, Application, Asset, Box, BoxMap, BoxRef, GlobalState, LocalState, TransactionType, gtxn, internal, itxn };
134
+ export { Box, BoxMap, BoxRef, GlobalState, LocalState, TransactionType, gtxn, internal, itxn };
145
135
  //# sourceMappingURL=index.mjs.map
package/index.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../src/reference.ts","../src/box.ts","../src/state.ts","../src/itxn.ts","../src/gtxn.ts","../src/transactions.ts"],"sourcesContent":["import { ctxMgr } from './execution-context'\nimport { bytes, uint64 } from './primitives'\n\nexport type Account = {\n readonly bytes: bytes\n\n /**\n * Account balance in microalgos\n *\n * Account must be an available resource\n */\n readonly balance: uint64\n\n /**\n * Minimum required balance for account, in microalgos\n *\n * Account must be an available resource\n */\n readonly minBalance: uint64\n\n /**\n * Address the account is rekeyed to\n *\n * Account must be an available resource\n */\n readonly authAddress: Account\n\n /**\n * The total number of uint64 values allocated by this account in Global and Local States.\n *\n * Account must be an available resource\n */\n readonly totalNumUint: uint64\n\n /**\n * The total number of byte array values allocated by this account in Global and Local States.\n *\n * Account must be an available resource\n */\n readonly totalNumByteSlice: uint64\n\n /**\n * The number of extra app code pages used by this account.\n *\n * Account must be an available resource\n */\n readonly totalExtraAppPages: uint64\n\n /**\n * The number of existing apps created by this account.\n *\n * Account must be an available resource\n */\n readonly totalAppsCreated: uint64\n\n /**\n * The number of apps this account is opted into.\n *\n * Account must be an available resource\n */\n readonly totalAppsOptedIn: uint64\n\n /**\n * The number of existing ASAs created by this account.\n *\n * Account must be an available resource\n */\n readonly totalAssetsCreated: uint64\n\n /**\n * The numbers of ASAs held by this account (including ASAs this account created).\n *\n * Account must be an available resource\n */\n readonly totalAssets: uint64\n\n /**\n * The number of existing boxes created by this account's app.\n *\n * Account must be an available resource\n */\n readonly totalBoxes: uint64\n\n /**\n * The total number of bytes used by this account's app's box keys and values.\n *\n * Account must be an available resource\n */\n readonly totalBoxBytes: uint64\n\n /**\n * Returns true if this account is opted in to the specified Asset or Application.\n * Note: Account and Asset/Application must be an available resource\n *\n * @param assetOrApp\n */\n isOptedIn(assetOrApp: Asset | Application): boolean\n}\n\nexport function Account(): Account\nexport function Account(address: bytes): Account\nexport function Account(address?: bytes): Account {\n return ctxMgr.instance.account(address)\n}\n\nexport function Asset(): Asset\nexport function Asset(assetId: uint64): Asset\nexport function Asset(assetId?: uint64): Asset {\n return ctxMgr.instance.asset(assetId)\n}\n/**\n * An Asset on the Algorand network.\n */\nexport type Asset = {\n /**\n * Returns the id of the Asset\n */\n readonly id: uint64\n\n /**\n * Total number of units of this asset\n */\n readonly total: uint64\n\n /**\n * @see AssetParams.Decimals\n */\n readonly decimals: uint64\n\n /**\n * Frozen by default or not\n */\n readonly defaultFrozen: boolean\n\n /**\n * Asset unit name\n */\n readonly unitName: bytes\n\n /**\n * Asset name\n */\n readonly name: bytes\n\n /**\n * URL with additional info about the asset\n */\n readonly url: bytes\n\n /**\n * Arbitrary commitment\n */\n readonly metadataHash: bytes\n\n /**\n * Manager address\n */\n readonly manager: Account\n\n /**\n * Reserve address\n */\n readonly reserve: Account\n\n /**\n * Freeze address\n */\n readonly freeze: Account\n\n /**\n * Clawback address\n */\n readonly clawback: Account\n\n /**\n * Creator address\n */\n readonly creator: Account\n\n /**\n * Amount of the asset unit held by this account. Fails if the account has not\n * opted in to the asset.\n * Asset and supplied Account must be an available resource\n * @param account Account\n * @return balance: uint64\n */\n balance(account: Account): uint64\n\n /**\n * Is the asset frozen or not. Fails if the account has not\n * opted in to the asset.\n * Asset and supplied Account must be an available resource\n * @param account Account\n * @return isFrozen: boolean\n */\n frozen(account: Account): boolean\n}\n\nexport function Application(): Application\nexport function Application(applicationId: uint64): Application\nexport function Application(applicationId?: uint64): Application {\n return ctxMgr.instance.application(applicationId)\n}\n\n/**\n * An Application on the Algorand network.\n */\nexport type Application = {\n /**\n * The id of this application on the current network\n */\n readonly id: uint64\n /**\n * Bytecode of Approval Program\n */\n readonly approvalProgram: bytes\n\n /**\n * Bytecode of Clear State Program\n */\n readonly clearStateProgram: bytes\n\n /**\n * Number of uint64 values allowed in Global State\n */\n readonly globalNumUint: uint64\n\n /**\n * Number of byte array values allowed in Global State\n */\n readonly globalNumBytes: uint64\n\n /**\n * Number of uint64 values allowed in Local State\n */\n readonly localNumUint: uint64\n\n /**\n * Number of byte array values allowed in Local State\n */\n readonly localNumBytes: uint64\n\n /**\n * Number of Extra Program Pages of code space\n */\n readonly extraProgramPages: uint64\n\n /**\n * Creator address\n */\n readonly creator: Account\n\n /**\n * Address for which this application has authority\n */\n readonly address: Account\n}\n","import { bytes, uint64 } from './primitives'\n\nexport type Box<TValue> = {\n readonly key: bytes\n value: TValue\n\n readonly exists: boolean\n get(options: { default: TValue }): TValue\n delete(): boolean\n maybe(): readonly [TValue, boolean]\n readonly length: uint64\n}\n\nexport type BoxMap<TKey, TValue> = {\n readonly keyPrefix: bytes\n get(key: TKey): TValue\n get(key: TKey, options: { default: TValue }): TValue\n set(key: TKey, value: TValue): void\n delete(key: TKey): boolean\n has(key: TKey): boolean\n maybe(key: TKey): readonly [TValue, boolean]\n length(key: TKey): uint64\n}\n\nexport type BoxRef = {\n readonly key: bytes\n\n readonly exists: boolean\n value: bytes\n get(options: { default: bytes }): bytes\n put(value: bytes): bytes\n splice(start: uint64, end: uint64, value: bytes): void\n replace(start: uint64, value: bytes): void\n extract(start: uint64, length: uint64): bytes\n delete(): boolean\n create(options: { size: uint64 }): boolean\n resize(newSize: uint64): void\n maybe(): readonly [bytes, boolean]\n readonly length: uint64\n}\n\nexport function Box<TValue>(options: { key: bytes | string }): Box<TValue> {\n throw new Error('Not implemented')\n}\n\nexport function BoxMap<TKey, TValue>(options: { keyPrefix: bytes | string }): BoxMap<TKey, TValue> {\n throw new Error('Not implemented')\n}\n\nexport function BoxRef(options: { key: bytes | string }): BoxRef {\n throw new Error('Not implemented')\n}\n","import { ctxMgr } from './execution-context'\nimport { bytes } from './primitives'\nimport { Account } from './reference'\n\n/** A value saved in global state */\nexport type GlobalState<ValueType> = {\n value: ValueType\n delete: () => void\n hasValue: boolean\n}\n\nexport type GlobalStateOptions<ValueType> = { key?: bytes | string; initialValue?: ValueType }\n\n/** A single key in global state */\nexport function GlobalState<ValueType>(options?: GlobalStateOptions<ValueType>): GlobalState<ValueType> {\n return ctxMgr.instance.state.createGlobalState(options)\n}\n\n/** A value saved in local state */\nexport type LocalStateForAccount<ValueType> = {\n value: ValueType\n hasValue: boolean\n delete: () => void\n}\n\nexport type LocalState<ValueType> = {\n (account: Account): LocalStateForAccount<ValueType>\n}\n\n/** A single key in local state */\nexport function LocalState<ValueType>(options?: { key?: bytes | string }): LocalState<ValueType> {\n return ctxMgr.instance.state.createLocalState(options)\n}\n","import { OnCompleteAction } from './arc4'\nimport { ctxMgr } from './execution-context'\nimport { bytes, uint64 } from './primitives'\nimport type { Account, Application, Asset } from './reference'\nimport type * as txnTypes from './transactions'\nimport { DeliberateAny } from './typescript-helpers'\n\nconst isItxn = Symbol('isItxn')\n\nexport interface PaymentInnerTxn extends txnTypes.PaymentTxn {\n [isItxn]?: true\n}\nexport interface KeyRegistrationInnerTxn extends txnTypes.KeyRegistrationTxn {\n [isItxn]?: true\n}\nexport interface AssetConfigInnerTxn extends txnTypes.AssetConfigTxn {\n [isItxn]?: true\n}\nexport interface AssetTransferInnerTxn extends txnTypes.AssetTransferTxn {\n [isItxn]?: true\n}\nexport interface AssetFreezeInnerTxn extends txnTypes.AssetFreezeTxn {\n [isItxn]?: true\n}\nexport interface ApplicationInnerTxn extends txnTypes.ApplicationTxn {\n [isItxn]?: true\n}\n\nexport interface CommonTransactionFields {\n /**\n * 32 byte address\n */\n sender?: Account | string\n\n /**\n * microalgos\n */\n fee?: uint64\n\n /**\n * Any data up to 1024 bytes\n */\n note?: bytes | string\n\n /**\n * 32 byte lease value\n */\n lease?: bytes\n\n /**\n * 32 byte Sender's new AuthAddr\n */\n rekeyTo?: Account | string\n}\n\nexport interface PaymentFields extends CommonTransactionFields {\n /**\n * The amount, in microALGO, to transfer\n *\n */\n amount?: uint64\n /**\n * The address of the receiver\n */\n receiver?: Account\n /**\n * If set, bring the sender balance to 0 and send all remaining balance to this address\n */\n closeRemainderTo?: Account\n}\nexport interface KeyRegistrationFields extends CommonTransactionFields {\n /**\n * 32 byte address\n */\n voteKey?: bytes\n\n /**\n * 32 byte address\n */\n selectionKey?: bytes\n\n /**\n * The first round that the participation key is valid.\n */\n voteFirst?: uint64\n\n /**\n * The last round that the participation key is valid.\n */\n voteLast?: uint64\n\n /**\n * Dilution for the 2-level participation key\n */\n voteKeyDilution?: uint64\n\n /**\n * Marks an account nonparticipating for rewards\n */\n nonparticipation?: boolean\n\n /**\n * 64 byte state proof public key\n */\n stateProofKey?: bytes\n}\nexport interface AssetTransferFields extends CommonTransactionFields {\n /** The asset being transferred */\n xferAsset: Asset\n /** The amount of the asset being transferred */\n assetAmount?: uint64\n /** The clawback target */\n assetSender?: Account\n /** The receiver of the asset */\n assetReceiver?: Account\n /** The address to close the asset to */\n assetCloseTo?: Account\n}\nexport interface AssetConfigFields extends CommonTransactionFields {\n configAsset?: Asset\n manager?: Account\n reserve?: Account\n freeze?: Account\n clawback?: Account\n assetName?: string | bytes\n unitName?: string | bytes\n total?: uint64\n decimals?: uint64\n defaultFrozen?: boolean\n url?: string | bytes\n metadataHash?: bytes\n}\nexport interface AssetFreezeFields extends CommonTransactionFields {\n freezeAsset: Asset | uint64\n freezeAccount?: Account | string\n frozen?: boolean\n}\nexport interface ApplicationCallFields extends CommonTransactionFields {\n appId?: Application | uint64\n approvalProgram?: bytes | readonly [...bytes[]]\n clearStateProgram?: bytes | readonly [...bytes[]]\n onCompletion?: OnCompleteAction | uint64\n globalNumUint?: uint64\n globalNumBytes?: uint64\n localNumUint?: uint64\n localNumBytes?: uint64\n extraProgramPages?: uint64\n appArgs?: readonly [...unknown[]]\n accounts?: readonly [...Account[]]\n assets?: readonly [...Asset[]]\n apps?: readonly [...Application[]]\n}\n\nexport type InnerTransaction<TFields, TTransaction> = {\n submit(): TTransaction\n set(p: Partial<TFields>): void\n copy(): InnerTransaction<TFields, TTransaction>\n}\n\nexport type InnerTxnList = [...InnerTransaction<DeliberateAny, DeliberateAny>[]]\n\nexport type TxnFor<TFields extends InnerTxnList> = TFields extends [\n InnerTransaction<DeliberateAny, infer TTxn>,\n ...infer TRest extends InnerTxnList,\n]\n ? [TTxn, ...TxnFor<TRest>]\n : []\n\nexport type PaymentItxnParams = InnerTransaction<PaymentFields, PaymentInnerTxn>\nexport type KeyRegistrationItxnParams = InnerTransaction<KeyRegistrationFields, KeyRegistrationInnerTxn>\nexport type AssetConfigItxnParams = InnerTransaction<AssetConfigFields, AssetConfigInnerTxn>\nexport type AssetTransferItxnParams = InnerTransaction<AssetTransferFields, AssetTransferInnerTxn>\nexport type AssetFreezeItxnParams = InnerTransaction<AssetFreezeFields, AssetFreezeInnerTxn>\nexport type ApplicationCallItxnParams = InnerTransaction<ApplicationCallFields, ApplicationInnerTxn>\n\nexport function submitGroup<TFields extends InnerTxnList>(...transactionFields: TFields): TxnFor<TFields> {\n return ctxMgr.instance.itxn.submitGroup(...transactionFields)\n}\nexport function payment(fields: PaymentFields): PaymentItxnParams {\n return ctxMgr.instance.itxn.payment(fields)\n}\nexport function keyRegistration(fields: KeyRegistrationFields): KeyRegistrationItxnParams {\n return ctxMgr.instance.itxn.keyRegistration(fields)\n}\nexport function assetConfig(fields: AssetConfigFields): AssetConfigItxnParams {\n return ctxMgr.instance.itxn.assetConfig(fields)\n}\nexport function assetTransfer(fields: AssetTransferFields): AssetTransferItxnParams {\n return ctxMgr.instance.itxn.assetTransfer(fields)\n}\nexport function assetFreeze(fields: AssetFreezeFields): AssetFreezeItxnParams {\n return ctxMgr.instance.itxn.assetFreeze(fields)\n}\nexport function applicationCall(fields: ApplicationCallFields): ApplicationCallItxnParams {\n return ctxMgr.instance.itxn.applicationCall(fields)\n}\n","import { ctxMgr } from './execution-context'\nimport { uint64 } from './primitives'\nimport type * as txnTypes from './transactions'\n\nconst isGtxn = Symbol('isGtxn')\nexport interface PaymentTxn extends txnTypes.PaymentTxn {\n [isGtxn]?: true\n}\nexport interface KeyRegistrationTxn extends txnTypes.KeyRegistrationTxn {\n [isGtxn]?: true\n}\nexport interface AssetConfigTxn extends txnTypes.AssetConfigTxn {\n [isGtxn]?: true\n}\nexport interface AssetTransferTxn extends txnTypes.AssetTransferTxn {\n [isGtxn]?: true\n}\nexport interface AssetFreezeTxn extends txnTypes.AssetFreezeTxn {\n [isGtxn]?: true\n}\nexport interface ApplicationTxn extends txnTypes.ApplicationTxn {\n [isGtxn]?: true\n}\n\nexport type Transaction = PaymentTxn | KeyRegistrationTxn | AssetConfigTxn | AssetTransferTxn | AssetFreezeTxn | ApplicationTxn\n\nexport function Transaction(groupIndex: uint64): Transaction {\n return ctxMgr.instance.gtxn.Transaction(groupIndex)\n}\nexport function PaymentTxn(groupIndex: uint64): PaymentTxn {\n return ctxMgr.instance.gtxn.PaymentTxn(groupIndex)\n}\nexport function KeyRegistrationTxn(groupIndex: uint64): KeyRegistrationTxn {\n return ctxMgr.instance.gtxn.KeyRegistrationTxn(groupIndex)\n}\nexport function AssetConfigTxn(groupIndex: uint64): AssetConfigTxn {\n return ctxMgr.instance.gtxn.AssetConfigTxn(groupIndex)\n}\nexport function AssetTransferTxn(groupIndex: uint64): AssetTransferTxn {\n return ctxMgr.instance.gtxn.AssetTransferTxn(groupIndex)\n}\nexport function AssetFreezeTxn(groupIndex: uint64): AssetFreezeTxn {\n return ctxMgr.instance.gtxn.AssetFreezeTxn(groupIndex)\n}\nexport function ApplicationTxn(groupIndex: uint64): ApplicationTxn {\n return ctxMgr.instance.gtxn.ApplicationTxn(groupIndex)\n}\n","import { OnCompleteActionStr } from './arc4'\nimport { bytes, uint64 } from './primitives'\nimport { Account, Application, Asset } from './reference'\n\n/**\n * The different transaction types available in a transaction\n */\nexport enum TransactionType {\n /**\n * A Payment transaction\n */\n Payment = 1,\n /**\n * A Key Registration transaction\n */\n KeyRegistration = 2,\n /**\n * An Asset Config transaction\n */\n AssetConfig = 3,\n /**\n * An Asset Transfer transaction\n */\n AssetTransfer = 4,\n /**\n * An Asset Freeze transaction\n */\n AssetFreeze = 5,\n /**\n * An Application Call transaction\n */\n ApplicationCall = 6,\n}\n\ninterface TransactionBase {\n /**\n * 32 byte address\n */\n readonly sender: Account\n\n /**\n * microalgos\n */\n readonly fee: uint64\n\n /**\n * round number\n */\n readonly firstValid: uint64\n\n /**\n * UNIX timestamp of block before txn.FirstValid. Fails if negative\n */\n readonly firstValidTime: uint64\n\n /**\n * round number\n */\n readonly lastValid: uint64\n\n /**\n * Any data up to 1024 bytes\n */\n readonly note: bytes\n\n /**\n * 32 byte lease value\n */\n readonly lease: bytes\n\n /**\n * Transaction type as bytes\n */\n readonly typeBytes: bytes\n\n /**\n * Position of this transaction within an atomic group\n * A stand-alone transaction is implicitly element 0 in a group of 1\n */\n readonly groupIndex: uint64\n\n /**\n * The computed ID for this transaction. 32 bytes.\n */\n readonly txnId: bytes\n\n /**\n * 32 byte Sender's new AuthAddr\n */\n readonly rekeyTo: Account\n}\n\nexport interface PaymentTxn extends TransactionBase {\n /**\n * 32 byte address\n */\n readonly receiver: Account\n\n /**\n * microalgos\n */\n readonly amount: uint64\n\n /**\n * 32 byte address\n */\n readonly closeRemainderTo: Account\n\n /**\n * Transaction type as integer\n */\n readonly type: TransactionType.Payment\n}\n\nexport interface KeyRegistrationTxn extends TransactionBase {\n /**\n * 32 byte address\n */\n readonly voteKey: bytes\n\n /**\n * 32 byte address\n */\n readonly selectionKey: bytes\n\n /**\n * The first round that the participation key is valid.\n */\n readonly voteFirst: uint64\n\n /**\n * The last round that the participation key is valid.\n */\n readonly voteLast: uint64\n\n /**\n * Dilution for the 2-level participation key\n */\n readonly voteKeyDilution: uint64\n\n /**\n * Marks an account nonparticipating for rewards\n */\n readonly nonparticipation: boolean\n\n /**\n * 64 byte state proof public key\n */\n readonly stateProofKey: bytes\n /**\n * Transaction type as integer\n */\n readonly type: TransactionType.KeyRegistration\n}\n\nexport interface AssetConfigTxn extends TransactionBase {\n /**\n * Asset ID in asset config transaction\n */\n readonly configAsset: Asset\n\n /**\n * Total number of units of this asset created\n */\n readonly total: uint64\n\n /**\n * Number of digits to display after the decimal place when displaying the asset\n */\n readonly decimals: uint64\n\n /**\n * Whether the asset's slots are frozen by default or not, 0 or 1\n */\n readonly defaultFrozen: boolean\n\n /**\n * Unit name of the asset\n */\n readonly unitName: bytes\n\n /**\n * The asset name\n */\n readonly assetName: bytes\n\n /**\n * URL\n */\n readonly url: bytes\n\n /**\n * 32 byte commitment to unspecified asset metadata\n */\n readonly metadataHash: bytes\n\n /**\n * 32 byte address\n */\n readonly manager: Account\n\n /**\n * 32 byte address\n */\n readonly reserve: Account\n\n /**\n * 32 byte address\n */\n readonly freeze: Account\n\n /**\n * 32 byte address\n */\n readonly clawback: Account\n /**\n * Asset ID allocated by the creation of an ASA\n */\n createdAsset: Asset\n\n /**\n * Transaction type as integer\n */\n readonly type: TransactionType.AssetConfig\n}\n\nexport interface AssetTransferTxn extends TransactionBase {\n /**\n * Asset ID\n */\n readonly xferAsset: Asset\n\n /**\n * value in Asset's units\n */\n readonly assetAmount: uint64\n\n /**\n * 32 byte address. Source of assets if Sender is the Asset's Clawback address.\n */\n readonly assetSender: Account\n\n /**\n * 32 byte address\n */\n readonly assetReceiver: Account\n\n /**\n * 32 byte address\n */\n readonly assetCloseTo: Account\n /**\n * Transaction type as integer\n */\n readonly type: TransactionType.AssetTransfer\n}\n\nexport interface AssetFreezeTxn extends TransactionBase {\n /**\n * Asset ID being frozen or un-frozen\n */\n readonly freezeAsset: Asset\n\n /**\n * 32 byte address of the account whose asset slot is being frozen or un-frozen\n */\n readonly freezeAccount: Account\n\n /**\n * The new frozen value\n */\n readonly frozen: boolean\n /**\n * Transaction type as integer\n */\n readonly type: TransactionType.AssetFreeze\n}\n\nexport interface ApplicationTxn extends TransactionBase {\n /**\n * ApplicationID from ApplicationCall transaction\n */\n readonly appId: Application\n\n /**\n * ApplicationCall transaction on completion action\n */\n readonly onCompletion: OnCompleteActionStr\n\n /**\n * Number of ApplicationArgs\n */\n readonly numAppArgs: uint64\n\n /**\n * Number of ApplicationArgs\n */\n readonly numAccounts: uint64\n\n /**\n * Approval program\n */\n readonly approvalProgram: bytes\n\n /**\n * Clear State program\n */\n readonly clearStateProgram: bytes\n\n /**\n * Number of Assets\n */\n readonly numAssets: uint64\n\n /**\n * Number of Applications\n */\n readonly numApps: uint64\n\n /**\n * Number of global state integers in ApplicationCall\n */\n readonly globalNumUint: uint64\n\n /**\n * Number of global state byteslices in ApplicationCall\n */\n readonly globalNumBytes: uint64\n\n /**\n * Number of local state integers in ApplicationCall\n */\n readonly localNumUint: uint64\n\n /**\n * Number of local state byteslices in ApplicationCall\n */\n readonly localNumBytes: uint64\n\n /**\n * Number of additional pages for each of the application's approval and clear state programs. An ExtraProgramPages of 1 means 2048 more total bytes, or 1024 for each program.\n */\n readonly extraProgramPages: uint64\n\n /**\n * The last message emitted. Empty bytes if none were emitted. Application mode only\n */\n readonly lastLog: bytes\n\n /**\n * Log messages emitted by an application call\n */\n logs(index: uint64): bytes\n\n /**\n * Number of logs\n */\n readonly numLogs: uint64\n\n /**\n * ApplicationID allocated by the creation of an application\n */\n readonly createdApp: Application\n\n /**\n * Number of Approval Program pages\n */\n readonly numApprovalProgramPages: uint64\n\n /**\n * Number of Clear State Program pages\n */\n readonly numClearStateProgramPages: uint64\n\n /**\n * Arguments passed to the application in the ApplicationCall transaction\n * @param index\n */\n appArgs(index: uint64): bytes\n\n /**\n * Accounts listed in the ApplicationCall transaction\n */\n accounts(index: uint64): Account\n\n /**\n * Foreign Assets listed in the ApplicationCall transaction\n */\n assets(index: uint64): Asset\n\n /**\n * Foreign Apps listed in the ApplicationCall transaction\n */\n apps(index: uint64): Application\n\n /**\n * Approval Program as an array of pages\n */\n approvalProgramPages(index: uint64): bytes\n\n /**\n * Clear State Program as an array of pages\n */\n clearStateProgramPages(index: uint64): bytes\n /**\n * Transaction type as integer\n */\n readonly type: TransactionType.ApplicationCall\n}\n\nexport type Transaction = PaymentTxn | KeyRegistrationTxn | AssetConfigTxn | AssetTransferTxn | AssetFreezeTxn | ApplicationTxn\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../src/box.ts","../src/state.ts","../src/itxn.ts","../src/gtxn.ts","../src/transactions.ts"],"sourcesContent":["import { bytes, uint64 } from './primitives'\n\nexport type Box<TValue> = {\n readonly key: bytes\n value: TValue\n\n readonly exists: boolean\n get(options: { default: TValue }): TValue\n delete(): boolean\n maybe(): readonly [TValue, boolean]\n readonly length: uint64\n}\n\nexport type BoxMap<TKey, TValue> = {\n readonly keyPrefix: bytes\n get(key: TKey): TValue\n get(key: TKey, options: { default: TValue }): TValue\n set(key: TKey, value: TValue): void\n delete(key: TKey): boolean\n has(key: TKey): boolean\n maybe(key: TKey): readonly [TValue, boolean]\n length(key: TKey): uint64\n}\n\nexport type BoxRef = {\n readonly key: bytes\n\n readonly exists: boolean\n value: bytes\n get(options: { default: bytes }): bytes\n put(value: bytes): bytes\n splice(start: uint64, end: uint64, value: bytes): void\n replace(start: uint64, value: bytes): void\n extract(start: uint64, length: uint64): bytes\n delete(): boolean\n create(options: { size: uint64 }): boolean\n resize(newSize: uint64): void\n maybe(): readonly [bytes, boolean]\n readonly length: uint64\n}\n\nexport function Box<TValue>(options: { key: bytes | string }): Box<TValue> {\n throw new Error('Not implemented')\n}\n\nexport function BoxMap<TKey, TValue>(options: { keyPrefix: bytes | string }): BoxMap<TKey, TValue> {\n throw new Error('Not implemented')\n}\n\nexport function BoxRef(options: { key: bytes | string }): BoxRef {\n throw new Error('Not implemented')\n}\n","import { ctxMgr } from './execution-context'\nimport { bytes } from './primitives'\nimport { Account } from './reference'\n\n/** A value saved in global state */\nexport type GlobalState<ValueType> = {\n value: ValueType\n delete: () => void\n hasValue: boolean\n}\n\nexport type GlobalStateOptions<ValueType> = { key?: bytes | string; initialValue?: ValueType }\n\n/** A single key in global state */\nexport function GlobalState<ValueType>(options?: GlobalStateOptions<ValueType>): GlobalState<ValueType> {\n return ctxMgr.instance.state.createGlobalState(options)\n}\n\n/** A value saved in local state */\nexport type LocalStateForAccount<ValueType> = {\n value: ValueType\n hasValue: boolean\n delete: () => void\n}\n\nexport type LocalState<ValueType> = {\n (account: Account): LocalStateForAccount<ValueType>\n}\n\n/** A single key in local state */\nexport function LocalState<ValueType>(options?: { key?: bytes | string }): LocalState<ValueType> {\n return ctxMgr.instance.state.createLocalState(options)\n}\n","import { OnCompleteAction } from './arc4'\nimport { ctxMgr } from './execution-context'\nimport { bytes, uint64 } from './primitives'\nimport type { Account, Application, Asset } from './reference'\nimport type * as txnTypes from './transactions'\nimport { DeliberateAny } from './typescript-helpers'\n\nconst isItxn = Symbol('isItxn')\n\nexport interface PaymentInnerTxn extends txnTypes.PaymentTxn {\n [isItxn]?: true\n}\nexport interface KeyRegistrationInnerTxn extends txnTypes.KeyRegistrationTxn {\n [isItxn]?: true\n}\nexport interface AssetConfigInnerTxn extends txnTypes.AssetConfigTxn {\n [isItxn]?: true\n}\nexport interface AssetTransferInnerTxn extends txnTypes.AssetTransferTxn {\n [isItxn]?: true\n}\nexport interface AssetFreezeInnerTxn extends txnTypes.AssetFreezeTxn {\n [isItxn]?: true\n}\nexport interface ApplicationInnerTxn extends txnTypes.ApplicationTxn {\n [isItxn]?: true\n}\n\nexport interface CommonTransactionFields {\n /**\n * 32 byte address\n */\n sender?: Account | string\n\n /**\n * microalgos\n */\n fee?: uint64\n\n /**\n * Any data up to 1024 bytes\n */\n note?: bytes | string\n\n /**\n * 32 byte lease value\n */\n lease?: bytes\n\n /**\n * 32 byte Sender's new AuthAddr\n */\n rekeyTo?: Account | string\n}\n\nexport interface PaymentFields extends CommonTransactionFields {\n /**\n * The amount, in microALGO, to transfer\n *\n */\n amount?: uint64\n /**\n * The address of the receiver\n */\n receiver?: Account\n /**\n * If set, bring the sender balance to 0 and send all remaining balance to this address\n */\n closeRemainderTo?: Account\n}\nexport interface KeyRegistrationFields extends CommonTransactionFields {\n /**\n * 32 byte address\n */\n voteKey?: bytes\n\n /**\n * 32 byte address\n */\n selectionKey?: bytes\n\n /**\n * The first round that the participation key is valid.\n */\n voteFirst?: uint64\n\n /**\n * The last round that the participation key is valid.\n */\n voteLast?: uint64\n\n /**\n * Dilution for the 2-level participation key\n */\n voteKeyDilution?: uint64\n\n /**\n * Marks an account nonparticipating for rewards\n */\n nonparticipation?: boolean\n\n /**\n * 64 byte state proof public key\n */\n stateProofKey?: bytes\n}\nexport interface AssetTransferFields extends CommonTransactionFields {\n /** The asset being transferred */\n xferAsset: Asset\n /** The amount of the asset being transferred */\n assetAmount?: uint64\n /** The clawback target */\n assetSender?: Account\n /** The receiver of the asset */\n assetReceiver?: Account\n /** The address to close the asset to */\n assetCloseTo?: Account\n}\nexport interface AssetConfigFields extends CommonTransactionFields {\n configAsset?: Asset\n manager?: Account\n reserve?: Account\n freeze?: Account\n clawback?: Account\n assetName?: string | bytes\n unitName?: string | bytes\n total?: uint64\n decimals?: uint64\n defaultFrozen?: boolean\n url?: string | bytes\n metadataHash?: bytes\n}\nexport interface AssetFreezeFields extends CommonTransactionFields {\n freezeAsset: Asset | uint64\n freezeAccount?: Account | string\n frozen?: boolean\n}\nexport interface ApplicationCallFields extends CommonTransactionFields {\n appId?: Application | uint64\n approvalProgram?: bytes | readonly [...bytes[]]\n clearStateProgram?: bytes | readonly [...bytes[]]\n onCompletion?: OnCompleteAction | uint64\n globalNumUint?: uint64\n globalNumBytes?: uint64\n localNumUint?: uint64\n localNumBytes?: uint64\n extraProgramPages?: uint64\n appArgs?: readonly [...unknown[]]\n accounts?: readonly [...Account[]]\n assets?: readonly [...Asset[]]\n apps?: readonly [...Application[]]\n}\n\nexport type InnerTransaction<TFields, TTransaction> = {\n submit(): TTransaction\n set(p: Partial<TFields>): void\n copy(): InnerTransaction<TFields, TTransaction>\n}\n\nexport type InnerTxnList = [...InnerTransaction<DeliberateAny, DeliberateAny>[]]\n\nexport type TxnFor<TFields extends InnerTxnList> = TFields extends [\n InnerTransaction<DeliberateAny, infer TTxn>,\n ...infer TRest extends InnerTxnList,\n]\n ? [TTxn, ...TxnFor<TRest>]\n : []\n\nexport type PaymentItxnParams = InnerTransaction<PaymentFields, PaymentInnerTxn>\nexport type KeyRegistrationItxnParams = InnerTransaction<KeyRegistrationFields, KeyRegistrationInnerTxn>\nexport type AssetConfigItxnParams = InnerTransaction<AssetConfigFields, AssetConfigInnerTxn>\nexport type AssetTransferItxnParams = InnerTransaction<AssetTransferFields, AssetTransferInnerTxn>\nexport type AssetFreezeItxnParams = InnerTransaction<AssetFreezeFields, AssetFreezeInnerTxn>\nexport type ApplicationCallItxnParams = InnerTransaction<ApplicationCallFields, ApplicationInnerTxn>\n\nexport function submitGroup<TFields extends InnerTxnList>(...transactionFields: TFields): TxnFor<TFields> {\n return ctxMgr.instance.itxn.submitGroup(...transactionFields)\n}\nexport function payment(fields: PaymentFields): PaymentItxnParams {\n return ctxMgr.instance.itxn.payment(fields)\n}\nexport function keyRegistration(fields: KeyRegistrationFields): KeyRegistrationItxnParams {\n return ctxMgr.instance.itxn.keyRegistration(fields)\n}\nexport function assetConfig(fields: AssetConfigFields): AssetConfigItxnParams {\n return ctxMgr.instance.itxn.assetConfig(fields)\n}\nexport function assetTransfer(fields: AssetTransferFields): AssetTransferItxnParams {\n return ctxMgr.instance.itxn.assetTransfer(fields)\n}\nexport function assetFreeze(fields: AssetFreezeFields): AssetFreezeItxnParams {\n return ctxMgr.instance.itxn.assetFreeze(fields)\n}\nexport function applicationCall(fields: ApplicationCallFields): ApplicationCallItxnParams {\n return ctxMgr.instance.itxn.applicationCall(fields)\n}\n","import { ctxMgr } from './execution-context'\nimport { uint64 } from './primitives'\nimport type * as txnTypes from './transactions'\n\nconst isGtxn = Symbol('isGtxn')\nexport interface PaymentTxn extends txnTypes.PaymentTxn {\n [isGtxn]?: true\n}\nexport interface KeyRegistrationTxn extends txnTypes.KeyRegistrationTxn {\n [isGtxn]?: true\n}\nexport interface AssetConfigTxn extends txnTypes.AssetConfigTxn {\n [isGtxn]?: true\n}\nexport interface AssetTransferTxn extends txnTypes.AssetTransferTxn {\n [isGtxn]?: true\n}\nexport interface AssetFreezeTxn extends txnTypes.AssetFreezeTxn {\n [isGtxn]?: true\n}\nexport interface ApplicationTxn extends txnTypes.ApplicationTxn {\n [isGtxn]?: true\n}\n\nexport type Transaction = PaymentTxn | KeyRegistrationTxn | AssetConfigTxn | AssetTransferTxn | AssetFreezeTxn | ApplicationTxn\n\nexport function Transaction(groupIndex: uint64): Transaction {\n return ctxMgr.instance.gtxn.Transaction(groupIndex)\n}\nexport function PaymentTxn(groupIndex: uint64): PaymentTxn {\n return ctxMgr.instance.gtxn.PaymentTxn(groupIndex)\n}\nexport function KeyRegistrationTxn(groupIndex: uint64): KeyRegistrationTxn {\n return ctxMgr.instance.gtxn.KeyRegistrationTxn(groupIndex)\n}\nexport function AssetConfigTxn(groupIndex: uint64): AssetConfigTxn {\n return ctxMgr.instance.gtxn.AssetConfigTxn(groupIndex)\n}\nexport function AssetTransferTxn(groupIndex: uint64): AssetTransferTxn {\n return ctxMgr.instance.gtxn.AssetTransferTxn(groupIndex)\n}\nexport function AssetFreezeTxn(groupIndex: uint64): AssetFreezeTxn {\n return ctxMgr.instance.gtxn.AssetFreezeTxn(groupIndex)\n}\nexport function ApplicationTxn(groupIndex: uint64): ApplicationTxn {\n return ctxMgr.instance.gtxn.ApplicationTxn(groupIndex)\n}\n","import { OnCompleteActionStr } from './arc4'\nimport { bytes, uint64 } from './primitives'\nimport { Account, Application, Asset } from './reference'\n\n/**\n * The different transaction types available in a transaction\n */\nexport enum TransactionType {\n /**\n * A Payment transaction\n */\n Payment = 1,\n /**\n * A Key Registration transaction\n */\n KeyRegistration = 2,\n /**\n * An Asset Config transaction\n */\n AssetConfig = 3,\n /**\n * An Asset Transfer transaction\n */\n AssetTransfer = 4,\n /**\n * An Asset Freeze transaction\n */\n AssetFreeze = 5,\n /**\n * An Application Call transaction\n */\n ApplicationCall = 6,\n}\n\ninterface TransactionBase {\n /**\n * 32 byte address\n */\n readonly sender: Account\n\n /**\n * microalgos\n */\n readonly fee: uint64\n\n /**\n * round number\n */\n readonly firstValid: uint64\n\n /**\n * UNIX timestamp of block before txn.FirstValid. Fails if negative\n */\n readonly firstValidTime: uint64\n\n /**\n * round number\n */\n readonly lastValid: uint64\n\n /**\n * Any data up to 1024 bytes\n */\n readonly note: bytes\n\n /**\n * 32 byte lease value\n */\n readonly lease: bytes\n\n /**\n * Transaction type as bytes\n */\n readonly typeBytes: bytes\n\n /**\n * Position of this transaction within an atomic group\n * A stand-alone transaction is implicitly element 0 in a group of 1\n */\n readonly groupIndex: uint64\n\n /**\n * The computed ID for this transaction. 32 bytes.\n */\n readonly txnId: bytes\n\n /**\n * 32 byte Sender's new AuthAddr\n */\n readonly rekeyTo: Account\n}\n\nexport interface PaymentTxn extends TransactionBase {\n /**\n * 32 byte address\n */\n readonly receiver: Account\n\n /**\n * microalgos\n */\n readonly amount: uint64\n\n /**\n * 32 byte address\n */\n readonly closeRemainderTo: Account\n\n /**\n * Transaction type as integer\n */\n readonly type: TransactionType.Payment\n}\n\nexport interface KeyRegistrationTxn extends TransactionBase {\n /**\n * 32 byte address\n */\n readonly voteKey: bytes\n\n /**\n * 32 byte address\n */\n readonly selectionKey: bytes\n\n /**\n * The first round that the participation key is valid.\n */\n readonly voteFirst: uint64\n\n /**\n * The last round that the participation key is valid.\n */\n readonly voteLast: uint64\n\n /**\n * Dilution for the 2-level participation key\n */\n readonly voteKeyDilution: uint64\n\n /**\n * Marks an account nonparticipating for rewards\n */\n readonly nonparticipation: boolean\n\n /**\n * 64 byte state proof public key\n */\n readonly stateProofKey: bytes\n /**\n * Transaction type as integer\n */\n readonly type: TransactionType.KeyRegistration\n}\n\nexport interface AssetConfigTxn extends TransactionBase {\n /**\n * Asset ID in asset config transaction\n */\n readonly configAsset: Asset\n\n /**\n * Total number of units of this asset created\n */\n readonly total: uint64\n\n /**\n * Number of digits to display after the decimal place when displaying the asset\n */\n readonly decimals: uint64\n\n /**\n * Whether the asset's slots are frozen by default or not, 0 or 1\n */\n readonly defaultFrozen: boolean\n\n /**\n * Unit name of the asset\n */\n readonly unitName: bytes\n\n /**\n * The asset name\n */\n readonly assetName: bytes\n\n /**\n * URL\n */\n readonly url: bytes\n\n /**\n * 32 byte commitment to unspecified asset metadata\n */\n readonly metadataHash: bytes\n\n /**\n * 32 byte address\n */\n readonly manager: Account\n\n /**\n * 32 byte address\n */\n readonly reserve: Account\n\n /**\n * 32 byte address\n */\n readonly freeze: Account\n\n /**\n * 32 byte address\n */\n readonly clawback: Account\n /**\n * Asset ID allocated by the creation of an ASA\n */\n createdAsset: Asset\n\n /**\n * Transaction type as integer\n */\n readonly type: TransactionType.AssetConfig\n}\n\nexport interface AssetTransferTxn extends TransactionBase {\n /**\n * Asset ID\n */\n readonly xferAsset: Asset\n\n /**\n * value in Asset's units\n */\n readonly assetAmount: uint64\n\n /**\n * 32 byte address. Source of assets if Sender is the Asset's Clawback address.\n */\n readonly assetSender: Account\n\n /**\n * 32 byte address\n */\n readonly assetReceiver: Account\n\n /**\n * 32 byte address\n */\n readonly assetCloseTo: Account\n /**\n * Transaction type as integer\n */\n readonly type: TransactionType.AssetTransfer\n}\n\nexport interface AssetFreezeTxn extends TransactionBase {\n /**\n * Asset ID being frozen or un-frozen\n */\n readonly freezeAsset: Asset\n\n /**\n * 32 byte address of the account whose asset slot is being frozen or un-frozen\n */\n readonly freezeAccount: Account\n\n /**\n * The new frozen value\n */\n readonly frozen: boolean\n /**\n * Transaction type as integer\n */\n readonly type: TransactionType.AssetFreeze\n}\n\nexport interface ApplicationTxn extends TransactionBase {\n /**\n * ApplicationID from ApplicationCall transaction\n */\n readonly appId: Application\n\n /**\n * ApplicationCall transaction on completion action\n */\n readonly onCompletion: OnCompleteActionStr\n\n /**\n * Number of ApplicationArgs\n */\n readonly numAppArgs: uint64\n\n /**\n * Number of ApplicationArgs\n */\n readonly numAccounts: uint64\n\n /**\n * Approval program\n */\n readonly approvalProgram: bytes\n\n /**\n * Clear State program\n */\n readonly clearStateProgram: bytes\n\n /**\n * Number of Assets\n */\n readonly numAssets: uint64\n\n /**\n * Number of Applications\n */\n readonly numApps: uint64\n\n /**\n * Number of global state integers in ApplicationCall\n */\n readonly globalNumUint: uint64\n\n /**\n * Number of global state byteslices in ApplicationCall\n */\n readonly globalNumBytes: uint64\n\n /**\n * Number of local state integers in ApplicationCall\n */\n readonly localNumUint: uint64\n\n /**\n * Number of local state byteslices in ApplicationCall\n */\n readonly localNumBytes: uint64\n\n /**\n * Number of additional pages for each of the application's approval and clear state programs. An ExtraProgramPages of 1 means 2048 more total bytes, or 1024 for each program.\n */\n readonly extraProgramPages: uint64\n\n /**\n * The last message emitted. Empty bytes if none were emitted. Application mode only\n */\n readonly lastLog: bytes\n\n /**\n * Log messages emitted by an application call\n */\n logs(index: uint64): bytes\n\n /**\n * Number of logs\n */\n readonly numLogs: uint64\n\n /**\n * ApplicationID allocated by the creation of an application\n */\n readonly createdApp: Application\n\n /**\n * Number of Approval Program pages\n */\n readonly numApprovalProgramPages: uint64\n\n /**\n * Number of Clear State Program pages\n */\n readonly numClearStateProgramPages: uint64\n\n /**\n * Arguments passed to the application in the ApplicationCall transaction\n * @param index\n */\n appArgs(index: uint64): bytes\n\n /**\n * Accounts listed in the ApplicationCall transaction\n */\n accounts(index: uint64): Account\n\n /**\n * Foreign Assets listed in the ApplicationCall transaction\n */\n assets(index: uint64): Asset\n\n /**\n * Foreign Apps listed in the ApplicationCall transaction\n */\n apps(index: uint64): Application\n\n /**\n * Approval Program as an array of pages\n */\n approvalProgramPages(index: uint64): bytes\n\n /**\n * Clear State Program as an array of pages\n */\n clearStateProgramPages(index: uint64): bytes\n /**\n * Transaction type as integer\n */\n readonly type: TransactionType.ApplicationCall\n}\n\nexport type Transaction = PaymentTxn | KeyRegistrationTxn | AssetConfigTxn | AssetTransferTxn | AssetFreezeTxn | ApplicationTxn\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "**"
5
5
  ],
6
6
  "name": "@algorandfoundation/algorand-typescript",
7
- "version": "0.0.1-alpha.13",
7
+ "version": "0.0.1-alpha.14",
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": {
package/readme.md ADDED
@@ -0,0 +1,3 @@
1
+ # Algorand TypeScript
2
+
3
+ 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.
package/reference.d.ts CHANGED
@@ -98,7 +98,7 @@ export type Asset = {
98
98
  */
99
99
  readonly total: uint64;
100
100
  /**
101
- * @see AssetParams.Decimals
101
+ * @see AssetParams.decimals
102
102
  */
103
103
  readonly decimals: uint64;
104
104
  /**
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-CWa8GSj0.js","sources":["../src/impl/errors.ts","../src/impl/base-32.ts","../src/impl/encoding-util.ts","../src/impl/name-of-type.ts","../src/impl/primitives.ts","../src/primitives.ts","../src/util.ts","../src/base-contract.ts","../src/arc4/encoded-types.ts","../src/arc4/index.ts"],"sourcesContent":["/**\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\nexport function avmInvariant(condition: unknown, message: string): asserts condition {\n if (!condition) {\n throw new AvmError(message)\n }\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","const BASE32_ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'.split('')\n\nconst CHAR_TO_NUM = BASE32_ALPHABET.reduce((acc, cur, index) => ((acc[cur] = index), acc), {} as Record<string, number>)\n\nexport const base32ToUint8Array = (value: string): Uint8Array => {\n let allChars = value\n .split('')\n .filter((c) => c !== '=')\n .map((c) => {\n const cUpper = c.toUpperCase()\n if (cUpper in CHAR_TO_NUM) return CHAR_TO_NUM[cUpper]\n throw new Error(`Invalid base32 char ${c}`)\n })\n const bytes = new Array<number>()\n while (allChars.length) {\n const [a, b, c, d, e, f, g, h, ...rest] = allChars\n if (a === undefined || b === undefined) break\n bytes.push(((a << 3) | (b >>> 2)) & 255)\n if (c === undefined || d === undefined) break\n bytes.push(((b << 6) | (c << 1) | (d >>> 4)) & 255)\n if (e === undefined) break\n bytes.push(((d << 4) | (e >>> 1)) & 255)\n if (f === undefined || g === undefined) break\n bytes.push(((e << 7) | (f << 2) | (g >>> 3)) & 255)\n if (h === undefined) break\n bytes.push(((g << 5) | h) & 255)\n allChars = rest\n }\n return new Uint8Array(bytes)\n}\n\nexport const uint8ArrayToBase32 = (value: Uint8Array): string => {\n let allBytes = Array.from(value)\n let base32str = ''\n while (allBytes.length) {\n const [a, b, c, d, e, ...rest] = allBytes ?? [0, 0, 0, 0, 0]\n\n if (allBytes.length < 1) break\n base32str += BASE32_ALPHABET[a >>> 3]\n base32str += BASE32_ALPHABET[((a << 2) | ((b || 0) >>> 6)) & 31]\n if (allBytes.length < 2) break\n base32str += BASE32_ALPHABET[(b >>> 1) & 31]\n base32str += BASE32_ALPHABET[((b << 4) | (c >>> 4)) & 31]\n if (allBytes.length < 3) break\n base32str += BASE32_ALPHABET[((c << 1) | (d >>> 7)) & 31]\n if (allBytes.length < 4) break\n base32str += BASE32_ALPHABET[(d >>> 2) & 31]\n base32str += BASE32_ALPHABET[((d << 3) | (e >>> 5)) & 31]\n if (allBytes.length < 5) break\n base32str += BASE32_ALPHABET[e & 31]\n allBytes = rest\n }\n return base32str\n}\n","import { Buffer } from 'node:buffer'\nimport { 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 hexToUint8Array = (value: string): Uint8Array => {\n if (value.length % 2 !== 0) {\n // TODO: Verify AVM behaviour is to fail\n throw new AvmError('Hex string must have even number of characters')\n }\n return Uint8Array.from(Buffer.from(value, 'hex'))\n}\n\nexport const base64ToUint8Array = (value: string): Uint8Array => {\n return Uint8Array.from(Buffer.from(value, 'base64'))\n}\n\nexport const 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 { base32ToUint8Array } from './base-32'\nimport {\n base64ToUint8Array,\n bigIntToUint8Array,\n hexToUint8Array,\n uint8ArrayToBigInt,\n uint8ArrayToHex,\n uint8ArrayToUtf8,\n utf8ToUint8Array,\n} from './encoding-util'\nimport { avmError, AvmError, avmInvariant, 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\n/**\n * Convert a StubUint64Compat value into a 'number' if possible.\n * This value may be negative\n * @param v\n */\nexport const getNumber = (v: StubUint64Compat): number => {\n if (typeof v == 'boolean') return v ? 1 : 0\n if (typeof v == 'number') return v\n if (typeof v == 'bigint') {\n avmInvariant(\n v <= BigInt(Number.MAX_SAFE_INTEGER) && v >= BigInt(Number.MIN_SAFE_INTEGER),\n 'value cannot be safely converted to a number',\n )\n return Number(v)\n }\n if (v instanceof Uint64Cls) return v.asNumber()\n internalError(`Cannot convert ${v} to number`)\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 checkUint64 = (v: bigint): bigint => {\n const u64 = BigInt.asUintN(64, v)\n if (u64 !== v) throw new AvmError(`Uint64 overflow 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 overflow 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 valueOf(): bigint {\n return this.#value\n }\n\n toBytes(): BytesCls {\n return new BytesCls(bigIntToUint8Array(this.#value, 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 return new BytesCls(arrayUtil.arrayAt(this.#v, i))\n }\n\n slice(start: undefined | StubUint64Compat, end: undefined | StubUint64Compat): BytesCls {\n const sliced = arrayUtil.arraySlice(this.#v, start, end)\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 | Uint8Array | 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(hexToUint8Array(hex))\n }\n\n static fromBase64(b64: string): BytesCls {\n return new BytesCls(base64ToUint8Array(b64))\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\n toBigUint(): BigUintCls {\n return new BigUintCls(uint8ArrayToBigInt(this.#v))\n }\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 ArrayUtil {\n arrayAt(arrayLike: Uint8Array, index: StubUint64Compat): Uint8Array\n arrayAt<T>(arrayLike: T[], index: StubUint64Compat): T\n arrayAt<T>(arrayLike: T[] | Uint8Array, index: StubUint64Compat): T | Uint8Array\n arrayAt<T>(arrayLike: T[] | Uint8Array, index: StubUint64Compat): T | Uint8Array {\n const indexNum = getNumber(index)\n if (arrayLike instanceof Uint8Array) {\n const res = arrayLike.slice(indexNum, indexNum === -1 ? undefined : indexNum + 1)\n avmInvariant(res.length, 'Index out of bounds')\n return res\n }\n return arrayLike.at(indexNum) ?? avmError('Index out of bounds')\n }\n arraySlice(arrayLike: Uint8Array, start: undefined | StubUint64Compat, end: undefined | StubUint64Compat): Uint8Array\n arraySlice<T>(arrayLike: T[], start: undefined | StubUint64Compat, end: undefined | StubUint64Compat): T[]\n arraySlice<T>(arrayLike: T[] | Uint8Array, start: undefined | StubUint64Compat, end: undefined | StubUint64Compat): Uint8Array | T[]\n arraySlice<T>(arrayLike: T[] | Uint8Array, start: undefined | StubUint64Compat, end: undefined | StubUint64Compat) {\n const startNum = start === undefined ? undefined : getNumber(start)\n const endNum = end === undefined ? undefined : getNumber(end)\n if (arrayLike instanceof Uint8Array) {\n return arrayLike.slice(startNum, endNum)\n } else {\n return arrayLike.slice(startNum, endNum)\n }\n }\n})()\n","import { CodeError } from './impl/errors'\nimport { BigUintCls, BytesCls, getNumber, Uint64Cls } from './impl/primitives'\n\nexport type Uint64Compat = uint64 | bigint | boolean | number\nexport type BigUintCompat = bigint | bytes | number | boolean\nexport type StringCompat = string\nexport type BytesCompat = bytes | string\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 from a bigint literal\n */\nexport function Uint64(v: bigint): uint64\n/**\n * Create a uint64 from a number literal\n */\nexport function Uint64(v: number): uint64\n/**\n * Create a uint64 from a boolean value. True is 1, False is 0\n */\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 from a bigint literal\n */\nexport function BigUint(v: bigint): biguint\n/**\n * Create a biguint from a boolean value (true = 1, false = 0)\n */\nexport function BigUint(v: boolean): biguint\n/**\n * Create a biguint from a uint64 value\n */\nexport function BigUint(v: uint64): biguint\n/**\n * Create a biguint from a number literal\n */\nexport function BigUint(v: number): biguint\n/**\n * Create a biguint from a byte array interpreted as a big-endian number\n */\nexport function BigUint(v: bytes): biguint\n/**\n * Create a biguint from a string literal containing the decimal digits\n */\nexport function BigUint(v: string): biguint\n/**\n * Create a biguint with the default value of 0\n */\nexport function BigUint(): biguint\nexport function BigUint(v?: BigUintCompat | string): biguint {\n if (typeof v === 'string') v = BigInt(v)\n else if (v === undefined) v = 0n\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 slice(): bytes\n slice(start: Uint64Compat): bytes\n slice(start: Uint64Compat, end: Uint64Compat): bytes\n slice(start?: Uint64Compat, end?: Uint64Compat): bytes\n\n toString(): string\n}\n\n/**\n * Create a byte array from a string interpolation template and compatible replacements\n * @param value\n * @param replacements\n */\nexport function Bytes(value: TemplateStringsArray, ...replacements: BytesCompat[]): bytes\n/**\n * Create a byte array from a utf8 string\n */\nexport function Bytes(value: string): bytes\n/**\n * No op, returns the provided byte array.\n */\nexport function Bytes(value: bytes): bytes\n/**\n * Create a byte array from a biguint value encoded as a variable length big-endian number\n */\nexport function Bytes(value: biguint): bytes\n/**\n * Create a byte array from a uint64 value encoded as a fixed length 64-bit number\n */\nexport function Bytes(value: uint64): bytes\n/**\n * Create a byte array from an Iterable<uint64> where each item is interpreted as a single byte and must be between 0 and 255 inclusively\n */\nexport function Bytes(value: Iterable<uint64>): bytes\n/**\n * Create an empty byte array\n */\nexport function Bytes(): bytes\nexport function Bytes(\n value?: BytesCompat | TemplateStringsArray | biguint | uint64 | Iterable<number>,\n ...replacements: BytesCompat[]\n): bytes {\n if (isTemplateStringsArray(value)) {\n return BytesCls.fromInterpolation(value, replacements).asAlgoTs()\n } else if (typeof value === 'bigint' || value instanceof BigUintCls) {\n return BigUintCls.fromCompat(value).toBytes().asAlgoTs()\n } else if (typeof value === 'number' || value instanceof Uint64Cls) {\n return Uint64Cls.fromCompat(value).toBytes().asAlgoTs()\n } else if (typeof value === 'object' && Symbol.iterator in value) {\n const valueItems = Array.from(value).map((v) => getNumber(v))\n const invalidValue = valueItems.find((v) => v < 0 && v > 255)\n if (invalidValue) {\n throw new CodeError(`Cannot convert ${invalidValue} to a byte`)\n }\n return new BytesCls(new Uint8Array(value)).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 { 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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"}