@huma-finance/sdk 0.0.39 → 0.0.42-beta.76

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 (135) hide show
  1. package/API.md +45 -9
  2. package/dist/cjs/graphql/generatedTypes.d.ts +40 -0
  3. package/dist/cjs/graphql/generatedTypes.js +9 -0
  4. package/dist/cjs/graphql/generatedTypes.js.map +1 -0
  5. package/dist/cjs/graphql/index.d.ts +1 -0
  6. package/dist/cjs/graphql/index.js +5 -0
  7. package/dist/cjs/graphql/index.js.map +1 -0
  8. package/dist/cjs/helpers/ERC20TransferableReceivableContractHelper.d.ts +10 -0
  9. package/dist/cjs/helpers/ERC20TransferableReceivableContractHelper.js +22 -0
  10. package/dist/cjs/helpers/ERC20TransferableReceivableContractHelper.js.map +1 -0
  11. package/dist/cjs/helpers/PoolContractHelper.d.ts +119 -0
  12. package/dist/cjs/helpers/PoolContractHelper.js +144 -0
  13. package/dist/cjs/helpers/PoolContractHelper.js.map +1 -0
  14. package/dist/cjs/helpers/RealWorldReceivableContractHelper.d.ts +10 -0
  15. package/dist/cjs/helpers/RealWorldReceivableContractHelper.js +22 -0
  16. package/dist/cjs/helpers/RealWorldReceivableContractHelper.js.map +1 -0
  17. package/dist/cjs/helpers/index.d.ts +3 -0
  18. package/dist/cjs/helpers/index.js +7 -0
  19. package/dist/cjs/helpers/index.js.map +1 -0
  20. package/dist/cjs/hooks/index.d.ts +4 -0
  21. package/dist/cjs/hooks/index.js +8 -0
  22. package/dist/cjs/hooks/index.js.map +1 -0
  23. package/dist/cjs/hooks/useContract.d.ts +13 -0
  24. package/dist/cjs/hooks/useContract.js +31 -0
  25. package/dist/cjs/hooks/useContract.js.map +1 -0
  26. package/dist/cjs/hooks/useERC20TransferableReceivableContract.d.ts +12 -0
  27. package/dist/cjs/hooks/useERC20TransferableReceivableContract.js +21 -0
  28. package/dist/cjs/hooks/useERC20TransferableReceivableContract.js.map +1 -0
  29. package/dist/cjs/hooks/usePoolContract.d.ts +60 -0
  30. package/dist/cjs/hooks/usePoolContract.js +54 -0
  31. package/dist/cjs/hooks/usePoolContract.js.map +1 -0
  32. package/dist/cjs/hooks/useRealWorldReceivableContract.d.ts +10 -0
  33. package/dist/cjs/hooks/useRealWorldReceivableContract.js +20 -0
  34. package/dist/cjs/hooks/useRealWorldReceivableContract.js.map +1 -0
  35. package/dist/cjs/index.d.ts +4 -0
  36. package/dist/cjs/index.js +8 -0
  37. package/dist/cjs/index.js.map +1 -0
  38. package/dist/cjs/services/ARWeaveService.d.ts +117 -0
  39. package/dist/cjs/services/ARWeaveService.js +204 -0
  40. package/dist/cjs/services/ARWeaveService.js.map +1 -0
  41. package/dist/cjs/services/EAService.d.ts +20 -0
  42. package/dist/cjs/services/EAService.js +34 -0
  43. package/dist/cjs/services/EAService.js.map +1 -0
  44. package/dist/cjs/services/ReceivableService.d.ts +142 -0
  45. package/dist/cjs/services/ReceivableService.js +330 -0
  46. package/dist/cjs/services/ReceivableService.js.map +1 -0
  47. package/dist/cjs/services/SubgraphService.d.ts +53 -0
  48. package/dist/cjs/services/SubgraphService.js +94 -0
  49. package/dist/cjs/services/SubgraphService.js.map +1 -0
  50. package/dist/cjs/services/index.d.ts +4 -0
  51. package/dist/cjs/services/index.js +8 -0
  52. package/dist/cjs/services/index.js.map +1 -0
  53. package/dist/cjs/utils/chain.d.ts +15 -0
  54. package/dist/cjs/utils/chain.js +38 -0
  55. package/dist/cjs/utils/chain.js.map +1 -0
  56. package/dist/cjs/utils/index.d.ts +4 -0
  57. package/dist/cjs/utils/index.js +8 -0
  58. package/dist/cjs/utils/index.js.map +1 -0
  59. package/dist/cjs/utils/maticGasStation.d.ts +3 -0
  60. package/dist/cjs/utils/maticGasStation.js +39 -0
  61. package/dist/cjs/utils/maticGasStation.js.map +1 -0
  62. package/dist/cjs/utils/poolInfo.d.ts +8 -0
  63. package/dist/cjs/utils/poolInfo.js +13 -0
  64. package/dist/cjs/utils/poolInfo.js.map +1 -0
  65. package/dist/cjs/utils/web3.d.ts +5 -0
  66. package/dist/cjs/utils/web3.js +34 -0
  67. package/dist/cjs/utils/web3.js.map +1 -0
  68. package/dist/graphql/generatedTypes.d.ts +40 -0
  69. package/dist/graphql/generatedTypes.js +5 -0
  70. package/dist/graphql/generatedTypes.js.map +1 -0
  71. package/dist/graphql/index.d.ts +1 -0
  72. package/dist/graphql/index.js +2 -0
  73. package/dist/graphql/index.js.map +1 -0
  74. package/dist/helpers/ERC20TransferableReceivableContractHelper.d.ts +10 -0
  75. package/dist/helpers/ERC20TransferableReceivableContractHelper.js +18 -0
  76. package/dist/helpers/ERC20TransferableReceivableContractHelper.js.map +1 -0
  77. package/dist/helpers/PoolContractHelper.d.ts +119 -0
  78. package/dist/helpers/PoolContractHelper.js +135 -0
  79. package/dist/helpers/PoolContractHelper.js.map +1 -0
  80. package/dist/helpers/RealWorldReceivableContractHelper.d.ts +10 -0
  81. package/dist/helpers/RealWorldReceivableContractHelper.js +18 -0
  82. package/dist/helpers/RealWorldReceivableContractHelper.js.map +1 -0
  83. package/dist/helpers/index.d.ts +3 -0
  84. package/dist/helpers/index.js +4 -0
  85. package/dist/helpers/index.js.map +1 -0
  86. package/dist/hooks/index.d.ts +4 -0
  87. package/dist/hooks/index.js +5 -0
  88. package/dist/hooks/index.js.map +1 -0
  89. package/dist/hooks/useContract.d.ts +13 -0
  90. package/dist/hooks/useContract.js +27 -0
  91. package/dist/hooks/useContract.js.map +1 -0
  92. package/dist/hooks/useERC20TransferableReceivableContract.d.ts +12 -0
  93. package/dist/hooks/useERC20TransferableReceivableContract.js +17 -0
  94. package/dist/hooks/useERC20TransferableReceivableContract.js.map +1 -0
  95. package/dist/hooks/usePoolContract.d.ts +60 -0
  96. package/dist/hooks/usePoolContract.js +49 -0
  97. package/dist/hooks/usePoolContract.js.map +1 -0
  98. package/dist/hooks/useRealWorldReceivableContract.d.ts +10 -0
  99. package/dist/hooks/useRealWorldReceivableContract.js +16 -0
  100. package/dist/hooks/useRealWorldReceivableContract.js.map +1 -0
  101. package/dist/index.d.ts +4 -0
  102. package/dist/index.js +5 -0
  103. package/dist/index.js.map +1 -0
  104. package/dist/services/ARWeaveService.d.ts +117 -0
  105. package/dist/services/ARWeaveService.js +199 -0
  106. package/dist/services/ARWeaveService.js.map +1 -0
  107. package/dist/services/EAService.d.ts +20 -0
  108. package/dist/services/EAService.js +31 -0
  109. package/dist/services/EAService.js.map +1 -0
  110. package/dist/services/ReceivableService.d.ts +142 -0
  111. package/dist/services/ReceivableService.js +327 -0
  112. package/dist/services/ReceivableService.js.map +1 -0
  113. package/dist/services/SubgraphService.d.ts +53 -0
  114. package/dist/services/SubgraphService.js +91 -0
  115. package/dist/services/SubgraphService.js.map +1 -0
  116. package/dist/services/index.d.ts +4 -0
  117. package/dist/services/index.js +5 -0
  118. package/dist/services/index.js.map +1 -0
  119. package/dist/tsconfig.cjs.tsbuildinfo +1 -0
  120. package/dist/utils/chain.d.ts +15 -0
  121. package/dist/utils/chain.js +32 -0
  122. package/dist/utils/chain.js.map +1 -0
  123. package/dist/utils/index.d.ts +4 -0
  124. package/dist/utils/index.js +5 -0
  125. package/dist/utils/index.js.map +1 -0
  126. package/dist/utils/maticGasStation.d.ts +3 -0
  127. package/dist/utils/maticGasStation.js +34 -0
  128. package/dist/utils/maticGasStation.js.map +1 -0
  129. package/dist/utils/poolInfo.d.ts +8 -0
  130. package/dist/utils/poolInfo.js +9 -0
  131. package/dist/utils/poolInfo.js.map +1 -0
  132. package/dist/utils/web3.d.ts +5 -0
  133. package/dist/utils/web3.js +28 -0
  134. package/dist/utils/web3.js.map +1 -0
  135. package/package.json +3 -3
package/API.md CHANGED
@@ -140,6 +140,7 @@ Note that this does not approve a creditline in Huma's pools and an approve call
140
140
  * [.storeData(config, signerOrPrivateKey, data, tags, [lazyFund])](#ARWeaveService.storeData) ⇒ <code>Promise.&lt;UploadResponse&gt;</code>
141
141
  * [.queryForMetadata(chainId, sender, referenceId)](#ARWeaveService.queryForMetadata) ⇒ <code>Promise.&lt;any&gt;</code>
142
142
  * [.fetchMetadataFromUrl(url)](#ARWeaveService.fetchMetadataFromUrl) ⇒ <code>Promise.&lt;JSON&gt;</code>
143
+ * [.getURIFromARWeaveId(arweaveId)](#ARWeaveService.getURIFromARWeaveId) ⇒ <code>string</code>
143
144
  * [.BundlrConfig](#ARWeaveService.BundlrConfig) : <code>Object</code>
144
145
 
145
146
  <a name="ARWeaveService.getBundlrNetworkConfig"></a>
@@ -229,6 +230,18 @@ If you want to upload 5 Matic to the Bundlr node, pass in an amount of 5.</p>
229
230
  | --- | --- | --- |
230
231
  | url | <code>string</code> | <p>The ARWeave metadata URL to query.</p> |
231
232
 
233
+ <a name="ARWeaveService.getURIFromARWeaveId"></a>
234
+
235
+ ### ARWeaveService.getURIFromARWeaveId(arweaveId) ⇒ <code>string</code>
236
+ <p>Helper method to get an ARWeave URI from an ARWeave ID.</p>
237
+
238
+ **Kind**: static method of [<code>ARWeaveService</code>](#ARWeaveService)
239
+ **Returns**: <code>string</code> - <p>The ARWeave URI.</p>
240
+
241
+ | Param | Type | Description |
242
+ | --- | --- | --- |
243
+ | arweaveId | <code>string</code> | <p>The ARWeave metadata ID.</p> |
244
+
232
245
  <a name="ARWeaveService.BundlrConfig"></a>
233
246
 
234
247
  ### ARWeaveService.BundlrConfig : <code>Object</code>
@@ -275,17 +288,18 @@ in Huma's pools that can be drawn down by the borrower.</p>
275
288
  **Kind**: global namespace
276
289
 
277
290
  * [ReceivableService](#ReceivableService) : <code>object</code>
278
- * [.getTokenIdByARWeaveId(signer, arweaveId)](#ReceivableService.getTokenIdByARWeaveId) ⇒ <code>Promise.&lt;(string\|null\|undefined)&gt;</code>
291
+ * [.getTokenIdByURI(signer, arweaveId)](#ReceivableService.getTokenIdByURI) ⇒ <code>Promise.&lt;(string\|null\|undefined)&gt;</code>
279
292
  * [.declareReceivablePaymentByReferenceId(signer, referenceId, paymentAmount, [gasOpts])](#ReceivableService.declareReceivablePaymentByReferenceId) ⇒ <code>Promise.&lt;TransactionResponse&gt;</code>
280
293
  * [.declareReceivablePaymentByTokenId(signer, receivableTokenId, paymentAmount, [gasOpts])](#ReceivableService.declareReceivablePaymentByTokenId) ⇒ <code>Promise.&lt;TransactionResponse&gt;</code>
281
- * [.createReceivable(signer, poolName, poolType, currencyCode, receivableAmount, maturityDate, uri, [gasOpts])](#ReceivableService.createReceivable) ⇒ <code>Promise.&lt;TransactionResponse&gt;</code>
294
+ * [.createReceivable(signer, poolName, poolType, currencyCode, receivableAmount, maturityDate, uri, [gasOpts])](#ReceivableService.createReceivable) ⇒ <code>Promise.&lt;(TransactionResponse\|null)&gt;</code>
295
+ * [.uploadOrFetchMetadataURI(signerOrProvider, privateKey, chainId, poolName, poolType, metadata, referenceId, extraTags, [lazyFund])](#ReceivableService.uploadOrFetchMetadataURI) ⇒ <code>Promise.&lt;string&gt;</code>
282
296
  * [.createReceivableWithMetadata(signerOrProvider, privateKey, chainId, poolName, poolType, currencyCode, receivableAmount, maturityDate, metadata, referenceId, extraTags, [lazyFund], [gasOpts])](#ReceivableService.createReceivableWithMetadata) ⇒ <code>Promise.&lt;TransactionResponse&gt;</code>
283
297
  * [.loadReceivablesOfOwnerWithMetadata(signerOrProvider, owner, poolName, poolType)](#ReceivableService.loadReceivablesOfOwnerWithMetadata) ⇒ <code>Promise.&lt;Array.&lt;RealWorldReceivableInfo&gt;&gt;</code>
284
298
 
285
- <a name="ReceivableService.getTokenIdByARWeaveId"></a>
299
+ <a name="ReceivableService.getTokenIdByURI"></a>
286
300
 
287
- ### ReceivableService.getTokenIdByARWeaveId(signer, arweaveId) ⇒ <code>Promise.&lt;(string\|null\|undefined)&gt;</code>
288
- <p>Declares a payment on a RealWorldReceivable given a reference Id of the receivable, which was used as an index for ARWeave data.</p>
301
+ ### ReceivableService.getTokenIdByURI(signer, arweaveId) ⇒ <code>Promise.&lt;(string\|null\|undefined)&gt;</code>
302
+ <p>Fetches the tokenId of a RealWorldReceivable, or null if it doesn't exist, given a metadata URI</p>
289
303
 
290
304
  **Kind**: static method of [<code>ReceivableService</code>](#ReceivableService)
291
305
  **Returns**: <code>Promise.&lt;(string\|null\|undefined)&gt;</code> - <ul>
@@ -339,17 +353,17 @@ in Huma's pools that can be drawn down by the borrower.</p>
339
353
 
340
354
  <a name="ReceivableService.createReceivable"></a>
341
355
 
342
- ### ReceivableService.createReceivable(signer, poolName, poolType, currencyCode, receivableAmount, maturityDate, uri, [gasOpts]) ⇒ <code>Promise.&lt;TransactionResponse&gt;</code>
356
+ ### ReceivableService.createReceivable(signer, poolName, poolType, currencyCode, receivableAmount, maturityDate, uri, [gasOpts]) ⇒ <code>Promise.&lt;(TransactionResponse\|null)&gt;</code>
343
357
  <p>Creates a new RealWorldReceivable token on the given chain of the signer</p>
344
358
 
345
359
  **Kind**: static method of [<code>ReceivableService</code>](#ReceivableService)
346
- **Returns**: <code>Promise.&lt;TransactionResponse&gt;</code> - <ul>
360
+ **Returns**: <code>Promise.&lt;(TransactionResponse\|null)&gt;</code> - <ul>
347
361
  <li>A Promise of the transaction response.</li>
348
362
  </ul>
349
363
  **Throws**:
350
364
 
351
365
  - <code>Error</code> <ul>
352
- <li>Throws an error if the RealWorldReceivable contract is not available on the network.</li>
366
+ <li>Throws an error if the RealWorldReceivable contract is not available on the network, or if a token already exists with the same metadata URI.</li>
353
367
  </ul>
354
368
 
355
369
 
@@ -364,6 +378,28 @@ in Huma's pools that can be drawn down by the borrower.</p>
364
378
  | uri | <code>string</code> | <p>The URI of the receivable token metadata.</p> |
365
379
  | [gasOpts] | <code>Overrides</code> | <p>The gas options to use for the transaction.</p> |
366
380
 
381
+ <a name="ReceivableService.uploadOrFetchMetadataURI"></a>
382
+
383
+ ### ReceivableService.uploadOrFetchMetadataURI(signerOrProvider, privateKey, chainId, poolName, poolType, metadata, referenceId, extraTags, [lazyFund]) ⇒ <code>Promise.&lt;string&gt;</code>
384
+ <p>Uploads metadata onto ARWeave (or fetches the existing metadata with the same reference Id) and returns the ARWeave URL</p>
385
+
386
+ **Kind**: static method of [<code>ReceivableService</code>](#ReceivableService)
387
+ **Returns**: <code>Promise.&lt;string&gt;</code> - <ul>
388
+ <li>The ARWeave metadata URI.</li>
389
+ </ul>
390
+
391
+ | Param | Type | Default | Description |
392
+ | --- | --- | --- | --- |
393
+ | signerOrProvider | <code>Web3Provider</code> \| <code>ethers.Signer</code> | | <p>If calling this function from a browser, this function expects a Web3Provider. If calling this function from a server, this function expects an ethers Signer. Note that privateKey only needs to be included from server calls.</p> |
394
+ | privateKey | <code>string</code> \| <code>null</code> | | <p>Private key of the wallet used to upload metadata to ARWeave. Only required if calling this function from a server.</p> |
395
+ | chainId | <code>number</code> | | <p>The chain ID to mint the receivable token on and pay ARWeave funds from.</p> |
396
+ | poolName | <code>POOL\_NAME</code> | | <p>The pool name. Used to lookup the pool address to pay to.</p> |
397
+ | poolType | <code>POOL\_TYPE</code> | | <p>The pool type. Used to lookup the pool address to pay to.</p> |
398
+ | metadata | <code>Record.&lt;string, any&gt;</code> | | <p>The metadata in JSON format. This will be uploaded onto ARWeave</p> |
399
+ | referenceId | <code>string</code> | | <p>An internal identifier value added as a tag on ARWeave, for easily querying the metadata later.</p> |
400
+ | extraTags | <code>Array.&lt;{name: string, value: string}&gt;</code> | | <p>Any extraTags you'd like to tag your metadata with. Note that metadata on ARWeave is indexed by these tags, so make sure to include any tags that you'd like to be able to query by.</p> |
401
+ | [lazyFund] | <code>boolean</code> | <code>true</code> | <p>Whether to lazy fund the ARWeave uploads. If true, the ARWeave uploads will be paid for by the metadata uploader immediately before uploading. If false, the ARWeave node must be pre-funded before calling this function.</p> |
402
+
367
403
  <a name="ReceivableService.createReceivableWithMetadata"></a>
368
404
 
369
405
  ### ReceivableService.createReceivableWithMetadata(signerOrProvider, privateKey, chainId, poolName, poolType, currencyCode, receivableAmount, maturityDate, metadata, referenceId, extraTags, [lazyFund], [gasOpts]) ⇒ <code>Promise.&lt;TransactionResponse&gt;</code>
@@ -385,7 +421,7 @@ in Huma's pools that can be drawn down by the borrower.</p>
385
421
  | receivableAmount | <code>number</code> | | <p>The receivable amount.</p> |
386
422
  | maturityDate | <code>number</code> | | <p>The maturity date of the receivable, in UNIX timestamp format.</p> |
387
423
  | metadata | <code>Record.&lt;string, any&gt;</code> | | <p>The metadata in JSON format. This will be uploaded onto ARWeave</p> |
388
- | referenceId | <code>number</code> | | <p>An internal identifier value added as a tag on ARWeave, for easily querying the metadata later.</p> |
424
+ | referenceId | <code>string</code> | | <p>An internal identifier value added as a tag on ARWeave, for easily querying the metadata later.</p> |
389
425
  | extraTags | <code>Array.&lt;{name: string, value: string}&gt;</code> | | <p>Any extraTags you'd like to tag your metadata with. Note that metadata on ARWeave is indexed by these tags, so make sure to include any tags that you'd like to be able to query by.</p> |
390
426
  | [lazyFund] | <code>boolean</code> | <code>true</code> | <p>Whether to lazy fund the ARWeave uploads. If true, the ARWeave uploads will be paid for by the metadata uploader immediately before uploading. If false, the ARWeave node must be pre-funded before calling this function.</p> |
391
427
  | [gasOpts] | <code>Overrides</code> | | <p>Optional gas overrides for the transaction.</p> |
@@ -0,0 +1,40 @@
1
+ import { GraphQLClient } from 'graphql-request';
2
+ export type Maybe<T> = T | null;
3
+ export type InputMaybe<T> = Maybe<T>;
4
+ export type Exact<T extends {
5
+ [key: string]: unknown;
6
+ }> = {
7
+ [K in keyof T]: T[K];
8
+ };
9
+ export type MakeOptional<T, K extends keyof T> = Omit<T, K> & {
10
+ [SubKey in K]?: Maybe<T[SubKey]>;
11
+ };
12
+ export type MakeMaybe<T, K extends keyof T> = Omit<T, K> & {
13
+ [SubKey in K]: Maybe<T[SubKey]>;
14
+ };
15
+ /** All built-in and custom scalars, mapped to their actual values */
16
+ export type Scalars = {
17
+ ID: string;
18
+ String: string;
19
+ Boolean: boolean;
20
+ Int: number;
21
+ Float: number;
22
+ };
23
+ export type Receivable = {
24
+ __typename?: 'Receivable';
25
+ creationDate?: Maybe<Scalars['String']>;
26
+ currencyCode?: Maybe<Scalars['String']>;
27
+ id?: Maybe<Scalars['String']>;
28
+ lastUpdate?: Maybe<Scalars['String']>;
29
+ maturityDate?: Maybe<Scalars['String']>;
30
+ owner?: Maybe<Scalars['String']>;
31
+ paidAmount?: Maybe<Scalars['String']>;
32
+ pool?: Maybe<Scalars['String']>;
33
+ receivableAmount?: Maybe<Scalars['String']>;
34
+ status?: Maybe<Scalars['String']>;
35
+ tokenId?: Maybe<Scalars['String']>;
36
+ uri?: Maybe<Scalars['String']>;
37
+ };
38
+ export type SdkFunctionWrapper = <T>(action: (requestHeaders?: Record<string, string>) => Promise<T>, operationName: string, operationType?: string) => Promise<T>;
39
+ export declare function getSdk(client: GraphQLClient, withWrapper?: SdkFunctionWrapper): {};
40
+ export type Sdk = ReturnType<typeof getSdk>;
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getSdk = void 0;
4
+ const defaultWrapper = (action, _operationName, _operationType) => action();
5
+ function getSdk(client, withWrapper = defaultWrapper) {
6
+ return {};
7
+ }
8
+ exports.getSdk = getSdk;
9
+ //# sourceMappingURL=generatedTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generatedTypes.js","sourceRoot":"","sources":["../../../src/graphql/generatedTypes.ts"],"names":[],"mappings":";;;AA8CA,MAAM,cAAc,GAAuB,CACzC,MAAM,EACN,cAAc,EACd,cAAc,EACd,EAAE,CAAC,MAAM,EAAE,CAAA;AAEb,SAAgB,MAAM,CACpB,MAAqB,EACrB,cAAkC,cAAc;IAEhD,OAAO,EAAE,CAAA;AACX,CAAC;AALD,wBAKC"}
@@ -0,0 +1 @@
1
+ export * from './generatedTypes';
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./generatedTypes"), exports);
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/graphql/index.ts"],"names":[],"mappings":";;;AAAA,2DAAgC"}
@@ -0,0 +1,10 @@
1
+ import { Contract, ethers } from 'ethers';
2
+ /**
3
+ * Returns an ethers contract instance for the ERC20TransferableReceivable contract
4
+ * associated with the given pool name on the current chain.
5
+ *
6
+ * @param {ethers.providers.Provider | ethers.Signer} signerOrProvider The provider or signer instance to use for the contract.
7
+ * @param {number} chainId The chain id where the contract instance exists
8
+ * @returns {Contract | null} A contract instance for the ERC20TransferableReceivable contract or null if it could not be found.
9
+ */
10
+ export declare function getERC20TransferableReceivableContract(signerOrProvider: ethers.providers.Provider | ethers.Signer, chainId: number): Contract | null;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getERC20TransferableReceivableContract = void 0;
4
+ const shared_1 = require("@huma-finance/shared");
5
+ const utils_1 = require("../utils");
6
+ /**
7
+ * Returns an ethers contract instance for the ERC20TransferableReceivable contract
8
+ * associated with the given pool name on the current chain.
9
+ *
10
+ * @param {ethers.providers.Provider | ethers.Signer} signerOrProvider The provider or signer instance to use for the contract.
11
+ * @param {number} chainId The chain id where the contract instance exists
12
+ * @returns {Contract | null} A contract instance for the ERC20TransferableReceivable contract or null if it could not be found.
13
+ */
14
+ function getERC20TransferableReceivableContract(signerOrProvider, chainId) {
15
+ var _a;
16
+ const erc20TransferableReceiable = (_a = shared_1.SupplementaryContractsMap[chainId]) === null || _a === void 0 ? void 0 : _a[shared_1.SupplementaryContracts.ERC20TransferableReceivable];
17
+ if (!erc20TransferableReceiable)
18
+ return null;
19
+ return (0, utils_1.getContract)(erc20TransferableReceiable, shared_1.ERC20_TRANSFERABLE_RECEIVABLE_ABI, signerOrProvider);
20
+ }
21
+ exports.getERC20TransferableReceivableContract = getERC20TransferableReceivableContract;
22
+ //# sourceMappingURL=ERC20TransferableReceivableContractHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ERC20TransferableReceivableContractHelper.js","sourceRoot":"","sources":["../../../src/helpers/ERC20TransferableReceivableContractHelper.ts"],"names":[],"mappings":";;;AACA,iDAI6B;AAE7B,oCAAsC;AAEtC;;;;;;;GAOG;AACH,SAAgB,sCAAsC,CACpD,gBAA2D,EAC3D,OAAe;;IAEf,MAAM,0BAA0B,GAC9B,MAAA,kCAAyB,CAAC,OAAO,CAAC,0CAChC,+BAAsB,CAAC,2BAA2B,CACnD,CAAA;IAEH,IAAI,CAAC,0BAA0B;QAAE,OAAO,IAAI,CAAA;IAE5C,OAAO,IAAA,mBAAW,EAChB,0BAA0B,EAC1B,0CAAiC,EACjC,gBAAgB,CACjB,CAAA;AACH,CAAC;AAhBD,wFAgBC"}
@@ -0,0 +1,119 @@
1
+ import { BigNumber } from '@ethersproject/bignumber';
2
+ import { BigNumberish, Contract, Overrides, ethers } from 'ethers';
3
+ import { POOL_NAME, POOL_TYPE } from '@huma-finance/shared';
4
+ import { TransactionResponse } from '@ethersproject/providers';
5
+ /**
6
+ * Returns an ethers contract instance for a Huma pool contract
7
+ *
8
+ * @param {ethers.providers.Provider | ethers.Signer} signerOrProvider The provider or signer instance to use for the contract.
9
+ * @param {number} chainId The chain id where the contract instance exists
10
+ * @param {POOL_NAME} poolName The name of the pool contract to get.
11
+ * @param {POOL_TYPE} poolType The type of the pool contract to get.
12
+ * @returns {Contract | null} A contract instance for the Pool contract or null if it could not be found.
13
+ */
14
+ export declare function getPoolContract(signerOrProvider: ethers.providers.Provider | ethers.Signer, chainId: number, poolName: POOL_NAME, poolType: POOL_TYPE): Contract | null;
15
+ /**
16
+ * Return type of getCreditRecord
17
+ *
18
+ * @memberof getCreditRecord
19
+ * @typedef {Object} CreditRecord
20
+ * @property {BigNumber} unbilledPrincipal - The amount of principal not included in the bill
21
+ * @property {BigNumber} dueDate - Unix timestamp due date of the next payment
22
+ * @property {BigNumber} correction - the adjustment of interest over or under-counted because of drawdown
23
+ * or principal payment in the middle of a billing period
24
+ * @property {BigNumber} totalDue - The due amount of the next payment
25
+ * @property {BigNumber} feesAndInterestDue - Interest and fees due for the next payment
26
+ * @property {number} missedPeriods - # of consecutive missed payments, for default processing
27
+ * @property {number} remainingPeriods - # of payment periods until the maturity of the credit line
28
+ * @property {number} state - status of the credit line.
29
+ * For more info: https://github.com/00labs/huma-contracts/blob/b075a8f957de281e0885e37dbd72a422b6a54a38/contracts/libraries/BaseStructs.sol#L49
30
+ */
31
+ export type CreditRecord = [
32
+ BigNumber,
33
+ BigNumber,
34
+ BigNumber,
35
+ BigNumber,
36
+ BigNumber,
37
+ number,
38
+ number,
39
+ number
40
+ ] & {
41
+ unbilledPrincipal: BigNumber;
42
+ dueDate: BigNumber;
43
+ correction: BigNumber;
44
+ totalDue: BigNumber;
45
+ feesAndInterestDue: BigNumber;
46
+ missedPeriods: number;
47
+ remainingPeriods: number;
48
+ state: number;
49
+ };
50
+ /**
51
+ * Gets the credit record of a wallet in a Huma pool. Denominated in the ERC20 tokens of the pool.
52
+ *
53
+ * @namespace getCreditRecord
54
+ * @async
55
+ * @function
56
+ * @param {string} address - The address to lookup.
57
+ * @param {ethers.providers.Provider | ethers.Signer} signerOrProvider - The signer or provider used to read data.
58
+ * @param {number} chainId - The chain ID of the pool. Used to lookup the pool address.
59
+ * @param {POOL_NAME} poolName - The name of the credit pool. Used to lookup the pool address.
60
+ * @param {POOL_TYPE} poolType - The type of the credit pool. Used to lookup the pool address.
61
+ * @returns {Promise<CreditRecord>} - A Promise of the transaction response.
62
+ */
63
+ export declare function getCreditRecord(address: string, signerOrProvider: ethers.providers.Provider | ethers.Signer, chainId: number, poolName: POOL_NAME, poolType: POOL_TYPE): Promise<CreditRecord>;
64
+ /**
65
+ * Gets the total due for a Huma pool of the given wallet. Denominated in the ERC20 tokens of the pool.
66
+ *
67
+ * @async
68
+ * @function
69
+ * @param {string} address - The address to lookup.
70
+ * @param {ethers.providers.Provider | ethers.Signer} signerOrProvider - The signer or provider used to read data.
71
+ * @param {number} chainId - The chain ID of the pool. Used to lookup the pool address.
72
+ * @param {POOL_NAME} poolName - The name of the credit pool. Used to lookup the pool address.
73
+ * @param {POOL_TYPE} poolType - The type of the credit pool. Used to lookup the pool address.
74
+ * @returns {Promise<BigNumber>} - A Promise of the transaction response.
75
+ */
76
+ export declare function getTotalDue(address: string, signerOrProvider: ethers.providers.Provider | ethers.Signer, chainId: number, poolName: POOL_NAME, poolType: POOL_TYPE): Promise<BigNumber>;
77
+ /**
78
+ * Calls drawdown on a Huma pool contract
79
+ *
80
+ * @async
81
+ * @function
82
+ * @param {ethers.Signer} signer - The signer used to send the transaction.
83
+ * @param {number} chainId - The chain ID of the pool to call drawdown on. Used to lookup the pool address.
84
+ * @param {POOL_NAME} poolName - The name of the credit pool to mint the receivable token from. Used to lookup the pool address.
85
+ * @param {POOL_TYPE} poolType - The type of the credit pool to mint the receivable token from. Used to lookup the pool address.
86
+ * @param {BigNumberish} drawdownAmount - The amount of tokens to withdraw, denominated in the ERC20 tokens of the pool.
87
+ * @param {Overrides} [gasOpts] - The gas options to use for the transaction.
88
+ * @returns {Promise<TransactionResponse>} - A Promise of the transaction response.
89
+ */
90
+ export declare function drawdownFromPool(signer: ethers.Signer, chainId: number, poolName: POOL_NAME, poolType: POOL_TYPE, drawdownAmount: BigNumberish, gasOpts?: Overrides): Promise<TransactionResponse>;
91
+ /**
92
+ * Calls makePayment on a Huma pool contract. If the pool does not have sufficient allowance to complete the operation,
93
+ * attempt to first increase the allowance of the pool.
94
+ *
95
+ * @async
96
+ * @function
97
+ * @param {ethers.Signer} signer - The signer used to send the transaction.
98
+ * @param {number} chainId - The chain ID of the pool to call drawdown on. Used to lookup the pool address.
99
+ * @param {POOL_NAME} poolName - The name of the credit pool to mint the receivable token from. Used to lookup the pool address.
100
+ * @param {POOL_TYPE} poolType - The type of the credit pool to mint the receivable token from. Used to lookup the pool address.
101
+ * @param {BigNumberish} paymentAmount - The amount of tokens to payback, denominated in the ERC20 tokens of the pool.
102
+ * @param {Overrides} [gasOpts] - The gas options to use for the transaction.
103
+ * @returns {Promise<TransactionResponse>} - A Promise of the transaction response.
104
+ */
105
+ export declare function makePaymentToPool(signer: ethers.Signer, chainId: number, poolName: POOL_NAME, poolType: POOL_TYPE, paymentAmount: BigNumberish, gasOpts?: Overrides): Promise<TransactionResponse>;
106
+ /**
107
+ * Approves an allowance for a Huma pool contract, which is required to do certain actions (e.g. makePayment)
108
+ *
109
+ * @async
110
+ * @function
111
+ * @param {ethers.Signer} signer - The signer used to send the transaction.
112
+ * @param {number} chainId - The chain ID of the pool to call drawdown on. Used to lookup the pool address.
113
+ * @param {POOL_NAME} poolName - The name of the credit pool to mint the receivable token from. Used to lookup the pool address.
114
+ * @param {POOL_TYPE} poolType - The type of the credit pool to mint the receivable token from. Used to lookup the pool address.
115
+ * @param {BigNumberish} allowanceAmount - The amount of tokens to payback, denominated in the ERC20 tokens of the pool.
116
+ * @param {Overrides} [gasOpts] - The gas options to use for the transaction.
117
+ * @returns {Promise<TransactionResponse>} - A Promise of the transaction response.
118
+ */
119
+ export declare function approvePoolAllowance(signer: ethers.Signer, chainId: number, poolName: POOL_NAME, poolType: POOL_TYPE, allowanceAmount: BigNumberish, gasOpts?: Overrides): Promise<TransactionResponse>;
@@ -0,0 +1,144 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.approvePoolAllowance = exports.makePaymentToPool = exports.drawdownFromPool = exports.getTotalDue = exports.getCreditRecord = exports.getPoolContract = void 0;
4
+ const utils_1 = require("../utils");
5
+ /**
6
+ * Returns an ethers contract instance for a Huma pool contract
7
+ *
8
+ * @param {ethers.providers.Provider | ethers.Signer} signerOrProvider The provider or signer instance to use for the contract.
9
+ * @param {number} chainId The chain id where the contract instance exists
10
+ * @param {POOL_NAME} poolName The name of the pool contract to get.
11
+ * @param {POOL_TYPE} poolType The type of the pool contract to get.
12
+ * @returns {Contract | null} A contract instance for the Pool contract or null if it could not be found.
13
+ */
14
+ function getPoolContract(signerOrProvider, chainId, poolName, poolType) {
15
+ const poolInfo = (0, utils_1.getPoolInfo)(chainId, poolName, poolType);
16
+ if (!poolInfo)
17
+ return null;
18
+ return (0, utils_1.getContract)(poolInfo.pool, poolInfo.poolAbi, signerOrProvider);
19
+ }
20
+ exports.getPoolContract = getPoolContract;
21
+ /**
22
+ * Gets the credit record of a wallet in a Huma pool. Denominated in the ERC20 tokens of the pool.
23
+ *
24
+ * @namespace getCreditRecord
25
+ * @async
26
+ * @function
27
+ * @param {string} address - The address to lookup.
28
+ * @param {ethers.providers.Provider | ethers.Signer} signerOrProvider - The signer or provider used to read data.
29
+ * @param {number} chainId - The chain ID of the pool. Used to lookup the pool address.
30
+ * @param {POOL_NAME} poolName - The name of the credit pool. Used to lookup the pool address.
31
+ * @param {POOL_TYPE} poolType - The type of the credit pool. Used to lookup the pool address.
32
+ * @returns {Promise<CreditRecord>} - A Promise of the transaction response.
33
+ */
34
+ async function getCreditRecord(address, signerOrProvider, chainId, poolName, poolType) {
35
+ const poolContract = getPoolContract(signerOrProvider, chainId, poolName, poolType);
36
+ if (!poolContract) {
37
+ throw new Error('Could not find pool contract');
38
+ }
39
+ return poolContract.creditRecordMapping(address);
40
+ }
41
+ exports.getCreditRecord = getCreditRecord;
42
+ /**
43
+ * Gets the total due for a Huma pool of the given wallet. Denominated in the ERC20 tokens of the pool.
44
+ *
45
+ * @async
46
+ * @function
47
+ * @param {string} address - The address to lookup.
48
+ * @param {ethers.providers.Provider | ethers.Signer} signerOrProvider - The signer or provider used to read data.
49
+ * @param {number} chainId - The chain ID of the pool. Used to lookup the pool address.
50
+ * @param {POOL_NAME} poolName - The name of the credit pool. Used to lookup the pool address.
51
+ * @param {POOL_TYPE} poolType - The type of the credit pool. Used to lookup the pool address.
52
+ * @returns {Promise<BigNumber>} - A Promise of the transaction response.
53
+ */
54
+ async function getTotalDue(address, signerOrProvider, chainId, poolName, poolType) {
55
+ const creditRecord = await getCreditRecord(address, signerOrProvider, chainId, poolName, poolType);
56
+ return creditRecord.totalDue;
57
+ }
58
+ exports.getTotalDue = getTotalDue;
59
+ /**
60
+ * Calls drawdown on a Huma pool contract
61
+ *
62
+ * @async
63
+ * @function
64
+ * @param {ethers.Signer} signer - The signer used to send the transaction.
65
+ * @param {number} chainId - The chain ID of the pool to call drawdown on. Used to lookup the pool address.
66
+ * @param {POOL_NAME} poolName - The name of the credit pool to mint the receivable token from. Used to lookup the pool address.
67
+ * @param {POOL_TYPE} poolType - The type of the credit pool to mint the receivable token from. Used to lookup the pool address.
68
+ * @param {BigNumberish} drawdownAmount - The amount of tokens to withdraw, denominated in the ERC20 tokens of the pool.
69
+ * @param {Overrides} [gasOpts] - The gas options to use for the transaction.
70
+ * @returns {Promise<TransactionResponse>} - A Promise of the transaction response.
71
+ */
72
+ async function drawdownFromPool(signer, chainId, poolName, poolType, drawdownAmount, gasOpts = {}) {
73
+ const poolContract = getPoolContract(signer, chainId, poolName, poolType);
74
+ if (!poolContract) {
75
+ throw new Error('Could not find pool contract');
76
+ }
77
+ gasOpts = await (0, utils_1.getDefaultGasOptions)(gasOpts, chainId);
78
+ // TODO: Generate typechain for pool contract
79
+ return poolContract.drawdown(drawdownAmount, gasOpts);
80
+ }
81
+ exports.drawdownFromPool = drawdownFromPool;
82
+ /**
83
+ * Calls makePayment on a Huma pool contract. If the pool does not have sufficient allowance to complete the operation,
84
+ * attempt to first increase the allowance of the pool.
85
+ *
86
+ * @async
87
+ * @function
88
+ * @param {ethers.Signer} signer - The signer used to send the transaction.
89
+ * @param {number} chainId - The chain ID of the pool to call drawdown on. Used to lookup the pool address.
90
+ * @param {POOL_NAME} poolName - The name of the credit pool to mint the receivable token from. Used to lookup the pool address.
91
+ * @param {POOL_TYPE} poolType - The type of the credit pool to mint the receivable token from. Used to lookup the pool address.
92
+ * @param {BigNumberish} paymentAmount - The amount of tokens to payback, denominated in the ERC20 tokens of the pool.
93
+ * @param {Overrides} [gasOpts] - The gas options to use for the transaction.
94
+ * @returns {Promise<TransactionResponse>} - A Promise of the transaction response.
95
+ */
96
+ async function makePaymentToPool(signer, chainId, poolName, poolType, paymentAmount, gasOpts = {}) {
97
+ const poolInfo = (0, utils_1.getPoolInfo)(chainId, poolName, poolType);
98
+ if (!(poolInfo === null || poolInfo === void 0 ? void 0 : poolInfo.poolUnderlyingToken.address)) {
99
+ throw new Error('Could not find pool underlying token address');
100
+ }
101
+ const poolTokenContract = (0, utils_1.getERC20Contract)(poolInfo === null || poolInfo === void 0 ? void 0 : poolInfo.poolUnderlyingToken.address, signer);
102
+ const poolContract = getPoolContract(signer, chainId, poolName, poolType);
103
+ if (!poolContract) {
104
+ throw new Error('Could not find pool contract');
105
+ }
106
+ gasOpts = await (0, utils_1.getDefaultGasOptions)(gasOpts, chainId);
107
+ const allowance = await poolTokenContract.allowance(await signer.getAddress(), poolContract.address);
108
+ if (allowance.lt(paymentAmount)) {
109
+ const approvalTx = await poolTokenContract.approve(poolContract.address, paymentAmount, gasOpts);
110
+ // Wait for 5 block confirmations since this is required for makePayment
111
+ await approvalTx.wait(5);
112
+ }
113
+ // TODO: Generate typechain for pool contract
114
+ return poolContract.makePayment(await signer.getAddress(), paymentAmount, gasOpts);
115
+ }
116
+ exports.makePaymentToPool = makePaymentToPool;
117
+ /**
118
+ * Approves an allowance for a Huma pool contract, which is required to do certain actions (e.g. makePayment)
119
+ *
120
+ * @async
121
+ * @function
122
+ * @param {ethers.Signer} signer - The signer used to send the transaction.
123
+ * @param {number} chainId - The chain ID of the pool to call drawdown on. Used to lookup the pool address.
124
+ * @param {POOL_NAME} poolName - The name of the credit pool to mint the receivable token from. Used to lookup the pool address.
125
+ * @param {POOL_TYPE} poolType - The type of the credit pool to mint the receivable token from. Used to lookup the pool address.
126
+ * @param {BigNumberish} allowanceAmount - The amount of tokens to payback, denominated in the ERC20 tokens of the pool.
127
+ * @param {Overrides} [gasOpts] - The gas options to use for the transaction.
128
+ * @returns {Promise<TransactionResponse>} - A Promise of the transaction response.
129
+ */
130
+ async function approvePoolAllowance(signer, chainId, poolName, poolType, allowanceAmount, gasOpts = {}) {
131
+ const poolInfo = (0, utils_1.getPoolInfo)(chainId, poolName, poolType);
132
+ if (!(poolInfo === null || poolInfo === void 0 ? void 0 : poolInfo.poolUnderlyingToken.address)) {
133
+ throw new Error('Could not find pool underlying token address');
134
+ }
135
+ const poolTokenContract = (0, utils_1.getERC20Contract)(poolInfo === null || poolInfo === void 0 ? void 0 : poolInfo.poolUnderlyingToken.address, signer);
136
+ const poolContract = getPoolContract(signer, chainId, poolName, poolType);
137
+ if (!poolContract) {
138
+ throw new Error('Could not find pool contract');
139
+ }
140
+ gasOpts = await (0, utils_1.getDefaultGasOptions)(gasOpts, chainId);
141
+ return poolTokenContract.approve(poolContract.address, allowanceAmount, gasOpts);
142
+ }
143
+ exports.approvePoolAllowance = approvePoolAllowance;
144
+ //# sourceMappingURL=PoolContractHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PoolContractHelper.js","sourceRoot":"","sources":["../../../src/helpers/PoolContractHelper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { Contract, ethers } from 'ethers';
2
+ /**
3
+ * Returns an ethers contract instance for the RealWorldReceivable contract
4
+ * associated with the given pool name on the current chain.
5
+ *
6
+ * @param {ethers.providers.Provider | ethers.Signer} signerOrProvider The provider or signer instance to use for the contract.
7
+ * @param {number} chainId The chain id where the contract instance exists
8
+ * @returns {Contract | null} A contract instance for the RealWorldReceivable contract or null if it could not be found.
9
+ */
10
+ export declare function getRealWorldReceivableContract(signerOrProvider: ethers.providers.Provider | ethers.Signer, chainId: number): Contract | null;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getRealWorldReceivableContract = void 0;
4
+ const shared_1 = require("@huma-finance/shared");
5
+ const utils_1 = require("../utils");
6
+ /**
7
+ * Returns an ethers contract instance for the RealWorldReceivable contract
8
+ * associated with the given pool name on the current chain.
9
+ *
10
+ * @param {ethers.providers.Provider | ethers.Signer} signerOrProvider The provider or signer instance to use for the contract.
11
+ * @param {number} chainId The chain id where the contract instance exists
12
+ * @returns {Contract | null} A contract instance for the RealWorldReceivable contract or null if it could not be found.
13
+ */
14
+ function getRealWorldReceivableContract(signerOrProvider, chainId) {
15
+ var _a;
16
+ const rwReceivableContract = (_a = shared_1.SupplementaryContractsMap[chainId]) === null || _a === void 0 ? void 0 : _a[shared_1.SupplementaryContracts.RealWorldReceivable];
17
+ if (!rwReceivableContract)
18
+ return null;
19
+ return (0, utils_1.getContract)(rwReceivableContract, shared_1.REAL_WORLD_RECEIVABLE_ABI, signerOrProvider);
20
+ }
21
+ exports.getRealWorldReceivableContract = getRealWorldReceivableContract;
22
+ //# sourceMappingURL=RealWorldReceivableContractHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RealWorldReceivableContractHelper.js","sourceRoot":"","sources":["../../../src/helpers/RealWorldReceivableContractHelper.ts"],"names":[],"mappings":";;;AACA,iDAI6B;AAE7B,oCAAsC;AAEtC;;;;;;;GAOG;AACH,SAAgB,8BAA8B,CAC5C,gBAA2D,EAC3D,OAAe;;IAEf,MAAM,oBAAoB,GACxB,MAAA,kCAAyB,CAAC,OAAO,CAAC,0CAChC,+BAAsB,CAAC,mBAAmB,CAC3C,CAAA;IAEH,IAAI,CAAC,oBAAoB;QAAE,OAAO,IAAI,CAAA;IAEtC,OAAO,IAAA,mBAAW,EAChB,oBAAoB,EACpB,kCAAyB,EACzB,gBAAgB,CACjB,CAAA;AACH,CAAC;AAhBD,wEAgBC"}
@@ -0,0 +1,3 @@
1
+ export * from './RealWorldReceivableContractHelper';
2
+ export * from './ERC20TransferableReceivableContractHelper';
3
+ export * from './PoolContractHelper';
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./RealWorldReceivableContractHelper"), exports);
5
+ tslib_1.__exportStar(require("./ERC20TransferableReceivableContractHelper"), exports);
6
+ tslib_1.__exportStar(require("./PoolContractHelper"), exports);
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/helpers/index.ts"],"names":[],"mappings":";;;AAAA,8EAAmD;AACnD,sFAA2D;AAC3D,+DAAoC"}
@@ -0,0 +1,4 @@
1
+ export * from './useContract';
2
+ export * from './useRealWorldReceivableContract';
3
+ export * from './useERC20TransferableReceivableContract';
4
+ export * from './usePoolContract';
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./useContract"), exports);
5
+ tslib_1.__exportStar(require("./useRealWorldReceivableContract"), exports);
6
+ tslib_1.__exportStar(require("./useERC20TransferableReceivableContract"), exports);
7
+ tslib_1.__exportStar(require("./usePoolContract"), exports);
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":";;;AAAA,wDAA6B;AAC7B,2EAAgD;AAChD,mFAAwD;AACxD,4DAAiC"}
@@ -0,0 +1,13 @@
1
+ import { Contract } from '@ethersproject/contracts';
2
+ import { ethers } from 'ethers';
3
+ /**
4
+ * Custom hook for creating an ethers instance of a smart contract.
5
+ *
6
+ * @template T - The type of the contract.
7
+ * @param {string | null | undefined} address - The address of the smart contract instance.
8
+ * @param {any} ABI - The ABI of the smart contract.
9
+ * @param {ethers.providers.Provider | ethers.Signer} signerOrProvider - The signer or provider used to sign transactions or retrieve blockchain data.
10
+ * Note that this signerOrProvider must be connected to the same network as the smart contract in question.
11
+ * @returns {T | null} An instance of the smart contract, or null if an error occurs.
12
+ */
13
+ export declare function useContract<T extends Contract = Contract>(address: string | null | undefined, ABI: any, signerOrProvider: ethers.providers.Provider | ethers.Signer): T | null;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useContract = void 0;
4
+ const react_1 = require("react");
5
+ const web3_1 = require("../utils/web3");
6
+ /**
7
+ * Custom hook for creating an ethers instance of a smart contract.
8
+ *
9
+ * @template T - The type of the contract.
10
+ * @param {string | null | undefined} address - The address of the smart contract instance.
11
+ * @param {any} ABI - The ABI of the smart contract.
12
+ * @param {ethers.providers.Provider | ethers.Signer} signerOrProvider - The signer or provider used to sign transactions or retrieve blockchain data.
13
+ * Note that this signerOrProvider must be connected to the same network as the smart contract in question.
14
+ * @returns {T | null} An instance of the smart contract, or null if an error occurs.
15
+ */
16
+ function useContract(address,
17
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
18
+ ABI, signerOrProvider) {
19
+ return (0, react_1.useMemo)(() => {
20
+ if (!address || !ABI || !signerOrProvider)
21
+ return null;
22
+ try {
23
+ return (0, web3_1.getContract)(address, ABI, signerOrProvider);
24
+ }
25
+ catch (error) {
26
+ return null;
27
+ }
28
+ }, [address, ABI, signerOrProvider]);
29
+ }
30
+ exports.useContract = useContract;
31
+ //# sourceMappingURL=useContract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useContract.js","sourceRoot":"","sources":["../../../src/hooks/useContract.ts"],"names":[],"mappings":";;;AACA,iCAA+B;AAG/B,wCAA2C;AAE3C;;;;;;;;;GASG;AACH,SAAgB,WAAW,CACzB,OAAkC;AAClC,8DAA8D;AAC9D,GAAQ,EACR,gBAA2D;IAE3D,OAAO,IAAA,eAAO,EAAC,GAAG,EAAE;QAClB,IAAI,CAAC,OAAO,IAAI,CAAC,GAAG,IAAI,CAAC,gBAAgB;YAAE,OAAO,IAAI,CAAA;QACtD,IAAI;YACF,OAAO,IAAA,kBAAW,EAAC,OAAO,EAAE,GAAG,EAAE,gBAAgB,CAAC,CAAA;SACnD;QAAC,OAAO,KAAK,EAAE;YACd,OAAO,IAAI,CAAA;SACZ;IACH,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,gBAAgB,CAAC,CAAM,CAAA;AAC3C,CAAC;AAdD,kCAcC"}