algosdk 1.12.0 → 1.13.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 (134) hide show
  1. package/README.md +4 -4
  2. package/dist/browser/algosdk.min.js +1 -1
  3. package/dist/browser/algosdk.min.js.map +1 -1
  4. package/dist/cjs/src/abi/abi_type.js +693 -0
  5. package/dist/cjs/src/abi/abi_type.js.map +1 -0
  6. package/dist/cjs/src/abi/contract.js +27 -0
  7. package/dist/cjs/src/abi/contract.js.map +1 -0
  8. package/dist/cjs/src/abi/index.js +19 -0
  9. package/dist/cjs/src/abi/index.js.map +1 -0
  10. package/dist/cjs/src/abi/interface.js +23 -0
  11. package/dist/cjs/src/abi/interface.js.map +1 -0
  12. package/dist/cjs/src/abi/method.js +114 -0
  13. package/dist/cjs/src/abi/method.js.map +1 -0
  14. package/dist/cjs/src/abi/reference.js +25 -0
  15. package/dist/cjs/src/abi/reference.js.map +1 -0
  16. package/dist/cjs/src/abi/transaction.js +52 -0
  17. package/dist/cjs/src/abi/transaction.js.map +1 -0
  18. package/dist/cjs/src/client/baseHTTPClient.js +3 -0
  19. package/dist/cjs/src/client/baseHTTPClient.js.map +1 -0
  20. package/dist/cjs/src/client/client.js +164 -104
  21. package/dist/cjs/src/client/client.js.map +1 -1
  22. package/dist/cjs/src/client/urlTokenBaseHTTPClient.js +138 -0
  23. package/dist/cjs/src/client/urlTokenBaseHTTPClient.js.map +1 -0
  24. package/dist/cjs/src/client/v2/algod/algod.js +262 -9
  25. package/dist/cjs/src/client/v2/algod/algod.js.map +1 -1
  26. package/dist/cjs/src/client/v2/algod/models/types.js +2 -2
  27. package/dist/cjs/src/client/v2/indexer/indexer.js +160 -3
  28. package/dist/cjs/src/client/v2/indexer/indexer.js.map +1 -1
  29. package/dist/cjs/src/client/v2/indexer/lookupAssetBalances.js +98 -6
  30. package/dist/cjs/src/client/v2/indexer/lookupAssetBalances.js.map +1 -1
  31. package/dist/cjs/src/client/v2/serviceClient.js +17 -8
  32. package/dist/cjs/src/client/v2/serviceClient.js.map +1 -1
  33. package/dist/cjs/src/composer.js +439 -0
  34. package/dist/cjs/src/composer.js.map +1 -0
  35. package/dist/cjs/src/dryrun.js +105 -0
  36. package/dist/cjs/src/dryrun.js.map +1 -0
  37. package/dist/cjs/src/encoding/bigint.js +38 -0
  38. package/dist/cjs/src/encoding/bigint.js.map +1 -0
  39. package/dist/cjs/src/logicsig.js +2 -2
  40. package/dist/cjs/src/logicsig.js.map +1 -1
  41. package/dist/cjs/src/main.js +12 -87
  42. package/dist/cjs/src/main.js.map +1 -1
  43. package/dist/cjs/src/makeTxn.js +29 -1
  44. package/dist/cjs/src/makeTxn.js.map +1 -1
  45. package/dist/cjs/src/multisig.js +77 -2
  46. package/dist/cjs/src/multisig.js.map +1 -1
  47. package/dist/cjs/src/signer.js +66 -0
  48. package/dist/cjs/src/signer.js.map +1 -0
  49. package/dist/cjs/src/transaction.js +8 -4
  50. package/dist/cjs/src/transaction.js.map +1 -1
  51. package/dist/cjs/src/types/intDecoding.js +0 -2
  52. package/dist/cjs/src/types/intDecoding.js.map +1 -1
  53. package/dist/cjs/src/types/transactions/base.js +0 -1
  54. package/dist/cjs/src/types/transactions/base.js.map +1 -1
  55. package/dist/cjs/src/wait.js +53 -0
  56. package/dist/cjs/src/wait.js.map +1 -0
  57. package/dist/esm/src/abi/abi_type.js +680 -0
  58. package/dist/esm/src/abi/abi_type.js.map +1 -0
  59. package/dist/esm/src/abi/contract.js +23 -0
  60. package/dist/esm/src/abi/contract.js.map +1 -0
  61. package/dist/esm/src/abi/index.js +7 -0
  62. package/dist/esm/src/abi/index.js.map +1 -0
  63. package/dist/esm/src/abi/interface.js +19 -0
  64. package/dist/esm/src/abi/interface.js.map +1 -0
  65. package/dist/esm/src/abi/method.js +110 -0
  66. package/dist/esm/src/abi/method.js.map +1 -0
  67. package/dist/esm/src/abi/reference.js +21 -0
  68. package/dist/esm/src/abi/reference.js.map +1 -0
  69. package/dist/esm/src/abi/transaction.js +47 -0
  70. package/dist/esm/src/abi/transaction.js.map +1 -0
  71. package/dist/esm/src/client/baseHTTPClient.js +2 -0
  72. package/dist/esm/src/client/baseHTTPClient.js.map +1 -0
  73. package/dist/esm/src/client/client.js +164 -101
  74. package/dist/esm/src/client/client.js.map +1 -1
  75. package/dist/esm/src/client/urlTokenBaseHTTPClient.js +112 -0
  76. package/dist/esm/src/client/urlTokenBaseHTTPClient.js.map +1 -0
  77. package/dist/esm/src/client/v2/algod/algod.js +262 -9
  78. package/dist/esm/src/client/v2/algod/algod.js.map +1 -1
  79. package/dist/esm/src/client/v2/algod/models/types.js +2 -2
  80. package/dist/esm/src/client/v2/indexer/indexer.js +160 -3
  81. package/dist/esm/src/client/v2/indexer/indexer.js.map +1 -1
  82. package/dist/esm/src/client/v2/indexer/lookupAssetBalances.js +98 -6
  83. package/dist/esm/src/client/v2/indexer/lookupAssetBalances.js.map +1 -1
  84. package/dist/esm/src/client/v2/serviceClient.js +17 -8
  85. package/dist/esm/src/client/v2/serviceClient.js.map +1 -1
  86. package/dist/esm/src/composer.js +435 -0
  87. package/dist/esm/src/composer.js.map +1 -0
  88. package/dist/esm/src/dryrun.js +101 -0
  89. package/dist/esm/src/dryrun.js.map +1 -0
  90. package/dist/esm/src/encoding/bigint.js +33 -0
  91. package/dist/esm/src/encoding/bigint.js.map +1 -0
  92. package/dist/esm/src/logicsig.js +2 -2
  93. package/dist/esm/src/logicsig.js.map +1 -1
  94. package/dist/esm/src/main.js +6 -82
  95. package/dist/esm/src/main.js.map +1 -1
  96. package/dist/esm/src/makeTxn.js +27 -0
  97. package/dist/esm/src/makeTxn.js.map +1 -1
  98. package/dist/esm/src/multisig.js +73 -1
  99. package/dist/esm/src/multisig.js.map +1 -1
  100. package/dist/esm/src/signer.js +59 -0
  101. package/dist/esm/src/signer.js.map +1 -0
  102. package/dist/esm/src/transaction.js +8 -4
  103. package/dist/esm/src/transaction.js.map +1 -1
  104. package/dist/esm/src/types/intDecoding.js +0 -2
  105. package/dist/esm/src/types/intDecoding.js.map +1 -1
  106. package/dist/esm/src/types/transactions/base.js +0 -1
  107. package/dist/esm/src/types/transactions/base.js.map +1 -1
  108. package/dist/esm/src/wait.js +49 -0
  109. package/dist/esm/src/wait.js.map +1 -0
  110. package/dist/types/src/abi/abi_type.d.ts +102 -0
  111. package/dist/types/src/abi/contract.d.ts +21 -0
  112. package/dist/types/src/abi/index.d.ts +6 -0
  113. package/dist/types/src/abi/interface.d.ts +13 -0
  114. package/dist/types/src/abi/method.d.ts +39 -0
  115. package/dist/types/src/abi/reference.d.ts +15 -0
  116. package/dist/types/src/abi/transaction.d.ts +33 -0
  117. package/dist/types/src/client/baseHTTPClient.d.ts +41 -0
  118. package/dist/types/src/client/client.d.ts +66 -31
  119. package/dist/types/src/client/kmd.d.ts +1 -1
  120. package/dist/types/src/client/urlTokenBaseHTTPClient.d.ts +44 -0
  121. package/dist/types/src/client/v2/algod/algod.d.ts +263 -9
  122. package/dist/types/src/client/v2/algod/models/types.d.ts +4 -4
  123. package/dist/types/src/client/v2/indexer/indexer.d.ts +161 -3
  124. package/dist/types/src/client/v2/indexer/lookupAssetBalances.d.ts +98 -0
  125. package/dist/types/src/client/v2/serviceClient.d.ts +6 -2
  126. package/dist/types/src/composer.d.ts +160 -0
  127. package/dist/types/src/dryrun.d.ts +20 -0
  128. package/dist/types/src/encoding/bigint.d.ts +14 -0
  129. package/dist/types/src/main.d.ts +7 -45
  130. package/dist/types/src/makeTxn.d.ts +18 -1
  131. package/dist/types/src/multisig.d.ts +39 -1
  132. package/dist/types/src/signer.d.ts +40 -0
  133. package/dist/types/src/wait.d.ts +11 -0
  134. package/package.json +6 -4
@@ -13,99 +13,256 @@ import SearchAccounts from './searchAccounts';
13
13
  import SearchForTransactions from './searchForTransactions';
14
14
  import SearchForAssets from './searchForAssets';
15
15
  import SearchForApplications from './searchForApplications';
16
+ /**
17
+ * The Indexer provides a REST API interface of API calls to support searching the Algorand Blockchain.
18
+ *
19
+ * The Indexer REST APIs retrieve the blockchain data from a PostgreSQL compatible database that must be populated.
20
+ *
21
+ * This database is populated using the same indexer instance or a separate instance of the indexer which must connect to the algod process of a running Algorand node to read block data.
22
+ *
23
+ * This node must also be an Archival node to make searching the entire blockchain possible.
24
+ *
25
+ * #### Relevant Information
26
+ * [Learn more about Indexer](https://developer.algorand.org/docs/get-details/indexer/)
27
+ *
28
+ * [Run Indexer in Postman OAS3](https://developer.algorand.org/docs/rest-apis/restendpoints/#algod-indexer-and-kmd-rest-endpoints)
29
+ */
16
30
  export default class IndexerClient extends ServiceClient {
17
- constructor(token, baseServer = 'http://127.0.0.1', port = 8080, headers = {}) {
18
- super('X-Indexer-API-Token', token, baseServer, port, headers);
31
+ /**
32
+ * Create an IndexerClient from
33
+ * * either a token, baseServer, port, and optional headers
34
+ * * or a base client server for interoperability with external dApp wallets
35
+ *
36
+ * #### Example
37
+ * ```typescript
38
+ * const token = "";
39
+ * const server = "http://localhost";
40
+ * const port = 8980;
41
+ * const indexerClient = new algosdk.Indexer(token, server, port);
42
+ * ```
43
+ * @remarks
44
+ * The above configuration is for a sandbox private network.
45
+ * For applications on production, you are encouraged to run your own node with indexer, or use an Algorand REST API provider with a dedicated API key.
46
+ *
47
+ * @param tokenOrBaseClient - The API token for the Indexer API
48
+ * @param baseServer - REST endpoint
49
+ * @param port - Port number if specifically configured by the server
50
+ * @param headers - Optional headers
51
+ */
52
+ constructor(tokenOrBaseClient, baseServer = 'http://127.0.0.1', port = 8080, headers = {}) {
53
+ super('X-Indexer-API-Token', tokenOrBaseClient, baseServer, port, headers);
19
54
  }
20
55
  /**
21
56
  * Returns the health object for the service.
57
+ * Returns 200 if healthy.
58
+ *
59
+ * #### Example
60
+ * ```typescript
61
+ * const health = await indexerClient.makeHealthCheck().do();
62
+ * ```
63
+ *
64
+ * [Response data schema details](https://developer.algorand.org/docs/rest-apis/indexer/#get-health)
65
+ * @category GET
22
66
  */
23
67
  makeHealthCheck() {
24
68
  return new MakeHealthCheck(this.c, this.intDecoding);
25
69
  }
26
70
  /**
27
- * Returns holder balances for the given asset.
71
+ * Returns the list of accounts who hold the given asset and their balance.
72
+ *
73
+ * #### Example
74
+ * ```typescript
75
+ * const assetId = 163650;
76
+ * const assetBalances = await indexerClient.lookupAssetBalances(assetId).do();
77
+ * ```
78
+ *
79
+ * [Response data schema details](https://developer.algorand.org/docs/rest-apis/indexer/#get-v2assetsasset-idbalances)
28
80
  * @param index - The asset ID to look up.
81
+ * @category GET
29
82
  */
30
83
  lookupAssetBalances(index) {
31
84
  return new LookupAssetBalances(this.c, this.intDecoding, index);
32
85
  }
33
86
  /**
34
87
  * Returns transactions relating to the given asset.
88
+ *
89
+ * #### Example
90
+ * ```typescript
91
+ * const assetId = 163650;
92
+ * const assetTxns = await indexerClient.lookupAssetTransactions(assetId).do();
93
+ * ```
94
+ *
95
+ * [Response data schema details](https://developer.algorand.org/docs/rest-apis/indexer/#get-v2assetsasset-idtransactions)
35
96
  * @param index - The asset ID to look up.
97
+ * @category GET
36
98
  */
37
99
  lookupAssetTransactions(index) {
38
100
  return new LookupAssetTransactions(this.c, this.intDecoding, index);
39
101
  }
40
102
  /**
41
103
  * Returns transactions relating to the given account.
104
+ *
105
+ * #### Example
106
+ * ```typescript
107
+ * const address = "XBYLS2E6YI6XXL5BWCAMOA4GTWHXWENZMX5UHXMRNWWUQ7BXCY5WC5TEPA";
108
+ * const accountTxns = await indexerClient.lookupAccountTransactions(address).do();
109
+ * ```
110
+ *
111
+ * [Response data schema details](https://developer.algorand.org/docs/rest-apis/indexer/#get-v2accountsaccount-idtransactions)
42
112
  * @param account - The address of the account.
113
+ * @category GET
43
114
  */
44
115
  lookupAccountTransactions(account) {
45
116
  return new LookupAccountTransactions(this.c, this.intDecoding, account);
46
117
  }
47
118
  /**
48
119
  * Returns the block for the passed round.
120
+ *
121
+ * #### Example
122
+ * ```typescript
123
+ * const targetBlock = 18309917;
124
+ * const blockInfo = await indexerClient.lookupBlock(targetBlock).do();
125
+ * ```
126
+ *
127
+ * [Response data schema details](https://developer.algorand.org/docs/rest-apis/indexer/#get-v2blocksround-number)
49
128
  * @param round - The number of the round to look up.
129
+ * @category GET
50
130
  */
51
131
  lookupBlock(round) {
52
132
  return new LookupBlock(this.c, this.intDecoding, round);
53
133
  }
54
134
  /**
55
135
  * Returns information about the given transaction.
136
+ *
137
+ * #### Example
138
+ * ```typescript
139
+ * const txnId = "MEUOC4RQJB23CQZRFRKYEI6WBO73VTTPST5A7B3S5OKBUY6LFUDA";
140
+ * const txnInfo = await indexerClient.lookupTransactionByID(txnId).do();
141
+ * ```
142
+ *
143
+ * [Response data schema details](https://developer.algorand.org/docs/rest-apis/indexer/#get-v2transactionstxid)
56
144
  * @param txID - The ID of the transaction to look up.
145
+ * @category GET
57
146
  */
58
147
  lookupTransactionByID(txID) {
59
148
  return new LookupTransactionByID(this.c, this.intDecoding, txID);
60
149
  }
61
150
  /**
62
151
  * Returns information about the given account.
152
+ *
153
+ * #### Example
154
+ * ```typescript
155
+ * const address = "XBYLS2E6YI6XXL5BWCAMOA4GTWHXWENZMX5UHXMRNWWUQ7BXCY5WC5TEPA";
156
+ * const accountInfo = await indexerClient.lookupAccountByID(address).do();
157
+ * ```
158
+ *
159
+ * [Response data schema details](https://developer.algorand.org/docs/rest-apis/indexer/#get-v2accountsaccount-id)
63
160
  * @param account - The address of the account to look up.
161
+ * @category GET
64
162
  */
65
163
  lookupAccountByID(account) {
66
164
  return new LookupAccountByID(this.c, this.intDecoding, account);
67
165
  }
68
166
  /**
69
167
  * Returns information about the passed asset.
168
+ *
169
+ * #### Example
170
+ * ```typescript
171
+ * const assetId = 163650;
172
+ * const assetInfo = await indexerClient.lookupAssetByID(assetId).do();
173
+ * ```
174
+ *
175
+ * [Response data schema details](https://developer.algorand.org/docs/rest-apis/indexer/#get-v2assetsasset-id)
70
176
  * @param index - The ID of the asset ot look up.
177
+ * @category GET
71
178
  */
72
179
  lookupAssetByID(index) {
73
180
  return new LookupAssetByID(this.c, this.intDecoding, index);
74
181
  }
75
182
  /**
76
183
  * Returns information about the passed application.
184
+ *
185
+ * #### Example
186
+ * ```typescript
187
+ * const appId = 60553466;
188
+ * const appInfo = await indexerClient.lookupApplications(appId).do();
189
+ * ```
190
+ *
191
+ * [Response data schema details](https://developer.algorand.org/docs/rest-apis/indexer/#get-v2applicationsapplication-id)
77
192
  * @param index - The ID of the application to look up.
193
+ * @category GET
78
194
  */
79
195
  lookupApplications(index) {
80
196
  return new LookupApplications(this.c, this.intDecoding, index);
81
197
  }
82
198
  /**
83
199
  * Returns log messages generated by the passed in application.
200
+ *
201
+ * #### Example
202
+ * ```typescript
203
+ * const appId = 60553466;
204
+ * const appLogs = await indexerClient.lookupApplicationLogs(appId).do();
205
+ * ```
206
+ *
207
+ * [Response data schema details](https://developer.algorand.org/docs/rest-apis/indexer/#get-v2applicationsapplication-idlogs)
84
208
  * @param appID - The ID of the application which generated the logs.
209
+ * @category GET
85
210
  */
86
211
  lookupApplicationLogs(appID) {
87
212
  return new LookupApplicationLogs(this.c, this.intDecoding, appID);
88
213
  }
89
214
  /**
90
215
  * Returns information about indexed accounts.
216
+ *
217
+ * #### Example
218
+ * ```typescript
219
+ * const accounts = await indexerClient.searchAccounts().do();
220
+ * ```
221
+ *
222
+ * [Response data schema details](https://developer.algorand.org/docs/rest-apis/indexer/#get-v2accounts)
223
+ * @category GET
91
224
  */
92
225
  searchAccounts() {
93
226
  return new SearchAccounts(this.c, this.intDecoding);
94
227
  }
95
228
  /**
96
229
  * Returns information about indexed transactions.
230
+ *
231
+ * #### Example
232
+ * ```typescript
233
+ * const txns = await indexerClient.searchForTransactions().do();
234
+ * ```
235
+ *
236
+ * [Response data schema details](https://developer.algorand.org/docs/rest-apis/indexer/#get-v2transactions)
237
+ * @category GET
97
238
  */
98
239
  searchForTransactions() {
99
240
  return new SearchForTransactions(this.c, this.intDecoding);
100
241
  }
101
242
  /**
102
243
  * Returns information about indexed assets.
244
+ *
245
+ * #### Example
246
+ * ```typescript
247
+ * const assets = await indexerClient.searchForAssets().do();
248
+ * ```
249
+ *
250
+ * [Response data schema details](https://developer.algorand.org/docs/rest-apis/indexer/#get-v2assets)
251
+ * @category GET
103
252
  */
104
253
  searchForAssets() {
105
254
  return new SearchForAssets(this.c, this.intDecoding);
106
255
  }
107
256
  /**
108
257
  * Returns information about indexed applications.
258
+ *
259
+ * #### Example
260
+ * ```typescript
261
+ * const apps = await indexerClient.searchForApplications().do();
262
+ * ```
263
+ *
264
+ * [Response data schema details](https://developer.algorand.org/docs/rest-apis/indexer/#get-v2applications)
265
+ * @category GET
109
266
  */
110
267
  searchForApplications() {
111
268
  return new SearchForApplications(this.c, this.intDecoding);
@@ -1 +1 @@
1
- {"version":3,"file":"indexer.js","sourceRoot":"","sources":["../../../../../../src/client/v2/indexer/indexer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"indexer.js","sourceRoot":"","sources":["../../../../../../src/client/v2/indexer/indexer.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,17 @@
1
1
  import JSONRequest from '../jsonrequest';
2
2
  export default class LookupAssetBalances extends JSONRequest {
3
+ /**
4
+ * Returns the list of accounts which hold the given asset and their balance.
5
+ *
6
+ * #### Example
7
+ * ```typescript
8
+ * const assetId = 163650;
9
+ * const assetBalances = await indexerClient.lookupAssetBalances(assetId).do();
10
+ * ```
11
+ *
12
+ * [Response data schema details](https://developer.algorand.org/docs/rest-apis/indexer/#get-v2assetsasset-idbalances)
13
+ * @param index - The asset ID to look up.
14
+ */
3
15
  constructor(c, intDecoding, index) {
4
16
  super(c, intDecoding);
5
17
  this.index = index;
@@ -8,32 +20,112 @@ export default class LookupAssetBalances extends JSONRequest {
8
20
  path() {
9
21
  return `/v2/assets/${this.index}/balances`;
10
22
  }
11
- // limit for filter, as int
23
+ /**
24
+ * Add a limit for filter.
25
+ *
26
+ * #### Example
27
+ * ```typescript
28
+ * const assetId = 163650;
29
+ * const maxResults = 20;
30
+ * const assetBalances = await indexerClient
31
+ * .lookupAssetBalances(assetId)
32
+ * .limit(maxResults)
33
+ * .do();
34
+ * ```
35
+ *
36
+ * @param limit - maximum number of results to return.
37
+ */
12
38
  limit(limit) {
13
39
  this.query.limit = limit;
14
40
  return this;
15
41
  }
16
- // round to filter with, as int
42
+ /**
43
+ * Specify round to filter with.
44
+ *
45
+ * #### Example
46
+ * ```typescript
47
+ * const assetId = 163650;
48
+ * const targetBlock = 18309917;
49
+ * const assetBalances = await indexerClient
50
+ * .lookupAssetBalances(assetId)
51
+ * .round(targetBlock)
52
+ * .do();
53
+ * ```
54
+ * @param round
55
+ */
17
56
  round(round) {
18
57
  this.query.round = round;
19
58
  return this;
20
59
  }
21
- // filtered results should have an amount greater than this value, as int, with units representing the asset
60
+ /**
61
+ * Filtered results should have an asset balance greater than this value.
62
+ *
63
+ * #### Example
64
+ * ```typescript
65
+ * const assetId = 163650;
66
+ * const minBalance = 1000000;
67
+ * const assetBalances = await indexerClient
68
+ * .lookupAssetBalances(assetId)
69
+ * .currencyGreaterThan(minBalance)
70
+ * .do();
71
+ * ```
72
+ * @param greater
73
+ */
22
74
  currencyGreaterThan(greater) {
23
75
  this.query['currency-greater-than'] = greater;
24
76
  return this;
25
77
  }
26
- // filtered results should have an amount less than this value, as int, with units representing the asset units
78
+ /**
79
+ * Filtered results should have an asset balance less than this value.
80
+ *
81
+ * #### Example
82
+ * ```typescript
83
+ * const assetId = 163650;
84
+ * const maxBalance = 2000000;
85
+ * const assetBalances = await indexerClient
86
+ * .lookupAssetBalances(assetId)
87
+ * .currencyLessThan(maxBalance)
88
+ * .do();
89
+ * ```
90
+ * @param lesser
91
+ */
27
92
  currencyLessThan(lesser) {
28
93
  this.query['currency-less-than'] = lesser;
29
94
  return this;
30
95
  }
31
- // used for pagination
96
+ /**
97
+ * Specify the next page of results.
98
+ *
99
+ * #### Example
100
+ * ```typescript
101
+ * const assetId = 163650;
102
+ * const maxResults = 20;
103
+ * const nextToken = "APA6C7C3NCANRPIBUWQOF7WSKLJMK6RPQUVFLLDV4U5WCQE4DEF26D4E3E";
104
+ * const assetBalances = await indexerClient
105
+ * .lookupAssetBalances(assetId)
106
+ * .limit(maxResults)
107
+ * .next(nextToken)
108
+ * .do();
109
+ * ```
110
+ * @param nextToken - provided by the previous results.
111
+ */
32
112
  nextToken(nextToken) {
33
113
  this.query.next = nextToken;
34
114
  return this;
35
115
  }
36
- // include all items including closed accounts, deleted applications, destroyed assets, opted-out asset holdings, and closed-out application localstates
116
+ /**
117
+ * Include all items including closed accounts, deleted applications, destroyed assets, opted-out asset holdings, and closed-out application localstates
118
+ *
119
+ * #### Example
120
+ * ```typescript
121
+ * const assetId = 163650;
122
+ * const assetBalances = await indexerClient
123
+ * .lookupAssetBalances(assetId)
124
+ * .includeAll(false)
125
+ * .do();
126
+ * ```
127
+ * @param value
128
+ */
37
129
  includeAll(value = true) {
38
130
  this.query['include-all'] = value;
39
131
  return this;
@@ -1 +1 @@
1
- {"version":3,"file":"lookupAssetBalances.js","sourceRoot":"","sources":["../../../../../../src/client/v2/indexer/lookupAssetBalances.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,gBAAgB,CAAC;AAIzC,MAAM,CAAC,OAAO,OAAO,mBAAoB,SAAQ,WAAW;IAC1D,YAAY,CAAa,EAAE,WAAwB,EAAU,KAAa;QACxE,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;QADqC,UAAK,GAAL,KAAK,CAAQ;QAExE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,IAAI;QACF,OAAO,cAAc,IAAI,CAAC,KAAK,WAAW,CAAC;IAC7C,CAAC;IAED,2BAA2B;IAC3B,KAAK,CAAC,KAAa;QACjB,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,+BAA+B;IAC/B,KAAK,CAAC,KAAa;QACjB,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,4GAA4G;IAC5G,mBAAmB,CAAC,OAAe;QACjC,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,GAAG,OAAO,CAAC;QAC9C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,+GAA+G;IAC/G,gBAAgB,CAAC,MAAc;QAC7B,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,GAAG,MAAM,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,sBAAsB;IACtB,SAAS,CAAC,SAAiB;QACzB,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,SAAS,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,wJAAwJ;IACxJ,UAAU,CAAC,KAAK,GAAG,IAAI;QACrB,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
1
+ {"version":3,"file":"lookupAssetBalances.js","sourceRoot":"","sources":["../../../../../../src/client/v2/indexer/lookupAssetBalances.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,gBAAgB,CAAC;AAIzC,MAAM,CAAC,OAAO,OAAO,mBAAoB,SAAQ,WAAW;IAC1D;;;;;;;;;;;OAWG;IACH,YAAY,CAAa,EAAE,WAAwB,EAAU,KAAa;QACxE,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;QADqC,UAAK,GAAL,KAAK,CAAQ;QAExE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,IAAI;QACF,OAAO,cAAc,IAAI,CAAC,KAAK,WAAW,CAAC;IAC7C,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,KAAa;QACjB,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,KAAa;QACjB,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,mBAAmB,CAAC,OAAe;QACjC,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,GAAG,OAAO,CAAC;QAC9C,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,gBAAgB,CAAC,MAAc;QAC7B,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,GAAG,MAAM,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACH,SAAS,CAAC,SAAiB;QACzB,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,SAAS,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,UAAU,CAAC,KAAK,GAAG,IAAI;QACrB,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
@@ -10,21 +10,30 @@ function convertTokenStringToTokenHeader(token = '', headerIdentifier) {
10
10
  tokenHeader[headerIdentifier] = token;
11
11
  return tokenHeader;
12
12
  }
13
+ function isBaseHTTPClient(tbc) {
14
+ return typeof tbc.get === 'function';
15
+ }
13
16
  /**
14
17
  * Abstract service client to encapsulate shared AlgodClient and IndexerClient logic
15
18
  */
16
19
  export default class ServiceClient {
17
- constructor(tokenHeaderIdentifier, tokenHeaderOrStr, baseServer, port, defaultHeaders = {}) {
18
- // Accept token header as string or object
19
- // - workaround to allow backwards compatibility for multiple headers
20
- let tokenHeader;
21
- if (typeof tokenHeaderOrStr === 'string') {
22
- tokenHeader = convertTokenStringToTokenHeader(tokenHeaderOrStr, tokenHeaderIdentifier);
20
+ constructor(tokenHeaderIdentifier, tokenHeaderOrStrOrBaseClient, baseServer, port, defaultHeaders = {}) {
21
+ if (isBaseHTTPClient(tokenHeaderOrStrOrBaseClient)) {
22
+ // we are using a base client
23
+ this.c = new HTTPClient(tokenHeaderOrStrOrBaseClient);
23
24
  }
24
25
  else {
25
- tokenHeader = tokenHeaderOrStr;
26
+ // Accept token header as string or object
27
+ // - workaround to allow backwards compatibility for multiple headers
28
+ let tokenHeader;
29
+ if (typeof tokenHeaderOrStrOrBaseClient === 'string') {
30
+ tokenHeader = convertTokenStringToTokenHeader(tokenHeaderOrStrOrBaseClient, tokenHeaderIdentifier);
31
+ }
32
+ else {
33
+ tokenHeader = tokenHeaderOrStrOrBaseClient;
34
+ }
35
+ this.c = new HTTPClient(tokenHeader, baseServer, port, defaultHeaders);
26
36
  }
27
- this.c = new HTTPClient(tokenHeader, baseServer, port, defaultHeaders);
28
37
  this.intDecoding = IntDecoding.DEFAULT;
29
38
  }
30
39
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"serviceClient.js","sourceRoot":"","sources":["../../../../../src/client/v2/serviceClient.ts"],"names":[],"mappings":"AAAA,OAAO,UAA2B,MAAM,WAAW,CAAC;AACpD,OAAO,WAAW,MAAM,yBAAyB,CAAC;AAQlD;;;;GAIG;AACH,SAAS,+BAA+B,CACtC,QAAgB,EAAE,EAClB,gBAAuC;IAEvC,MAAM,WAAW,GAAG,EAAE,CAAC;IACvB,WAAW,CAAC,gBAAgB,CAAC,GAAG,KAAK,CAAC;IACtC,OAAO,WAA0B,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,OAAO,OAAgB,aAAa;IAIzC,YACE,qBAA4C,EAC5C,gBAAsC,EACtC,UAAkB,EAClB,IAAsB,EACtB,iBAAsC,EAAE;QAExC,0CAA0C;QAC1C,qEAAqE;QACrE,IAAI,WAAwB,CAAC;QAC7B,IAAI,OAAO,gBAAgB,KAAK,QAAQ,EAAE;YACxC,WAAW,GAAG,+BAA+B,CAC3C,gBAAgB,EAChB,qBAAqB,CACtB,CAAC;SACH;aAAM;YACL,WAAW,GAAG,gBAAgB,CAAC;SAChC;QAED,IAAI,CAAC,CAAC,GAAG,IAAI,UAAU,CAAC,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;QACvE,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC;IACzC,CAAC;IAED;;;;;OAKG;IACH,cAAc,CAAC,MAAmB;QAChC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;CACF"}
1
+ {"version":3,"file":"serviceClient.js","sourceRoot":"","sources":["../../../../../src/client/v2/serviceClient.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,WAAW,CAAC;AACnC,OAAO,WAAW,MAAM,yBAAyB,CAAC;AAUlD;;;;GAIG;AACH,SAAS,+BAA+B,CACtC,QAAgB,EAAE,EAClB,gBAAuC;IAEvC,MAAM,WAAW,GAAG,EAAE,CAAC;IACvB,WAAW,CAAC,gBAAgB,CAAC,GAAG,KAAK,CAAC;IACtC,OAAO,WAA0B,CAAC;AACpC,CAAC;AAED,SAAS,gBAAgB,CACvB,GAA0C;IAE1C,OAAO,OAAQ,GAAsB,CAAC,GAAG,KAAK,UAAU,CAAC;AAC3D,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,OAAO,OAAgB,aAAa;IAMzC,YACE,qBAA4C,EAC5C,4BAAmE,EACnE,UAAkB,EAClB,IAAsB,EACtB,iBAAsC,EAAE;QAExC,IAAI,gBAAgB,CAAC,4BAA4B,CAAC,EAAE;YAClD,6BAA6B;YAC7B,IAAI,CAAC,CAAC,GAAG,IAAI,UAAU,CAAC,4BAA4B,CAAC,CAAC;SACvD;aAAM;YACL,0CAA0C;YAC1C,qEAAqE;YACrE,IAAI,WAAwB,CAAC;YAC7B,IAAI,OAAO,4BAA4B,KAAK,QAAQ,EAAE;gBACpD,WAAW,GAAG,+BAA+B,CAC3C,4BAA4B,EAC5B,qBAAqB,CACtB,CAAC;aACH;iBAAM;gBACL,WAAW,GAAG,4BAA4B,CAAC;aAC5C;YAED,IAAI,CAAC,CAAC,GAAG,IAAI,UAAU,CAAC,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;SACxE;QAED,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC;IACzC,CAAC;IAED;;;;;OAKG;IACH,cAAc,CAAC,MAAmB;QAChC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;CACF"}