@algorandfoundation/algokit-utils 6.1.0-beta.1 → 6.1.0-beta.3
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/README.md +8 -0
- package/account/account.d.ts +24 -3
- package/account/account.d.ts.map +1 -1
- package/account/account.js +29 -53
- package/account/account.js.map +1 -1
- package/account/account.mjs +29 -53
- package/account/account.mjs.map +1 -1
- package/account/get-account.d.ts +2 -2
- package/account/get-account.d.ts.map +1 -1
- package/account/get-account.js +9 -29
- package/account/get-account.js.map +1 -1
- package/account/get-account.mjs +4 -24
- package/account/get-account.mjs.map +1 -1
- package/account/get-dispenser-account.d.ts +7 -2
- package/account/get-dispenser-account.d.ts.map +1 -1
- package/account/get-dispenser-account.js +7 -8
- package/account/get-dispenser-account.js.map +1 -1
- package/account/get-dispenser-account.mjs +7 -8
- package/account/get-dispenser-account.mjs.map +1 -1
- package/account/mnemonic-account.d.ts +4 -1
- package/account/mnemonic-account.d.ts.map +1 -1
- package/account/mnemonic-account.js +4 -1
- package/account/mnemonic-account.js.map +1 -1
- package/account/mnemonic-account.mjs +4 -1
- package/account/mnemonic-account.mjs.map +1 -1
- package/dispenser-client.d.ts +2 -0
- package/dispenser-client.d.ts.map +1 -1
- package/dispenser-client.js +2 -0
- package/dispenser-client.js.map +1 -1
- package/dispenser-client.mjs +2 -0
- package/dispenser-client.mjs.map +1 -1
- package/index.d.ts +7 -7
- package/index.d.ts.map +1 -1
- package/index.js +31 -31
- package/index.mjs +9 -9
- package/localnet/get-kmd-wallet-account.d.ts +2 -0
- package/localnet/get-kmd-wallet-account.d.ts.map +1 -1
- package/localnet/get-kmd-wallet-account.js +5 -30
- package/localnet/get-kmd-wallet-account.js.map +1 -1
- package/localnet/get-kmd-wallet-account.mjs +5 -30
- package/localnet/get-kmd-wallet-account.mjs.map +1 -1
- package/localnet/get-localnet-dispenser-account.d.ts +2 -0
- package/localnet/get-localnet-dispenser-account.d.ts.map +1 -1
- package/localnet/get-localnet-dispenser-account.js +5 -7
- package/localnet/get-localnet-dispenser-account.js.map +1 -1
- package/localnet/get-localnet-dispenser-account.mjs +5 -7
- package/localnet/get-localnet-dispenser-account.mjs.map +1 -1
- package/localnet/get-or-create-kmd-wallet-account.d.ts +2 -0
- package/localnet/get-or-create-kmd-wallet-account.d.ts.map +1 -1
- package/localnet/get-or-create-kmd-wallet-account.js +5 -27
- package/localnet/get-or-create-kmd-wallet-account.js.map +1 -1
- package/localnet/get-or-create-kmd-wallet-account.mjs +5 -27
- package/localnet/get-or-create-kmd-wallet-account.mjs.map +1 -1
- package/localnet/is-localnet.d.ts +4 -1
- package/localnet/is-localnet.d.ts.map +1 -1
- package/localnet/is-localnet.js +7 -3
- package/localnet/is-localnet.js.map +1 -1
- package/localnet/is-localnet.mjs +7 -3
- package/localnet/is-localnet.mjs.map +1 -1
- package/network-client.d.ts +36 -8
- package/network-client.d.ts.map +1 -1
- package/network-client.js +49 -88
- package/network-client.js.map +1 -1
- package/network-client.mjs +49 -88
- package/network-client.mjs.map +1 -1
- package/package.json +3 -2
- package/testing/account.d.ts +3 -5
- package/testing/account.d.ts.map +1 -1
- package/testing/account.js +6 -9
- package/testing/account.js.map +1 -1
- package/testing/account.mjs +6 -9
- package/testing/account.mjs.map +1 -1
- package/testing/fixtures/algorand-fixture.d.ts +20 -2
- package/testing/fixtures/algorand-fixture.d.ts.map +1 -1
- package/testing/fixtures/algorand-fixture.js +11 -30
- package/testing/fixtures/algorand-fixture.js.map +1 -1
- package/testing/fixtures/algorand-fixture.mjs +11 -30
- package/testing/fixtures/algorand-fixture.mjs.map +1 -1
- package/transaction/transaction.d.ts.map +1 -1
- package/transaction/transaction.js +8 -8
- package/transaction/transaction.js.map +1 -1
- package/transaction/transaction.mjs +8 -8
- package/transaction/transaction.mjs.map +1 -1
- package/transfer/transfer.js +4 -4
- package/transfer/transfer.js.map +1 -1
- package/transfer/transfer.mjs +4 -4
- package/transfer/transfer.mjs.map +1 -1
- package/types/account-manager.d.ts +108 -24
- package/types/account-manager.d.ts.map +1 -1
- package/types/account-manager.js +167 -34
- package/types/account-manager.js.map +1 -1
- package/types/account-manager.mjs +166 -34
- package/types/account-manager.mjs.map +1 -1
- package/types/account.d.ts +13 -11
- package/types/account.d.ts.map +1 -1
- package/types/algorand-client.d.ts +12 -6
- package/types/algorand-client.d.ts.map +1 -1
- package/types/algorand-client.js +20 -15
- package/types/algorand-client.js.map +1 -1
- package/types/algorand-client.mjs +20 -15
- package/types/algorand-client.mjs.map +1 -1
- package/types/client-manager.d.ts +197 -4
- package/types/client-manager.d.ts.map +1 -1
- package/types/client-manager.js +284 -7
- package/types/client-manager.js.map +1 -1
- package/types/client-manager.mjs +284 -7
- package/types/client-manager.mjs.map +1 -1
- package/types/indexer.d.ts +11 -2
- package/types/indexer.d.ts.map +1 -1
- package/types/indexer.js.map +1 -1
- package/types/indexer.mjs.map +1 -1
- package/types/kmd-account-manager.d.ts +70 -0
- package/types/kmd-account-manager.d.ts.map +1 -0
- package/types/kmd-account-manager.js +144 -0
- package/types/kmd-account-manager.js.map +1 -0
- package/types/kmd-account-manager.mjs +142 -0
- package/types/kmd-account-manager.mjs.map +1 -0
- package/types/network-client.d.ts +2 -2
- package/types/network-client.d.ts.map +1 -1
- package/types/testing.d.ts +9 -6
- package/types/testing.d.ts.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account-manager.d.ts","sourceRoot":"","sources":["../../src/types/account-manager.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"account-manager.d.ts","sourceRoot":"","sources":["../../src/types/account-manager.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAA;AAC7B,OAAO,EAAE,kBAAkB,EAAqB,eAAe,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAA;AAC5H,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,eAAe,GAAG,OAAO,CAAC,eAAe,CAAA;AAChD,OAAO,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;AAahC;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,6IAQtC,CAAA;AAEF,oGAAoG;AACpG,qBAAa,cAAc;IACzB,OAAO,CAAC,cAAc,CAAe;IACrC,OAAO,CAAC,kBAAkB,CAAmB;IAC7C,OAAO,CAAC,SAAS,CAAsD;IACvE,OAAO,CAAC,cAAc,CAAC,CAA2B;IAElD;;;;;;;OAOG;gBACS,aAAa,EAAE,aAAa;IAKxC,uFAAuF;IACvF,IAAW,GAAG,sBAEb;IAED;;;;;;;;;;;;;;;OAeG;IACI,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,iBAAiB,GAAG,wBAAwB,GAAG,cAAc;IAKrG;;;OAGG;IACH,OAAO,CAAC,aAAa;IAWrB;;;;;;;;;;;;;;;;;OAiBG;IACI,oBAAoB,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,GAAG,eAAe,GAAG,cAAc,GAAG,eAAe;IAK5H;;;;;;;;;;OAUG;IACI,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,iBAAiB;IAKlE;;;;;;;;;;;;OAYG;IACI,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB;IAM3D;;;;;;;;;;;;;;OAcG;IACI,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,wBAAwB;IAM3D;;;;;;;;;;;;OAYG;IACU,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,wBAAwB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAyBnG;;;;;;;;;;;;;;OAcG;IACU,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,wBAAwB,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;;;;;;IAapG;;;;;;;;;;;;OAYG;IACI,YAAY,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;;;IAK3D;;;;;;;;;;;OAWG;IACI,OAAO,CAAC,OAAO,EAAE,wBAAwB,EAAE,MAAM,EAAE,MAAM;;;;;;IAIhE;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACU,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,UAAU;;;IAqBhE;;;;;;;;;;;;;;OAcG;IACU,OAAO,CAClB,IAAI,EAAE,MAAM,EAEZ,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,OAAO,EACrD,MAAM,CAAC,EAAE,MAAM;;;IAOjB;;;;;;;;;;;OAWG;IACI,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC,gBAAgB,EAAE,eAAe,EAAE,CAAC,OAAO,CAAC,OAAO,GAAG,cAAc,CAAC,EAAE;;;IAI/G;;;;;;;;;;OAUG;IACI,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC;;;IAI7D;;;;;;;;OAQG;IACI,MAAM;;;IAIb;;;;;;;;;;;;;;;OAeG;IACU,wBAAwB;;;IAUrC;;;;;;;;OAQG;IACU,iBAAiB;;;CAI/B"}
|
package/types/account-manager.js
CHANGED
|
@@ -1,23 +1,50 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var algosdk = require('algosdk');
|
|
4
|
-
var
|
|
5
|
-
var
|
|
6
|
-
var mnemonicAccount = require('../account/mnemonic-account.js');
|
|
7
|
-
var getKmdWalletAccount = require('../localnet/get-kmd-wallet-account.js');
|
|
8
|
-
var getLocalnetDispenserAccount = require('../localnet/get-localnet-dispenser-account.js');
|
|
9
|
-
var transaction = require('../transaction/transaction.js');
|
|
4
|
+
var types_account = require('./account.js');
|
|
5
|
+
var types_kmdAccountManager = require('./kmd-account-manager.js');
|
|
10
6
|
|
|
11
7
|
var LogicSigAccount = algosdk.LogicSigAccount;
|
|
8
|
+
var AccountInformationModel = algosdk.modelsv2.Account;
|
|
9
|
+
const memoize = (fn) => {
|
|
10
|
+
const cache = new Map();
|
|
11
|
+
const cached = function (val) {
|
|
12
|
+
return cache.has(val) ? cache.get(val) : cache.set(val, fn.call(this, val)) && cache.get(val);
|
|
13
|
+
};
|
|
14
|
+
cached.cache = cache;
|
|
15
|
+
return cached;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Returns a `TransactionSigner` for the given account that can sign a transaction.
|
|
19
|
+
* This function has memoization, so will return the same transaction signer for a given account.
|
|
20
|
+
* @param account An account that can sign a transaction
|
|
21
|
+
* @returns A transaction signer
|
|
22
|
+
*/
|
|
23
|
+
const getAccountTransactionSigner = memoize(function (account) {
|
|
24
|
+
return 'signer' in account
|
|
25
|
+
? account.signer
|
|
26
|
+
: 'lsig' in account
|
|
27
|
+
? algosdk.makeLogicSigAccountTransactionSigner(account)
|
|
28
|
+
: algosdk.makeBasicAccountTransactionSigner(account);
|
|
29
|
+
});
|
|
12
30
|
/** Creates and keeps track of signing accounts that can sign transactions for a sending address. */
|
|
13
31
|
class AccountManager {
|
|
14
32
|
/**
|
|
15
33
|
* Create a new account manager.
|
|
16
34
|
* @param clientManager The ClientManager client to use for algod and kmd clients
|
|
35
|
+
* @example Create a new account manager
|
|
36
|
+
* ```typescript
|
|
37
|
+
* const accountManager = new AccountManager(clientManager)
|
|
38
|
+
* ```
|
|
17
39
|
*/
|
|
18
40
|
constructor(clientManager) {
|
|
19
41
|
this._accounts = {};
|
|
20
42
|
this._clientManager = clientManager;
|
|
43
|
+
this._kmdAccountManager = new types_kmdAccountManager.KmdAccountManager(clientManager);
|
|
44
|
+
}
|
|
45
|
+
/** KMD account manager that allows you to easily get and create accounts using KMD. */
|
|
46
|
+
get kmd() {
|
|
47
|
+
return this._kmdAccountManager;
|
|
21
48
|
}
|
|
22
49
|
/**
|
|
23
50
|
* Sets the default signer to use if no other signer is specified.
|
|
@@ -25,6 +52,14 @@ class AccountManager {
|
|
|
25
52
|
* If this isn't set an a transaction needs signing for a given sender
|
|
26
53
|
* then an error will be thrown from `getSigner` / `getAccount`.
|
|
27
54
|
* @param signer The signer to use, either a `TransactionSigner` or a `TransactionSignerAccount`
|
|
55
|
+
* @example
|
|
56
|
+
* ```typescript
|
|
57
|
+
* const signer = accountManager.random() // Can be anything that returns a `algosdk.TransactionSigner` or `TransactionSignerAccount`
|
|
58
|
+
* accountManager.setDefaultSigner(signer)
|
|
59
|
+
*
|
|
60
|
+
* // When signing a transaction, if there is no signer registered for the sender then the default signer will be used
|
|
61
|
+
* const signer = accountManager.getSigner("{SENDERADDRESS}")
|
|
62
|
+
* ```
|
|
28
63
|
* @returns The `AccountManager` so method calls can be chained
|
|
29
64
|
*/
|
|
30
65
|
setDefaultSigner(signer) {
|
|
@@ -32,21 +67,33 @@ class AccountManager {
|
|
|
32
67
|
return this;
|
|
33
68
|
}
|
|
34
69
|
/**
|
|
35
|
-
* Records the given account against the address of the account for later
|
|
36
|
-
* retrieval and returns a `TransactionSignerAccount
|
|
70
|
+
* Records the given account (that can sign) against the address of the provided account for later
|
|
71
|
+
* retrieval and returns a `TransactionSignerAccount` along with the original account in an `account` property.
|
|
37
72
|
*/
|
|
38
73
|
signerAccount(account) {
|
|
39
74
|
const acc = {
|
|
40
|
-
addr:
|
|
41
|
-
signer:
|
|
75
|
+
addr: 'addr' in account ? account.addr : account.address(),
|
|
76
|
+
signer: getAccountTransactionSigner(account),
|
|
42
77
|
};
|
|
43
78
|
this._accounts[acc.addr] = acc;
|
|
44
79
|
return { ...acc, account };
|
|
45
80
|
}
|
|
46
81
|
/**
|
|
47
82
|
* Tracks the given account for later signing.
|
|
48
|
-
*
|
|
49
|
-
*
|
|
83
|
+
*
|
|
84
|
+
* Note: If you are generating accounts via the various methods on `AccountManager`
|
|
85
|
+
* (like `random`, `fromMnemonic`, `logicsig`, etc.) then they automatically get tracked.
|
|
86
|
+
* @param account The account to register, which can be a `TransactionSignerAccount` or
|
|
87
|
+
* a `algosdk.Account`, `algosdk.LogicSigAccount`, `SigningAccount` or `MultisigAccount`
|
|
88
|
+
* @example
|
|
89
|
+
* ```typescript
|
|
90
|
+
* const accountManager = new AccountManager(clientManager)
|
|
91
|
+
* .setSignerFromAccount(algosdk.generateAccount())
|
|
92
|
+
* .setSignerFromAccount(new algosdk.LogicSigAccount(program, args))
|
|
93
|
+
* .setSignerFromAccount(new SigningAccount(mnemonic, sender))
|
|
94
|
+
* .setSignerFromAccount(new MultisigAccount({version: 1, threshold: 1, addrs: ["ADDRESS1...", "ADDRESS2..."]}, [account1, account2]))
|
|
95
|
+
* .setSignerFromAccount({addr: "SENDERADDRESS", signer: transactionSigner})
|
|
96
|
+
* ```
|
|
50
97
|
* @returns The `AccountManager` instance for method chaining
|
|
51
98
|
*/
|
|
52
99
|
setSignerFromAccount(account) {
|
|
@@ -54,9 +101,14 @@ class AccountManager {
|
|
|
54
101
|
return this;
|
|
55
102
|
}
|
|
56
103
|
/**
|
|
57
|
-
* Tracks the given
|
|
104
|
+
* Tracks the given `algosdk.TransactionSigner` against the given sender address for later signing.
|
|
58
105
|
* @param sender The sender address to use this signer for
|
|
59
|
-
* @param signer The
|
|
106
|
+
* @param signer The `algosdk.TransactionSigner` to sign transactions with for the given sender
|
|
107
|
+
* @example
|
|
108
|
+
* ```typescript
|
|
109
|
+
* const accountManager = new AccountManager(clientManager)
|
|
110
|
+
* .setSigner("SENDERADDRESS", transactionSigner)
|
|
111
|
+
* ```
|
|
60
112
|
* @returns The `AccountManager` instance for method chaining
|
|
61
113
|
*/
|
|
62
114
|
setSigner(sender, signer) {
|
|
@@ -64,12 +116,17 @@ class AccountManager {
|
|
|
64
116
|
return this;
|
|
65
117
|
}
|
|
66
118
|
/**
|
|
67
|
-
* Returns the `TransactionSigner` for the given sender address.
|
|
119
|
+
* Returns the `TransactionSigner` for the given sender address, ready to sign a transaction for that sender.
|
|
68
120
|
*
|
|
69
|
-
* If no signer has been registered for that address then the default signer is used if registered
|
|
121
|
+
* If no signer has been registered for that address then the default signer is used if registered and
|
|
122
|
+
* if not then an error is thrown.
|
|
70
123
|
*
|
|
71
124
|
* @param sender The sender address
|
|
72
|
-
* @
|
|
125
|
+
* @example
|
|
126
|
+
* ```typescript
|
|
127
|
+
* const signer = accountManager.getSigner("SENDERADDRESS")
|
|
128
|
+
* ```
|
|
129
|
+
* @returns The `TransactionSigner` or throws an error if not found and no default signer is set
|
|
73
130
|
*/
|
|
74
131
|
getSigner(sender) {
|
|
75
132
|
const signer = this._accounts[sender]?.signer ?? this._defaultSigner;
|
|
@@ -79,7 +136,17 @@ class AccountManager {
|
|
|
79
136
|
}
|
|
80
137
|
/**
|
|
81
138
|
* Returns the `TransactionSignerAccount` for the given sender address.
|
|
139
|
+
*
|
|
140
|
+
* If no signer has been registered for that address then an error is thrown.
|
|
82
141
|
* @param sender The sender address
|
|
142
|
+
* @example
|
|
143
|
+
* ```typescript
|
|
144
|
+
* const account = accountManager.random()
|
|
145
|
+
* const sender = account.addr
|
|
146
|
+
* // ...
|
|
147
|
+
* // Returns the `TransactionSignerAccount` for `sender` that has previously been registered
|
|
148
|
+
* const account = accountManager.getAccount(sender)
|
|
149
|
+
* ```
|
|
83
150
|
* @returns The `TransactionSignerAccount` or throws an error if not found
|
|
84
151
|
*/
|
|
85
152
|
getAccount(sender) {
|
|
@@ -102,7 +169,25 @@ class AccountManager {
|
|
|
102
169
|
* @returns The account information
|
|
103
170
|
*/
|
|
104
171
|
async getInformation(sender) {
|
|
105
|
-
|
|
172
|
+
const account = AccountInformationModel.from_obj_for_encoding(await this._clientManager.algod.accountInformation(typeof sender === 'string' ? sender : sender.addr).do());
|
|
173
|
+
return {
|
|
174
|
+
...account,
|
|
175
|
+
// None of these can practically overflow 2^53
|
|
176
|
+
amount: Number(account.amount),
|
|
177
|
+
amountWithoutPendingRewards: Number(account.amountWithoutPendingRewards),
|
|
178
|
+
minBalance: Number(account.minBalance),
|
|
179
|
+
pendingRewards: Number(account.pendingRewards),
|
|
180
|
+
rewards: Number(account.rewards),
|
|
181
|
+
round: Number(account.round),
|
|
182
|
+
totalAppsOptedIn: Number(account.totalAppsOptedIn),
|
|
183
|
+
totalAssetsOptedIn: Number(account.totalAssetsOptedIn),
|
|
184
|
+
totalCreatedApps: Number(account.totalCreatedApps),
|
|
185
|
+
totalCreatedAssets: Number(account.totalCreatedAssets),
|
|
186
|
+
appsTotalExtraPages: account.appsTotalExtraPages ? Number(account.appsTotalExtraPages) : undefined,
|
|
187
|
+
rewardBase: account.rewardBase ? Number(account.rewardBase) : undefined,
|
|
188
|
+
totalBoxBytes: account.totalBoxBytes ? Number(account.totalBoxBytes) : undefined,
|
|
189
|
+
totalBoxes: account.totalBoxes ? Number(account.totalBoxes) : undefined,
|
|
190
|
+
};
|
|
106
191
|
}
|
|
107
192
|
/**
|
|
108
193
|
* Returns the given sender account's asset holding for a given asset.
|
|
@@ -120,7 +205,15 @@ class AccountManager {
|
|
|
120
205
|
* @returns The account asset holding information
|
|
121
206
|
*/
|
|
122
207
|
async getAssetInformation(sender, assetId) {
|
|
123
|
-
|
|
208
|
+
const info = await this._clientManager.algod
|
|
209
|
+
.accountAssetInformation(typeof sender === 'string' ? sender : sender.addr, Number(assetId))
|
|
210
|
+
.do();
|
|
211
|
+
return {
|
|
212
|
+
assetId: BigInt(assetId),
|
|
213
|
+
balance: BigInt(info['asset-holding']['amount']),
|
|
214
|
+
frozen: info['asset-holding']['is-frozen'] === 'true',
|
|
215
|
+
round: BigInt(info['round']),
|
|
216
|
+
};
|
|
124
217
|
}
|
|
125
218
|
/**
|
|
126
219
|
* Tracks and returns an Algorand account with secret key loaded (i.e. that can sign transactions) by taking the mnemonic secret.
|
|
@@ -136,8 +229,23 @@ class AccountManager {
|
|
|
136
229
|
* @returns The account
|
|
137
230
|
*/
|
|
138
231
|
fromMnemonic(mnemonicSecret, sender) {
|
|
139
|
-
const account
|
|
140
|
-
return this.signerAccount(
|
|
232
|
+
const account = algosdk.mnemonicToSecretKey(mnemonicSecret);
|
|
233
|
+
return this.signerAccount(new types_account.SigningAccount(account, sender));
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Tracks and returns an Algorand account that is a rekeyed version of the given account to a new sender.
|
|
237
|
+
*
|
|
238
|
+
* @example
|
|
239
|
+
* ```typescript
|
|
240
|
+
* const account = await account.fromMnemonic("mnemonic secret ...")
|
|
241
|
+
* const rekeyedAccount = await account.rekeyed(account, "SENDERADDRESS...")
|
|
242
|
+
* ```
|
|
243
|
+
* @param account The account to use as the signer for this new rekeyed account
|
|
244
|
+
* @param sender The sender address to use as the new sender
|
|
245
|
+
* @returns The account
|
|
246
|
+
*/
|
|
247
|
+
rekeyed(account, sender) {
|
|
248
|
+
return this.signerAccount({ addr: sender, signer: account.signer });
|
|
141
249
|
}
|
|
142
250
|
/**
|
|
143
251
|
* Tracks and returns an Algorand account with private key loaded by convention from environment variables based on the given name identifier.
|
|
@@ -167,7 +275,20 @@ class AccountManager {
|
|
|
167
275
|
* @returns The account
|
|
168
276
|
*/
|
|
169
277
|
async fromEnvironment(name, fundWith) {
|
|
170
|
-
|
|
278
|
+
if (!process || !process.env) {
|
|
279
|
+
throw new Error('Attempt to get account with private key from a non Node.js context; this is not supported!');
|
|
280
|
+
}
|
|
281
|
+
const accountMnemonic = process.env[`${name.toUpperCase()}_MNEMONIC`];
|
|
282
|
+
const sender = process.env[`${name.toUpperCase()}_SENDER`];
|
|
283
|
+
if (accountMnemonic) {
|
|
284
|
+
const signer = algosdk.mnemonicToSecretKey(accountMnemonic);
|
|
285
|
+
return this.signerAccount(new types_account.SigningAccount(signer, sender));
|
|
286
|
+
}
|
|
287
|
+
if (await this._clientManager.isLocalNet()) {
|
|
288
|
+
const account = await this._kmdAccountManager.getOrCreateWalletAccount(name, fundWith);
|
|
289
|
+
return this.signerAccount(account.account);
|
|
290
|
+
}
|
|
291
|
+
throw new Error(`Missing environment variable ${name.toUpperCase()}_MNEMONIC when looking for account ${name}`);
|
|
171
292
|
}
|
|
172
293
|
/**
|
|
173
294
|
* Tracks and returns an Algorand account with private key loaded from the given KMD wallet (identified by name).
|
|
@@ -187,10 +308,10 @@ class AccountManager {
|
|
|
187
308
|
async fromKmd(name,
|
|
188
309
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
189
310
|
predicate, sender) {
|
|
190
|
-
const account
|
|
191
|
-
if (!account
|
|
311
|
+
const account = await this.kmd.getWalletAccount(name, predicate, sender);
|
|
312
|
+
if (!account)
|
|
192
313
|
throw new Error(`Unable to find KMD account ${name}${predicate ? ' with predicate' : ''}`);
|
|
193
|
-
return this.signerAccount(
|
|
314
|
+
return this.signerAccount(account.account);
|
|
194
315
|
}
|
|
195
316
|
/**
|
|
196
317
|
* Tracks and returns an account that supports partial or full multisig signing.
|
|
@@ -205,7 +326,7 @@ class AccountManager {
|
|
|
205
326
|
* @returns A multisig account wrapper
|
|
206
327
|
*/
|
|
207
328
|
multisig(multisigParams, signingAccounts) {
|
|
208
|
-
return this.signerAccount(
|
|
329
|
+
return this.signerAccount(new types_account.MultisigAccount(multisigParams, signingAccounts));
|
|
209
330
|
}
|
|
210
331
|
/**
|
|
211
332
|
* Tracks and returns an account that represents a logic signature.
|
|
@@ -231,21 +352,31 @@ class AccountManager {
|
|
|
231
352
|
* @returns The account
|
|
232
353
|
*/
|
|
233
354
|
random() {
|
|
234
|
-
return this.signerAccount(
|
|
355
|
+
return this.signerAccount(algosdk.generateAccount());
|
|
235
356
|
}
|
|
236
357
|
/**
|
|
237
|
-
* Returns an account (with private key loaded) that can act as a dispenser
|
|
358
|
+
* Returns an account (with private key loaded) that can act as a dispenser from
|
|
359
|
+
* environment variables, or against default LocalNet if no environment variables present.
|
|
360
|
+
*
|
|
361
|
+
* Note: requires a Node.js environment to execute.
|
|
362
|
+
*
|
|
363
|
+
* If present, it will load the account mnemonic stored in process.env.DISPENSER_MNEMONIC and optionally
|
|
364
|
+
* process.env.DISPENSER_SENDER if it's a rekeyed account.
|
|
238
365
|
*
|
|
239
366
|
* @example
|
|
240
367
|
* ```typescript
|
|
241
|
-
* const account = await account.
|
|
368
|
+
* const account = await account.dispenserFromEnvironment()
|
|
242
369
|
* ```
|
|
243
|
-
*
|
|
244
|
-
* otherwise it will load the account mnemonic stored in process.env.DISPENSER_MNEMONIC.
|
|
370
|
+
*
|
|
245
371
|
* @returns The account
|
|
246
372
|
*/
|
|
247
|
-
async
|
|
248
|
-
|
|
373
|
+
async dispenserFromEnvironment() {
|
|
374
|
+
if (!process || !process.env) {
|
|
375
|
+
throw new Error('Attempt to get dispenser from environment from a non Node.js context; this is not supported!');
|
|
376
|
+
}
|
|
377
|
+
return process.env[`${types_account.DISPENSER_ACCOUNT.toUpperCase()}_MNEMONIC`]
|
|
378
|
+
? await this.fromEnvironment(types_account.DISPENSER_ACCOUNT)
|
|
379
|
+
: await this.localNetDispenser();
|
|
249
380
|
}
|
|
250
381
|
/**
|
|
251
382
|
* Returns an Algorand account with private key loaded for the default LocalNet dispenser account (that can be used to fund other accounts).
|
|
@@ -257,9 +388,11 @@ class AccountManager {
|
|
|
257
388
|
* @returns The account
|
|
258
389
|
*/
|
|
259
390
|
async localNetDispenser() {
|
|
260
|
-
|
|
391
|
+
const dispenser = await this._kmdAccountManager.getLocalNetDispenserAccount();
|
|
392
|
+
return this.signerAccount(dispenser.account);
|
|
261
393
|
}
|
|
262
394
|
}
|
|
263
395
|
|
|
264
396
|
exports.AccountManager = AccountManager;
|
|
397
|
+
exports.getAccountTransactionSigner = getAccountTransactionSigner;
|
|
265
398
|
//# sourceMappingURL=account-manager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account-manager.js","sources":["../../src/types/account-manager.ts"],"sourcesContent":[null],"names":["
|
|
1
|
+
{"version":3,"file":"account-manager.js","sources":["../../src/types/account-manager.ts"],"sourcesContent":[null],"names":["KmdAccountManager","SigningAccount","MultisigAccount","DISPENSER_ACCOUNT"],"mappings":"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"}
|