@algorandfoundation/algokit-utils 3.1.0-beta.1 → 4.0.0-beta.1
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/cjs/dispenser-client.d.ts +19 -0
- package/cjs/dispenser-client.d.ts.map +1 -0
- package/cjs/dispenser-client.js +25 -0
- package/cjs/dispenser-client.js.map +1 -0
- package/cjs/index.d.ts +1 -0
- package/cjs/index.d.ts.map +1 -1
- package/cjs/index.js +1 -0
- package/cjs/index.js.map +1 -1
- package/cjs/network-client.d.ts.map +1 -1
- package/cjs/network-client.js +2 -2
- package/cjs/network-client.js.map +1 -1
- package/cjs/transfer.d.ts +8 -6
- package/cjs/transfer.d.ts.map +1 -1
- package/cjs/transfer.js +49 -17
- package/cjs/transfer.js.map +1 -1
- package/cjs/types/dispenser-client.d.ts +77 -0
- package/cjs/types/dispenser-client.d.ts.map +1 -0
- package/cjs/types/dispenser-client.js +139 -0
- package/cjs/types/dispenser-client.js.map +1 -0
- package/cjs/types/transfer.d.ts +8 -1
- package/cjs/types/transfer.d.ts.map +1 -1
- package/cjs/util.d.ts +8 -0
- package/cjs/util.d.ts.map +1 -1
- package/cjs/util.js +18 -1
- package/cjs/util.js.map +1 -1
- package/esm/dispenser-client.js +21 -0
- package/esm/dispenser-client.js.map +1 -0
- package/esm/index.js +1 -0
- package/esm/index.js.map +1 -1
- package/esm/network-client.js +2 -2
- package/esm/network-client.js.map +1 -1
- package/esm/transfer.js +49 -17
- package/esm/transfer.js.map +1 -1
- package/esm/types/dispenser-client.js +135 -0
- package/esm/types/dispenser-client.js.map +1 -0
- package/esm/util.js +16 -0
- package/esm/util.js.map +1 -1
- package/package.json +1 -1
- package/types/dispenser-client.d.ts +19 -0
- package/types/dispenser-client.d.ts.map +1 -0
- package/types/index.d.ts +1 -0
- package/types/index.d.ts.map +1 -1
- package/types/network-client.d.ts.map +1 -1
- package/types/transfer.d.ts +8 -6
- package/types/transfer.d.ts.map +1 -1
- package/types/types/dispenser-client.d.ts +77 -0
- package/types/types/dispenser-client.d.ts.map +1 -0
- package/types/types/transfer.d.ts +8 -1
- package/types/types/transfer.d.ts.map +1 -1
- package/types/util.d.ts +8 -0
- package/types/util.d.ts.map +1 -1
package/esm/index.js
CHANGED
|
@@ -9,6 +9,7 @@ export * from './localnet';
|
|
|
9
9
|
export * from './network-client';
|
|
10
10
|
export * from './transaction';
|
|
11
11
|
export * from './transfer';
|
|
12
|
+
export * from './dispenser-client';
|
|
12
13
|
/** The AlgoKit config. To update it use the configure method. */
|
|
13
14
|
export const Config = new UpdatableConfig();
|
|
14
15
|
//# sourceMappingURL=index.js.map
|
package/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAEhD,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;AACxB,cAAc,OAAO,CAAA;AACrB,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA;AAChC,cAAc,YAAY,CAAA;AAC1B,cAAc,kBAAkB,CAAA;AAChC,cAAc,eAAe,CAAA;AAC7B,cAAc,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAEhD,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;AACxB,cAAc,OAAO,CAAA;AACrB,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA;AAChC,cAAc,YAAY,CAAA;AAC1B,cAAc,kBAAkB,CAAA;AAChC,cAAc,eAAe,CAAA;AAC7B,cAAc,YAAY,CAAA;AAC1B,cAAc,oBAAoB,CAAA;AAElC,iEAAiE;AACjE,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAA"}
|
package/esm/network-client.js
CHANGED
|
@@ -169,11 +169,11 @@ export function getAlgoKmdClient(config) {
|
|
|
169
169
|
}
|
|
170
170
|
export async function isTestNet(algod) {
|
|
171
171
|
const params = await algod.getTransactionParams().do();
|
|
172
|
-
return
|
|
172
|
+
return ['testnet-v1.0', 'testnet-v1', 'testnet'].includes(params.genesisID);
|
|
173
173
|
}
|
|
174
174
|
export async function isMainNet(algod) {
|
|
175
175
|
const params = await algod.getTransactionParams().do();
|
|
176
|
-
return
|
|
176
|
+
return ['mainnet-v1.0', 'mainnet-v1', 'mainnet'].includes(params.genesisID);
|
|
177
177
|
}
|
|
178
178
|
export { isLocalNet } from './localnet';
|
|
179
179
|
//# sourceMappingURL=network-client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network-client.js","sourceRoot":"","sources":["../../src/network-client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"network-client.js","sourceRoot":"","sources":["../../src/network-client.ts"],"names":[],"mappings":"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"}
|
package/esm/transfer.js
CHANGED
|
@@ -1,6 +1,32 @@
|
|
|
1
1
|
import algosdk from 'algosdk';
|
|
2
2
|
import { Config, getDispenserAccount, microAlgos } from './';
|
|
3
|
+
import { isTestNet } from './network-client';
|
|
3
4
|
import { encodeTransactionNote, getSenderAddress, getTransactionParams, sendTransaction } from './transaction';
|
|
5
|
+
import { DispenserApiTestnetClient } from './types/dispenser-client';
|
|
6
|
+
import { calculateFundAmount } from './util';
|
|
7
|
+
async function fundUsingDispenserApi(dispenserClient, addressToFund, fundAmount) {
|
|
8
|
+
const response = await dispenserClient.fund(addressToFund, fundAmount);
|
|
9
|
+
return { transactionId: response.txId, amount: response.amount };
|
|
10
|
+
}
|
|
11
|
+
async function fundUsingTransfer({ algod, addressToFund, funding, fundAmount, transactionParams, sendParams, note, kmd, }) {
|
|
12
|
+
if (funding.fundingSource instanceof DispenserApiTestnetClient) {
|
|
13
|
+
throw new Error('Dispenser API client is not supported in this context.');
|
|
14
|
+
}
|
|
15
|
+
const from = funding.fundingSource ?? (await getDispenserAccount(algod, kmd));
|
|
16
|
+
const amount = microAlgos(Math.max(fundAmount, funding.minFundingIncrement?.microAlgos ?? 0));
|
|
17
|
+
const response = await transferAlgos({
|
|
18
|
+
from,
|
|
19
|
+
to: addressToFund,
|
|
20
|
+
note: note ?? 'Funding account to meet minimum requirement',
|
|
21
|
+
amount: amount,
|
|
22
|
+
transactionParams: transactionParams,
|
|
23
|
+
...sendParams,
|
|
24
|
+
}, algod);
|
|
25
|
+
return {
|
|
26
|
+
transactionId: response.transaction.txID(),
|
|
27
|
+
amount: Number(response.transaction.amount),
|
|
28
|
+
};
|
|
29
|
+
}
|
|
4
30
|
/**
|
|
5
31
|
* Transfer ALGOs between two accounts.
|
|
6
32
|
* @param transfer The transfer definition
|
|
@@ -33,10 +59,12 @@ export async function transferAlgos(transfer, algod) {
|
|
|
33
59
|
*
|
|
34
60
|
* https://developer.algorand.org/docs/get-details/accounts/#minimum-balance
|
|
35
61
|
*
|
|
36
|
-
* @param funding The funding configuration
|
|
37
|
-
* @param algod An
|
|
38
|
-
* @param kmd An optional
|
|
39
|
-
* @returns
|
|
62
|
+
* @param funding The funding configuration of type `EnsureFundedParams`, including the account to fund, minimum spending balance, and optional parameters. If you set `useDispenserApi` to true, you must also set `ALGOKIT_DISPENSER_ACCESS_TOKEN` in your environment variables.
|
|
63
|
+
* @param algod An instance of the Algodv2 client.
|
|
64
|
+
* @param kmd An optional instance of the Kmd client.
|
|
65
|
+
* @returns
|
|
66
|
+
* - `EnsureFundedReturnType` if funds were transferred.
|
|
67
|
+
* - `undefined` if no funds were needed.
|
|
40
68
|
*/
|
|
41
69
|
export async function ensureFunded(funding, algod, kmd) {
|
|
42
70
|
const { accountToFund, fundingSource, minSpendingBalance, minFundingIncrement, transactionParams, note, ...sendParams } = funding;
|
|
@@ -45,19 +73,23 @@ export async function ensureFunded(funding, algod, kmd) {
|
|
|
45
73
|
const balance = Number(accountInfo.amount);
|
|
46
74
|
const minimumBalanceRequirement = microAlgos(Number(accountInfo['min-balance']));
|
|
47
75
|
const currentSpendingBalance = microAlgos(balance - minimumBalanceRequirement.microAlgos);
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
76
|
+
const fundAmount = calculateFundAmount(minSpendingBalance.microAlgos, currentSpendingBalance.microAlgos, minFundingIncrement?.microAlgos ?? 0);
|
|
77
|
+
if (fundAmount !== null) {
|
|
78
|
+
if ((await isTestNet(algod)) && fundingSource instanceof DispenserApiTestnetClient) {
|
|
79
|
+
return fundUsingDispenserApi(fundingSource, addressToFund, fundAmount);
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
return fundUsingTransfer({
|
|
83
|
+
algod,
|
|
84
|
+
addressToFund,
|
|
85
|
+
funding,
|
|
86
|
+
fundAmount,
|
|
87
|
+
transactionParams,
|
|
88
|
+
sendParams,
|
|
89
|
+
note,
|
|
90
|
+
kmd,
|
|
91
|
+
});
|
|
92
|
+
}
|
|
61
93
|
}
|
|
62
94
|
return undefined;
|
|
63
95
|
}
|
package/esm/transfer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transfer.js","sourceRoot":"","sources":["../../src/transfer.ts"],"names":[],"mappings":"AAAA,OAAO,OAAyB,MAAM,SAAS,CAAA;AAC/C,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,IAAI,CAAA;AAC5D,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"transfer.js","sourceRoot":"","sources":["../../src/transfer.ts"],"names":[],"mappings":"AAAA,OAAO,OAAyB,MAAM,SAAS,CAAA;AAC/C,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,IAAI,CAAA;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC5C,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAE9G,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAA;AAGpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAA;AAE5C,KAAK,UAAU,qBAAqB,CAClC,eAA0C,EAC1C,aAAqB,EACrB,UAAkB;IAElB,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,CAAA;IACtE,OAAO,EAAE,aAAa,EAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAA;AAClE,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,EAC/B,KAAK,EACL,aAAa,EACb,OAAO,EACP,UAAU,EACV,iBAAiB,EACjB,UAAU,EACV,IAAI,EACJ,GAAG,GAkBJ;IACC,IAAI,OAAO,CAAC,aAAa,YAAY,yBAAyB,EAAE;QAC9D,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAA;KAC1E;IAED,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,IAAI,CAAC,MAAM,mBAAmB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAA;IAC7E,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,mBAAmB,EAAE,UAAU,IAAI,CAAC,CAAC,CAAC,CAAA;IAC7F,MAAM,QAAQ,GAAG,MAAM,aAAa,CAClC;QACE,IAAI;QACJ,EAAE,EAAE,aAAa;QACjB,IAAI,EAAE,IAAI,IAAI,6CAA6C;QAC3D,MAAM,EAAE,MAAM;QACd,iBAAiB,EAAE,iBAAiB;QACpC,GAAG,UAAU;KACd,EACD,KAAK,CACN,CAAA;IAED,OAAO;QACL,aAAa,EAAE,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE;QAC1C,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC;KAC5C,CAAA;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,QAA4B,EAAE,KAAc;IAC9E,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,GAAG,UAAU,EAAE,GAAG,QAAQ,CAAA;IAE7E,MAAM,WAAW,GAAG,OAAO,CAAC,2CAA2C,CAAC;QACtE,IAAI,EAAE,gBAAgB,CAAC,IAAI,CAAC;QAC5B,EAAE,EAAE,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACtD,MAAM,EAAE,MAAM,CAAC,UAAU;QACzB,IAAI,EAAE,qBAAqB,CAAC,IAAI,CAAC;QACjC,eAAe,EAAE,MAAM,oBAAoB,CAAC,iBAAiB,EAAE,KAAK,CAAC;QACrE,gBAAgB,EAAE,SAAS;QAC3B,OAAO,EAAE,SAAS;KACnB,CAAC,CAAA;IAEF,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;QAC3B,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,gBAAgB,MAAM,CAAC,UAAU,eAAe,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;KAClI;IAED,OAAO,eAAe,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,KAAK,CAAC,CAAA;AAClE,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,OAAU,EACV,KAAc,EACd,GAAS;IAET,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,IAAI,EAAE,GAAG,UAAU,EAAE,GAAG,OAAO,CAAA;IAEjI,MAAM,aAAa,GAAG,OAAO,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAA;IAEzG,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC,EAAE,EAAE,CAAA;IACtE,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;IAC1C,MAAM,yBAAyB,GAAG,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAA;IAChF,MAAM,sBAAsB,GAAG,UAAU,CAAC,OAAO,GAAG,yBAAyB,CAAC,UAAU,CAAC,CAAA;IAEzF,MAAM,UAAU,GAAG,mBAAmB,CACpC,kBAAkB,CAAC,UAAU,EAC7B,sBAAsB,CAAC,UAAU,EACjC,mBAAmB,EAAE,UAAU,IAAI,CAAC,CACrC,CAAA;IAED,IAAI,UAAU,KAAK,IAAI,EAAE;QACvB,IAAI,CAAC,MAAM,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,aAAa,YAAY,yBAAyB,EAAE;YAClF,OAAO,qBAAqB,CAAC,aAAa,EAAE,aAAa,EAAE,UAAU,CAAoC,CAAA;SAC1G;aAAM;YACL,OAAO,iBAAiB,CAAC;gBACvB,KAAK;gBACL,aAAa;gBACb,OAAO;gBACP,UAAU;gBACV,iBAAiB;gBACjB,UAAU;gBACV,IAAI;gBACJ,GAAG;aACJ,CAAoC,CAAA;SACtC;KACF;IAED,OAAO,SAAS,CAAA;AAClB,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,QAA6B,EAAE,KAAc;IAC/E,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,UAAU,EAAE,GAAG,QAAQ,CAAA;IACpG,MAAM,WAAW,GAAG,OAAO,CAAC,iDAAiD,CAAC;QAC5E,IAAI,EAAE,gBAAgB,CAAC,IAAI,CAAC;QAC5B,EAAE,EAAE,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACtD,gBAAgB,EAAE,SAAS;QAC3B,gBAAgB,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;QAC/H,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,qBAAqB,CAAC,IAAI,CAAC;QACjC,UAAU,EAAE,OAAO;QACnB,eAAe,EAAE,MAAM,oBAAoB,CAAC,iBAAiB,EAAE,KAAK,CAAC;QACrE,OAAO,EAAE,SAAS;KACnB,CAAC,CAAA;IAEF,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;QAC3B,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,KAAK,CAC5C,qBAAqB,OAAO,eAAe,MAAM,SAAS,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAC5F,CAAA;KACF;IAED,OAAO,eAAe,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,KAAK,CAAC,CAAA;AAClE,CAAC"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
const baseUrl = 'https://api.dispenser.algorandfoundation.tools';
|
|
2
|
+
const dispenserRequestTimeout = 15;
|
|
3
|
+
const dispenserAccessTokenKey = 'ALGOKIT_DISPENSER_ACCESS_TOKEN';
|
|
4
|
+
var DispenserAssetName;
|
|
5
|
+
(function (DispenserAssetName) {
|
|
6
|
+
DispenserAssetName[DispenserAssetName["Algo"] = 0] = "Algo";
|
|
7
|
+
})(DispenserAssetName || (DispenserAssetName = {}));
|
|
8
|
+
const dispenserAssets = {
|
|
9
|
+
[DispenserAssetName.Algo]: {
|
|
10
|
+
assetId: 0,
|
|
11
|
+
decimals: 6,
|
|
12
|
+
description: 'Algo',
|
|
13
|
+
},
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* `DispenserApiTestnetClient` is a class that provides methods to interact with the [Algorand TestNet Dispenser API](https://github.com/algorandfoundation/algokit/blob/main/docs/testnet_api.md).
|
|
17
|
+
* It allows you to fund an address with Algos, refund a transaction, and get the funding limit for the Algo asset.
|
|
18
|
+
*
|
|
19
|
+
* The class requires an authentication token and a request timeout to be initialized. The authentication token can be provided
|
|
20
|
+
* either directly as a parameter or through an `ALGOKIT_DISPENSER_ACCESS_TOKEN` environment variable. If neither is provided, an error is thrown.
|
|
21
|
+
*
|
|
22
|
+
* The request timeout can be provided as a parameter. If not provided, a default value is used.
|
|
23
|
+
*
|
|
24
|
+
* @property {string} authToken - The authentication token used for API requests.
|
|
25
|
+
* @property {number} requestTimeout - The timeout for API requests, in seconds.
|
|
26
|
+
*
|
|
27
|
+
* @method fund - Sends a funding request to the dispenser API to fund the specified address with the given amount of Algo.
|
|
28
|
+
* @method refund - Sends a refund request to the dispenser API for the specified refundTxnId.
|
|
29
|
+
* @method limit - Sends a request to the dispenser API to get the funding limit for the Algo asset.
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* ```typescript
|
|
33
|
+
* const client = new DispenserApiTestnetClient({ authToken: 'your_auth_token', requestTimeout: 30 });
|
|
34
|
+
* const fundResponse = await client.fund('your_address', 100);
|
|
35
|
+
* const limitResponse = await client.getLimit();
|
|
36
|
+
* await client.refund('your_transaction_id');
|
|
37
|
+
* ```
|
|
38
|
+
*
|
|
39
|
+
* @throws {Error} If neither the environment variable 'ALGOKIT_DISPENSER_ACCESS_TOKEN' nor the authToken parameter were provided.
|
|
40
|
+
*/
|
|
41
|
+
export class DispenserApiTestnetClient {
|
|
42
|
+
_authToken;
|
|
43
|
+
_requestTimeout;
|
|
44
|
+
constructor(params) {
|
|
45
|
+
const authTokenFromEnv = process.env[dispenserAccessTokenKey];
|
|
46
|
+
if (params?.authToken) {
|
|
47
|
+
this._authToken = params.authToken;
|
|
48
|
+
}
|
|
49
|
+
else if (authTokenFromEnv) {
|
|
50
|
+
this._authToken = authTokenFromEnv;
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
throw new Error(`Can't init AlgoKit TestNet Dispenser API client because neither environment variable ${dispenserAccessTokenKey} or the authToken were provided.`);
|
|
54
|
+
}
|
|
55
|
+
this._requestTimeout = params?.requestTimeout || dispenserRequestTimeout;
|
|
56
|
+
}
|
|
57
|
+
get authToken() {
|
|
58
|
+
return this._authToken;
|
|
59
|
+
}
|
|
60
|
+
get requestTimeout() {
|
|
61
|
+
return this._requestTimeout;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Processes a dispenser API request.
|
|
65
|
+
*
|
|
66
|
+
* @param authToken - The authentication token.
|
|
67
|
+
* @param urlSuffix - The URL suffix for the API request.
|
|
68
|
+
* @param body - The request body.
|
|
69
|
+
* @param method - The HTTP method.
|
|
70
|
+
*
|
|
71
|
+
* @returns The API response.
|
|
72
|
+
*/
|
|
73
|
+
async processDispenserRequest(authToken, urlSuffix, body = null, method = 'POST') {
|
|
74
|
+
const headers = { Authorization: `Bearer ${authToken}` };
|
|
75
|
+
const requestArgs = {
|
|
76
|
+
method: method,
|
|
77
|
+
headers: headers,
|
|
78
|
+
signal: AbortSignal.timeout(this.requestTimeout * 1000),
|
|
79
|
+
};
|
|
80
|
+
if (body) {
|
|
81
|
+
requestArgs.body = JSON.stringify(body);
|
|
82
|
+
}
|
|
83
|
+
const response = await fetch(`${baseUrl}/${urlSuffix}`, requestArgs);
|
|
84
|
+
if (!response.ok) {
|
|
85
|
+
let error_message = `Error processing dispenser API request: ${response.status}`;
|
|
86
|
+
let error_response = null;
|
|
87
|
+
try {
|
|
88
|
+
error_response = await response.json();
|
|
89
|
+
}
|
|
90
|
+
catch (err) {
|
|
91
|
+
// suppress exception
|
|
92
|
+
}
|
|
93
|
+
if (error_response && error_response.code) {
|
|
94
|
+
error_message = error_response.code;
|
|
95
|
+
}
|
|
96
|
+
else if (response.status === 400) {
|
|
97
|
+
error_message = (await response.json()).message;
|
|
98
|
+
}
|
|
99
|
+
throw new Error(error_message);
|
|
100
|
+
}
|
|
101
|
+
return response;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Sends a funding request to the dispenser API to fund the specified address with the given amount of Algo.
|
|
105
|
+
*
|
|
106
|
+
* @param address - The address to fund.
|
|
107
|
+
* @param amount - The amount of Algo to fund.
|
|
108
|
+
*
|
|
109
|
+
* @returns DispenserFundResponse: An object containing the transaction ID and funded amount.
|
|
110
|
+
*/
|
|
111
|
+
async fund(address, amount) {
|
|
112
|
+
const response = await this.processDispenserRequest(this.authToken, `fund/${dispenserAssets[DispenserAssetName.Algo].assetId}`, { receiver: address, amount: amount, assetID: dispenserAssets[DispenserAssetName.Algo].assetId }, 'POST');
|
|
113
|
+
const content = await response.json();
|
|
114
|
+
return { txId: content.txID, amount: content.amount };
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Sends a refund request to the dispenser API for the specified refundTxnId.
|
|
118
|
+
*
|
|
119
|
+
* @param refundTxnId - The transaction ID to refund.
|
|
120
|
+
*/
|
|
121
|
+
async refund(refundTxnId) {
|
|
122
|
+
await this.processDispenserRequest(this.authToken, 'refund', { refundTransactionID: refundTxnId }, 'POST');
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Sends a request to the dispenser API to get the funding limit for the Algo asset.
|
|
126
|
+
*
|
|
127
|
+
* @returns DispenserLimitResponse: An object containing the funding limit amount.
|
|
128
|
+
*/
|
|
129
|
+
async getLimit() {
|
|
130
|
+
const response = await this.processDispenserRequest(this.authToken, `fund/${dispenserAssets[DispenserAssetName.Algo].assetId}/limit`, null, 'GET');
|
|
131
|
+
const content = await response.json();
|
|
132
|
+
return { amount: content.amount };
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=dispenser-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dispenser-client.js","sourceRoot":"","sources":["../../../src/types/dispenser-client.ts"],"names":[],"mappings":"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"}
|
package/esm/util.js
CHANGED
|
@@ -17,4 +17,20 @@ export const toNumber = (value) => {
|
|
|
17
17
|
};
|
|
18
18
|
export class UnsafeConversionError extends Error {
|
|
19
19
|
}
|
|
20
|
+
/**
|
|
21
|
+
* Calculates the amount of funds to add to a wallet to bring it up to the minimum spending balance.
|
|
22
|
+
* @param minSpendingBalance The minimum spending balance for the wallet
|
|
23
|
+
* @param currentSpendingBalance The current spending balance for the wallet
|
|
24
|
+
* @param minFundingIncrement The minimum amount of funds that can be added to the wallet
|
|
25
|
+
* @returns The amount of funds to add to the wallet or null if the wallet is already above the minimum spending balance
|
|
26
|
+
*/
|
|
27
|
+
export const calculateFundAmount = (minSpendingBalance, currentSpendingBalance, minFundingIncrement) => {
|
|
28
|
+
if (minSpendingBalance > currentSpendingBalance) {
|
|
29
|
+
const minFundAmount = minSpendingBalance - currentSpendingBalance;
|
|
30
|
+
return Math.max(minFundAmount, minFundingIncrement);
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
};
|
|
20
36
|
//# sourceMappingURL=util.js.map
|
package/esm/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAsB,EAAE,EAAE;IACjD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IAE3C,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE;QAC3C,MAAM,IAAI,qBAAqB,CAC7B,kBAAkB,KAAK,sFAAsF,CAC9G,CAAA;KACF;SAAM,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE;QAClD,MAAM,IAAI,qBAAqB,CAC7B,kBAAkB,KAAK,uFAAuF,CAC/G,CAAA;KACF;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;AACtB,CAAC,CAAA;AAED,MAAM,OAAO,qBAAsB,SAAQ,KAAK;CAAG"}
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAsB,EAAE,EAAE;IACjD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IAE3C,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE;QAC3C,MAAM,IAAI,qBAAqB,CAC7B,kBAAkB,KAAK,sFAAsF,CAC9G,CAAA;KACF;SAAM,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE;QAClD,MAAM,IAAI,qBAAqB,CAC7B,kBAAkB,KAAK,uFAAuF,CAC/G,CAAA;KACF;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;AACtB,CAAC,CAAA;AAED,MAAM,OAAO,qBAAsB,SAAQ,KAAK;CAAG;AAEnD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,kBAA0B,EAC1B,sBAA8B,EAC9B,mBAA2B,EACZ,EAAE;IACjB,IAAI,kBAAkB,GAAG,sBAAsB,EAAE;QAC/C,MAAM,aAAa,GAAG,kBAAkB,GAAG,sBAAsB,CAAA;QACjE,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,mBAAmB,CAAC,CAAA;KACpD;SAAM;QACL,OAAO,IAAI,CAAA;KACZ;AACH,CAAC,CAAA"}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"main": "./cjs/index.js",
|
|
3
3
|
"types": "./types/index.d.ts",
|
|
4
4
|
"name": "@algorandfoundation/algokit-utils",
|
|
5
|
-
"version": "
|
|
5
|
+
"version": "4.0.0-beta.1",
|
|
6
6
|
"private": false,
|
|
7
7
|
"description": "A set of core Algorand utilities written in TypeScript and released via npm that make it easier to build solutions on Algorand.",
|
|
8
8
|
"author": "Algorand Foundation",
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { DispenserApiTestnetClient, DispenserApiTestnetClientParams } from './types/dispenser-client';
|
|
2
|
+
/**
|
|
3
|
+
* Create a new DispenserApiTestnetClient instance.
|
|
4
|
+
* Refer to [docs](https://github.com/algorandfoundation/algokit/blob/main/docs/testnet_api.md) on guidance to obtain an access token.
|
|
5
|
+
*
|
|
6
|
+
* @param params An object containing parameters for the DispenserApiTestnetClient class.
|
|
7
|
+
* Or null if you want the client to load the access token from the environment variable `ALGOKIT_DISPENSER_ACCESS_TOKEN`.
|
|
8
|
+
* @example
|
|
9
|
+
* const client = algokit.getDispenserApiTestnetClient(
|
|
10
|
+
* {
|
|
11
|
+
* authToken: 'your_auth_token',
|
|
12
|
+
* requestTimeout: 15,
|
|
13
|
+
* }
|
|
14
|
+
* )
|
|
15
|
+
*
|
|
16
|
+
* @returns An instance of the DispenserApiTestnetClient class.
|
|
17
|
+
*/
|
|
18
|
+
export declare function getDispenserApiTestnetClient(params?: DispenserApiTestnetClientParams | null): DispenserApiTestnetClient;
|
|
19
|
+
//# sourceMappingURL=dispenser-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dispenser-client.d.ts","sourceRoot":"","sources":["../../src/dispenser-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,+BAA+B,EAAE,MAAM,0BAA0B,CAAA;AAErG;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,4BAA4B,CAAC,MAAM,GAAE,+BAA+B,GAAG,IAAW,6BAEjG"}
|
package/types/index.d.ts
CHANGED
|
@@ -9,6 +9,7 @@ export * from './localnet';
|
|
|
9
9
|
export * from './network-client';
|
|
10
10
|
export * from './transaction';
|
|
11
11
|
export * from './transfer';
|
|
12
|
+
export * from './dispenser-client';
|
|
12
13
|
/** The AlgoKit config. To update it use the configure method. */
|
|
13
14
|
export declare const Config: UpdatableConfig;
|
|
14
15
|
//# sourceMappingURL=index.d.ts.map
|
package/types/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAEhD,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;AACxB,cAAc,OAAO,CAAA;AACrB,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA;AAChC,cAAc,YAAY,CAAA;AAC1B,cAAc,kBAAkB,CAAA;AAChC,cAAc,eAAe,CAAA;AAC7B,cAAc,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAEhD,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;AACxB,cAAc,OAAO,CAAA;AACrB,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA;AAChC,cAAc,YAAY,CAAA;AAC1B,cAAc,kBAAkB,CAAA;AAChC,cAAc,eAAe,CAAA;AAC7B,cAAc,YAAY,CAAA;AAC1B,cAAc,oBAAoB,CAAA;AAElC,iEAAiE;AACjE,eAAO,MAAM,MAAM,iBAAwB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network-client.d.ts","sourceRoot":"","sources":["../../src/network-client.ts"],"names":[],"mappings":"AAAA,OAAgB,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,SAAS,CAAA;AAGxD,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAErE,uJAAuJ;AACvJ,wBAAgB,0BAA0B,IAAI,UAAU,CAwBvD;AAED,mIAAmI;AACnI,wBAAgB,6BAA6B,IAAI,gBAAgB,CAchE;AAED,qIAAqI;AACrI,wBAAgB,+BAA+B,IAAI,gBAAgB,CAclE;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,SAAS,GAAG,SAAS,EAAE,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,gBAAgB,CAK/G;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,YAAY,EAAE,OAAO,GAAG,SAAS,GAAG,KAAK,GAAG,MAAM,GAAG,gBAAgB,CAM7G;AAUD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,aAAa,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAIhE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAIvE;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,GAAG,CAK/D;AAED,wBAAsB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAGhE;
|
|
1
|
+
{"version":3,"file":"network-client.d.ts","sourceRoot":"","sources":["../../src/network-client.ts"],"names":[],"mappings":"AAAA,OAAgB,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,SAAS,CAAA;AAGxD,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAErE,uJAAuJ;AACvJ,wBAAgB,0BAA0B,IAAI,UAAU,CAwBvD;AAED,mIAAmI;AACnI,wBAAgB,6BAA6B,IAAI,gBAAgB,CAchE;AAED,qIAAqI;AACrI,wBAAgB,+BAA+B,IAAI,gBAAgB,CAclE;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,SAAS,GAAG,SAAS,EAAE,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,gBAAgB,CAK/G;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,YAAY,EAAE,OAAO,GAAG,SAAS,GAAG,KAAK,GAAG,MAAM,GAAG,gBAAgB,CAM7G;AAUD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,aAAa,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAIhE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAIvE;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,GAAG,CAK/D;AAED,wBAAsB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAGhE;AAED,wBAAsB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAGhE;AAED,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA"}
|
package/types/transfer.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Algodv2, Kmd } from 'algosdk';
|
|
2
2
|
import { SendTransactionResult } from './types/transaction';
|
|
3
|
-
import { AlgoTransferParams, EnsureFundedParams, TransferAssetParams } from './types/transfer';
|
|
3
|
+
import { AlgoTransferParams, EnsureFundedParams, EnsureFundedReturnType, TransferAssetParams } from './types/transfer';
|
|
4
4
|
/**
|
|
5
5
|
* Transfer ALGOs between two accounts.
|
|
6
6
|
* @param transfer The transfer definition
|
|
@@ -18,12 +18,14 @@ export declare function transferAlgos(transfer: AlgoTransferParams, algod: Algod
|
|
|
18
18
|
*
|
|
19
19
|
* https://developer.algorand.org/docs/get-details/accounts/#minimum-balance
|
|
20
20
|
*
|
|
21
|
-
* @param funding The funding configuration
|
|
22
|
-
* @param algod An
|
|
23
|
-
* @param kmd An optional
|
|
24
|
-
* @returns
|
|
21
|
+
* @param funding The funding configuration of type `EnsureFundedParams`, including the account to fund, minimum spending balance, and optional parameters. If you set `useDispenserApi` to true, you must also set `ALGOKIT_DISPENSER_ACCESS_TOKEN` in your environment variables.
|
|
22
|
+
* @param algod An instance of the Algodv2 client.
|
|
23
|
+
* @param kmd An optional instance of the Kmd client.
|
|
24
|
+
* @returns
|
|
25
|
+
* - `EnsureFundedReturnType` if funds were transferred.
|
|
26
|
+
* - `undefined` if no funds were needed.
|
|
25
27
|
*/
|
|
26
|
-
export declare function ensureFunded(funding:
|
|
28
|
+
export declare function ensureFunded<T extends EnsureFundedParams>(funding: T, algod: Algodv2, kmd?: Kmd): Promise<EnsureFundedReturnType | undefined>;
|
|
27
29
|
/**
|
|
28
30
|
* Transfer asset between two accounts.
|
|
29
31
|
* @param transfer The transfer definition
|
package/types/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,GAAG,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"transfer.d.ts","sourceRoot":"","sources":["../../src/transfer.ts"],"names":[],"mappings":"AAAA,OAAgB,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,SAAS,CAAA;AAM/C,OAAO,EAAE,qBAAqB,EAAmB,MAAM,qBAAqB,CAAA;AAC5E,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AA+DtH;;;;;;;;;;GAUG;AACH,wBAAsB,aAAa,CAAC,QAAQ,EAAE,kBAAkB,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAkBhH;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,YAAY,CAAC,CAAC,SAAS,kBAAkB,EAC7D,OAAO,EAAE,CAAC,EACV,KAAK,EAAE,OAAO,EACd,GAAG,CAAC,EAAE,GAAG,GACR,OAAO,CAAC,sBAAsB,GAAG,SAAS,CAAC,CAkC7C;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,aAAa,CAAC,QAAQ,EAAE,mBAAmB,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAqBjH"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
export interface DispenserFundResponse {
|
|
2
|
+
txId: string;
|
|
3
|
+
amount: number;
|
|
4
|
+
}
|
|
5
|
+
export interface DispenserLimitResponse {
|
|
6
|
+
amount: number;
|
|
7
|
+
}
|
|
8
|
+
export interface DispenserApiTestnetClientParams {
|
|
9
|
+
authToken: string;
|
|
10
|
+
requestTimeout: number | null;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* `DispenserApiTestnetClient` is a class that provides methods to interact with the [Algorand TestNet Dispenser API](https://github.com/algorandfoundation/algokit/blob/main/docs/testnet_api.md).
|
|
14
|
+
* It allows you to fund an address with Algos, refund a transaction, and get the funding limit for the Algo asset.
|
|
15
|
+
*
|
|
16
|
+
* The class requires an authentication token and a request timeout to be initialized. The authentication token can be provided
|
|
17
|
+
* either directly as a parameter or through an `ALGOKIT_DISPENSER_ACCESS_TOKEN` environment variable. If neither is provided, an error is thrown.
|
|
18
|
+
*
|
|
19
|
+
* The request timeout can be provided as a parameter. If not provided, a default value is used.
|
|
20
|
+
*
|
|
21
|
+
* @property {string} authToken - The authentication token used for API requests.
|
|
22
|
+
* @property {number} requestTimeout - The timeout for API requests, in seconds.
|
|
23
|
+
*
|
|
24
|
+
* @method fund - Sends a funding request to the dispenser API to fund the specified address with the given amount of Algo.
|
|
25
|
+
* @method refund - Sends a refund request to the dispenser API for the specified refundTxnId.
|
|
26
|
+
* @method limit - Sends a request to the dispenser API to get the funding limit for the Algo asset.
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* ```typescript
|
|
30
|
+
* const client = new DispenserApiTestnetClient({ authToken: 'your_auth_token', requestTimeout: 30 });
|
|
31
|
+
* const fundResponse = await client.fund('your_address', 100);
|
|
32
|
+
* const limitResponse = await client.getLimit();
|
|
33
|
+
* await client.refund('your_transaction_id');
|
|
34
|
+
* ```
|
|
35
|
+
*
|
|
36
|
+
* @throws {Error} If neither the environment variable 'ALGOKIT_DISPENSER_ACCESS_TOKEN' nor the authToken parameter were provided.
|
|
37
|
+
*/
|
|
38
|
+
export declare class DispenserApiTestnetClient {
|
|
39
|
+
private _authToken;
|
|
40
|
+
private _requestTimeout;
|
|
41
|
+
constructor(params: DispenserApiTestnetClientParams | null);
|
|
42
|
+
get authToken(): string;
|
|
43
|
+
get requestTimeout(): number;
|
|
44
|
+
/**
|
|
45
|
+
* Processes a dispenser API request.
|
|
46
|
+
*
|
|
47
|
+
* @param authToken - The authentication token.
|
|
48
|
+
* @param urlSuffix - The URL suffix for the API request.
|
|
49
|
+
* @param body - The request body.
|
|
50
|
+
* @param method - The HTTP method.
|
|
51
|
+
*
|
|
52
|
+
* @returns The API response.
|
|
53
|
+
*/
|
|
54
|
+
private processDispenserRequest;
|
|
55
|
+
/**
|
|
56
|
+
* Sends a funding request to the dispenser API to fund the specified address with the given amount of Algo.
|
|
57
|
+
*
|
|
58
|
+
* @param address - The address to fund.
|
|
59
|
+
* @param amount - The amount of Algo to fund.
|
|
60
|
+
*
|
|
61
|
+
* @returns DispenserFundResponse: An object containing the transaction ID and funded amount.
|
|
62
|
+
*/
|
|
63
|
+
fund(address: string, amount: number): Promise<DispenserFundResponse>;
|
|
64
|
+
/**
|
|
65
|
+
* Sends a refund request to the dispenser API for the specified refundTxnId.
|
|
66
|
+
*
|
|
67
|
+
* @param refundTxnId - The transaction ID to refund.
|
|
68
|
+
*/
|
|
69
|
+
refund(refundTxnId: string): Promise<void>;
|
|
70
|
+
/**
|
|
71
|
+
* Sends a request to the dispenser API to get the funding limit for the Algo asset.
|
|
72
|
+
*
|
|
73
|
+
* @returns DispenserLimitResponse: An object containing the funding limit amount.
|
|
74
|
+
*/
|
|
75
|
+
getLimit(): Promise<DispenserLimitResponse>;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=dispenser-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dispenser-client.d.ts","sourceRoot":"","sources":["../../../src/types/dispenser-client.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,+BAA+B;IAC9C,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;CAC9B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,yBAAyB;IACpC,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,eAAe,CAAQ;gBAEnB,MAAM,EAAE,+BAA+B,GAAG,IAAI;IAgB1D,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED;;;;;;;;;OASG;YACW,uBAAuB;IAuCrC;;;;;;;OAOG;IACG,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAY3E;;;;OAIG;IACG,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhD;;;;OAIG;IACG,QAAQ,IAAI,OAAO,CAAC,sBAAsB,CAAC;CAWlD"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { SuggestedParams } from 'algosdk';
|
|
2
2
|
import { AlgoAmount } from './amount';
|
|
3
|
+
import { DispenserApiTestnetClient } from './dispenser-client';
|
|
3
4
|
import { SendTransactionFrom, SendTransactionParams, TransactionNote } from './transaction';
|
|
4
5
|
/** Parameters for `transferAlgos` call. */
|
|
5
6
|
export interface AlgoTransferParams extends SendTransactionParams {
|
|
@@ -19,7 +20,7 @@ export interface EnsureFundedParams extends SendTransactionParams {
|
|
|
19
20
|
/** The account to fund */
|
|
20
21
|
accountToFund: SendTransactionFrom | string;
|
|
21
22
|
/** The account to use as a funding source, will default to using the dispenser account returned by `algokit.getDispenserAccount` */
|
|
22
|
-
fundingSource?: SendTransactionFrom;
|
|
23
|
+
fundingSource?: SendTransactionFrom | DispenserApiTestnetClient;
|
|
23
24
|
/** The minimum balance of ALGOs that the account should have available to spend (i.e. on top of minimum balance requirement) */
|
|
24
25
|
minSpendingBalance: AlgoAmount;
|
|
25
26
|
/** When issuing a funding amount, the minimum amount to transfer (avoids many small transfers if this gets called often on an active account) */
|
|
@@ -46,4 +47,10 @@ export interface TransferAssetParams extends SendTransactionParams {
|
|
|
46
47
|
/** The (optional) transaction note */
|
|
47
48
|
note?: TransactionNote;
|
|
48
49
|
}
|
|
50
|
+
export interface EnsureFundedReturnType {
|
|
51
|
+
/** The transaction */
|
|
52
|
+
transactionId: string;
|
|
53
|
+
/** The response if the transaction was sent and waited for */
|
|
54
|
+
amount: number;
|
|
55
|
+
}
|
|
49
56
|
//# sourceMappingURL=transfer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transfer.d.ts","sourceRoot":"","sources":["../../../src/types/transfer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AACrC,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAE3F,2CAA2C;AAC3C,MAAM,WAAW,kBAAmB,SAAQ,qBAAqB;IAC/D,2CAA2C;IAC3C,IAAI,EAAE,mBAAmB,CAAA;IACzB,gEAAgE;IAChE,EAAE,EAAE,mBAAmB,GAAG,MAAM,CAAA;IAChC,yBAAyB;IACzB,MAAM,EAAE,UAAU,CAAA;IAClB,sCAAsC;IACtC,iBAAiB,CAAC,EAAE,eAAe,CAAA;IACnC,sCAAsC;IACtC,IAAI,CAAC,EAAE,eAAe,CAAA;CACvB;AAED,0CAA0C;AAC1C,MAAM,WAAW,kBAAmB,SAAQ,qBAAqB;IAC/D,0BAA0B;IAC1B,aAAa,EAAE,mBAAmB,GAAG,MAAM,CAAA;IAC3C,oIAAoI;IACpI,aAAa,CAAC,EAAE,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"transfer.d.ts","sourceRoot":"","sources":["../../../src/types/transfer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AACrC,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAA;AAC9D,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAE3F,2CAA2C;AAC3C,MAAM,WAAW,kBAAmB,SAAQ,qBAAqB;IAC/D,2CAA2C;IAC3C,IAAI,EAAE,mBAAmB,CAAA;IACzB,gEAAgE;IAChE,EAAE,EAAE,mBAAmB,GAAG,MAAM,CAAA;IAChC,yBAAyB;IACzB,MAAM,EAAE,UAAU,CAAA;IAClB,sCAAsC;IACtC,iBAAiB,CAAC,EAAE,eAAe,CAAA;IACnC,sCAAsC;IACtC,IAAI,CAAC,EAAE,eAAe,CAAA;CACvB;AAED,0CAA0C;AAC1C,MAAM,WAAW,kBAAmB,SAAQ,qBAAqB;IAC/D,0BAA0B;IAC1B,aAAa,EAAE,mBAAmB,GAAG,MAAM,CAAA;IAC3C,oIAAoI;IACpI,aAAa,CAAC,EAAE,mBAAmB,GAAG,yBAAyB,CAAA;IAC/D,gIAAgI;IAChI,kBAAkB,EAAE,UAAU,CAAA;IAC9B,iJAAiJ;IACjJ,mBAAmB,CAAC,EAAE,UAAU,CAAA;IAChC,sCAAsC;IACtC,iBAAiB,CAAC,EAAE,eAAe,CAAA;IACnC,8FAA8F;IAC9F,IAAI,CAAC,EAAE,eAAe,CAAA;CACvB;AAED,2CAA2C;AAC3C,MAAM,WAAW,mBAAoB,SAAQ,qBAAqB;IAChE,2CAA2C;IAC3C,IAAI,EAAE,mBAAmB,CAAA;IACzB,gEAAgE;IAChE,EAAE,EAAE,mBAAmB,GAAG,MAAM,CAAA;IAChC,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAA;IACf,8DAA8D;IAC9D,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,sCAAsC;IACtC,iBAAiB,CAAC,EAAE,eAAe,CAAA;IACnC,2KAA2K;IAC3K,YAAY,CAAC,EAAE,mBAAmB,GAAG,MAAM,CAAA;IAC3C,sCAAsC;IACtC,IAAI,CAAC,EAAE,eAAe,CAAA;CACvB;AAED,MAAM,WAAW,sBAAsB;IACrC,sBAAsB;IACtB,aAAa,EAAE,MAAM,CAAA;IACrB,8DAA8D;IAC9D,MAAM,EAAE,MAAM,CAAA;CACf"}
|
package/types/util.d.ts
CHANGED
|
@@ -7,4 +7,12 @@
|
|
|
7
7
|
export declare const toNumber: (value: number | bigint) => number;
|
|
8
8
|
export declare class UnsafeConversionError extends Error {
|
|
9
9
|
}
|
|
10
|
+
/**
|
|
11
|
+
* Calculates the amount of funds to add to a wallet to bring it up to the minimum spending balance.
|
|
12
|
+
* @param minSpendingBalance The minimum spending balance for the wallet
|
|
13
|
+
* @param currentSpendingBalance The current spending balance for the wallet
|
|
14
|
+
* @param minFundingIncrement The minimum amount of funds that can be added to the wallet
|
|
15
|
+
* @returns The amount of funds to add to the wallet or null if the wallet is already above the minimum spending balance
|
|
16
|
+
*/
|
|
17
|
+
export declare const calculateFundAmount: (minSpendingBalance: number, currentSpendingBalance: number, minFundingIncrement: number) => number | null;
|
|
10
18
|
//# sourceMappingURL=util.d.ts.map
|
package/types/util.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,eAAO,MAAM,QAAQ,UAAW,MAAM,GAAG,MAAM,WAa9C,CAAA;AAED,qBAAa,qBAAsB,SAAQ,KAAK;CAAG"}
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,eAAO,MAAM,QAAQ,UAAW,MAAM,GAAG,MAAM,WAa9C,CAAA;AAED,qBAAa,qBAAsB,SAAQ,KAAK;CAAG;AAEnD;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,uBACV,MAAM,0BACF,MAAM,uBACT,MAAM,KAC1B,MAAM,GAAG,IAOX,CAAA"}
|