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

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 (140) hide show
  1. package/account.d.ts +35 -31
  2. package/account.d.ts.map +1 -1
  3. package/account.js +53 -39
  4. package/account.js.map +1 -1
  5. package/amount.d.ts +8 -0
  6. package/amount.d.ts.map +1 -0
  7. package/amount.js +24 -0
  8. package/amount.js.map +1 -0
  9. package/app.d.ts +64 -145
  10. package/app.d.ts.map +1 -1
  11. package/app.js +197 -39
  12. package/app.js.map +1 -1
  13. package/application-client.d.ts +9 -112
  14. package/application-client.d.ts.map +1 -1
  15. package/application-client.js +11 -254
  16. package/application-client.js.map +1 -1
  17. package/deploy-app.d.ts +20 -91
  18. package/deploy-app.d.ts.map +1 -1
  19. package/deploy-app.js +84 -93
  20. package/deploy-app.js.map +1 -1
  21. package/index.d.ts +4 -2
  22. package/index.d.ts.map +1 -1
  23. package/index.js +5 -2
  24. package/index.js.map +1 -1
  25. package/localnet.d.ts +4 -4
  26. package/localnet.d.ts.map +1 -1
  27. package/localnet.js +10 -10
  28. package/localnet.js.map +1 -1
  29. package/network-client.d.ts +11 -20
  30. package/network-client.d.ts.map +1 -1
  31. package/network-client.js +11 -11
  32. package/network-client.js.map +1 -1
  33. package/package.json +2 -2
  34. package/testing/account.d.ts +14 -0
  35. package/testing/account.d.ts.map +1 -0
  36. package/testing/account.js +31 -0
  37. package/testing/account.js.map +1 -0
  38. package/testing/fixtures/algokit-log-capture-fixture.d.ts +19 -0
  39. package/testing/fixtures/algokit-log-capture-fixture.d.ts.map +1 -0
  40. package/testing/fixtures/algokit-log-capture-fixture.js +43 -0
  41. package/testing/fixtures/algokit-log-capture-fixture.js.map +1 -0
  42. package/testing/fixtures/algorand-fixture.d.ts +20 -0
  43. package/testing/fixtures/algorand-fixture.d.ts.map +1 -0
  44. package/testing/fixtures/algorand-fixture.js +49 -0
  45. package/testing/fixtures/algorand-fixture.js.map +1 -0
  46. package/testing/fixtures/index.d.ts +3 -0
  47. package/testing/fixtures/index.d.ts.map +1 -0
  48. package/testing/fixtures/index.js +19 -0
  49. package/testing/fixtures/index.js.map +1 -0
  50. package/testing/index.d.ts +6 -0
  51. package/testing/index.d.ts.map +1 -0
  52. package/testing/index.js +22 -0
  53. package/testing/index.js.map +1 -0
  54. package/testing/indexer.d.ts +12 -0
  55. package/testing/indexer.d.ts.map +1 -0
  56. package/testing/indexer.js +39 -0
  57. package/testing/indexer.js.map +1 -0
  58. package/testing/test-logger.d.ts +39 -0
  59. package/testing/test-logger.d.ts.map +1 -0
  60. package/testing/test-logger.js +69 -0
  61. package/testing/test-logger.js.map +1 -0
  62. package/testing/transaction-logger.d.ts +29 -0
  63. package/testing/transaction-logger.d.ts.map +1 -0
  64. package/testing/transaction-logger.js +71 -0
  65. package/testing/transaction-logger.js.map +1 -0
  66. package/transaction.d.ts +4 -81
  67. package/transaction.d.ts.map +1 -1
  68. package/transaction.js +39 -89
  69. package/transaction.js.map +1 -1
  70. package/transfer.d.ts +13 -16
  71. package/transfer.d.ts.map +1 -1
  72. package/transfer.js +35 -3
  73. package/transfer.js.map +1 -1
  74. package/types/account.d.ts +52 -0
  75. package/types/account.d.ts.map +1 -0
  76. package/types/account.js +86 -0
  77. package/types/account.js.map +1 -0
  78. package/types/algo-http-client-with-retry.d.ts.map +1 -0
  79. package/{algo-http-client-with-retry.js → types/algo-http-client-with-retry.js} +2 -2
  80. package/types/algo-http-client-with-retry.js.map +1 -0
  81. package/types/algod.d.ts +22 -9
  82. package/types/algod.d.ts.map +1 -1
  83. package/{algo-amount.d.ts → types/amount.d.ts} +3 -1
  84. package/types/amount.d.ts.map +1 -0
  85. package/{algo-amount.js → types/amount.js} +7 -1
  86. package/types/amount.js.map +1 -0
  87. package/types/app.d.ts +279 -0
  88. package/types/app.d.ts.map +1 -0
  89. package/types/app.js +32 -0
  90. package/types/app.js.map +1 -0
  91. package/types/application-client.d.ts +229 -0
  92. package/types/application-client.d.ts.map +1 -0
  93. package/types/application-client.js +470 -0
  94. package/types/application-client.js.map +1 -0
  95. package/types/appspec.d.ts +1 -2
  96. package/types/appspec.d.ts.map +1 -1
  97. package/types/appspec.js.map +1 -1
  98. package/types/config.d.ts +15 -0
  99. package/types/config.d.ts.map +1 -0
  100. package/types/config.js +27 -0
  101. package/types/config.js.map +1 -0
  102. package/types/indexer.d.ts +8 -9
  103. package/types/indexer.d.ts.map +1 -1
  104. package/{config.d.ts → types/logging.d.ts} +2 -16
  105. package/types/logging.d.ts.map +1 -0
  106. package/{config.js → types/logging.js} +5 -24
  107. package/types/logging.js.map +1 -0
  108. package/types/logic-error.d.ts +33 -0
  109. package/types/logic-error.d.ts.map +1 -0
  110. package/types/logic-error.js +46 -0
  111. package/types/logic-error.js.map +1 -0
  112. package/types/network-client.d.ts +11 -0
  113. package/types/network-client.d.ts.map +1 -0
  114. package/types/network-client.js +3 -0
  115. package/types/network-client.js.map +1 -0
  116. package/types/testing.d.ts +89 -0
  117. package/types/testing.d.ts.map +1 -0
  118. package/types/testing.js +3 -0
  119. package/types/testing.js.map +1 -0
  120. package/types/transaction.d.ts +67 -0
  121. package/types/transaction.d.ts.map +1 -0
  122. package/types/transaction.js +3 -0
  123. package/types/transaction.js.map +1 -0
  124. package/types/transfer.d.ts +32 -0
  125. package/types/transfer.d.ts.map +1 -0
  126. package/types/transfer.js +3 -0
  127. package/types/transfer.js.map +1 -0
  128. package/types/urlTokenBaseHTTPClient.d.ts.map +1 -0
  129. package/types/urlTokenBaseHTTPClient.js.map +1 -0
  130. package/algo-amount.d.ts.map +0 -1
  131. package/algo-amount.js.map +0 -1
  132. package/algo-http-client-with-retry.d.ts.map +0 -1
  133. package/algo-http-client-with-retry.js.map +0 -1
  134. package/config.d.ts.map +0 -1
  135. package/config.js.map +0 -1
  136. package/urlTokenBaseHTTPClient.d.ts.map +0 -1
  137. package/urlTokenBaseHTTPClient.js.map +0 -1
  138. /package/{algo-http-client-with-retry.d.ts → types/algo-http-client-with-retry.d.ts} +0 -0
  139. /package/{urlTokenBaseHTTPClient.d.ts → types/urlTokenBaseHTTPClient.d.ts} +0 -0
  140. /package/{urlTokenBaseHTTPClient.js → types/urlTokenBaseHTTPClient.js} +0 -0
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TestLogger = void 0;
4
+ const __1 = require("../");
5
+ /** Exposes an AlgoKit logger which captures log messages, while wrapping an original logger.
6
+ * This is useful for automated testing.
7
+ */
8
+ class TestLogger {
9
+ /**
10
+ * Create a new test logger that wraps the given logger if provided.
11
+ * @param originalLogger The optional original logger to wrap.
12
+ */
13
+ constructor(originalLogger) {
14
+ this.originalLogger = originalLogger;
15
+ this.logs = [];
16
+ }
17
+ /** Returns all logs captured thus far. */
18
+ get capturedLogs() {
19
+ return this.logs;
20
+ }
21
+ /** Clears all logs captured so far. */
22
+ clear() {
23
+ this.logs = [];
24
+ }
25
+ /**
26
+ * Returns a captured log snapshot.
27
+ * This helps ensure that the provided configuration items won't appear
28
+ * with random values in the log snapshot, but rather will get substituted with predictable ids.
29
+ * @see https://jestjs.io/docs/snapshot-testing#2-tests-should-be-deterministic
30
+ * @example Jest Example
31
+ * ```typescript
32
+ * const logger = new TestLogger()
33
+ * ...
34
+ * expect(logger.getLogSnapshot()).toMatchSnapshot()
35
+ * ```
36
+ * @param config The snapshot configuration
37
+ * @returns The snapshotted logs.
38
+ */
39
+ getLogSnapshot(config) {
40
+ const { transactions: transactionIds, accounts, apps } = config ?? {};
41
+ let snapshot = this.capturedLogs.join('\n');
42
+ transactionIds?.forEach((txn, id) => (snapshot = snapshot.replace(new RegExp(typeof txn === 'string' ? txn : txn.txID(), 'g'), `TXID_${id + 1}`)));
43
+ accounts?.forEach((sender, id) => (snapshot = snapshot.replace(new RegExp(typeof sender === 'string' ? sender : (0, __1.getSenderAddress)(sender), 'g'), `ACCOUNT_${id + 1}`)));
44
+ apps?.forEach((app, id) => (snapshot = snapshot.replace(new RegExp(`\\b${app.toString()}\\b`, 'g'), `APP_${id + 1}`)));
45
+ return snapshot;
46
+ }
47
+ error(message, ...optionalParams) {
48
+ this.originalLogger?.error(message, ...optionalParams);
49
+ this.logs.push(`ERROR: ${message}${optionalParams.length ? ` | ${JSON.stringify(optionalParams)}` : ''}`);
50
+ }
51
+ warn(message, ...optionalParams) {
52
+ this.originalLogger?.warn(message, ...optionalParams);
53
+ this.logs.push(`WARN: ${message}${optionalParams.length ? ` | ${JSON.stringify(optionalParams)}` : ''}`);
54
+ }
55
+ info(message, ...optionalParams) {
56
+ this.originalLogger?.info(message, ...optionalParams);
57
+ this.logs.push(`INFO: ${message}${optionalParams.length ? ` | ${JSON.stringify(optionalParams)}` : ''}`);
58
+ }
59
+ verbose(message, ...optionalParams) {
60
+ this.originalLogger?.verbose(message, ...optionalParams);
61
+ this.logs.push(`VERBOSE: ${message}${optionalParams.length ? ` | ${JSON.stringify(optionalParams)}` : ''}`);
62
+ }
63
+ debug(message, ...optionalParams) {
64
+ this.originalLogger?.debug(message, ...optionalParams);
65
+ this.logs.push(`DEBUG: ${message}${optionalParams.length ? ` | ${JSON.stringify(optionalParams)}` : ''}`);
66
+ }
67
+ }
68
+ exports.TestLogger = TestLogger;
69
+ //# sourceMappingURL=test-logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-logger.js","sourceRoot":"","sources":["../../src/testing/test-logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import { Algodv2, Indexer } from 'algosdk';
2
+ /**
3
+ * Allows you to keep track of Algorand transaction IDs by wrapping an @see Algodv2 in a proxy.
4
+ * Useful for automated tests.
5
+ */
6
+ export declare class TransactionLogger {
7
+ private _sentTransactionIds;
8
+ /**
9
+ * The list of transaction IDs that has been logged thus far.
10
+ */
11
+ get sentTransactionIds(): Readonly<string[]>;
12
+ /**
13
+ * Clear all logged IDs.
14
+ */
15
+ clear(): void;
16
+ /**
17
+ * The method that captures raw transactions and stores the transaction IDs.
18
+ */
19
+ logRawTransaction(signedTransactions: Uint8Array | Uint8Array[]): void;
20
+ /** Return a proxy that wraps the given Algodv2 with this transaction logger.
21
+ *
22
+ * @param algod The @see Algodv2 to wrap
23
+ * @returns The wrapped @see Algodv2, any transactions sent using this algod instance will be logged by this transaction logger
24
+ */
25
+ capture(algod: Algodv2): Algodv2;
26
+ /** Wait until all logged transactions IDs appear in the given @see Indexer. */
27
+ waitForIndexer(indexer: Indexer): Promise<void>;
28
+ }
29
+ //# sourceMappingURL=transaction-logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction-logger.d.ts","sourceRoot":"","sources":["../../src/testing/transaction-logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAA2B,OAAO,EAAE,MAAM,SAAS,CAAA;AAGnE;;;GAGG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,mBAAmB,CAAe;IAE1C;;OAEG;IACH,IAAI,kBAAkB,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC,CAE3C;IAED;;OAEG;IACH,KAAK;IAIL;;OAEG;IACH,iBAAiB,CAAC,kBAAkB,EAAE,UAAU,GAAG,UAAU,EAAE;IAY/D;;;;OAIG;IACH,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAIhC,+EAA+E;IACzE,cAAc,CAAC,OAAO,EAAE,OAAO;CAGtC"}
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TransactionLogger = void 0;
4
+ const algosdk_1 = require("algosdk");
5
+ const _1 = require("./");
6
+ /**
7
+ * Allows you to keep track of Algorand transaction IDs by wrapping an @see Algodv2 in a proxy.
8
+ * Useful for automated tests.
9
+ */
10
+ class TransactionLogger {
11
+ constructor() {
12
+ this._sentTransactionIds = [];
13
+ }
14
+ /**
15
+ * The list of transaction IDs that has been logged thus far.
16
+ */
17
+ get sentTransactionIds() {
18
+ return this._sentTransactionIds;
19
+ }
20
+ /**
21
+ * Clear all logged IDs.
22
+ */
23
+ clear() {
24
+ this._sentTransactionIds = [];
25
+ }
26
+ /**
27
+ * The method that captures raw transactions and stores the transaction IDs.
28
+ */
29
+ logRawTransaction(signedTransactions) {
30
+ if (Array.isArray(signedTransactions)) {
31
+ for (const stxn of signedTransactions) {
32
+ const decoded = (0, algosdk_1.decodeSignedTransaction)(stxn);
33
+ this._sentTransactionIds.push(decoded.txn.txID());
34
+ }
35
+ }
36
+ else {
37
+ const decoded = (0, algosdk_1.decodeSignedTransaction)(signedTransactions);
38
+ this._sentTransactionIds.push(decoded.txn.txID());
39
+ }
40
+ }
41
+ /** Return a proxy that wraps the given Algodv2 with this transaction logger.
42
+ *
43
+ * @param algod The @see Algodv2 to wrap
44
+ * @returns The wrapped @see Algodv2, any transactions sent using this algod instance will be logged by this transaction logger
45
+ */
46
+ capture(algod) {
47
+ return new Proxy(algod, new TransactionLoggingAlgodv2ProxyHandler(this));
48
+ }
49
+ /** Wait until all logged transactions IDs appear in the given @see Indexer. */
50
+ async waitForIndexer(indexer) {
51
+ await Promise.all(this._sentTransactionIds.map((txnId) => (0, _1.runWhenIndexerCaughtUp)(() => indexer.lookupTransactionByID(txnId).do())));
52
+ }
53
+ }
54
+ exports.TransactionLogger = TransactionLogger;
55
+ class TransactionLoggingAlgodv2ProxyHandler {
56
+ constructor(transactionLogger) {
57
+ this.transactionLogger = transactionLogger;
58
+ }
59
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
60
+ get(target, property, receiver) {
61
+ if (property === 'sendRawTransaction') {
62
+ return (stxOrStxs) => {
63
+ this.transactionLogger.logRawTransaction(stxOrStxs);
64
+ return target[property].call(receiver, stxOrStxs);
65
+ };
66
+ }
67
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
68
+ return target[property];
69
+ }
70
+ }
71
+ //# sourceMappingURL=transaction-logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction-logger.js","sourceRoot":"","sources":["../../src/testing/transaction-logger.ts"],"names":[],"mappings":";;;AAAA,qCAAmE;AACnE,yBAA2C;AAE3C;;;GAGG;AACH,MAAa,iBAAiB;IAA9B;QACU,wBAAmB,GAAa,EAAE,CAAA;IA4C5C,CAAC;IA1CC;;OAEG;IACH,IAAI,kBAAkB;QACpB,OAAO,IAAI,CAAC,mBAAmB,CAAA;IACjC,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAA;IAC/B,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,kBAA6C;QAC7D,IAAI,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE;YACrC,KAAK,MAAM,IAAI,IAAI,kBAAkB,EAAE;gBACrC,MAAM,OAAO,GAAG,IAAA,iCAAuB,EAAC,IAAI,CAAC,CAAA;gBAC7C,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAA;aAClD;SACF;aAAM;YACL,MAAM,OAAO,GAAG,IAAA,iCAAuB,EAAC,kBAAkB,CAAC,CAAA;YAC3D,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAA;SAClD;IACH,CAAC;IAED;;;;OAIG;IACH,OAAO,CAAC,KAAc;QACpB,OAAO,IAAI,KAAK,CAAU,KAAK,EAAE,IAAI,qCAAqC,CAAC,IAAI,CAAC,CAAC,CAAA;IACnF,CAAC;IAED,+EAA+E;IAC/E,KAAK,CAAC,cAAc,CAAC,OAAgB;QACnC,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,yBAAsB,EAAC,GAAG,EAAE,CAAC,OAAO,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;IACrI,CAAC;CACF;AA7CD,8CA6CC;AAED,MAAM,qCAAqC;IAGzC,YAAY,iBAAoC;QAC9C,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAA;IAC5C,CAAC;IAED,8DAA8D;IAC9D,GAAG,CAAC,MAAe,EAAE,QAAyB,EAAE,QAAa;QAC3D,IAAI,QAAQ,KAAK,oBAAoB,EAAE;YACrC,OAAO,CAAC,SAAoC,EAAE,EAAE;gBAC9C,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAA;gBACnD,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;YACnD,CAAC,CAAA;SACF;QACD,8DAA8D;QAC9D,OAAQ,MAAc,CAAC,QAAQ,CAAC,CAAA;IAClC,CAAC;CACF"}
package/transaction.d.ts CHANGED
@@ -1,52 +1,7 @@
1
- import algosdk, { Account, Algodv2, LogicSigAccount, MultisigMetadata, SuggestedParams, Transaction, TransactionSigner } from 'algosdk';
2
- import { AlgoAmount } from './algo-amount';
1
+ import algosdk, { Algodv2, SuggestedParams, Transaction } from 'algosdk';
3
2
  import { PendingTransactionResponse } from './types/algod';
4
- /** Account wrapper that supports partial or full multisig signing */
5
- export declare class MultisigAccount {
6
- _params: algosdk.MultisigMetadata;
7
- _signingAccounts: (algosdk.Account | SigningAccount)[];
8
- _addr: string;
9
- get params(): Readonly<algosdk.MultisigMetadata>;
10
- get signingAccounts(): Readonly<(algosdk.Account | SigningAccount)[]>;
11
- get addr(): Readonly<string>;
12
- constructor(multisigParams: MultisigMetadata, signingAccounts: (Account | SigningAccount)[]);
13
- sign(transaction: Transaction | Uint8Array): Uint8Array;
14
- }
15
- /** Account wrapper that supports a rekeyed account */
16
- export declare class SigningAccount implements Account {
17
- private _account;
18
- private _sender;
19
- /**
20
- * Algorand address of the sender
21
- */
22
- get addr(): Readonly<string>;
23
- /**
24
- * Secret key belonging to the signer
25
- */
26
- get sk(): Readonly<Uint8Array>;
27
- /**
28
- * Algorand account of the underlying signing account
29
- */
30
- get signer(): Account;
31
- /**
32
- * Algorand account of the sender address and signer private key
33
- */
34
- get sender(): Account;
35
- constructor(account: Account, sender: string | undefined);
36
- }
37
- /** A wrapper around @see {TransactionSigner} that also has the sender address. */
38
- export interface TransactionSignerAccount {
39
- addr: Readonly<string>;
40
- signer: TransactionSigner;
41
- }
42
- export type TransactionNote = Uint8Array | TransactionNoteData | Arc2TransactionNote;
43
- export type TransactionNoteData = string | null | undefined | number | any[] | Record<string, any>;
44
- /** ARC-0002 compatible transaction note components, @see https://github.com/algorandfoundation/ARCs/blob/main/ARCs/arc-0002.md */
45
- export type Arc2TransactionNote = {
46
- dAppName: string;
47
- format: 'm' | 'j' | 'b' | 'u';
48
- data: string;
49
- };
3
+ import { AlgoAmount } from './types/amount';
4
+ import { SendTransactionFrom, SendTransactionParams, SendTransactionResult, TransactionGroupToSend, TransactionNote } from './types/transaction';
50
5
  /** Encodes a transaction note into a byte array ready to be included in an Algorand transaction.
51
6
  *
52
7
  * @param note The transaction note
@@ -60,28 +15,6 @@ export type Arc2TransactionNote = {
60
15
  * * Else: The object/value converted into a JSON string representation
61
16
  */
62
17
  export declare function encodeTransactionNote(note?: TransactionNote): Uint8Array | undefined;
63
- /** The sending configuration for a transaction */
64
- export interface SendTransactionParams {
65
- /** Whether to skip signing and sending the transaction to the chain (default: transaction signed and sent to chain)
66
- * (and instead just return the raw transaction, e.g. so you can add it to a group of transactions) */
67
- skipSending?: boolean;
68
- /** Whether to skip waiting for the submitted transaction (only relevant if `skipSending` is `false` or unset) */
69
- skipWaiting?: boolean;
70
- /** Whether to suppress log messages from transaction send, default: do not suppress */
71
- suppressLog?: boolean;
72
- /** The maximum fee that you are happy to pay (default: unbounded) - if this is set it's possible the transaction could get rejected during network congestion */
73
- maxFee?: AlgoAmount;
74
- /** The maximum number of rounds to wait for confirmation, only applies if `skipWaiting` is `undefined` or `false`, default: wait up to 5 rounds */
75
- maxRoundsToWaitForConfirmation?: number;
76
- }
77
- /** The result of sending a transaction */
78
- export interface SendTransactionResult {
79
- /** The transaction */
80
- transaction: Transaction;
81
- /** The response if the transaction was sent and waited for */
82
- confirmation?: PendingTransactionResponse;
83
- }
84
- export type SendTransactionFrom = Account | SigningAccount | LogicSigAccount | MultisigAccount | TransactionSignerAccount;
85
18
  /**
86
19
  * Returns the public address of the given transaction sender.
87
20
  * @param sender A transaction sender
@@ -103,13 +36,6 @@ export declare const sendTransaction: (send: {
103
36
  from: SendTransactionFrom;
104
37
  sendParams?: SendTransactionParams;
105
38
  }, algod: Algodv2) => Promise<SendTransactionResult>;
106
- /** Defines an unsigned transaction that will appear in a group of transactions along with its signing information */
107
- export interface TransactionToSign {
108
- /** The unsigned transaction to sign and send */
109
- transaction: Transaction;
110
- /** The account to use to sign the transaction, either an account (with private key loaded) or a logic signature account */
111
- signer: SendTransactionFrom;
112
- }
113
39
  /**
114
40
  * Signs and sends a group of [up to 16](https://developer.algorand.org/docs/get-details/atomic_transfers/#create-transactions) transactions to the chain
115
41
  *
@@ -119,10 +45,7 @@ export interface TransactionToSign {
119
45
  * @param algod An algod client
120
46
  * @returns An object with group transaction ID (`groupTransactionId`) and (if `skipWaiting` is `false` or unset) confirmation (`confirmation`)
121
47
  */
122
- export declare const sendGroupOfTransactions: (groupSend: {
123
- transactions: TransactionToSign[];
124
- sendParams?: Omit<Omit<SendTransactionParams, 'maxFee'>, 'skipSending'>;
125
- }, algod: Algodv2) => Promise<{
48
+ export declare const sendGroupOfTransactions: (groupSend: TransactionGroupToSend, algod: Algodv2) => Promise<{
126
49
  groupId: string;
127
50
  confirmations: PendingTransactionResponse[] | undefined;
128
51
  txIds: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../src/transaction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../src/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAIxE,OAAO,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAA;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,eAAe,EAChB,MAAM,qBAAqB,CAAA;AAE5B;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,CAAC,EAAE,eAAe,GAAG,UAAU,GAAG,SAAS,CAcpF;AAED;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,WAAqB,mBAAmB,WAEpE,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,eAAe,SACpB;IACJ,WAAW,EAAE,WAAW,CAAA;IACxB,IAAI,EAAE,mBAAmB,CAAA;IACzB,UAAU,CAAC,EAAE,qBAAqB,CAAA;CACnC,SACM,OAAO,KACb,QAAQ,qBAAqB,CAmC/B,CAAA;AAQD;;;;;;;;GAQG;AACH,eAAO,MAAM,uBAAuB,cAA8B,sBAAsB,SAAS,OAAO;;;;EAyGvG,CAAA;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,mBAAmB,kBACf,MAAM,mBACJ,MAAM,SAChB,OAAO,KACb,QAAQ,0BAA0B,CAkCpC,CAAA;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,gBAAgB,EAAE,UAAU,QAgB/F;AAED;;;;;GAKG;AACH,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,eAAe,GAAG,SAAS,EAAE,KAAK,EAAE,OAAO,oCAE7F"}
package/transaction.js CHANGED
@@ -3,76 +3,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
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;
6
+ exports.getTransactionParams = exports.capTransactionFee = exports.waitForConfirmation = exports.sendGroupOfTransactions = exports.sendTransaction = exports.getSenderAddress = exports.encodeTransactionNote = void 0;
7
7
  const algosdk_1 = __importDefault(require("algosdk"));
8
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;
9
+ const _1 = require("./");
76
10
  /** Encodes a transaction note into a byte array ready to be included in an Algorand transaction.
77
11
  *
78
12
  * @param note The transaction note
@@ -93,7 +27,7 @@ function encodeTransactionNote(note) {
93
27
  return note;
94
28
  }
95
29
  else if (typeof note === 'object' && 'dAppName' in note) {
96
- const arc2Payload = `${note.dAppName}:${note.format}${note.data}`;
30
+ const arc2Payload = `${note.dAppName}:${note.format}${typeof note.data === 'string' ? note.data : JSON.stringify(note.data)}`;
97
31
  const encoder = new TextEncoder();
98
32
  return encoder.encode(arc2Payload);
99
33
  }
@@ -125,7 +59,11 @@ exports.getSenderAddress = getSenderAddress;
125
59
  */
126
60
  const sendTransaction = async function (send, algod) {
127
61
  const { transaction, from, sendParams } = send;
128
- const { skipSending, skipWaiting, maxFee, suppressLog, maxRoundsToWaitForConfirmation } = sendParams ?? {};
62
+ const { skipSending, skipWaiting, fee, maxFee, suppressLog, maxRoundsToWaitForConfirmation } = sendParams ?? {};
63
+ if (fee) {
64
+ transaction.fee = fee.microAlgos;
65
+ transaction.flatFee = true;
66
+ }
129
67
  if (maxFee !== undefined) {
130
68
  capTransactionFee(transaction, maxFee);
131
69
  }
@@ -140,7 +78,7 @@ const sendTransaction = async function (send, algod) {
140
78
  ? (await from.signer([transaction], [0]))[0]
141
79
  : from.sign(transaction);
142
80
  await algod.sendRawTransaction(signedTransaction).do();
143
- config_1.AlgoKitConfig.getLogger(suppressLog).info(`Sent transaction ID ${transaction.txID()} ${transaction.type} from ${(0, exports.getSenderAddress)(from)}`);
81
+ _1.Config.getLogger(suppressLog).info(`Sent transaction ID ${transaction.txID()} ${transaction.type} from ${(0, exports.getSenderAddress)(from)}`);
144
82
  let confirmation = undefined;
145
83
  if (!skipWaiting) {
146
84
  confirmation = await (0, exports.waitForConfirmation)(transaction.txID(), maxRoundsToWaitForConfirmation ?? 5, algod);
@@ -148,10 +86,10 @@ const sendTransaction = async function (send, algod) {
148
86
  return { transaction, confirmation };
149
87
  };
150
88
  exports.sendTransaction = sendTransaction;
151
- const groupBy = (array, predicate) => array.reduce((acc, value, index, array) => {
89
+ const groupBy = (array, predicate) => array.reduce((acc, value, id, array) => {
152
90
  var _a;
153
91
  ;
154
- (acc[_a = predicate(value, index, array)] || (acc[_a] = [])).push(value);
92
+ (acc[_a = predicate(value, id, array)] || (acc[_a] = [])).push(value);
155
93
  return acc;
156
94
  }, {});
157
95
  /**
@@ -164,42 +102,54 @@ const groupBy = (array, predicate) => array.reduce((acc, value, index, array) =>
164
102
  * @returns An object with group transaction ID (`groupTransactionId`) and (if `skipWaiting` is `false` or unset) confirmation (`confirmation`)
165
103
  */
166
104
  const sendGroupOfTransactions = async function (groupSend, algod) {
167
- const { transactions, sendParams } = groupSend;
168
- const transactionsToSend = transactions.map((t) => {
105
+ const { transactions, signer, sendParams } = groupSend;
106
+ const transactionsWithSigner = await Promise.all(transactions.map(async (t) => {
107
+ if ('signer' in t)
108
+ return t;
109
+ const txn = 'then' in t ? (await t).transaction : t;
110
+ if (!signer) {
111
+ throw new Error(`Attempt to send transaction ${txn.txID()} as part of a group transaction, but no signer was provided.`);
112
+ }
113
+ return {
114
+ transaction: txn,
115
+ signer: signer,
116
+ };
117
+ }));
118
+ const transactionsToSend = transactionsWithSigner.map((t) => {
169
119
  return t.transaction;
170
120
  });
171
121
  const group = algosdk_1.default.assignGroupID(transactionsToSend);
172
122
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
173
123
  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 });
124
+ _1.Config.getLogger(sendParams?.suppressLog).info(`Sending group of transactions (${groupId})`, { transactionsToSend });
175
125
  // Sign transactions either using TransactionSigners, or not
176
126
  let signedTransactions;
177
- if (transactions.find((t) => 'signer' in t.signer)) {
127
+ if (transactionsWithSigner.find((t) => 'signer' in t.signer)) {
178
128
  // Validate all or nothing for transaction signers
179
- if (transactions.find((t) => !('signer' in t.signer))) {
129
+ if (transactionsWithSigner.find((t) => !('signer' in t.signer))) {
180
130
  throw new Error("When issuing a group transaction the signers should either all be TransactionSignerAccount's or all not. " +
181
131
  'Received at least one TransactionSignerAccount, but not all of them so failing the send.');
182
132
  }
183
133
  // Group transaction signers by signer
184
- const groupedBySigner = groupBy(transactions.map((t, i) => ({
134
+ const groupedBySigner = groupBy(transactionsWithSigner.map((t, i) => ({
185
135
  signer: t.signer,
186
- index: i,
136
+ id: i,
187
137
  })), (t) => t.signer.addr);
188
138
  // Perform the signature, grouped by signer
189
139
  const signed = (await Promise.all(Object.values(groupedBySigner).map(async (signature) => {
190
- const indexes = signature.map((s) => s.index);
140
+ const indexes = signature.map((s) => s.id);
191
141
  const signed = await signature[0].signer.signer(group, indexes);
192
142
  return signed.map((txn, i) => ({
193
143
  txn,
194
- index: indexes[i],
144
+ id: indexes[i],
195
145
  }));
196
146
  }))).flatMap((a) => a);
197
147
  // Extract the signed transactions in order
198
- signedTransactions = signed.sort((s1, s2) => s1.index - s2.index).map((s) => s.txn);
148
+ signedTransactions = signed.sort((s1, s2) => s1.id - s2.id).map((s) => s.txn);
199
149
  }
200
150
  else {
201
- signedTransactions = group.map((groupedTransaction, index) => {
202
- const signer = transactions[index].signer;
151
+ signedTransactions = group.map((groupedTransaction, id) => {
152
+ const signer = transactionsWithSigner[id].signer;
203
153
  return 'sk' in signer
204
154
  ? groupedTransaction.signTxn(signer.sk)
205
155
  : 'lsig' in signer
@@ -210,11 +160,11 @@ const sendGroupOfTransactions = async function (groupSend, algod) {
210
160
  new Uint8Array();
211
161
  });
212
162
  }
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()));
163
+ _1.Config.getLogger(sendParams?.suppressLog).debug(`Signer IDs (${groupId})`, transactionsWithSigner.map((t) => (0, exports.getSenderAddress)(t.signer)));
164
+ _1.Config.getLogger(sendParams?.suppressLog).debug(`Transaction IDs (${groupId})`, transactionsToSend.map((t) => t.txID()));
215
165
  // https://developer.algorand.org/docs/rest-apis/algod/v2/#post-v2transactions
216
166
  await algod.sendRawTransaction(signedTransactions).do();
217
- config_1.AlgoKitConfig.getLogger(sendParams?.suppressLog).info(`Group transaction (${groupId}) sent with ${transactionsToSend.length} transactions`);
167
+ _1.Config.getLogger(sendParams?.suppressLog).info(`Group transaction (${groupId}) sent with ${transactionsToSend.length} transactions`);
218
168
  let confirmations = undefined;
219
169
  if (!sendParams?.skipWaiting) {
220
170
  confirmations = await Promise.all(transactionsToSend.map(async (t) => await (0, exports.waitForConfirmation)(t.txID(), sendParams?.maxRoundsToWaitForConfirmation ?? 5, algod)));
@@ -286,7 +236,7 @@ function capTransactionFee(transaction, maxAcceptableFee) {
286
236
  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
237
  }
288
238
  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.`);
239
+ _1.Config.logger.warn(`Algorand network congestion fees are in effect. This transaction will incur a fee of ${transaction.fee} µALGOs.`);
290
240
  }
291
241
  // Now set the flat on the transaction. Otherwise the network may increase the fee above our cap and perform the transaction.
292
242
  transaction.flatFee = true;
@@ -1 +1 @@
1
- {"version":3,"file":"transaction.js","sourceRoot":"","sources":["../src/transaction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transaction.js","sourceRoot":"","sources":["../src/transaction.ts"],"names":[],"mappings":"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"}
package/transfer.d.ts CHANGED
@@ -1,18 +1,6 @@
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
- }
1
+ import { Algodv2 } from 'algosdk';
2
+ import { SendTransactionResult } from './types/transaction';
3
+ import { AlgoTransferParams, EnsureFundedParams } from './types/transfer';
16
4
  /**
17
5
  * Transfer ALGOs between two accounts.
18
6
  * @param transfer The transfer definition
@@ -20,5 +8,14 @@ interface AlgoTransferParams extends SendTransactionParams {
20
8
  * @returns The transaction object and optionally the confirmation if it was sent to the chain (`skipSending` is `false` or unset)
21
9
  */
22
10
  export declare function transferAlgos(transfer: AlgoTransferParams, algod: Algodv2): Promise<SendTransactionResult>;
23
- export {};
11
+ /**
12
+ * Funds a given account using a funding source such that it has a certain amount of algos free to spend (accounting for ALGOs locked in minimum balance requirement).
13
+ *
14
+ * @see https://developer.algorand.org/docs/get-details/accounts/#minimum-balance
15
+ *
16
+ * @param funding The funding configuration
17
+ * @param algod An algod client
18
+ * @returns undefined if nothing was needed or the transaction send result
19
+ */
20
+ export declare function ensureFunded(funding: EnsureFundedParams, algod: Algodv2): Promise<SendTransactionResult | undefined>;
24
21
  //# sourceMappingURL=transfer.d.ts.map
package/transfer.d.ts.map CHANGED
@@ -1 +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"}
1
+ {"version":3,"file":"transfer.d.ts","sourceRoot":"","sources":["../src/transfer.ts"],"names":[],"mappings":"AAAA,OAAgB,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAG1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAEzE;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,QAAQ,EAAE,kBAAkB,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAkBhH;AAED;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAgC1H"}