@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.
- package/account.d.ts +35 -31
- package/account.d.ts.map +1 -1
- package/account.js +53 -39
- package/account.js.map +1 -1
- package/amount.d.ts +8 -0
- package/amount.d.ts.map +1 -0
- package/amount.js +24 -0
- package/amount.js.map +1 -0
- package/app.d.ts +64 -145
- package/app.d.ts.map +1 -1
- package/app.js +197 -39
- package/app.js.map +1 -1
- package/application-client.d.ts +9 -112
- package/application-client.d.ts.map +1 -1
- package/application-client.js +11 -254
- package/application-client.js.map +1 -1
- package/deploy-app.d.ts +20 -91
- package/deploy-app.d.ts.map +1 -1
- package/deploy-app.js +84 -93
- package/deploy-app.js.map +1 -1
- package/index.d.ts +4 -2
- package/index.d.ts.map +1 -1
- package/index.js +5 -2
- package/index.js.map +1 -1
- package/localnet.d.ts +4 -4
- package/localnet.d.ts.map +1 -1
- package/localnet.js +10 -10
- package/localnet.js.map +1 -1
- package/network-client.d.ts +11 -20
- package/network-client.d.ts.map +1 -1
- package/network-client.js +11 -11
- package/network-client.js.map +1 -1
- package/package.json +2 -2
- package/testing/account.d.ts +14 -0
- package/testing/account.d.ts.map +1 -0
- package/testing/account.js +31 -0
- package/testing/account.js.map +1 -0
- package/testing/fixtures/algokit-log-capture-fixture.d.ts +19 -0
- package/testing/fixtures/algokit-log-capture-fixture.d.ts.map +1 -0
- package/testing/fixtures/algokit-log-capture-fixture.js +43 -0
- package/testing/fixtures/algokit-log-capture-fixture.js.map +1 -0
- package/testing/fixtures/algorand-fixture.d.ts +20 -0
- package/testing/fixtures/algorand-fixture.d.ts.map +1 -0
- package/testing/fixtures/algorand-fixture.js +49 -0
- package/testing/fixtures/algorand-fixture.js.map +1 -0
- package/testing/fixtures/index.d.ts +3 -0
- package/testing/fixtures/index.d.ts.map +1 -0
- package/testing/fixtures/index.js +19 -0
- package/testing/fixtures/index.js.map +1 -0
- package/testing/index.d.ts +6 -0
- package/testing/index.d.ts.map +1 -0
- package/testing/index.js +22 -0
- package/testing/index.js.map +1 -0
- package/testing/indexer.d.ts +12 -0
- package/testing/indexer.d.ts.map +1 -0
- package/testing/indexer.js +39 -0
- package/testing/indexer.js.map +1 -0
- package/testing/test-logger.d.ts +39 -0
- package/testing/test-logger.d.ts.map +1 -0
- package/testing/test-logger.js +69 -0
- package/testing/test-logger.js.map +1 -0
- package/testing/transaction-logger.d.ts +29 -0
- package/testing/transaction-logger.d.ts.map +1 -0
- package/testing/transaction-logger.js +71 -0
- package/testing/transaction-logger.js.map +1 -0
- package/transaction.d.ts +4 -81
- package/transaction.d.ts.map +1 -1
- package/transaction.js +39 -89
- package/transaction.js.map +1 -1
- package/transfer.d.ts +13 -16
- package/transfer.d.ts.map +1 -1
- package/transfer.js +35 -3
- package/transfer.js.map +1 -1
- package/types/account.d.ts +52 -0
- package/types/account.d.ts.map +1 -0
- package/types/account.js +86 -0
- package/types/account.js.map +1 -0
- package/types/algo-http-client-with-retry.d.ts.map +1 -0
- package/{algo-http-client-with-retry.js → types/algo-http-client-with-retry.js} +2 -2
- package/types/algo-http-client-with-retry.js.map +1 -0
- package/types/algod.d.ts +22 -9
- package/types/algod.d.ts.map +1 -1
- package/{algo-amount.d.ts → types/amount.d.ts} +3 -1
- package/types/amount.d.ts.map +1 -0
- package/{algo-amount.js → types/amount.js} +7 -1
- package/types/amount.js.map +1 -0
- package/types/app.d.ts +279 -0
- package/types/app.d.ts.map +1 -0
- package/types/app.js +32 -0
- package/types/app.js.map +1 -0
- package/types/application-client.d.ts +229 -0
- package/types/application-client.d.ts.map +1 -0
- package/types/application-client.js +470 -0
- package/types/application-client.js.map +1 -0
- package/types/appspec.d.ts +1 -2
- package/types/appspec.d.ts.map +1 -1
- package/types/appspec.js.map +1 -1
- package/types/config.d.ts +15 -0
- package/types/config.d.ts.map +1 -0
- package/types/config.js +27 -0
- package/types/config.js.map +1 -0
- package/types/indexer.d.ts +8 -9
- package/types/indexer.d.ts.map +1 -1
- package/{config.d.ts → types/logging.d.ts} +2 -16
- package/types/logging.d.ts.map +1 -0
- package/{config.js → types/logging.js} +5 -24
- package/types/logging.js.map +1 -0
- package/types/logic-error.d.ts +33 -0
- package/types/logic-error.d.ts.map +1 -0
- package/types/logic-error.js +46 -0
- package/types/logic-error.js.map +1 -0
- package/types/network-client.d.ts +11 -0
- package/types/network-client.d.ts.map +1 -0
- package/types/network-client.js +3 -0
- package/types/network-client.js.map +1 -0
- package/types/testing.d.ts +89 -0
- package/types/testing.d.ts.map +1 -0
- package/types/testing.js +3 -0
- package/types/testing.js.map +1 -0
- package/types/transaction.d.ts +67 -0
- package/types/transaction.d.ts.map +1 -0
- package/types/transaction.js +3 -0
- package/types/transaction.js.map +1 -0
- package/types/transfer.d.ts +32 -0
- package/types/transfer.d.ts.map +1 -0
- package/types/transfer.js +3 -0
- package/types/transfer.js.map +1 -0
- package/types/urlTokenBaseHTTPClient.d.ts.map +1 -0
- package/types/urlTokenBaseHTTPClient.js.map +1 -0
- package/algo-amount.d.ts.map +0 -1
- package/algo-amount.js.map +0 -1
- package/algo-http-client-with-retry.d.ts.map +0 -1
- package/algo-http-client-with-retry.js.map +0 -1
- package/config.d.ts.map +0 -1
- package/config.js.map +0 -1
- package/urlTokenBaseHTTPClient.d.ts.map +0 -1
- package/urlTokenBaseHTTPClient.js.map +0 -1
- /package/{algo-http-client-with-retry.d.ts → types/algo-http-client-with-retry.d.ts} +0 -0
- /package/{urlTokenBaseHTTPClient.d.ts → types/urlTokenBaseHTTPClient.d.ts} +0 -0
- /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, {
|
|
2
|
-
import { AlgoAmount } from './algo-amount';
|
|
1
|
+
import algosdk, { Algodv2, SuggestedParams, Transaction } from 'algosdk';
|
|
3
2
|
import { PendingTransactionResponse } from './types/algod';
|
|
4
|
-
|
|
5
|
-
|
|
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[];
|
package/transaction.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../src/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,EAAE,EAAE,OAAO,EAAE,
|
|
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 =
|
|
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
|
|
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
|
-
|
|
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,
|
|
89
|
+
const groupBy = (array, predicate) => array.reduce((acc, value, id, array) => {
|
|
152
90
|
var _a;
|
|
153
91
|
;
|
|
154
|
-
(acc[_a = predicate(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
|
|
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
|
-
|
|
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 (
|
|
127
|
+
if (transactionsWithSigner.find((t) => 'signer' in t.signer)) {
|
|
178
128
|
// Validate all or nothing for transaction signers
|
|
179
|
-
if (
|
|
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(
|
|
134
|
+
const groupedBySigner = groupBy(transactionsWithSigner.map((t, i) => ({
|
|
185
135
|
signer: t.signer,
|
|
186
|
-
|
|
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.
|
|
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
|
-
|
|
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.
|
|
148
|
+
signedTransactions = signed.sort((s1, s2) => s1.id - s2.id).map((s) => s.txn);
|
|
199
149
|
}
|
|
200
150
|
else {
|
|
201
|
-
signedTransactions = group.map((groupedTransaction,
|
|
202
|
-
const 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
|
-
|
|
214
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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;
|
package/transaction.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transaction.js","sourceRoot":"","sources":["../src/transaction.ts"],"names":[],"mappings":";;;;;;AAAA,
|
|
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
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
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
|
-
|
|
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,
|
|
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"}
|