@algorandfoundation/algorand-typescript-testing 1.0.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/abi-metadata.d.ts +16 -0
- package/constants.d.ts +21 -0
- package/context-helpers/internal-context.d.ts +26 -0
- package/decode-logs.d.ts +8 -0
- package/errors.d.ts +5 -0
- package/impl/account.d.ts +31 -0
- package/impl/acct-params.d.ts +5 -0
- package/impl/app-params.d.ts +3 -0
- package/impl/application.d.ts +24 -0
- package/impl/asset-holding.d.ts +2 -0
- package/impl/asset-params.d.ts +3 -0
- package/impl/asset.d.ts +23 -0
- package/impl/crypto.d.ts +12 -0
- package/impl/global.d.ts +18 -0
- package/impl/gtxn.d.ts +2 -0
- package/impl/index.d.ts +11 -0
- package/impl/inner-transactions.d.ts +51 -0
- package/impl/itxn.d.ts +8 -0
- package/impl/pure.d.ts +32 -0
- package/impl/scratch.d.ts +2 -0
- package/impl/transactions.d.ts +139 -0
- package/impl/txn.d.ts +3 -0
- package/index.d.ts +1 -0
- package/index.mjs +3687 -0
- package/index.mjs.map +1 -0
- package/package.json +41 -0
- package/runtime-helpers-B6YRp95T.js +460 -0
- package/runtime-helpers-B6YRp95T.js.map +1 -0
- package/runtime-helpers.d.ts +9 -0
- package/runtime-helpers.mjs +4 -0
- package/runtime-helpers.mjs.map +1 -0
- package/subcontexts/contract-context.d.ts +10 -0
- package/subcontexts/ledger-context.d.ts +27 -0
- package/subcontexts/transaction-context.d.ts +57 -0
- package/test-execution-context.d.ts +45 -0
- package/test-transformer/errors.d.ts +3 -0
- package/test-transformer/helpers.d.ts +2 -0
- package/test-transformer/index.d.ts +6 -0
- package/test-transformer/node-factory.d.ts +10 -0
- package/test-transformer/supported-binary-op-string.d.ts +3 -0
- package/test-transformer/visitors.d.ts +11 -0
- package/test-transformer.mjs +297 -0
- package/test-transformer.mjs.map +1 -0
- package/typescript-helpers.d.ts +9 -0
- package/util.d.ts +26 -0
- package/value-generators/avm.d.ts +23 -0
- package/value-generators/index.d.ts +6 -0
- package/value-generators/txn.d.ts +10 -0
package/package.json
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"scripts": {},
|
|
3
|
+
"files": [
|
|
4
|
+
"**"
|
|
5
|
+
],
|
|
6
|
+
"name": "@algorandfoundation/algorand-typescript-testing",
|
|
7
|
+
"version": "1.0.0-alpha.2",
|
|
8
|
+
"description": "A library which allows you to execute Algorand TypeScript code locally under a test context either emulating or mocking AVM behaviour.",
|
|
9
|
+
"private": false,
|
|
10
|
+
"peerDependencies": {
|
|
11
|
+
"tslib": "^2.6.2"
|
|
12
|
+
},
|
|
13
|
+
"dependencies": {
|
|
14
|
+
"@algorandfoundation/algorand-typescript": "^0.0.1-alpha.2",
|
|
15
|
+
"@algorandfoundation/algokit-utils": "^6.2.1",
|
|
16
|
+
"@algorandfoundation/puya-ts": "^1.0.0-alpha.5",
|
|
17
|
+
"algosdk": "^2.9.0",
|
|
18
|
+
"elliptic": "^6.5.7",
|
|
19
|
+
"js-sha256": "^0.11.0",
|
|
20
|
+
"js-sha3": "^0.9.3",
|
|
21
|
+
"js-sha512": "^0.9.0",
|
|
22
|
+
"tweetnacl": "^1.0.3"
|
|
23
|
+
},
|
|
24
|
+
"module": "./index.mjs",
|
|
25
|
+
"types": "./index.d.ts",
|
|
26
|
+
"type": "module",
|
|
27
|
+
"exports": {
|
|
28
|
+
".": {
|
|
29
|
+
"types": "./index.d.ts",
|
|
30
|
+
"import": "./index.mjs"
|
|
31
|
+
},
|
|
32
|
+
"./runtime-helpers": {
|
|
33
|
+
"types": "./runtime-helpers.d.ts",
|
|
34
|
+
"import": "./runtime-helpers.mjs"
|
|
35
|
+
},
|
|
36
|
+
"./test-transformer": {
|
|
37
|
+
"types": "./test-transformer.d.ts",
|
|
38
|
+
"import": "./test-transformer.mjs"
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
@@ -0,0 +1,460 @@
|
|
|
1
|
+
import { Bytes, internal } from '@algorandfoundation/algorand-typescript';
|
|
2
|
+
import { randomBytes } from 'crypto';
|
|
3
|
+
|
|
4
|
+
const AbiMetaSymbol = Symbol('AbiMetadata');
|
|
5
|
+
const attachAbiMetadata = (contract, methodName, metadata) => {
|
|
6
|
+
const metadatas = (AbiMetaSymbol in contract ? contract[AbiMetaSymbol] : {});
|
|
7
|
+
metadatas[methodName] = metadata;
|
|
8
|
+
if (!(AbiMetaSymbol in contract)) {
|
|
9
|
+
Object.defineProperty(contract, AbiMetaSymbol, {
|
|
10
|
+
value: metadatas,
|
|
11
|
+
writable: true,
|
|
12
|
+
enumerable: false,
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
const captureMethodConfig = (contract, methodName, config) => {
|
|
17
|
+
const metadata = ensureMetadata(contract, methodName);
|
|
18
|
+
metadata.onCreate = config?.onCreate ?? 'disallow';
|
|
19
|
+
metadata.allowActions = [].concat(config?.allowActions ?? 'NoOp');
|
|
20
|
+
};
|
|
21
|
+
const ensureMetadata = (contract, methodName) => {
|
|
22
|
+
if (!hasAbiMetadata(contract)) {
|
|
23
|
+
const contractClass = contract.constructor;
|
|
24
|
+
Object.getOwnPropertyNames(Object.getPrototypeOf(contract)).forEach((name) => {
|
|
25
|
+
attachAbiMetadata(contractClass, name, { methodName: name, methodSelector: name, argTypes: [], returnType: '' });
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
return getAbiMetadata(contract, methodName);
|
|
29
|
+
};
|
|
30
|
+
const hasAbiMetadata = (contract) => {
|
|
31
|
+
const contractClass = contract.constructor;
|
|
32
|
+
return (Object.getOwnPropertySymbols(contractClass).some((s) => s.toString() === AbiMetaSymbol.toString()) || AbiMetaSymbol in contractClass);
|
|
33
|
+
};
|
|
34
|
+
const getAbiMetadata = (contract, methodName) => {
|
|
35
|
+
const contractClass = contract.constructor;
|
|
36
|
+
const s = Object.getOwnPropertySymbols(contractClass).find((s) => s.toString() === AbiMetaSymbol.toString());
|
|
37
|
+
const metadatas = (s ? contractClass[s] : AbiMetaSymbol in contractClass ? contractClass[AbiMetaSymbol] : {});
|
|
38
|
+
return metadatas[methodName];
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
const UINT64_SIZE = 64;
|
|
42
|
+
const UINT512_SIZE = 512;
|
|
43
|
+
const MAX_UINT8 = 2 ** 8 - 1;
|
|
44
|
+
const MAX_UINT64 = 2n ** 64n - 1n;
|
|
45
|
+
const MAX_UINT512 = 2n ** 512n - 1n;
|
|
46
|
+
const MAX_BYTES_SIZE = 4096;
|
|
47
|
+
const MAX_ITEMS_IN_LOG = 32;
|
|
48
|
+
const BITS_IN_BYTE = 8;
|
|
49
|
+
const DEFAULT_ACCOUNT_MIN_BALANCE = 100_000;
|
|
50
|
+
const DEFAULT_MAX_TXN_LIFE = 1_000;
|
|
51
|
+
const DEFAULT_ASSET_CREATE_MIN_BALANCE = 1000_000;
|
|
52
|
+
const DEFAULT_ASSET_OPT_IN_MIN_BALANCE = 10_000;
|
|
53
|
+
// from python code: list(b"\x85Y\xb5\x14x\xfd\x89\xc1vC\xd0]\x15\xa8\xaek\x10\xabG\xbbm\x8a1\x88\x11V\xe6\xbd;\xae\x95\xd1")
|
|
54
|
+
const DEFAULT_GLOBAL_GENESIS_HASH = Bytes(new Uint8Array([
|
|
55
|
+
133, 89, 181, 20, 120, 253, 137, 193, 118, 67, 208, 93, 21, 168, 174, 107, 16, 171, 71, 187, 109, 138, 49, 136, 17, 86, 230, 189, 59,
|
|
56
|
+
174, 149, 209,
|
|
57
|
+
]));
|
|
58
|
+
// algorand encoded address of 32 zero bytes
|
|
59
|
+
const ZERO_ADDRESS = Bytes('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY5HFKQ');
|
|
60
|
+
/**
|
|
61
|
+
"\x09" # pragma version 9
|
|
62
|
+
"\x81\x01" # pushint 1
|
|
63
|
+
*/
|
|
64
|
+
const ALWAYS_APPROVE_TEAL_PROGRAM = Bytes(new Uint8Array([0x09, 0x81, 0x01]));
|
|
65
|
+
// bytes: program (logic) data prefix when signing
|
|
66
|
+
const LOGIC_DATA_PREFIX = Bytes('ProgData');
|
|
67
|
+
//number: minimum transaction fee
|
|
68
|
+
const MIN_TXN_FEE = 1000;
|
|
69
|
+
|
|
70
|
+
const nameOfType = (x) => {
|
|
71
|
+
if (typeof x === 'object') {
|
|
72
|
+
if (x === null)
|
|
73
|
+
return 'Null';
|
|
74
|
+
if (x === undefined)
|
|
75
|
+
return 'undefined';
|
|
76
|
+
if ('constructor' in x) {
|
|
77
|
+
return x.constructor.name;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return typeof x;
|
|
81
|
+
};
|
|
82
|
+
function* iterBigInt(start, end) {
|
|
83
|
+
for (let i = start; i < end; i++) {
|
|
84
|
+
yield BigInt(i);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
const asBigInt = (v) => asUint64Cls(v).asBigInt();
|
|
88
|
+
const asNumber = (v) => asUint64Cls(v).asNumber();
|
|
89
|
+
function extractGenericTypeArgs(t) {
|
|
90
|
+
const match = t.match(/<(.*)>/);
|
|
91
|
+
if (!match)
|
|
92
|
+
return [];
|
|
93
|
+
return match[1].split(',').map((x) => x.trim());
|
|
94
|
+
}
|
|
95
|
+
const asUint64Cls = (val) => internal.primitives.Uint64Cls.fromCompat(val);
|
|
96
|
+
const asBigUintCls = (val) => internal.primitives.BigUintCls.fromCompat(val);
|
|
97
|
+
const asBytesCls = (val) => internal.primitives.BytesCls.fromCompat(val);
|
|
98
|
+
const asUint64 = (val) => asUint64Cls(val).asAlgoTs();
|
|
99
|
+
const asBigUint = (val) => asBigUintCls(val).asAlgoTs();
|
|
100
|
+
const asBytes = (val) => asBytesCls(val).asAlgoTs();
|
|
101
|
+
//TODO: handle arc4 types, bytes backed types
|
|
102
|
+
const toBytes = (val) => {
|
|
103
|
+
const uint64Val = asMaybeUint64Cls(val);
|
|
104
|
+
if (uint64Val !== undefined) {
|
|
105
|
+
return uint64Val.toBytes().asAlgoTs();
|
|
106
|
+
}
|
|
107
|
+
const bigUintVal = asMaybeBigUintCls(val);
|
|
108
|
+
if (bigUintVal !== undefined) {
|
|
109
|
+
return bigUintVal.toBytes().asAlgoTs();
|
|
110
|
+
}
|
|
111
|
+
const bytesVal = asMaybeBytesCls(val);
|
|
112
|
+
if (bytesVal !== undefined) {
|
|
113
|
+
return bytesVal.toBytes().asAlgoTs();
|
|
114
|
+
}
|
|
115
|
+
internal.errors.internalError(`Invalid type for bytes: ${nameOfType(val)}`);
|
|
116
|
+
};
|
|
117
|
+
const asMaybeUint64Cls = (val) => {
|
|
118
|
+
try {
|
|
119
|
+
return internal.primitives.Uint64Cls.fromCompat(val);
|
|
120
|
+
}
|
|
121
|
+
catch (e) {
|
|
122
|
+
if (e instanceof internal.errors.InternalError) ;
|
|
123
|
+
else {
|
|
124
|
+
throw e;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
return undefined;
|
|
128
|
+
};
|
|
129
|
+
const asMaybeBigUintCls = (val) => {
|
|
130
|
+
try {
|
|
131
|
+
return internal.primitives.BigUintCls.fromCompat(val);
|
|
132
|
+
}
|
|
133
|
+
catch (e) {
|
|
134
|
+
if (e instanceof internal.errors.InternalError) ;
|
|
135
|
+
else {
|
|
136
|
+
throw e;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
return undefined;
|
|
140
|
+
};
|
|
141
|
+
const asMaybeBytesCls = (val) => {
|
|
142
|
+
try {
|
|
143
|
+
return internal.primitives.BytesCls.fromCompat(val);
|
|
144
|
+
}
|
|
145
|
+
catch (e) {
|
|
146
|
+
if (e instanceof internal.errors.InternalError) ;
|
|
147
|
+
else {
|
|
148
|
+
throw e;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
return undefined;
|
|
152
|
+
};
|
|
153
|
+
const binaryStringToBytes = (s) => internal.primitives.BytesCls.fromCompat(new Uint8Array(s.match(/.{1,8}/g).map((x) => parseInt(x, 2))));
|
|
154
|
+
const getRandomNumber = (min, max) => {
|
|
155
|
+
return Math.floor(Math.random() * (max - min + 1)) + min;
|
|
156
|
+
};
|
|
157
|
+
const getRandomBigInt = (min, max) => {
|
|
158
|
+
const bigIntMin = BigInt(min);
|
|
159
|
+
const bigIntMax = BigInt(max);
|
|
160
|
+
const randomValue = [...Array(UINT512_SIZE / BITS_IN_BYTE).keys()]
|
|
161
|
+
.map(() => getRandomNumber(0, MAX_UINT8))
|
|
162
|
+
.reduce((acc, x) => acc * 256n + BigInt(x), 0n);
|
|
163
|
+
return (randomValue % (bigIntMax - bigIntMin)) + bigIntMin;
|
|
164
|
+
};
|
|
165
|
+
const getRandomBytes = (length) => asBytesCls(new Uint8Array(randomBytes(length)));
|
|
166
|
+
const ObjectReferenceSymbol = Symbol('ObjectReference');
|
|
167
|
+
const objectRefIter = iterBigInt(1001n, MAX_UINT512);
|
|
168
|
+
const getObjectReference = (obj) => {
|
|
169
|
+
const tryGetReference = (obj) => {
|
|
170
|
+
const s = Object.getOwnPropertySymbols(obj).find((s) => s.toString() === ObjectReferenceSymbol.toString());
|
|
171
|
+
return s ? obj[s] : ObjectReferenceSymbol in obj ? obj[ObjectReferenceSymbol] : undefined;
|
|
172
|
+
};
|
|
173
|
+
const existingRef = tryGetReference(obj);
|
|
174
|
+
if (existingRef !== undefined) {
|
|
175
|
+
return existingRef;
|
|
176
|
+
}
|
|
177
|
+
const ref = objectRefIter.next().value;
|
|
178
|
+
Object.defineProperty(obj, ObjectReferenceSymbol, {
|
|
179
|
+
value: ref,
|
|
180
|
+
enumerable: false,
|
|
181
|
+
writable: false,
|
|
182
|
+
});
|
|
183
|
+
return ref;
|
|
184
|
+
};
|
|
185
|
+
const combineIntoMaxBytePages = (pages) => {
|
|
186
|
+
const combined = pages.reduce((acc, x) => acc.concat(x), asBytesCls(''));
|
|
187
|
+
const totalPages = (asNumber(combined.length) + MAX_BYTES_SIZE - 1) / MAX_BYTES_SIZE;
|
|
188
|
+
const result = [];
|
|
189
|
+
for (let i = 0; i < totalPages; i++) {
|
|
190
|
+
const start = i * MAX_BYTES_SIZE;
|
|
191
|
+
const end = Math.min((i + 1) * MAX_BYTES_SIZE, asNumber(combined.length));
|
|
192
|
+
const page = combined.slice(start, end);
|
|
193
|
+
result.push(page.asAlgoTs());
|
|
194
|
+
}
|
|
195
|
+
return result;
|
|
196
|
+
};
|
|
197
|
+
|
|
198
|
+
function switchableValue(x) {
|
|
199
|
+
if (typeof x === 'boolean')
|
|
200
|
+
return x;
|
|
201
|
+
if (typeof x === 'bigint')
|
|
202
|
+
return x;
|
|
203
|
+
if (typeof x === 'string')
|
|
204
|
+
return x;
|
|
205
|
+
if (x instanceof internal.primitives.AlgoTsPrimitiveCls)
|
|
206
|
+
return x.valueOf();
|
|
207
|
+
internal.errors.internalError(`Cannot convert ${nameOfType(x)} to switchable value`);
|
|
208
|
+
}
|
|
209
|
+
function tryGetBigInt(value) {
|
|
210
|
+
if (typeof value == 'bigint')
|
|
211
|
+
return value;
|
|
212
|
+
if (typeof value == 'number')
|
|
213
|
+
return BigInt(value);
|
|
214
|
+
if (value instanceof internal.primitives.Uint64Cls)
|
|
215
|
+
return value.value;
|
|
216
|
+
if (value instanceof internal.primitives.BigUintCls)
|
|
217
|
+
return value.value;
|
|
218
|
+
return undefined;
|
|
219
|
+
}
|
|
220
|
+
function binaryOp(left, right, op) {
|
|
221
|
+
if (left instanceof internal.primitives.BigUintCls || right instanceof internal.primitives.BigUintCls) {
|
|
222
|
+
return bigUintBinaryOp(left, right, op);
|
|
223
|
+
}
|
|
224
|
+
if (left instanceof internal.primitives.Uint64Cls || right instanceof internal.primitives.Uint64Cls) {
|
|
225
|
+
return uint64BinaryOp(left, right, op);
|
|
226
|
+
}
|
|
227
|
+
if (left instanceof internal.primitives.BytesCls || right instanceof internal.primitives.BytesCls) {
|
|
228
|
+
return bytesBinaryOp(left, right, op);
|
|
229
|
+
}
|
|
230
|
+
const lbi = tryGetBigInt(left);
|
|
231
|
+
const rbi = tryGetBigInt(right);
|
|
232
|
+
if (lbi !== undefined && rbi !== undefined) {
|
|
233
|
+
const result = defaultBinaryOp(lbi, rbi, op);
|
|
234
|
+
if (typeof result === 'boolean') {
|
|
235
|
+
return result;
|
|
236
|
+
}
|
|
237
|
+
if (typeof left === 'number' && typeof right === 'number' && result <= Number.MAX_SAFE_INTEGER) {
|
|
238
|
+
return Number(result);
|
|
239
|
+
}
|
|
240
|
+
return result;
|
|
241
|
+
}
|
|
242
|
+
return defaultBinaryOp(left, right, op);
|
|
243
|
+
}
|
|
244
|
+
function unaryOp(operand, op) {
|
|
245
|
+
if (operand instanceof internal.primitives.Uint64Cls) {
|
|
246
|
+
return uint64UnaryOp(operand, op);
|
|
247
|
+
}
|
|
248
|
+
return defaultUnaryOp(operand, op);
|
|
249
|
+
}
|
|
250
|
+
function uint64BinaryOp(left, right, op) {
|
|
251
|
+
const lbi = internal.primitives.Uint64Cls.fromCompat(left).value;
|
|
252
|
+
const rbi = internal.primitives.Uint64Cls.fromCompat(right).value;
|
|
253
|
+
const result = (function () {
|
|
254
|
+
switch (op) {
|
|
255
|
+
case '+':
|
|
256
|
+
return lbi + rbi;
|
|
257
|
+
case '-':
|
|
258
|
+
return lbi - rbi;
|
|
259
|
+
case '*':
|
|
260
|
+
return lbi * rbi;
|
|
261
|
+
case '**':
|
|
262
|
+
if (lbi === 0n && rbi === 0n) {
|
|
263
|
+
throw internal.errors.codeError('0 ** 0 is undefined');
|
|
264
|
+
}
|
|
265
|
+
return lbi ** rbi;
|
|
266
|
+
case '/':
|
|
267
|
+
return lbi / rbi;
|
|
268
|
+
case '%':
|
|
269
|
+
return lbi % rbi;
|
|
270
|
+
case '>>':
|
|
271
|
+
if (rbi > 63n) {
|
|
272
|
+
throw new internal.errors.CodeError('expected shift <= 63');
|
|
273
|
+
}
|
|
274
|
+
return (lbi >> rbi) & MAX_UINT64;
|
|
275
|
+
case '<<':
|
|
276
|
+
if (rbi > 63n) {
|
|
277
|
+
throw new internal.errors.CodeError('expected shift <= 63');
|
|
278
|
+
}
|
|
279
|
+
return (lbi << rbi) & MAX_UINT64;
|
|
280
|
+
case '>':
|
|
281
|
+
return lbi > rbi;
|
|
282
|
+
case '<':
|
|
283
|
+
return lbi < rbi;
|
|
284
|
+
case '>=':
|
|
285
|
+
return lbi >= rbi;
|
|
286
|
+
case '<=':
|
|
287
|
+
return lbi <= rbi;
|
|
288
|
+
case '===':
|
|
289
|
+
return lbi === rbi;
|
|
290
|
+
case '!==':
|
|
291
|
+
return lbi !== rbi;
|
|
292
|
+
case '&':
|
|
293
|
+
return lbi & rbi;
|
|
294
|
+
case '|':
|
|
295
|
+
return lbi | rbi;
|
|
296
|
+
case '^':
|
|
297
|
+
return lbi ^ rbi;
|
|
298
|
+
default:
|
|
299
|
+
internal.errors.internalError(`Unsupported operator ${op}`);
|
|
300
|
+
}
|
|
301
|
+
})();
|
|
302
|
+
return typeof result === 'boolean' ? result : new internal.primitives.Uint64Cls(result);
|
|
303
|
+
}
|
|
304
|
+
function bigUintBinaryOp(left, right, op) {
|
|
305
|
+
const lbi = internal.primitives.checkBigUint(internal.primitives.BigUintCls.fromCompat(left).value);
|
|
306
|
+
const rbi = internal.primitives.checkBigUint(internal.primitives.BigUintCls.fromCompat(right).value);
|
|
307
|
+
const result = (function () {
|
|
308
|
+
switch (op) {
|
|
309
|
+
case '+':
|
|
310
|
+
return lbi + rbi;
|
|
311
|
+
case '-':
|
|
312
|
+
return lbi - rbi;
|
|
313
|
+
case '*':
|
|
314
|
+
return lbi * rbi;
|
|
315
|
+
case '**':
|
|
316
|
+
if (lbi === 0n && rbi === 0n) {
|
|
317
|
+
throw internal.errors.codeError('0 ** 0 is undefined');
|
|
318
|
+
}
|
|
319
|
+
return lbi ** rbi;
|
|
320
|
+
case '/':
|
|
321
|
+
return lbi / rbi;
|
|
322
|
+
case '%':
|
|
323
|
+
return lbi % rbi;
|
|
324
|
+
case '>>':
|
|
325
|
+
throw new internal.errors.CodeError('BigUint does not support >> operator');
|
|
326
|
+
case '<<':
|
|
327
|
+
throw new internal.errors.CodeError('BigUint does not support << operator');
|
|
328
|
+
case '>':
|
|
329
|
+
return lbi > rbi;
|
|
330
|
+
case '<':
|
|
331
|
+
return lbi < rbi;
|
|
332
|
+
case '>=':
|
|
333
|
+
return lbi >= rbi;
|
|
334
|
+
case '<=':
|
|
335
|
+
return lbi <= rbi;
|
|
336
|
+
case '===':
|
|
337
|
+
return lbi === rbi;
|
|
338
|
+
case '!==':
|
|
339
|
+
return lbi !== rbi;
|
|
340
|
+
case '&':
|
|
341
|
+
return lbi & rbi;
|
|
342
|
+
case '|':
|
|
343
|
+
return lbi | rbi;
|
|
344
|
+
case '^':
|
|
345
|
+
return lbi ^ rbi;
|
|
346
|
+
default:
|
|
347
|
+
internal.errors.internalError(`Unsupported operator ${op}`);
|
|
348
|
+
}
|
|
349
|
+
})();
|
|
350
|
+
if (typeof result === 'boolean') {
|
|
351
|
+
return result;
|
|
352
|
+
}
|
|
353
|
+
if (result < 0) {
|
|
354
|
+
internal.errors.avmError('BigUint underflow');
|
|
355
|
+
}
|
|
356
|
+
return new internal.primitives.BigUintCls(result);
|
|
357
|
+
}
|
|
358
|
+
function bytesBinaryOp(left, right, op) {
|
|
359
|
+
const lbb = internal.primitives.checkBytes(internal.primitives.BytesCls.fromCompat(left).asUint8Array());
|
|
360
|
+
const rbb = internal.primitives.checkBytes(internal.primitives.BytesCls.fromCompat(right).asUint8Array());
|
|
361
|
+
const lbi = internal.encodingUtil.uint8ArrayToBigInt(lbb);
|
|
362
|
+
const rbi = internal.encodingUtil.uint8ArrayToBigInt(rbb);
|
|
363
|
+
const result = (function () {
|
|
364
|
+
switch (op) {
|
|
365
|
+
case '>':
|
|
366
|
+
return lbi > rbi;
|
|
367
|
+
case '<':
|
|
368
|
+
return lbi < rbi;
|
|
369
|
+
case '>=':
|
|
370
|
+
return lbi >= rbi;
|
|
371
|
+
case '<=':
|
|
372
|
+
return lbi <= rbi;
|
|
373
|
+
case '===':
|
|
374
|
+
return lbi === rbi;
|
|
375
|
+
case '!==':
|
|
376
|
+
return lbi !== rbi;
|
|
377
|
+
default:
|
|
378
|
+
internal.errors.internalError(`Unsupported operator ${op}`);
|
|
379
|
+
}
|
|
380
|
+
})();
|
|
381
|
+
return result;
|
|
382
|
+
}
|
|
383
|
+
function defaultBinaryOp(left, right, op) {
|
|
384
|
+
switch (op) {
|
|
385
|
+
case '+':
|
|
386
|
+
return left + right;
|
|
387
|
+
case '-':
|
|
388
|
+
return left - right;
|
|
389
|
+
case '*':
|
|
390
|
+
return left * right;
|
|
391
|
+
case '**':
|
|
392
|
+
if (left === 0n && right === 0n) {
|
|
393
|
+
throw new internal.errors.CodeError('0 ** 0 is undefined');
|
|
394
|
+
}
|
|
395
|
+
return left ** right;
|
|
396
|
+
case '/':
|
|
397
|
+
return left / right;
|
|
398
|
+
case '%':
|
|
399
|
+
return left % right;
|
|
400
|
+
case '>>':
|
|
401
|
+
if (typeof left === 'bigint' && typeof right === 'bigint') {
|
|
402
|
+
if (right > 63n) {
|
|
403
|
+
throw new internal.errors.CodeError('expected shift <= 63');
|
|
404
|
+
}
|
|
405
|
+
return (left >> right) & MAX_UINT64;
|
|
406
|
+
}
|
|
407
|
+
return left >> right;
|
|
408
|
+
case '<<':
|
|
409
|
+
if (typeof left === 'bigint' && typeof right === 'bigint') {
|
|
410
|
+
if (right > 63n) {
|
|
411
|
+
throw new internal.errors.CodeError('expected shift <= 63');
|
|
412
|
+
}
|
|
413
|
+
return (left << right) & MAX_UINT64;
|
|
414
|
+
}
|
|
415
|
+
return left << right;
|
|
416
|
+
case '>':
|
|
417
|
+
return left > right;
|
|
418
|
+
case '<':
|
|
419
|
+
return left < right;
|
|
420
|
+
case '>=':
|
|
421
|
+
return left >= right;
|
|
422
|
+
case '<=':
|
|
423
|
+
return left <= right;
|
|
424
|
+
case '===':
|
|
425
|
+
return left === right;
|
|
426
|
+
case '!==':
|
|
427
|
+
return left !== right;
|
|
428
|
+
case '&':
|
|
429
|
+
return left & right;
|
|
430
|
+
case '|':
|
|
431
|
+
return left | right;
|
|
432
|
+
case '^':
|
|
433
|
+
return left ^ right;
|
|
434
|
+
default:
|
|
435
|
+
internal.errors.internalError(`Unsupported operator ${op}`);
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
function uint64UnaryOp(operand, op) {
|
|
439
|
+
const obi = internal.primitives.Uint64Cls.fromCompat(operand).value;
|
|
440
|
+
switch (op) {
|
|
441
|
+
case '~':
|
|
442
|
+
return ~obi & MAX_UINT64;
|
|
443
|
+
default:
|
|
444
|
+
internal.errors.internalError(`Unsupported operator ${op}`);
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
function defaultUnaryOp(_operand, op) {
|
|
448
|
+
internal.errors.internalError(`Unsupported operator ${op}`);
|
|
449
|
+
}
|
|
450
|
+
const genericTypeMap = new Map();
|
|
451
|
+
function captureGenericTypeInfo(target, t) {
|
|
452
|
+
genericTypeMap.set(target, t);
|
|
453
|
+
return target;
|
|
454
|
+
}
|
|
455
|
+
function getGenericTypeInfo(target) {
|
|
456
|
+
return genericTypeMap.get(target);
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
export { ALWAYS_APPROVE_TEAL_PROGRAM as A, BITS_IN_BYTE as B, toBytes as C, DEFAULT_ACCOUNT_MIN_BALANCE as D, getRandomBigInt as E, captureMethodConfig as F, switchableValue as G, binaryOp as H, unaryOp as I, captureGenericTypeInfo as J, attachAbiMetadata as K, LOGIC_DATA_PREFIX as L, MIN_TXN_FEE as M, UINT64_SIZE as U, ZERO_ADDRESS as Z, asMaybeUint64Cls as a, asUint64 as b, asBigInt as c, asBytesCls as d, asBytes as e, DEFAULT_MAX_TXN_LIFE as f, getObjectReference as g, DEFAULT_ASSET_CREATE_MIN_BALANCE as h, DEFAULT_ASSET_OPT_IN_MIN_BALANCE as i, DEFAULT_GLOBAL_GENESIS_HASH as j, asUint64Cls as k, asMaybeBytesCls as l, asBigUint as m, MAX_BYTES_SIZE as n, MAX_UINT8 as o, binaryStringToBytes as p, MAX_UINT64 as q, asNumber as r, combineIntoMaxBytePages as s, MAX_ITEMS_IN_LOG as t, getRandomBytes as u, getAbiMetadata as v, hasAbiMetadata as w, getGenericTypeInfo as x, extractGenericTypeArgs as y, iterBigInt as z };
|
|
460
|
+
//# sourceMappingURL=runtime-helpers-B6YRp95T.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-helpers-B6YRp95T.js","sources":["../src/abi-metadata.ts","../src/constants.ts","../src/util.ts","../src/runtime-helpers.ts"],"sourcesContent":["import { Contract } from '@algorandfoundation/algorand-typescript'\nimport { AbiMethodConfig, BareMethodConfig, CreateOptions, OnCompleteActionStr } from '@algorandfoundation/algorand-typescript/arc4'\nimport { DeliberateAny } from './typescript-helpers'\n\nexport interface AbiMetadata {\n methodName: string\n methodSelector: string\n argTypes: string[]\n returnType: string\n onCreate?: CreateOptions\n allowActions?: OnCompleteActionStr[]\n}\nconst AbiMetaSymbol = Symbol('AbiMetadata')\nexport const attachAbiMetadata = (contract: { new (): Contract }, methodName: string, metadata: AbiMetadata): void => {\n const metadatas: Record<string, AbiMetadata> = (AbiMetaSymbol in contract ? contract[AbiMetaSymbol] : {}) as Record<string, AbiMetadata>\n metadatas[methodName] = metadata\n if (!(AbiMetaSymbol in contract)) {\n Object.defineProperty(contract, AbiMetaSymbol, {\n value: metadatas,\n writable: true,\n enumerable: false,\n })\n }\n}\n\nexport const captureMethodConfig = <T extends Contract>(\n contract: T,\n methodName: string,\n config?: AbiMethodConfig<T> | BareMethodConfig,\n): void => {\n const metadata = ensureMetadata(contract, methodName)\n metadata.onCreate = config?.onCreate ?? 'disallow'\n metadata.allowActions = ([] as OnCompleteActionStr[]).concat(config?.allowActions ?? 'NoOp')\n}\n\nconst ensureMetadata = <T extends Contract>(contract: T, methodName: string): AbiMetadata => {\n if (!hasAbiMetadata(contract)) {\n const contractClass = contract.constructor as { new (): T }\n Object.getOwnPropertyNames(Object.getPrototypeOf(contract)).forEach((name) => {\n attachAbiMetadata(contractClass, name, { methodName: name, methodSelector: name, argTypes: [], returnType: '' })\n })\n }\n return getAbiMetadata(contract, methodName)\n}\n\nexport const hasAbiMetadata = <T extends Contract>(contract: T): boolean => {\n const contractClass = contract.constructor as { new (): T }\n return (\n Object.getOwnPropertySymbols(contractClass).some((s) => s.toString() === AbiMetaSymbol.toString()) || AbiMetaSymbol in contractClass\n )\n}\n\nexport const getAbiMetadata = <T extends Contract>(contract: T, methodName: string): AbiMetadata => {\n const contractClass = contract.constructor as { new (): T }\n const s = Object.getOwnPropertySymbols(contractClass).find((s) => s.toString() === AbiMetaSymbol.toString())\n const metadatas: Record<string, AbiMetadata> = (\n s ? (contractClass as DeliberateAny)[s] : AbiMetaSymbol in contractClass ? contractClass[AbiMetaSymbol] : {}\n ) as Record<string, AbiMetadata>\n return metadatas[methodName]\n}\n","import { Bytes } from '@algorandfoundation/algorand-typescript'\n\nexport const UINT64_SIZE = 64\nexport const UINT512_SIZE = 512\nexport const MAX_UINT8 = 2 ** 8 - 1\nexport const MAX_UINT64 = 2n ** 64n - 1n\nexport const MAX_UINT512 = 2n ** 512n - 1n\nexport const MAX_BYTES_SIZE = 4096\nexport const MAX_ITEMS_IN_LOG = 32\nexport const BITS_IN_BYTE = 8\nexport const DEFAULT_ACCOUNT_MIN_BALANCE = 100_000\nexport const DEFAULT_MAX_TXN_LIFE = 1_000\nexport const DEFAULT_ASSET_CREATE_MIN_BALANCE = 1000_000\nexport const DEFAULT_ASSET_OPT_IN_MIN_BALANCE = 10_000\n\n// from python code: list(b\"\\x85Y\\xb5\\x14x\\xfd\\x89\\xc1vC\\xd0]\\x15\\xa8\\xaek\\x10\\xabG\\xbbm\\x8a1\\x88\\x11V\\xe6\\xbd;\\xae\\x95\\xd1\")\nexport const DEFAULT_GLOBAL_GENESIS_HASH = Bytes(\n new Uint8Array([\n 133, 89, 181, 20, 120, 253, 137, 193, 118, 67, 208, 93, 21, 168, 174, 107, 16, 171, 71, 187, 109, 138, 49, 136, 17, 86, 230, 189, 59,\n 174, 149, 209,\n ]),\n)\n\n// algorand encoded address of 32 zero bytes\nexport const ZERO_ADDRESS = Bytes('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY5HFKQ')\n\n/**\n\"\\x09\" # pragma version 9\n\"\\x81\\x01\" # pushint 1\n */\nexport const ALWAYS_APPROVE_TEAL_PROGRAM = Bytes(new Uint8Array([0x09, 0x81, 0x01]))\n\n// bytes: program (logic) data prefix when signing\nexport const LOGIC_DATA_PREFIX = Bytes('ProgData')\n\n//number: minimum transaction fee\nexport const MIN_TXN_FEE = 1000\n","import { internal, bytes } from '@algorandfoundation/algorand-typescript'\nimport { randomBytes } from 'crypto'\nimport { BITS_IN_BYTE, MAX_BYTES_SIZE, MAX_UINT512, MAX_UINT8, UINT512_SIZE } from './constants'\nimport { DeliberateAny } from './typescript-helpers'\n\nexport 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\nexport function* iterBigInt(start: bigint, end: bigint): Generator<bigint> {\n for (let i = start; i < end; i++) {\n yield BigInt(i)\n }\n}\n\nexport const asBigInt = (v: internal.primitives.StubUint64Compat): bigint => asUint64Cls(v).asBigInt()\n\nexport const asNumber = (v: internal.primitives.StubUint64Compat): number => asUint64Cls(v).asNumber()\n\nexport function extractGenericTypeArgs(t: string): string[] {\n const match = t.match(/<(.*)>/)\n if (!match) return []\n return match[1].split(',').map((x) => x.trim())\n}\n\nexport const asUint64Cls = (val: internal.primitives.StubUint64Compat) => internal.primitives.Uint64Cls.fromCompat(val)\n\nexport const asBigUintCls = (val: internal.primitives.StubBigUintCompat) => internal.primitives.BigUintCls.fromCompat(val)\n\nexport const asBytesCls = (val: internal.primitives.StubBytesCompat) => internal.primitives.BytesCls.fromCompat(val)\n\nexport const asUint64 = (val: internal.primitives.StubUint64Compat) => asUint64Cls(val).asAlgoTs()\n\nexport const asBigUint = (val: internal.primitives.StubBigUintCompat) => asBigUintCls(val).asAlgoTs()\n\nexport const asBytes = (val: internal.primitives.StubBytesCompat) => asBytesCls(val).asAlgoTs()\n\n//TODO: handle arc4 types, bytes backed types\nexport const toBytes = (val: unknown): bytes => {\n const uint64Val = asMaybeUint64Cls(val)\n if (uint64Val !== undefined) {\n return uint64Val.toBytes().asAlgoTs()\n }\n const bigUintVal = asMaybeBigUintCls(val)\n if (bigUintVal !== undefined) {\n return bigUintVal.toBytes().asAlgoTs()\n }\n const bytesVal = asMaybeBytesCls(val)\n if (bytesVal !== undefined) {\n return bytesVal.toBytes().asAlgoTs()\n }\n internal.errors.internalError(`Invalid type for bytes: ${nameOfType(val)}`)\n}\n\nexport const asMaybeUint64Cls = (val: DeliberateAny) => {\n try {\n return internal.primitives.Uint64Cls.fromCompat(val)\n } catch (e) {\n if (e instanceof internal.errors.InternalError) {\n // swallow error and return undefined\n } else {\n throw e\n }\n }\n return undefined\n}\n\nexport const asMaybeBigUintCls = (val: DeliberateAny) => {\n try {\n return internal.primitives.BigUintCls.fromCompat(val)\n } catch (e) {\n if (e instanceof internal.errors.InternalError) {\n // swallow error and return undefined\n } else {\n throw e\n }\n }\n return undefined\n}\nexport const asMaybeBytesCls = (val: DeliberateAny) => {\n try {\n return internal.primitives.BytesCls.fromCompat(val)\n } catch (e) {\n if (e instanceof internal.errors.InternalError) {\n // swallow error and return undefined\n } else {\n throw e\n }\n }\n return undefined\n}\n\nexport const binaryStringToBytes = (s: string): internal.primitives.BytesCls =>\n internal.primitives.BytesCls.fromCompat(new Uint8Array(s.match(/.{1,8}/g)!.map((x) => parseInt(x, 2))))\n\nexport const getRandomNumber = (min: number, max: number): number => {\n return Math.floor(Math.random() * (max - min + 1)) + min\n}\n\nexport const getRandomBigInt = (min: number | bigint, max: number | bigint): bigint => {\n const bigIntMin = BigInt(min)\n const bigIntMax = BigInt(max)\n const randomValue = [...Array(UINT512_SIZE / BITS_IN_BYTE).keys()]\n .map(() => getRandomNumber(0, MAX_UINT8))\n .reduce((acc, x) => acc * 256n + BigInt(x), 0n)\n return (randomValue % (bigIntMax - bigIntMin)) + bigIntMin\n}\n\nexport const getRandomBytes = (length: number): internal.primitives.BytesCls => asBytesCls(new Uint8Array(randomBytes(length)))\n\nconst NoValue = Symbol('no-value')\ntype LazyInstance<T> = () => T\nexport const Lazy = <T>(factory: () => T): LazyInstance<T> => {\n let val: T | typeof NoValue = NoValue\n\n return () => {\n if (val === NoValue) {\n val = factory()\n }\n return val\n }\n}\n\nconst ObjectReferenceSymbol = Symbol('ObjectReference')\nconst objectRefIter = iterBigInt(1001n, MAX_UINT512)\nexport const getObjectReference = (obj: DeliberateAny): bigint => {\n const tryGetReference = (obj: DeliberateAny): bigint | undefined => {\n const s = Object.getOwnPropertySymbols(obj).find((s) => s.toString() === ObjectReferenceSymbol.toString())\n return s ? obj[s] : ObjectReferenceSymbol in obj ? obj[ObjectReferenceSymbol] : undefined\n }\n const existingRef = tryGetReference(obj)\n if (existingRef !== undefined) {\n return existingRef\n }\n const ref = objectRefIter.next().value\n Object.defineProperty(obj, ObjectReferenceSymbol, {\n value: ref,\n enumerable: false,\n writable: false,\n })\n\n return ref\n}\n\nexport const combineIntoMaxBytePages = (pages: bytes[]): bytes[] => {\n const combined = pages.reduce((acc, x) => acc.concat(x), asBytesCls(''))\n const totalPages = (asNumber(combined.length) + MAX_BYTES_SIZE - 1) / MAX_BYTES_SIZE\n const result = [] as bytes[]\n for (let i = 0; i < totalPages; i++) {\n const start = i * MAX_BYTES_SIZE\n const end = Math.min((i + 1) * MAX_BYTES_SIZE, asNumber(combined.length))\n const page = combined.slice(start, end)\n result.push(page.asAlgoTs())\n }\n return result\n}\n","import { internal } from '@algorandfoundation/algorand-typescript'\nimport { MAX_UINT64 } from './constants'\nimport { DeliberateAny } from './typescript-helpers'\nimport { nameOfType } from './util'\n\nexport { attachAbiMetadata } from './abi-metadata'\n\nexport function switchableValue(x: unknown): bigint | string | boolean {\n if (typeof x === 'boolean') return x\n if (typeof x === 'bigint') return x\n if (typeof x === 'string') return x\n if (x instanceof internal.primitives.AlgoTsPrimitiveCls) return x.valueOf()\n internal.errors.internalError(`Cannot convert ${nameOfType(x)} to switchable value`)\n}\n// export function wrapLiteral(x: unknown) {\n// if (typeof x === 'boolean') return x\n// if (isBytes(x)) return makeBytes(x)\n// if (isUint64(x)) return makeUint64(x)\n// internalError(`Cannot wrap ${nameOfType(x)}`)\n// }\n\ntype BinaryOps = '+' | '-' | '*' | '**' | '/' | '%' | '>' | '>=' | '<' | '<=' | '===' | '!==' | '<<' | '>>' | '&' | '|' | '^'\ntype UnaryOps = '~'\n\nfunction tryGetBigInt(value: unknown): bigint | undefined {\n if (typeof value == 'bigint') return value\n if (typeof value == 'number') return BigInt(value)\n if (value instanceof internal.primitives.Uint64Cls) return value.value\n if (value instanceof internal.primitives.BigUintCls) return value.value\n return undefined\n}\n\nexport function binaryOp(left: unknown, right: unknown, op: BinaryOps) {\n if (left instanceof internal.primitives.BigUintCls || right instanceof internal.primitives.BigUintCls) {\n return bigUintBinaryOp(left, right, op)\n }\n if (left instanceof internal.primitives.Uint64Cls || right instanceof internal.primitives.Uint64Cls) {\n return uint64BinaryOp(left, right, op)\n }\n if (left instanceof internal.primitives.BytesCls || right instanceof internal.primitives.BytesCls) {\n return bytesBinaryOp(left, right, op)\n }\n const lbi = tryGetBigInt(left)\n const rbi = tryGetBigInt(right)\n if (lbi !== undefined && rbi !== undefined) {\n const result = defaultBinaryOp(lbi, rbi, op)\n\n if (typeof result === 'boolean') {\n return result\n }\n\n if (typeof left === 'number' && typeof right === 'number' && result <= Number.MAX_SAFE_INTEGER) {\n return Number(result)\n }\n\n return result\n }\n return defaultBinaryOp(left, right, op)\n}\n\nexport function unaryOp(operand: unknown, op: UnaryOps) {\n if (operand instanceof internal.primitives.Uint64Cls) {\n return uint64UnaryOp(operand, op)\n }\n return defaultUnaryOp(operand, op)\n}\n\nfunction uint64BinaryOp(left: DeliberateAny, right: DeliberateAny, op: BinaryOps): DeliberateAny {\n const lbi = internal.primitives.Uint64Cls.fromCompat(left).value\n const rbi = internal.primitives.Uint64Cls.fromCompat(right).value\n const result = (function () {\n switch (op) {\n case '+':\n return lbi + rbi\n case '-':\n return lbi - rbi\n case '*':\n return lbi * rbi\n case '**':\n if (lbi === 0n && rbi === 0n) {\n throw internal.errors.codeError('0 ** 0 is undefined')\n }\n return lbi ** rbi\n case '/':\n return lbi / rbi\n case '%':\n return lbi % rbi\n case '>>':\n if (rbi > 63n) {\n throw new internal.errors.CodeError('expected shift <= 63')\n }\n return (lbi >> rbi) & MAX_UINT64\n case '<<':\n if (rbi > 63n) {\n throw new internal.errors.CodeError('expected shift <= 63')\n }\n return (lbi << rbi) & MAX_UINT64\n case '>':\n return lbi > rbi\n case '<':\n return lbi < rbi\n case '>=':\n return lbi >= rbi\n case '<=':\n return lbi <= rbi\n case '===':\n return lbi === rbi\n case '!==':\n return lbi !== rbi\n case '&':\n return lbi & rbi\n case '|':\n return lbi | rbi\n case '^':\n return lbi ^ rbi\n default:\n internal.errors.internalError(`Unsupported operator ${op}`)\n }\n })()\n return typeof result === 'boolean' ? result : new internal.primitives.Uint64Cls(result)\n}\n\nfunction bigUintBinaryOp(left: DeliberateAny, right: DeliberateAny, op: BinaryOps): DeliberateAny {\n const lbi = internal.primitives.checkBigUint(internal.primitives.BigUintCls.fromCompat(left).value)\n const rbi = internal.primitives.checkBigUint(internal.primitives.BigUintCls.fromCompat(right).value)\n const result = (function () {\n switch (op) {\n case '+':\n return lbi + rbi\n case '-':\n return lbi - rbi\n case '*':\n return lbi * rbi\n case '**':\n if (lbi === 0n && rbi === 0n) {\n throw internal.errors.codeError('0 ** 0 is undefined')\n }\n return lbi ** rbi\n case '/':\n return lbi / rbi\n case '%':\n return lbi % rbi\n case '>>':\n throw new internal.errors.CodeError('BigUint does not support >> operator')\n case '<<':\n throw new internal.errors.CodeError('BigUint does not support << operator')\n case '>':\n return lbi > rbi\n case '<':\n return lbi < rbi\n case '>=':\n return lbi >= rbi\n case '<=':\n return lbi <= rbi\n case '===':\n return lbi === rbi\n case '!==':\n return lbi !== rbi\n case '&':\n return lbi & rbi\n case '|':\n return lbi | rbi\n case '^':\n return lbi ^ rbi\n default:\n internal.errors.internalError(`Unsupported operator ${op}`)\n }\n })()\n if (typeof result === 'boolean') {\n return result\n }\n\n if (result < 0) {\n internal.errors.avmError('BigUint underflow')\n }\n return new internal.primitives.BigUintCls(result)\n}\n\nfunction bytesBinaryOp(left: DeliberateAny, right: DeliberateAny, op: BinaryOps): DeliberateAny {\n const lbb = internal.primitives.checkBytes(internal.primitives.BytesCls.fromCompat(left).asUint8Array())\n const rbb = internal.primitives.checkBytes(internal.primitives.BytesCls.fromCompat(right).asUint8Array())\n const lbi = internal.encodingUtil.uint8ArrayToBigInt(lbb)\n const rbi = internal.encodingUtil.uint8ArrayToBigInt(rbb)\n\n const result = (function () {\n switch (op) {\n case '>':\n return lbi > rbi\n case '<':\n return lbi < rbi\n case '>=':\n return lbi >= rbi\n case '<=':\n return lbi <= rbi\n case '===':\n return lbi === rbi\n case '!==':\n return lbi !== rbi\n default:\n internal.errors.internalError(`Unsupported operator ${op}`)\n }\n })()\n return result\n}\n\nfunction defaultBinaryOp(left: DeliberateAny, right: DeliberateAny, op: BinaryOps): DeliberateAny {\n switch (op) {\n case '+':\n return left + right\n case '-':\n return left - right\n case '*':\n return left * right\n case '**':\n if (left === 0n && right === 0n) {\n throw new internal.errors.CodeError('0 ** 0 is undefined')\n }\n return left ** right\n case '/':\n return left / right\n case '%':\n return left % right\n case '>>':\n if (typeof left === 'bigint' && typeof right === 'bigint') {\n if (right > 63n) {\n throw new internal.errors.CodeError('expected shift <= 63')\n }\n return (left >> right) & MAX_UINT64\n }\n return left >> right\n case '<<':\n if (typeof left === 'bigint' && typeof right === 'bigint') {\n if (right > 63n) {\n throw new internal.errors.CodeError('expected shift <= 63')\n }\n return (left << right) & MAX_UINT64\n }\n return left << right\n case '>':\n return left > right\n case '<':\n return left < right\n case '>=':\n return left >= right\n case '<=':\n return left <= right\n case '===':\n return left === right\n case '!==':\n return left !== right\n case '&':\n return left & right\n case '|':\n return left | right\n case '^':\n return left ^ right\n default:\n internal.errors.internalError(`Unsupported operator ${op}`)\n }\n}\n\nfunction uint64UnaryOp(operand: DeliberateAny, op: UnaryOps): DeliberateAny {\n const obi = internal.primitives.Uint64Cls.fromCompat(operand).value\n switch (op) {\n case '~':\n return ~obi & MAX_UINT64\n default:\n internal.errors.internalError(`Unsupported operator ${op}`)\n }\n}\n\nfunction defaultUnaryOp(_operand: DeliberateAny, op: UnaryOps): DeliberateAny {\n internal.errors.internalError(`Unsupported operator ${op}`)\n}\n\nconst genericTypeMap = new Map<DeliberateAny, string>()\nexport function captureGenericTypeInfo(target: DeliberateAny, t: string) {\n genericTypeMap.set(target, t)\n return target\n}\n\nexport function getGenericTypeInfo(target: DeliberateAny): string | undefined {\n return genericTypeMap.get(target)\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { DeliberateAny } from './typescript-helpers';
|
|
2
|
+
export { attachAbiMetadata } from './abi-metadata';
|
|
3
|
+
export declare function switchableValue(x: unknown): bigint | string | boolean;
|
|
4
|
+
type BinaryOps = '+' | '-' | '*' | '**' | '/' | '%' | '>' | '>=' | '<' | '<=' | '===' | '!==' | '<<' | '>>' | '&' | '|' | '^';
|
|
5
|
+
type UnaryOps = '~';
|
|
6
|
+
export declare function binaryOp(left: unknown, right: unknown, op: BinaryOps): any;
|
|
7
|
+
export declare function unaryOp(operand: unknown, op: UnaryOps): any;
|
|
8
|
+
export declare function captureGenericTypeInfo(target: DeliberateAny, t: string): any;
|
|
9
|
+
export declare function getGenericTypeInfo(target: DeliberateAny): string | undefined;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import '@algorandfoundation/algorand-typescript';
|
|
2
|
+
export { K as attachAbiMetadata, H as binaryOp, J as captureGenericTypeInfo, x as getGenericTypeInfo, G as switchableValue, I as unaryOp } from './runtime-helpers-B6YRp95T.js';
|
|
3
|
+
import 'crypto';
|
|
4
|
+
//# sourceMappingURL=runtime-helpers.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-helpers.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { BaseContract } from '@algorandfoundation/algorand-typescript';
|
|
2
|
+
import { DeliberateAny } from '../typescript-helpers';
|
|
3
|
+
interface IConstructor<T> {
|
|
4
|
+
new (...args: DeliberateAny[]): T;
|
|
5
|
+
}
|
|
6
|
+
export declare class ContractContext {
|
|
7
|
+
create<T extends BaseContract>(type: IConstructor<T>, ...args: DeliberateAny[]): T;
|
|
8
|
+
private getContractProxyHandler;
|
|
9
|
+
}
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Account, Application, Asset, BaseContract, internal } from '@algorandfoundation/algorand-typescript';
|
|
2
|
+
import { AccountData } from '../impl/account';
|
|
3
|
+
import { ApplicationData } from '../impl/application';
|
|
4
|
+
import { GlobalData } from '../impl/global';
|
|
5
|
+
export declare class LedgerContext {
|
|
6
|
+
appIdIter: Generator<bigint, any, any>;
|
|
7
|
+
assetIdIter: Generator<bigint, any, any>;
|
|
8
|
+
applicationDataMap: Map<bigint, ApplicationData>;
|
|
9
|
+
appIdContractMap: Map<bigint, BaseContract>;
|
|
10
|
+
accountDataMap: Map<string, AccountData>;
|
|
11
|
+
assetDataMap: Map<bigint, import("../typescript-helpers").Mutable<Omit<Asset, "id" | "balance" | "frozen">>>;
|
|
12
|
+
globalData: GlobalData;
|
|
13
|
+
addAppIdContractMap(appId: internal.primitives.StubUint64Compat, contract: BaseContract): void;
|
|
14
|
+
getAsset(assetId: internal.primitives.StubUint64Compat): Asset;
|
|
15
|
+
getApplication(applicationId: internal.primitives.StubUint64Compat): Application;
|
|
16
|
+
getApplicationForContract(contract: BaseContract): Application;
|
|
17
|
+
/**
|
|
18
|
+
* Update asset holdings for account, only specified values will be updated.
|
|
19
|
+
* Account will also be opted-in to asset
|
|
20
|
+
* @param accountAddress
|
|
21
|
+
* @param assetId
|
|
22
|
+
* @param balance
|
|
23
|
+
* @param frozen
|
|
24
|
+
*/
|
|
25
|
+
updateAssetHolding(accountAddress: internal.primitives.StubBytesCompat | Account, assetId: internal.primitives.StubUint64Compat | Asset, balance?: internal.primitives.StubUint64Compat, frozen?: boolean): void;
|
|
26
|
+
patchGlobalData(data: Partial<GlobalData>): void;
|
|
27
|
+
}
|