@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.
Files changed (51) hide show
  1. package/cjs/dispenser-client.d.ts +19 -0
  2. package/cjs/dispenser-client.d.ts.map +1 -0
  3. package/cjs/dispenser-client.js +25 -0
  4. package/cjs/dispenser-client.js.map +1 -0
  5. package/cjs/index.d.ts +1 -0
  6. package/cjs/index.d.ts.map +1 -1
  7. package/cjs/index.js +1 -0
  8. package/cjs/index.js.map +1 -1
  9. package/cjs/network-client.d.ts.map +1 -1
  10. package/cjs/network-client.js +2 -2
  11. package/cjs/network-client.js.map +1 -1
  12. package/cjs/transfer.d.ts +8 -6
  13. package/cjs/transfer.d.ts.map +1 -1
  14. package/cjs/transfer.js +49 -17
  15. package/cjs/transfer.js.map +1 -1
  16. package/cjs/types/dispenser-client.d.ts +77 -0
  17. package/cjs/types/dispenser-client.d.ts.map +1 -0
  18. package/cjs/types/dispenser-client.js +139 -0
  19. package/cjs/types/dispenser-client.js.map +1 -0
  20. package/cjs/types/transfer.d.ts +8 -1
  21. package/cjs/types/transfer.d.ts.map +1 -1
  22. package/cjs/util.d.ts +8 -0
  23. package/cjs/util.d.ts.map +1 -1
  24. package/cjs/util.js +18 -1
  25. package/cjs/util.js.map +1 -1
  26. package/esm/dispenser-client.js +21 -0
  27. package/esm/dispenser-client.js.map +1 -0
  28. package/esm/index.js +1 -0
  29. package/esm/index.js.map +1 -1
  30. package/esm/network-client.js +2 -2
  31. package/esm/network-client.js.map +1 -1
  32. package/esm/transfer.js +49 -17
  33. package/esm/transfer.js.map +1 -1
  34. package/esm/types/dispenser-client.js +135 -0
  35. package/esm/types/dispenser-client.js.map +1 -0
  36. package/esm/util.js +16 -0
  37. package/esm/util.js.map +1 -1
  38. package/package.json +1 -1
  39. package/types/dispenser-client.d.ts +19 -0
  40. package/types/dispenser-client.d.ts.map +1 -0
  41. package/types/index.d.ts +1 -0
  42. package/types/index.d.ts.map +1 -1
  43. package/types/network-client.d.ts.map +1 -1
  44. package/types/transfer.d.ts +8 -6
  45. package/types/transfer.d.ts.map +1 -1
  46. package/types/types/dispenser-client.d.ts +77 -0
  47. package/types/types/dispenser-client.d.ts.map +1 -0
  48. package/types/types/transfer.d.ts +8 -1
  49. package/types/types/transfer.d.ts.map +1 -1
  50. package/types/util.d.ts +8 -0
  51. 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;AAE1B,iEAAiE;AACjE,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,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"}
@@ -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 params.genesisID === 'testnet-v1';
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 params.genesisID === 'mainnet-v1';
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":"AAAA,OAAO,OAAO,EAAE,EAAW,OAAO,EAAE,GAAG,EAAE,MAAM,SAAS,CAAA;AAExD,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAA;AAG7E,uJAAuJ;AACvJ,MAAM,UAAU,0BAA0B;IACxC,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;QAC5B,MAAM,IAAI,KAAK,CAAC,kGAAkG,CAAC,CAAA;KACpH;IACD,MAAM,WAAW,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY;QAC3C,CAAC,CAAC,wBAAwB,CAAC,OAAO,CAAC;QACnC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAA;IAEtG,MAAM,aAAa,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc;QAC/C,CAAC,CAAC,wBAAwB,CAAC,SAAS,CAAC;QACrC,CAAC,CAAC;YACE,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc;YAClC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY;YAC9B,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa;SACjC,CAAA;IAEL,OAAO;QACL,WAAW;QACX,aAAa;QACb,SAAS,EACP,OAAO,IAAI,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY;YAChD,CAAC,CAAC,EAAE,GAAG,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,IAAI,MAAM,EAAE;YAC5D,CAAC,CAAC,wBAAwB,CAAC,KAAK,CAAC;KACtC,CAAA;AACH,CAAC;AAED,mIAAmI;AACnI,MAAM,UAAU,6BAA6B;IAC3C,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;QAC5B,MAAM,IAAI,KAAK,CAAC,kGAAkG,CAAC,CAAA;KACpH;IAED,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE;QAC7B,MAAM,IAAI,KAAK,CAAC,yGAAyG,CAAC,CAAA;KAC3H;IAED,OAAO;QACL,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY;QAChC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU;QAC5B,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW;KAC/B,CAAA;AACH,CAAC;AAED,qIAAqI;AACrI,MAAM,UAAU,+BAA+B;IAC7C,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;QAC5B,MAAM,IAAI,KAAK,CAAC,oGAAoG,CAAC,CAAA;KACtH;IAED,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE;QAC/B,MAAM,IAAI,KAAK,CAAC,6GAA6G,CAAC,CAAA;KAC/H;IAED,OAAO;QACL,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc;QAClC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY;QAC9B,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa;KACjC,CAAA;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAA8B,EAAE,MAA2B;IAC3F,OAAO;QACL,MAAM,EAAE,WAAW,OAAO,IAAI,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,kBAAkB;QAClF,IAAI,EAAE,GAAG;KACV,CAAA;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CAAC,YAAkD;IACzF,OAAO;QACL,MAAM,EAAE,kBAAkB;QAC1B,IAAI,EAAE,YAAY,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY;QACxH,KAAK,EAAE,kEAAkE;KAC1E,CAAA;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAc,EAAE,KAA4B,EAAE,aAAsB;IAC9F,sEAAsE;IACtE,IAAI,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAA;IAE/F,6IAA6I;IAC7I,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,IAAI,kBAAkB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAA;AACnG,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,UAAU,aAAa,CAAC,MAAyB;IACrD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,6BAA6B,EAAE,CAAA;IACzE,MAAM,mBAAmB,GAAG,IAAI,uBAAuB,CAAC,kBAAkB,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;IACxG,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAA;AACzD,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAyB;IAC5D,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,+BAA+B,EAAE,CAAA;IAC3E,MAAM,mBAAmB,GAAG,IAAI,uBAAuB,CAAC,kBAAkB,CAAC,MAAM,EAAE,KAAK,EAAE,qBAAqB,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;IAC/H,OAAO,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAAA;AACzC,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAyB;IACxD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,6BAA6B,EAAE,CAAA;IACnE,gGAAgG;IAChG,iEAAiE;IACjE,OAAO,IAAI,GAAG,CAAC,KAAe,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,IAAI,MAAM,CAAC,CAAA;AAC3E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,KAAc;IAC5C,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,oBAAoB,EAAE,CAAC,EAAE,EAAE,CAAA;IACtD,OAAO,MAAM,CAAC,SAAS,KAAK,YAAY,CAAA;AAC1C,CAAC;AACD,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,KAAc;IAC5C,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,oBAAoB,EAAE,CAAC,EAAE,EAAE,CAAA;IACtD,OAAO,MAAM,CAAC,SAAS,KAAK,YAAY,CAAA;AAC1C,CAAC;AAED,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA"}
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 algod client
38
- * @param kmd An optional kmd client
39
- * @returns undefined if nothing was needed or the transaction send result
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
- if (minSpendingBalance > currentSpendingBalance) {
49
- const from = fundingSource ?? (await getDispenserAccount(algod, kmd));
50
- const minFundAmount = microAlgos(minSpendingBalance.microAlgos - currentSpendingBalance.microAlgos);
51
- const fundAmount = microAlgos(Math.max(minFundAmount.microAlgos, minFundingIncrement?.microAlgos ?? 0));
52
- Config.getLogger(sendParams.suppressLog).info(`Funding ${addressToFund} ${fundAmount} from ${getSenderAddress(from)} to reach minimum spend amount of ${minSpendingBalance} (balance = ${balance}, min_balance_req = ${minimumBalanceRequirement})`);
53
- return await transferAlgos({
54
- from,
55
- to: addressToFund,
56
- note: note ?? 'Funding account to meet minimum requirement',
57
- amount: fundAmount,
58
- transactionParams,
59
- ...sendParams,
60
- }, algod);
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
  }
@@ -1 +1 @@
1
- {"version":3,"file":"transfer.js","sourceRoot":"","sources":["../../src/transfer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transfer.js","sourceRoot":"","sources":["../../src/transfer.ts"],"names":[],"mappings":"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"}
@@ -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": "3.1.0-beta.1",
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
@@ -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;AAE1B,iEAAiE;AACjE,eAAO,MAAM,MAAM,iBAAwB,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;AACD,wBAAsB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAGhE;AAED,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA"}
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"}
@@ -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 algod client
23
- * @param kmd An optional kmd client
24
- * @returns undefined if nothing was needed or the transaction send result
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: EnsureFundedParams, algod: Algodv2, kmd?: Kmd): Promise<SendTransactionResult | undefined>;
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
@@ -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;AAG/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAE9F;;;;;;;;;;GAUG;AACH,wBAAsB,aAAa,CAAC,QAAQ,EAAE,kBAAkB,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAkBhH;AAED;;;;;;;;;GASG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAiCrI;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,aAAa,CAAC,QAAQ,EAAE,mBAAmB,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAqBjH"}
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;IACnC,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"}
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
@@ -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"}