@algorandfoundation/algokit-utils 1.0.0-beta.8 → 1.0.0-beta.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/account.d.ts +87 -0
  2. package/account.d.ts.map +1 -0
  3. package/account.js +144 -0
  4. package/account.js.map +1 -0
  5. package/algo-amount.d.ts +18 -0
  6. package/algo-amount.d.ts.map +1 -0
  7. package/algo-amount.js +31 -0
  8. package/algo-amount.js.map +1 -0
  9. package/algo-http-client-with-retry.d.ts +14 -0
  10. package/algo-http-client-with-retry.d.ts.map +1 -0
  11. package/algo-http-client-with-retry.js +62 -0
  12. package/algo-http-client-with-retry.js.map +1 -0
  13. package/app.d.ts +189 -0
  14. package/app.d.ts.map +1 -0
  15. package/app.js +265 -0
  16. package/app.js.map +1 -0
  17. package/application-client.d.ts +113 -0
  18. package/application-client.d.ts.map +1 -0
  19. package/application-client.js +258 -0
  20. package/application-client.js.map +1 -0
  21. package/config.d.ts +27 -0
  22. package/config.d.ts.map +1 -0
  23. package/config.js +46 -0
  24. package/config.js.map +1 -0
  25. package/deploy-app.d.ts +164 -0
  26. package/deploy-app.d.ts.map +1 -0
  27. package/deploy-app.js +419 -0
  28. package/deploy-app.js.map +1 -0
  29. package/index.d.ts +12 -0
  30. package/index.d.ts.map +1 -0
  31. package/index.js.map +1 -0
  32. package/indexer-lookup.d.ts +31 -0
  33. package/indexer-lookup.d.ts.map +1 -0
  34. package/indexer-lookup.js +96 -0
  35. package/indexer-lookup.js.map +1 -0
  36. package/localnet.d.ts +54 -0
  37. package/localnet.d.ts.map +1 -0
  38. package/localnet.js +121 -0
  39. package/localnet.js.map +1 -0
  40. package/network-client.d.ts +102 -0
  41. package/network-client.d.ts.map +1 -0
  42. package/network-client.js +182 -0
  43. package/network-client.js.map +1 -0
  44. package/package.json +2 -2
  45. package/transaction.d.ts +157 -0
  46. package/transaction.d.ts.map +1 -0
  47. package/transaction.js +306 -0
  48. package/transaction.js.map +1 -0
  49. package/transfer.d.ts +24 -0
  50. package/transfer.d.ts.map +1 -0
  51. package/transfer.js +33 -0
  52. package/transfer.js.map +1 -0
  53. package/types/algod.d.ts +124 -0
  54. package/types/algod.d.ts.map +1 -0
  55. package/types/algod.js +3 -0
  56. package/types/algod.js.map +1 -0
  57. package/types/appspec.d.ts +78 -0
  58. package/types/appspec.d.ts.map +1 -0
  59. package/types/appspec.js +15 -0
  60. package/types/appspec.js.map +1 -0
  61. package/types/indexer.d.ts +314 -0
  62. package/types/indexer.d.ts.map +1 -0
  63. package/types/indexer.js +25 -0
  64. package/types/indexer.js.map +1 -0
  65. package/urlTokenBaseHTTPClient.d.ts +41 -0
  66. package/urlTokenBaseHTTPClient.d.ts.map +1 -0
  67. package/urlTokenBaseHTTPClient.js +151 -0
  68. package/urlTokenBaseHTTPClient.js.map +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../src/transaction.ts"],"names":[],"mappings":"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"}
package/transaction.js ADDED
@@ -0,0 +1,306 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getTransactionParams = exports.capTransactionFee = exports.waitForConfirmation = exports.sendGroupOfTransactions = exports.sendTransaction = exports.getSenderAddress = exports.encodeTransactionNote = exports.SigningAccount = exports.MultisigAccount = void 0;
7
+ const algosdk_1 = __importDefault(require("algosdk"));
8
+ const buffer_1 = require("buffer");
9
+ const config_1 = require("./config");
10
+ /** Account wrapper that supports partial or full multisig signing */
11
+ class MultisigAccount {
12
+ get params() {
13
+ return this._params;
14
+ }
15
+ get signingAccounts() {
16
+ return this._signingAccounts;
17
+ }
18
+ get addr() {
19
+ return this._addr;
20
+ }
21
+ constructor(multisigParams, signingAccounts) {
22
+ this._params = multisigParams;
23
+ this._signingAccounts = signingAccounts;
24
+ this._addr = algosdk_1.default.multisigAddress(multisigParams);
25
+ }
26
+ sign(transaction) {
27
+ let signedTxn = 'from' in transaction ? undefined : transaction;
28
+ for (const signer of this._signingAccounts) {
29
+ if (signedTxn) {
30
+ signedTxn = algosdk_1.default.appendSignMultisigTransaction(signedTxn, this._params, signer.sk).blob;
31
+ }
32
+ else {
33
+ signedTxn = algosdk_1.default.signMultisigTransaction(transaction, this._params, signer.sk).blob;
34
+ }
35
+ }
36
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
37
+ return signedTxn;
38
+ }
39
+ }
40
+ exports.MultisigAccount = MultisigAccount;
41
+ /** Account wrapper that supports a rekeyed account */
42
+ class SigningAccount {
43
+ /**
44
+ * Algorand address of the sender
45
+ */
46
+ get addr() {
47
+ return this._sender;
48
+ }
49
+ /**
50
+ * Secret key belonging to the signer
51
+ */
52
+ get sk() {
53
+ return this._account.sk;
54
+ }
55
+ /**
56
+ * Algorand account of the underlying signing account
57
+ */
58
+ get signer() {
59
+ return this._account;
60
+ }
61
+ /**
62
+ * Algorand account of the sender address and signer private key
63
+ */
64
+ get sender() {
65
+ return {
66
+ addr: this._sender,
67
+ sk: this._account.sk,
68
+ };
69
+ }
70
+ constructor(account, sender) {
71
+ this._account = account;
72
+ this._sender = sender ?? account.addr;
73
+ }
74
+ }
75
+ exports.SigningAccount = SigningAccount;
76
+ /** Encodes a transaction note into a byte array ready to be included in an Algorand transaction.
77
+ *
78
+ * @param note The transaction note
79
+ * @returns the transaction note ready for inclusion in a transaction
80
+ *
81
+ * Case on the value of `data` this either either be:
82
+ * * `null` | `undefined`: `undefined`
83
+ * * `string`: The string value
84
+ * * Uint8Array: passthrough
85
+ * * Arc2TransactionNote object: ARC-0002 compatible transaction note
86
+ * * Else: The object/value converted into a JSON string representation
87
+ */
88
+ function encodeTransactionNote(note) {
89
+ if (note == null || typeof note === 'undefined') {
90
+ return undefined;
91
+ }
92
+ else if (typeof note === 'object' && note.constructor === Uint8Array) {
93
+ return note;
94
+ }
95
+ else if (typeof note === 'object' && 'dAppName' in note) {
96
+ const arc2Payload = `${note.dAppName}:${note.format}${note.data}`;
97
+ const encoder = new TextEncoder();
98
+ return encoder.encode(arc2Payload);
99
+ }
100
+ else {
101
+ const n = typeof note === 'string' ? note : JSON.stringify(note);
102
+ const encoder = new TextEncoder();
103
+ return encoder.encode(n);
104
+ }
105
+ }
106
+ exports.encodeTransactionNote = encodeTransactionNote;
107
+ /**
108
+ * Returns the public address of the given transaction sender.
109
+ * @param sender A transaction sender
110
+ * @returns The public address
111
+ */
112
+ const getSenderAddress = function (sender) {
113
+ return 'addr' in sender ? sender.addr : sender.address();
114
+ };
115
+ exports.getSenderAddress = getSenderAddress;
116
+ /** Signs and sends the given transaction to the chain
117
+ *
118
+ * @param send The details for the transaction to send, including:
119
+ * * `transaction`: The unsigned transaction
120
+ * * `from`: The account to sign the transaction with: either an account with private key loaded or a logic signature account
121
+ * * `config`: The sending configuration for this transaction
122
+ * @param algod An algod client
123
+ *
124
+ * @returns An object with transaction (`transaction`) and (if `skipWaiting` is `false` or unset) confirmation (`confirmation`)
125
+ */
126
+ const sendTransaction = async function (send, algod) {
127
+ const { transaction, from, sendParams } = send;
128
+ const { skipSending, skipWaiting, maxFee, suppressLog, maxRoundsToWaitForConfirmation } = sendParams ?? {};
129
+ if (maxFee !== undefined) {
130
+ capTransactionFee(transaction, maxFee);
131
+ }
132
+ if (skipSending) {
133
+ return { transaction };
134
+ }
135
+ const signedTransaction = 'sk' in from
136
+ ? transaction.signTxn(from.sk)
137
+ : 'lsig' in from
138
+ ? algosdk_1.default.signLogicSigTransactionObject(transaction, from).blob
139
+ : 'signer' in from
140
+ ? (await from.signer([transaction], [0]))[0]
141
+ : from.sign(transaction);
142
+ await algod.sendRawTransaction(signedTransaction).do();
143
+ config_1.AlgoKitConfig.getLogger(suppressLog).info(`Sent transaction ID ${transaction.txID()} ${transaction.type} from ${(0, exports.getSenderAddress)(from)}`);
144
+ let confirmation = undefined;
145
+ if (!skipWaiting) {
146
+ confirmation = await (0, exports.waitForConfirmation)(transaction.txID(), maxRoundsToWaitForConfirmation ?? 5, algod);
147
+ }
148
+ return { transaction, confirmation };
149
+ };
150
+ exports.sendTransaction = sendTransaction;
151
+ const groupBy = (array, predicate) => array.reduce((acc, value, index, array) => {
152
+ var _a;
153
+ ;
154
+ (acc[_a = predicate(value, index, array)] || (acc[_a] = [])).push(value);
155
+ return acc;
156
+ }, {});
157
+ /**
158
+ * Signs and sends a group of [up to 16](https://developer.algorand.org/docs/get-details/atomic_transfers/#create-transactions) transactions to the chain
159
+ *
160
+ * @param groupSend The group details to send, with:
161
+ * * `transactions`: The array of transactions to send along with their signing account
162
+ * * `sendParams`: The parameters to dictate how the group is sent
163
+ * @param algod An algod client
164
+ * @returns An object with group transaction ID (`groupTransactionId`) and (if `skipWaiting` is `false` or unset) confirmation (`confirmation`)
165
+ */
166
+ const sendGroupOfTransactions = async function (groupSend, algod) {
167
+ const { transactions, sendParams } = groupSend;
168
+ const transactionsToSend = transactions.map((t) => {
169
+ return t.transaction;
170
+ });
171
+ const group = algosdk_1.default.assignGroupID(transactionsToSend);
172
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
173
+ const groupId = buffer_1.Buffer.from(group[0].group).toString('base64');
174
+ config_1.AlgoKitConfig.getLogger(sendParams?.suppressLog).info(`Sending group of transactions (${groupId})`, { transactionsToSend });
175
+ // Sign transactions either using TransactionSigners, or not
176
+ let signedTransactions;
177
+ if (transactions.find((t) => 'signer' in t.signer)) {
178
+ // Validate all or nothing for transaction signers
179
+ if (transactions.find((t) => !('signer' in t.signer))) {
180
+ throw new Error("When issuing a group transaction the signers should either all be TransactionSignerAccount's or all not. " +
181
+ 'Received at least one TransactionSignerAccount, but not all of them so failing the send.');
182
+ }
183
+ // Group transaction signers by signer
184
+ const groupedBySigner = groupBy(transactions.map((t, i) => ({
185
+ signer: t.signer,
186
+ index: i,
187
+ })), (t) => t.signer.addr);
188
+ // Perform the signature, grouped by signer
189
+ const signed = (await Promise.all(Object.values(groupedBySigner).map(async (signature) => {
190
+ const indexes = signature.map((s) => s.index);
191
+ const signed = await signature[0].signer.signer(group, indexes);
192
+ return signed.map((txn, i) => ({
193
+ txn,
194
+ index: indexes[i],
195
+ }));
196
+ }))).flatMap((a) => a);
197
+ // Extract the signed transactions in order
198
+ signedTransactions = signed.sort((s1, s2) => s1.index - s2.index).map((s) => s.txn);
199
+ }
200
+ else {
201
+ signedTransactions = group.map((groupedTransaction, index) => {
202
+ const signer = transactions[index].signer;
203
+ return 'sk' in signer
204
+ ? groupedTransaction.signTxn(signer.sk)
205
+ : 'lsig' in signer
206
+ ? algosdk_1.default.signLogicSigTransactionObject(groupedTransaction, signer).blob
207
+ : 'sign' in signer
208
+ ? signer.sign(groupedTransaction)
209
+ : // This bit will never happen because above if statement
210
+ new Uint8Array();
211
+ });
212
+ }
213
+ config_1.AlgoKitConfig.getLogger(sendParams?.suppressLog).debug(`Signer IDs (${groupId})`, transactions.map((t) => (0, exports.getSenderAddress)(t.signer)));
214
+ config_1.AlgoKitConfig.getLogger(sendParams?.suppressLog).debug(`Transaction IDs (${groupId})`, transactionsToSend.map((t) => t.txID()));
215
+ // https://developer.algorand.org/docs/rest-apis/algod/v2/#post-v2transactions
216
+ await algod.sendRawTransaction(signedTransactions).do();
217
+ config_1.AlgoKitConfig.getLogger(sendParams?.suppressLog).info(`Group transaction (${groupId}) sent with ${transactionsToSend.length} transactions`);
218
+ let confirmations = undefined;
219
+ if (!sendParams?.skipWaiting) {
220
+ confirmations = await Promise.all(transactionsToSend.map(async (t) => await (0, exports.waitForConfirmation)(t.txID(), sendParams?.maxRoundsToWaitForConfirmation ?? 5, algod)));
221
+ }
222
+ return {
223
+ groupId,
224
+ confirmations,
225
+ txIds: transactionsToSend.map((t) => t.txID()),
226
+ };
227
+ };
228
+ exports.sendGroupOfTransactions = sendGroupOfTransactions;
229
+ /**
230
+ * Wait until the transaction is confirmed or rejected, or until `timeout`
231
+ * number of rounds have passed.
232
+ *
233
+ * @param algod An algod client
234
+ * @param transactionId The transaction ID to wait for
235
+ * @param maxRoundsToWait Maximum number of rounds to wait
236
+ *
237
+ * @return Pending transaction information
238
+ * @throws Throws an error if the transaction is not confirmed or rejected in the next `timeout` rounds
239
+ */
240
+ const waitForConfirmation = async function (transactionId, maxRoundsToWait, algod) {
241
+ if (maxRoundsToWait < 0) {
242
+ throw new Error(`Invalid timeout, received ${maxRoundsToWait}, expected > 0`);
243
+ }
244
+ // Get current round
245
+ const status = await algod.status().do();
246
+ if (status === undefined) {
247
+ throw new Error('Unable to get node status');
248
+ }
249
+ // Loop for up to `timeout` rounds looking for a confirmed transaction
250
+ const startRound = status['last-round'] + 1;
251
+ let currentRound = startRound;
252
+ while (currentRound < startRound + maxRoundsToWait) {
253
+ const pendingInfo = (await algod.pendingTransactionInformation(transactionId).do());
254
+ if (pendingInfo !== undefined) {
255
+ const confirmedRound = pendingInfo['confirmed-round'];
256
+ if (confirmedRound && confirmedRound > 0) {
257
+ return pendingInfo;
258
+ }
259
+ else {
260
+ const poolError = pendingInfo['pool-error'];
261
+ if (poolError != null && poolError.length > 0) {
262
+ // If there was a pool error, then the transaction has been rejected!
263
+ throw new Error(`Transaction ${transactionId} was rejected; pool error: ${poolError}`);
264
+ }
265
+ }
266
+ }
267
+ await algod.statusAfterBlock(currentRound).do();
268
+ currentRound++;
269
+ }
270
+ throw new Error(`Transaction ${transactionId} not confirmed after ${maxRoundsToWait} rounds`);
271
+ };
272
+ exports.waitForConfirmation = waitForConfirmation;
273
+ /**
274
+ * Limit the acceptable fee to a defined amount of µALGOs.
275
+ * This also sets the transaction to be flatFee to ensure the transaction only succeeds at
276
+ * the estimated rate.
277
+ * @param transaction The transaction to cap
278
+ * @param maxAcceptableFee The maximum acceptable fee to pay
279
+ */
280
+ function capTransactionFee(transaction, maxAcceptableFee) {
281
+ // If a flat fee hasn't already been defined
282
+ if (!transaction.flatFee) {
283
+ // Once a transaction has been constructed by algosdk, transaction.fee indicates what the total transaction fee
284
+ // Will be based on the current suggested fee-per-byte value.
285
+ if (transaction.fee > maxAcceptableFee.microAlgos) {
286
+ throw new Error(`Cancelled transaction due to high network congestion fees. Algorand suggested fees would cause this transaction to cost ${transaction.fee} µALGOs. Cap for this transaction is ${maxAcceptableFee.microAlgos} µALGOs.`);
287
+ }
288
+ else if (transaction.fee > algosdk_1.default.ALGORAND_MIN_TX_FEE) {
289
+ config_1.AlgoKitConfig.logger.warn(`Algorand network congestion fees are in effect. This transaction will incur a fee of ${transaction.fee} µALGOs.`);
290
+ }
291
+ // Now set the flat on the transaction. Otherwise the network may increase the fee above our cap and perform the transaction.
292
+ transaction.flatFee = true;
293
+ }
294
+ }
295
+ exports.capTransactionFee = capTransactionFee;
296
+ /**
297
+ * Returns suggested transaction parameters from algod unless some are already provided.
298
+ * @param params Optionally provide parameters to use
299
+ * @param algod Algod algod
300
+ * @returns The suggested transaction parameters
301
+ */
302
+ async function getTransactionParams(params, algod) {
303
+ return params ?? (await algod.getTransactionParams().do());
304
+ }
305
+ exports.getTransactionParams = getTransactionParams;
306
+ //# sourceMappingURL=transaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction.js","sourceRoot":"","sources":["../src/transaction.ts"],"names":[],"mappings":"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"}
package/transfer.d.ts ADDED
@@ -0,0 +1,24 @@
1
+ import { Algodv2, SuggestedParams } from 'algosdk';
2
+ import { AlgoAmount } from './algo-amount';
3
+ import { SendTransactionFrom, SendTransactionParams, SendTransactionResult, TransactionNote } from './transaction';
4
+ interface AlgoTransferParams extends SendTransactionParams {
5
+ /** The account (with private key loaded) that will send the µALGOs */
6
+ from: SendTransactionFrom;
7
+ /** The account address that will receive the ALGOs */
8
+ to: string;
9
+ /** The amount to send */
10
+ amount: AlgoAmount;
11
+ /** Optional transaction parameters */
12
+ transactionParams?: SuggestedParams;
13
+ /** The (optional) transaction note */
14
+ note?: TransactionNote;
15
+ }
16
+ /**
17
+ * Transfer ALGOs between two accounts.
18
+ * @param transfer The transfer definition
19
+ * @param algod An algod client
20
+ * @returns The transaction object and optionally the confirmation if it was sent to the chain (`skipSending` is `false` or unset)
21
+ */
22
+ export declare function transferAlgos(transfer: AlgoTransferParams, algod: Algodv2): Promise<SendTransactionResult>;
23
+ export {};
24
+ //# sourceMappingURL=transfer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transfer.d.ts","sourceRoot":"","sources":["../src/transfer.ts"],"names":[],"mappings":"AAAA,OAAgB,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAE1C,OAAO,EAKL,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,eAAe,EAChB,MAAM,eAAe,CAAA;AAEtB,UAAU,kBAAmB,SAAQ,qBAAqB;IACxD,sEAAsE;IACtE,IAAI,EAAE,mBAAmB,CAAA;IACzB,sDAAsD;IACtD,EAAE,EAAE,MAAM,CAAA;IACV,yBAAyB;IACzB,MAAM,EAAE,UAAU,CAAA;IAClB,sCAAsC;IACtC,iBAAiB,CAAC,EAAE,eAAe,CAAA;IACnC,sCAAsC;IACtC,IAAI,CAAC,EAAE,eAAe,CAAA;CACvB;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,QAAQ,EAAE,kBAAkB,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAkBhH"}
package/transfer.js ADDED
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.transferAlgos = void 0;
7
+ const algosdk_1 = __importDefault(require("algosdk"));
8
+ const config_1 = require("./config");
9
+ const transaction_1 = require("./transaction");
10
+ /**
11
+ * Transfer ALGOs between two accounts.
12
+ * @param transfer The transfer definition
13
+ * @param algod An algod client
14
+ * @returns The transaction object and optionally the confirmation if it was sent to the chain (`skipSending` is `false` or unset)
15
+ */
16
+ async function transferAlgos(transfer, algod) {
17
+ const { from, to, amount, note, transactionParams, ...sendParams } = transfer;
18
+ const transaction = algosdk_1.default.makePaymentTxnWithSuggestedParamsFromObject({
19
+ from: (0, transaction_1.getSenderAddress)(from),
20
+ to: to,
21
+ amount: amount.microAlgos,
22
+ note: (0, transaction_1.encodeTransactionNote)(note),
23
+ suggestedParams: await (0, transaction_1.getTransactionParams)(transactionParams, algod),
24
+ closeRemainderTo: undefined,
25
+ rekeyTo: undefined,
26
+ });
27
+ if (!sendParams.skipSending) {
28
+ config_1.AlgoKitConfig.getLogger(sendParams.suppressLog).debug(`Transferring ${amount.microAlgos}µALGOs from ${(0, transaction_1.getSenderAddress)(from)} to ${to}`);
29
+ }
30
+ return (0, transaction_1.sendTransaction)({ transaction, from, sendParams }, algod);
31
+ }
32
+ exports.transferAlgos = transferAlgos;
33
+ //# sourceMappingURL=transfer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transfer.js","sourceRoot":"","sources":["../src/transfer.ts"],"names":[],"mappings":";;;;;;AAAA,sDAA2D;AAE3D,qCAAwC;AACxC,+CASsB;AAetB;;;;;GAKG;AACI,KAAK,UAAU,aAAa,CAAC,QAA4B,EAAE,KAAc;IAC9E,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,GAAG,UAAU,EAAE,GAAG,QAAQ,CAAA;IAE7E,MAAM,WAAW,GAAG,iBAAO,CAAC,2CAA2C,CAAC;QACtE,IAAI,EAAE,IAAA,8BAAgB,EAAC,IAAI,CAAC;QAC5B,EAAE,EAAE,EAAE;QACN,MAAM,EAAE,MAAM,CAAC,UAAU;QACzB,IAAI,EAAE,IAAA,mCAAqB,EAAC,IAAI,CAAC;QACjC,eAAe,EAAE,MAAM,IAAA,kCAAoB,EAAC,iBAAiB,EAAE,KAAK,CAAC;QACrE,gBAAgB,EAAE,SAAS;QAC3B,OAAO,EAAE,SAAS;KACnB,CAAC,CAAA;IAEF,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;QAC3B,sBAAa,CAAC,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,gBAAgB,MAAM,CAAC,UAAU,eAAe,IAAA,8BAAgB,EAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;KACzI;IAED,OAAO,IAAA,6BAAe,EAAC,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,KAAK,CAAC,CAAA;AAClE,CAAC;AAlBD,sCAkBC"}
@@ -0,0 +1,124 @@
1
+ import { EncodedSignedTransaction } from 'algosdk';
2
+ /** The response from the pending transaction API @see https://developer.algorand.org/docs/rest-apis/algod/v2/#get-v2transactionspendingtxid */
3
+ export interface PendingTransactionResponse {
4
+ /**
5
+ * The application index if the transaction was found and it created an
6
+ * application.
7
+ */
8
+ 'application-index'?: number;
9
+ /**
10
+ * The number of the asset's unit that were transferred to the close-to address.
11
+ */
12
+ 'asset-closing-amount'?: number;
13
+ /**
14
+ * The asset index if the transaction was found and it created an asset.
15
+ */
16
+ 'asset-index'?: number;
17
+ /**
18
+ * Rewards in microalgos applied to the close remainder to account.
19
+ */
20
+ 'close-rewards'?: number;
21
+ /**
22
+ * Closing amount for the transaction.
23
+ */
24
+ 'closing-amount'?: number;
25
+ /**
26
+ * The round where this transaction was confirmed, if present.
27
+ */
28
+ 'confirmed-round'?: number;
29
+ /**
30
+ * (gd) Global state key/value changes for the application being executed by this
31
+ * transaction.
32
+ */
33
+ 'global-state-delta'?: Record<string, EvalDelta>[];
34
+ /**
35
+ * Inner transactions produced by application execution.
36
+ */
37
+ 'inner-txns'?: PendingTransactionResponse[];
38
+ /**
39
+ * (ld) Local state key/value changes for the application being executed by this
40
+ * transaction.
41
+ */
42
+ 'local-state-delta'?: Record<string, EvalDelta>[];
43
+ /**
44
+ * (lg) Logs for the application being executed by this transaction.
45
+ */
46
+ logs?: Uint8Array[];
47
+ /** Indicates that the transaction was kicked out of this node's transaction pool (and specifies why that happened).
48
+ * An empty string indicates the transaction wasn't kicked out of this node's txpool due to an error. */
49
+ 'pool-error': string;
50
+ /**
51
+ * Rewards in µALGOs applied to the receiver account.
52
+ */
53
+ 'receiver-rewards'?: number;
54
+ /**
55
+ * Rewards in µALGOs applied to the sender account.
56
+ */
57
+ 'sender-rewards'?: number;
58
+ /**
59
+ * The raw signed transaction.
60
+ */
61
+ txn: EncodedSignedTransaction;
62
+ }
63
+ /** Represents a TEAL value delta @see https://developer.algorand.org/docs/rest-apis/algod/v2/#evaldelta */
64
+ interface EvalDelta {
65
+ action: number;
66
+ bytes: string;
67
+ uint: number;
68
+ }
69
+ /** The response from the application API @see https://developer.algorand.org/docs/rest-apis/algod/v2/#get-v2applicationsapplication-id */
70
+ export interface ApplicationResponse {
71
+ id: number;
72
+ params: ApplicationParams;
73
+ }
74
+ /** Stores the global information associated with an application @see https://developer.algorand.org/docs/rest-apis/algod/v2/#applicationparams */
75
+ interface ApplicationParams {
76
+ /** Address of the account that created the app */
77
+ creator: string;
78
+ /** Base64 encoded TEAL approval program */
79
+ 'approval-program': string;
80
+ /** Base64 encoded TEAL clear state program */
81
+ 'clear-state-program': string;
82
+ /** The amount of extra program pages available to this app. */
83
+ 'extra-program-pages'?: number;
84
+ /** Current global state values */
85
+ 'global-state'?: {
86
+ key: string;
87
+ value: TealValue;
88
+ }[];
89
+ /** Global state schema */
90
+ 'global-state-schema'?: ApplicationStateSchema;
91
+ /** Local state schema */
92
+ 'local-state-schema'?: ApplicationStateSchema;
93
+ }
94
+ /**
95
+ * Represents a TEAL value @see https://developer.algorand.org/docs/rest-apis/algod/v2/#tealvalue
96
+ */
97
+ type TealValue = {
98
+ /**
99
+ * (tt) value type. Value `1` refers to **bytes**, value `2` refers to **uint**
100
+ */
101
+ type: 1;
102
+ /**
103
+ * (tb) bytes value.
104
+ */
105
+ bytes: string;
106
+ } | {
107
+ /**
108
+ * (tt) value type. Value `1` refers to **bytes**, value `2` refers to **uint**
109
+ */
110
+ type: 2;
111
+ /**
112
+ * (ui) uint value.
113
+ */
114
+ uint: number | bigint;
115
+ };
116
+ /** Specifies maximums on the number of each type that may be stored @see https://developer.algorand.org/docs/rest-apis/algod/v2/#applicationstateschema */
117
+ export interface ApplicationStateSchema {
118
+ /** [nbs] num of byte slices */
119
+ 'num-byte-slice': number;
120
+ /** [nui] num of uints */
121
+ 'num-uint': number;
122
+ }
123
+ export {};
124
+ //# sourceMappingURL=algod.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"algod.d.ts","sourceRoot":"","sources":["../../src/types/algod.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAA;AAElD,+IAA+I;AAC/I,MAAM,WAAW,0BAA0B;IACzC;;;OAGG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B;;OAEG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAC/B;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B;;;OAGG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,CAAA;IAClD;;OAEG;IACH,YAAY,CAAC,EAAE,0BAA0B,EAAE,CAAA;IAC3C;;;OAGG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,CAAA;IACjD;;OAEG;IACH,IAAI,CAAC,EAAE,UAAU,EAAE,CAAA;IACnB;4GACwG;IACxG,YAAY,EAAE,MAAM,CAAA;IACpB;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB;;OAEG;IACH,GAAG,EAAE,wBAAwB,CAAA;CAC9B;AAED,2GAA2G;AAC3G,UAAU,SAAS;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;CACb;AAED,0IAA0I;AAC1I,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,iBAAiB,CAAA;CAC1B;AAED,kJAAkJ;AAClJ,UAAU,iBAAiB;IACzB,kDAAkD;IAClD,OAAO,EAAE,MAAM,CAAA;IACf,2CAA2C;IAC3C,kBAAkB,EAAE,MAAM,CAAA;IAC1B,8CAA8C;IAC9C,qBAAqB,EAAE,MAAM,CAAA;IAC7B,+DAA+D;IAC/D,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,kCAAkC;IAClC,cAAc,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,SAAS,CAAA;KAAE,EAAE,CAAA;IACpD,0BAA0B;IAC1B,qBAAqB,CAAC,EAAE,sBAAsB,CAAA;IAC9C,yBAAyB;IACzB,oBAAoB,CAAC,EAAE,sBAAsB,CAAA;CAC9C;AAED;;GAEG;AACH,KAAK,SAAS,GACV;IACE;;OAEG;IACH,IAAI,EAAE,CAAC,CAAA;IACP;;OAEG;IACH,KAAK,EAAE,MAAM,CAAA;CACd,GACD;IACE;;OAEG;IACH,IAAI,EAAE,CAAC,CAAA;IAEP;;OAEG;IACH,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;CACtB,CAAA;AAEL,2JAA2J;AAC3J,MAAM,WAAW,sBAAsB;IACrC,+BAA+B;IAC/B,gBAAgB,EAAE,MAAM,CAAA;IACxB,yBAAyB;IACzB,UAAU,EAAE,MAAM,CAAA;CACnB"}
package/types/algod.js ADDED
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=algod.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"algod.js","sourceRoot":"","sources":["../../src/types/algod.ts"],"names":[],"mappings":""}
@@ -0,0 +1,78 @@
1
+ import { ABIContractParams, ABIMethod, ABIMethodParams } from 'algosdk';
2
+ export interface AppSpec {
3
+ hints: HintSpec;
4
+ schema: SchemaSpec;
5
+ source: AppSources;
6
+ contract: ABIContractParams;
7
+ state: StateSchemaSpec;
8
+ bare_call_config: {
9
+ no_op?: CallConfigValue;
10
+ opt_in?: CallConfigValue;
11
+ close_out?: CallConfigValue;
12
+ clear_state?: CallConfigValue;
13
+ update_application?: CallConfigValue;
14
+ delete_application?: CallConfigValue;
15
+ };
16
+ }
17
+ export type HintSpec = Record<string, Hint>;
18
+ export interface AppSources {
19
+ approval: string;
20
+ clear: string;
21
+ }
22
+ export type CallConfigValue = 'NEVER' | 'CALL' | 'CREATE' | 'ALL';
23
+ export interface Hint {
24
+ structs: Record<string, Struct>;
25
+ readonly: boolean;
26
+ default_arguments: Record<string, DefaultArgument>;
27
+ call_config: {
28
+ no_op?: CallConfigValue;
29
+ opt_in?: CallConfigValue;
30
+ close_out?: CallConfigValue;
31
+ clear_state?: CallConfigValue;
32
+ update_application?: CallConfigValue;
33
+ delete_application?: CallConfigValue;
34
+ };
35
+ }
36
+ type StructElement = [string, string];
37
+ export interface Struct {
38
+ name: string;
39
+ elements: StructElement[];
40
+ }
41
+ export interface DefaultArgument {
42
+ source: string;
43
+ data: string | bigint | number;
44
+ }
45
+ export declare enum AVMType {
46
+ uint64 = 0,
47
+ bytes = 1
48
+ }
49
+ export interface DeclaredSchemaValueSpec {
50
+ type: AVMType;
51
+ key: string;
52
+ desc: string;
53
+ static: boolean;
54
+ }
55
+ export interface ReservedSchemaValueSpec {
56
+ type: AVMType;
57
+ desc: string;
58
+ max_keys: number;
59
+ }
60
+ export interface SchemaSpec {
61
+ local: Schema;
62
+ global: Schema;
63
+ }
64
+ export interface Schema {
65
+ declared: Record<string, DeclaredSchemaValueSpec>;
66
+ reserved: Record<string, ReservedSchemaValueSpec>;
67
+ }
68
+ export interface StateSchemaSpec {
69
+ global: StateSchema;
70
+ local: StateSchema;
71
+ }
72
+ export type StateSchema = {
73
+ num_uints: number;
74
+ num_byte_slices: number;
75
+ };
76
+ export declare const getABISignature: (method: ABIMethodParams | ABIMethod) => string;
77
+ export {};
78
+ //# sourceMappingURL=appspec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appspec.d.ts","sourceRoot":"","sources":["../../src/types/appspec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAEvE,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,QAAQ,CAAA;IACf,MAAM,EAAE,UAAU,CAAA;IAClB,MAAM,EAAE,UAAU,CAAA;IAClB,QAAQ,EAAE,iBAAiB,CAAA;IAC3B,KAAK,EAAE,eAAe,CAAA;IACtB,gBAAgB,EAAE;QAChB,KAAK,CAAC,EAAE,eAAe,CAAA;QACvB,MAAM,CAAC,EAAE,eAAe,CAAA;QACxB,SAAS,CAAC,EAAE,eAAe,CAAA;QAC3B,WAAW,CAAC,EAAE,eAAe,CAAA;QAC7B,kBAAkB,CAAC,EAAE,eAAe,CAAA;QACpC,kBAAkB,CAAC,EAAE,eAAe,CAAA;KACrC,CAAA;CACF;AAED,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;AAE3C,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAA;AAEjE,MAAM,WAAW,IAAI;IACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,QAAQ,EAAE,OAAO,CAAA;IACjB,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IAClD,WAAW,EAAE;QACX,KAAK,CAAC,EAAE,eAAe,CAAA;QACvB,MAAM,CAAC,EAAE,eAAe,CAAA;QACxB,SAAS,CAAC,EAAE,eAAe,CAAA;QAC3B,WAAW,CAAC,EAAE,eAAe,CAAA;QAC7B,kBAAkB,CAAC,EAAE,eAAe,CAAA;QACpC,kBAAkB,CAAC,EAAE,eAAe,CAAA;KACrC,CAAA;CACF;AAED,KAAK,aAAa,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AACrC,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,aAAa,EAAE,CAAA;CAC1B;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;CAC/B;AAED,oBAAY,OAAO;IACjB,MAAM,IAAA;IACN,KAAK,IAAA;CACN;AACD,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,OAAO,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,OAAO,CAAA;CAChB;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,OAAO,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,MAAM;IACrB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAA;IACjD,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAA;CAClD;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,WAAW,CAAA;IACnB,KAAK,EAAE,WAAW,CAAA;CACnB;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,SAAS,EAAE,MAAM,CAAA;IACjB,eAAe,EAAE,MAAM,CAAA;CACxB,CAAA;AAED,eAAO,MAAM,eAAe,WAAY,eAAe,GAAG,SAAS,WAIlE,CAAA"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getABISignature = exports.AVMType = void 0;
4
+ var AVMType;
5
+ (function (AVMType) {
6
+ AVMType[AVMType["uint64"] = 0] = "uint64";
7
+ AVMType[AVMType["bytes"] = 1] = "bytes";
8
+ })(AVMType = exports.AVMType || (exports.AVMType = {}));
9
+ const getABISignature = (method) => {
10
+ const argSignature = method.args.map((a) => a.type).join(',');
11
+ const returnSignature = method.returns.type;
12
+ return `{${method.name}}(${argSignature})${returnSignature}`;
13
+ };
14
+ exports.getABISignature = getABISignature;
15
+ //# sourceMappingURL=appspec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appspec.js","sourceRoot":"","sources":["../../src/types/appspec.ts"],"names":[],"mappings":";;;AAoDA,IAAY,OAGX;AAHD,WAAY,OAAO;IACjB,yCAAM,CAAA;IACN,uCAAK,CAAA;AACP,CAAC,EAHW,OAAO,GAAP,eAAO,KAAP,eAAO,QAGlB;AAkCM,MAAM,eAAe,GAAG,CAAC,MAAmC,EAAE,EAAE;IACrE,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC7D,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAA;IAC3C,OAAO,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,IAAI,eAAe,EAAE,CAAA;AAC9D,CAAC,CAAA;AAJY,QAAA,eAAe,mBAI3B"}