@huma-finance/sdk 0.0.54 → 0.0.55-beta.429
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/API.md +21 -4
- package/dist/cjs/helpers/v2/ReceivableBackedCreditLineContractHelper.js +36 -14
- package/dist/cjs/helpers/v2/ReceivableBackedCreditLineContractHelper.js.map +1 -1
- package/dist/cjs/helpers/v2/ReceivableContractHelper.d.ts +15 -6
- package/dist/cjs/helpers/v2/ReceivableContractHelper.js +18 -17
- package/dist/cjs/helpers/v2/ReceivableContractHelper.js.map +1 -1
- package/dist/cjs/services/v2/HumaReceivableFactory.js +4 -1
- package/dist/cjs/services/v2/HumaReceivableFactory.js.map +1 -1
- package/dist/cjs/services/v2/HumaReceivableHandler.js +1 -1
- package/dist/cjs/services/v2/HumaReceivableHandler.js.map +1 -1
- package/dist/cjs/utils/chain.d.ts +1 -0
- package/dist/cjs/utils/chain.js +9 -5
- package/dist/cjs/utils/chain.js.map +1 -1
- package/dist/helpers/v2/ReceivableBackedCreditLineContractHelper.js +37 -15
- package/dist/helpers/v2/ReceivableBackedCreditLineContractHelper.js.map +1 -1
- package/dist/helpers/v2/ReceivableContractHelper.d.ts +15 -6
- package/dist/helpers/v2/ReceivableContractHelper.js +18 -17
- package/dist/helpers/v2/ReceivableContractHelper.js.map +1 -1
- package/dist/services/v2/HumaReceivableFactory.js +4 -1
- package/dist/services/v2/HumaReceivableFactory.js.map +1 -1
- package/dist/services/v2/HumaReceivableHandler.js +1 -1
- package/dist/services/v2/HumaReceivableHandler.js.map +1 -1
- package/dist/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/utils/chain.d.ts +1 -0
- package/dist/utils/chain.js +8 -5
- package/dist/utils/chain.js.map +1 -1
- package/package.json +3 -3
package/API.md
CHANGED
|
@@ -60,9 +60,11 @@ associated with the given pool name on the current chain.</p></dd>
|
|
|
60
60
|
<dd><p>Makes a payment with a receivable.</p></dd>
|
|
61
61
|
<dt><a href="#makePrincipalPaymentAndDrawdownWithReceivable">makePrincipalPaymentAndDrawdownWithReceivable(signer, poolName, paymentReceivableId, paymentAmount, drawdownReceivableId, drawdownAmount, [gasOpts])</a> ⇒ <code>Promise.<TransactionResponse></code></dt>
|
|
62
62
|
<dd><p>Makes a principal payment and drawdown with receivables.</p></dd>
|
|
63
|
-
<dt><a href="#getReceivableContractV2">getReceivableContractV2(
|
|
63
|
+
<dt><a href="#getReceivableContractV2">getReceivableContractV2(poolName, signer)</a> ⇒ <code>Contract</code> | <code>null</code></dt>
|
|
64
64
|
<dd><p>Returns an ethers contract instance for the V2 Receivable contract
|
|
65
65
|
associated with the given pool name on the current chain.</p></dd>
|
|
66
|
+
<dt><a href="#getReceivableTokenIdFromReferenceId">getReceivableTokenIdFromReferenceId(referenceId, creator, poolName, signer)</a> ⇒</dt>
|
|
67
|
+
<dd><p>Retrieves the receivable token ID associated with a given reference ID.</p></dd>
|
|
66
68
|
<dt><a href="#useContract">useContract(address, ABI, signerOrProvider)</a> ⇒ <code>T</code> | <code>null</code></dt>
|
|
67
69
|
<dd><p>Custom hook for creating an ethers instance of a smart contract.</p></dd>
|
|
68
70
|
<dt><a href="#useERC20TransferableReceivableContract">useERC20TransferableReceivableContract(signerOrProvider, chainId, poolName)</a> ⇒ <code>Contract</code> | <code>null</code></dt>
|
|
@@ -897,7 +899,7 @@ associated with the given pool name on the current chain.</p>
|
|
|
897
899
|
|
|
898
900
|
<a name="getReceivableContractV2"></a>
|
|
899
901
|
|
|
900
|
-
## getReceivableContractV2(
|
|
902
|
+
## getReceivableContractV2(poolName, signer) ⇒ <code>Contract</code> \| <code>null</code>
|
|
901
903
|
<p>Returns an ethers contract instance for the V2 Receivable contract
|
|
902
904
|
associated with the given pool name on the current chain.</p>
|
|
903
905
|
|
|
@@ -906,8 +908,23 @@ associated with the given pool name on the current chain.</p>
|
|
|
906
908
|
|
|
907
909
|
| Param | Type | Description |
|
|
908
910
|
| --- | --- | --- |
|
|
909
|
-
|
|
|
910
|
-
|
|
|
911
|
+
| poolName | <code>POOL\_NAME</code> | <p>The name of the pool.</p> |
|
|
912
|
+
| signer | <code>ethers.Signer</code> | <p>The signer instance to use for the contract.</p> |
|
|
913
|
+
|
|
914
|
+
<a name="getReceivableTokenIdFromReferenceId"></a>
|
|
915
|
+
|
|
916
|
+
## getReceivableTokenIdFromReferenceId(referenceId, creator, poolName, signer) ⇒
|
|
917
|
+
<p>Retrieves the receivable token ID associated with a given reference ID.</p>
|
|
918
|
+
|
|
919
|
+
**Kind**: global function
|
|
920
|
+
**Returns**: <p>A promise that resolves to the receivable token ID.</p>
|
|
921
|
+
|
|
922
|
+
| Param | Description |
|
|
923
|
+
| --- | --- |
|
|
924
|
+
| referenceId | <p>The reference ID of the receivable.</p> |
|
|
925
|
+
| creator | <p>The creator of the receivable.</p> |
|
|
926
|
+
| poolName | <p>The name of the pool.</p> |
|
|
927
|
+
| signer | <p>The signer used for the contract interaction.</p> |
|
|
911
928
|
|
|
912
929
|
<a name="useContract"></a>
|
|
913
930
|
|
|
@@ -51,12 +51,18 @@ exports.getTotalDueV2 = getTotalDueV2;
|
|
|
51
51
|
* @returns {Promise<TransactionResponse>} - A Promise of the transaction response.
|
|
52
52
|
*/
|
|
53
53
|
async function drawdownWithReceivable(signer, poolName, receivableId, drawdownAmount, gasOpts = {}) {
|
|
54
|
-
const creditContract = await
|
|
54
|
+
const [creditContract, chainId] = await Promise.all([
|
|
55
|
+
getReceivableBackedCreditLineContractV2(poolName, signer),
|
|
56
|
+
(0, shared_1.getChainIdFromSignerOrProvider)(signer),
|
|
57
|
+
]);
|
|
55
58
|
if (!creditContract) {
|
|
56
59
|
throw new Error('Could not find credit contract');
|
|
57
60
|
}
|
|
61
|
+
if (!chainId) {
|
|
62
|
+
throw new Error('Could not find chain ID');
|
|
63
|
+
}
|
|
58
64
|
const approveTx = await (0, ReceivableContractHelper_1.approveReceivableTransferIfNeeded)(signer, poolName, receivableId);
|
|
59
|
-
await (approveTx === null || approveTx === void 0 ? void 0 : approveTx.wait(
|
|
65
|
+
await (approveTx === null || approveTx === void 0 ? void 0 : approveTx.wait((0, utils_1.getChainConfirmations)(chainId)));
|
|
60
66
|
return creditContract.drawdownWithReceivable(receivableId, drawdownAmount, gasOpts);
|
|
61
67
|
}
|
|
62
68
|
exports.drawdownWithReceivable = drawdownWithReceivable;
|
|
@@ -74,20 +80,26 @@ exports.drawdownWithReceivable = drawdownWithReceivable;
|
|
|
74
80
|
* @returns {Promise<TransactionResponse>} - A Promise of the transaction response.
|
|
75
81
|
*/
|
|
76
82
|
async function makePaymentWithReceivable(signer, poolName, receivableId, paymentAmount, principalOnly, gasOpts = {}) {
|
|
77
|
-
const creditContract = await
|
|
83
|
+
const [creditContract, poolSafeContract, underlyingToken, chainId] = await Promise.all([
|
|
84
|
+
getReceivableBackedCreditLineContractV2(poolName, signer),
|
|
85
|
+
(0, shared_1.getPoolSafeContractV2)(poolName, signer.provider),
|
|
86
|
+
(0, shared_1.getPoolUnderlyingTokenContractV2)(poolName, signer.provider),
|
|
87
|
+
(0, shared_1.getChainIdFromSignerOrProvider)(signer),
|
|
88
|
+
]);
|
|
78
89
|
if (!creditContract) {
|
|
79
90
|
throw new Error('Could not find credit contract');
|
|
80
91
|
}
|
|
81
|
-
const poolSafeContract = await (0, shared_1.getPoolSafeContractV2)(poolName, signer.provider);
|
|
82
92
|
if (!poolSafeContract) {
|
|
83
93
|
throw new Error('Could not find pool safe contract');
|
|
84
94
|
}
|
|
85
|
-
const underlyingToken = await (0, shared_1.getPoolUnderlyingTokenContractV2)(poolName, signer.provider);
|
|
86
95
|
if (!underlyingToken) {
|
|
87
96
|
throw new Error('Could not find underlying token contract');
|
|
88
97
|
}
|
|
98
|
+
if (!chainId) {
|
|
99
|
+
throw new Error('Could not find chain ID');
|
|
100
|
+
}
|
|
89
101
|
const approveERC20Tx = await (0, ERC20ContractHelper_1.approveERC20AllowanceIfInsufficient)(signer, underlyingToken.address, poolSafeContract.address, paymentAmount, gasOpts);
|
|
90
|
-
await (approveERC20Tx === null || approveERC20Tx === void 0 ? void 0 : approveERC20Tx.wait(
|
|
102
|
+
await (approveERC20Tx === null || approveERC20Tx === void 0 ? void 0 : approveERC20Tx.wait((0, utils_1.getChainConfirmations)(chainId)));
|
|
91
103
|
let paymentTx;
|
|
92
104
|
if (principalOnly) {
|
|
93
105
|
paymentTx = await creditContract.makePrincipalPaymentWithReceivable(receivableId, paymentAmount, gasOpts);
|
|
@@ -113,22 +125,32 @@ exports.makePaymentWithReceivable = makePaymentWithReceivable;
|
|
|
113
125
|
* @returns {Promise<TransactionResponse>} - A Promise of the transaction response.
|
|
114
126
|
*/
|
|
115
127
|
async function makePrincipalPaymentAndDrawdownWithReceivable(signer, poolName, paymentReceivableId, paymentAmount, drawdownReceivableId, drawdownAmount, gasOpts = {}) {
|
|
116
|
-
const creditContract = await
|
|
128
|
+
const [creditContract, underlyingToken, poolSafeContract, chainId] = await Promise.all([
|
|
129
|
+
getReceivableBackedCreditLineContractV2(poolName, signer),
|
|
130
|
+
(0, shared_1.getPoolUnderlyingTokenContractV2)(poolName, signer.provider),
|
|
131
|
+
(0, shared_1.getPoolSafeContractV2)(poolName, signer.provider),
|
|
132
|
+
(0, shared_1.getChainIdFromSignerOrProvider)(signer),
|
|
133
|
+
]);
|
|
117
134
|
if (!creditContract) {
|
|
118
135
|
throw new Error('Could not find credit contract');
|
|
119
136
|
}
|
|
120
|
-
|
|
121
|
-
|
|
137
|
+
if (!underlyingToken) {
|
|
138
|
+
throw new Error('Could not find underlying token contract');
|
|
139
|
+
}
|
|
122
140
|
if (!poolSafeContract) {
|
|
123
141
|
throw new Error('Could not find pool safe contract');
|
|
124
142
|
}
|
|
125
|
-
if (!
|
|
126
|
-
throw new Error('Could not find
|
|
143
|
+
if (!chainId) {
|
|
144
|
+
throw new Error('Could not find chain ID');
|
|
127
145
|
}
|
|
128
146
|
const approveERC20Tx = await (0, ERC20ContractHelper_1.approveERC20AllowanceIfInsufficient)(signer, underlyingToken.address, poolSafeContract.address, paymentAmount, gasOpts);
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
147
|
+
if (approveERC20Tx) {
|
|
148
|
+
await approveERC20Tx.wait((0, utils_1.getChainConfirmations)(chainId));
|
|
149
|
+
}
|
|
150
|
+
const approveTx = await (0, ReceivableContractHelper_1.approveReceivableTransferIfNeeded)(signer, poolName, drawdownReceivableId, gasOpts);
|
|
151
|
+
if (approveTx) {
|
|
152
|
+
await (approveTx === null || approveTx === void 0 ? void 0 : approveTx.wait((0, utils_1.getChainConfirmations)(chainId)));
|
|
153
|
+
}
|
|
132
154
|
return creditContract.makePrincipalPaymentAndDrawdownWithReceivable(paymentReceivableId, paymentAmount, drawdownReceivableId, drawdownAmount, gasOpts);
|
|
133
155
|
}
|
|
134
156
|
exports.makePrincipalPaymentAndDrawdownWithReceivable = makePrincipalPaymentAndDrawdownWithReceivable;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReceivableBackedCreditLineContractHelper.js","sourceRoot":"","sources":["../../../../src/helpers/v2/ReceivableBackedCreditLineContractHelper.ts"],"names":[],"mappings":";;;AAKA,iDAS6B;AAG7B,
|
|
1
|
+
{"version":3,"file":"ReceivableBackedCreditLineContractHelper.js","sourceRoot":"","sources":["../../../../src/helpers/v2/ReceivableBackedCreditLineContractHelper.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,24 @@
|
|
|
1
1
|
import { BigNumber, BigNumberish, Overrides, ethers } from 'ethers';
|
|
2
2
|
import { POOL_NAME, v2Contracts } from '@huma-finance/shared';
|
|
3
|
-
import {
|
|
3
|
+
import { TransactionResponse } from '@ethersproject/providers';
|
|
4
4
|
/**
|
|
5
5
|
* Returns an ethers contract instance for the V2 Receivable contract
|
|
6
6
|
* associated with the given pool name on the current chain.
|
|
7
7
|
*
|
|
8
|
-
* @param {
|
|
9
|
-
* @param {
|
|
8
|
+
* @param {POOL_NAME} poolName The name of the pool.
|
|
9
|
+
* @param {ethers.Signer} signer The signer instance to use for the contract.
|
|
10
10
|
* @returns {Contract | null} A contract instance for the Receivable contract or null if it could not be found.
|
|
11
11
|
*/
|
|
12
|
-
export declare function getReceivableContractV2(poolName: POOL_NAME,
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
export declare function getReceivableContractV2(poolName: POOL_NAME, signer: ethers.Signer): Promise<v2Contracts.Receivable | null>;
|
|
13
|
+
/**
|
|
14
|
+
* Retrieves the receivable token ID associated with a given reference ID.
|
|
15
|
+
*
|
|
16
|
+
* @param referenceId - The reference ID of the receivable.
|
|
17
|
+
* @param creator - The creator of the receivable.
|
|
18
|
+
* @param poolName - The name of the pool.
|
|
19
|
+
* @param signer - The signer used for the contract interaction.
|
|
20
|
+
* @returns A promise that resolves to the receivable token ID.
|
|
21
|
+
*/
|
|
22
|
+
export declare function getReceivableTokenIdFromReferenceId(referenceId: string, creator: string, poolName: POOL_NAME, signer: ethers.Signer): Promise<BigNumber>;
|
|
23
|
+
export declare function getReceivableReferenceAlreadyExists(referenceId: string, signerAddress: string, poolName: POOL_NAME, signer: ethers.Signer): Promise<boolean>;
|
|
15
24
|
export declare function approveReceivableTransferIfNeeded(signer: ethers.Signer, poolName: POOL_NAME, receivableId: BigNumberish, gasOpts?: Overrides): Promise<TransactionResponse | null>;
|
|
@@ -1,35 +1,36 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.approveReceivableTransferIfNeeded = exports.getReceivableReferenceAlreadyExists = exports.getReceivableTokenIdFromReferenceId = exports.getReceivableContractV2 = void 0;
|
|
4
|
-
const ethers_1 = require("ethers");
|
|
5
4
|
const shared_1 = require("@huma-finance/shared");
|
|
6
5
|
const utils_1 = require("../../utils");
|
|
7
6
|
/**
|
|
8
7
|
* Returns an ethers contract instance for the V2 Receivable contract
|
|
9
8
|
* associated with the given pool name on the current chain.
|
|
10
9
|
*
|
|
11
|
-
* @param {
|
|
12
|
-
* @param {
|
|
10
|
+
* @param {POOL_NAME} poolName The name of the pool.
|
|
11
|
+
* @param {ethers.Signer} signer The signer instance to use for the contract.
|
|
13
12
|
* @returns {Contract | null} A contract instance for the Receivable contract or null if it could not be found.
|
|
14
13
|
*/
|
|
15
|
-
async function getReceivableContractV2(poolName,
|
|
16
|
-
|
|
17
|
-
if (signerOrProvider instanceof ethers_1.ethers.Signer) {
|
|
18
|
-
provider = signerOrProvider.provider;
|
|
19
|
-
}
|
|
20
|
-
else {
|
|
21
|
-
provider = signerOrProvider;
|
|
22
|
-
}
|
|
23
|
-
const poolConfigContract = await (0, shared_1.getPoolConfigContractV2)(poolName, provider);
|
|
14
|
+
async function getReceivableContractV2(poolName, signer) {
|
|
15
|
+
const poolConfigContract = await (0, shared_1.getPoolConfigContractV2)(poolName, signer.provider);
|
|
24
16
|
if (!poolConfigContract) {
|
|
25
17
|
throw new Error('Could not find PoolConfig contract');
|
|
26
18
|
}
|
|
27
19
|
const receivableAsset = await poolConfigContract.receivableAsset();
|
|
28
|
-
return (0, utils_1.getContract)(receivableAsset, shared_1.RECEIVABLE_V2_ABI,
|
|
20
|
+
return (0, utils_1.getContract)(receivableAsset, shared_1.RECEIVABLE_V2_ABI, signer);
|
|
29
21
|
}
|
|
30
22
|
exports.getReceivableContractV2 = getReceivableContractV2;
|
|
31
|
-
|
|
32
|
-
|
|
23
|
+
/**
|
|
24
|
+
* Retrieves the receivable token ID associated with a given reference ID.
|
|
25
|
+
*
|
|
26
|
+
* @param referenceId - The reference ID of the receivable.
|
|
27
|
+
* @param creator - The creator of the receivable.
|
|
28
|
+
* @param poolName - The name of the pool.
|
|
29
|
+
* @param signer - The signer used for the contract interaction.
|
|
30
|
+
* @returns A promise that resolves to the receivable token ID.
|
|
31
|
+
*/
|
|
32
|
+
async function getReceivableTokenIdFromReferenceId(referenceId, creator, poolName, signer) {
|
|
33
|
+
const contract = await getReceivableContractV2(poolName, signer);
|
|
33
34
|
if (!contract) {
|
|
34
35
|
throw new Error('Could not find Receivable contract');
|
|
35
36
|
}
|
|
@@ -37,8 +38,8 @@ async function getReceivableTokenIdFromReferenceId(referenceId, creator, poolNam
|
|
|
37
38
|
return contract.referenceIdHashToTokenId(referenceIdHash);
|
|
38
39
|
}
|
|
39
40
|
exports.getReceivableTokenIdFromReferenceId = getReceivableTokenIdFromReferenceId;
|
|
40
|
-
async function getReceivableReferenceAlreadyExists(referenceId, signerAddress, poolName,
|
|
41
|
-
const tokenId = await getReceivableTokenIdFromReferenceId(referenceId, signerAddress, poolName,
|
|
41
|
+
async function getReceivableReferenceAlreadyExists(referenceId, signerAddress, poolName, signer) {
|
|
42
|
+
const tokenId = await getReceivableTokenIdFromReferenceId(referenceId, signerAddress, poolName, signer);
|
|
42
43
|
return !tokenId.isZero();
|
|
43
44
|
}
|
|
44
45
|
exports.getReceivableReferenceAlreadyExists = getReceivableReferenceAlreadyExists;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReceivableContractHelper.js","sourceRoot":"","sources":["../../../../src/helpers/v2/ReceivableContractHelper.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"ReceivableContractHelper.js","sourceRoot":"","sources":["../../../../src/helpers/v2/ReceivableContractHelper.ts"],"names":[],"mappings":";;;AACA,iDAM6B;AAO7B,uCAAyC;AAEzC;;;;;;;GAOG;AACI,KAAK,UAAU,uBAAuB,CAC3C,QAAmB,EACnB,MAAqB;IAErB,MAAM,kBAAkB,GAAG,MAAM,IAAA,gCAAuB,EACtD,QAAQ,EACR,MAAM,CAAC,QAA0C,CAClD,CAAA;IAED,IAAI,CAAC,kBAAkB,EAAE;QACvB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;KACtD;IACD,MAAM,eAAe,GAAG,MAAM,kBAAkB,CAAC,eAAe,EAAE,CAAA;IAElE,OAAO,IAAA,mBAAW,EAChB,eAAe,EACf,0BAAiB,EACjB,MAAM,CACP,CAAA;AACH,CAAC;AAnBD,0DAmBC;AAED;;;;;;;;GAQG;AACI,KAAK,UAAU,mCAAmC,CACvD,WAAmB,EACnB,OAAe,EACf,QAAmB,EACnB,MAAqB;IAErB,MAAM,QAAQ,GAAG,MAAM,uBAAuB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IAChE,IAAI,CAAC,QAAQ,EAAE;QACb,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;KACtD;IAED,MAAM,eAAe,GAAG,MAAM,QAAQ,CAAC,kBAAkB,CACvD,WAAW,EACX,OAAO,CACR,CAAA;IAED,OAAO,QAAQ,CAAC,wBAAwB,CAAC,eAAe,CAAC,CAAA;AAC3D,CAAC;AAjBD,kFAiBC;AAEM,KAAK,UAAU,mCAAmC,CACvD,WAAmB,EACnB,aAAqB,EACrB,QAAmB,EACnB,MAAqB;IAErB,MAAM,OAAO,GAAG,MAAM,mCAAmC,CACvD,WAAW,EACX,aAAa,EACb,QAAQ,EACR,MAAM,CACP,CAAA;IAED,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAA;AAC1B,CAAC;AAdD,kFAcC;AAEM,KAAK,UAAU,iCAAiC,CACrD,MAAqB,EACrB,QAAmB,EACnB,YAA0B,EAC1B,UAAqB,EAAE;IAEvB,MAAM,kBAAkB,GAAG,MAAM,uBAAuB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IAE1E,IAAI,CAAC,kBAAkB,EAAE;QACvB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;KACtD;IAED,mEAAmE;IACnE,MAAM,QAAQ,GAAG,MAAM,CAAC,QAA0C,CAAA;IAClE,MAAM,kBAAkB,GAAG,MAAM,IAAA,gCAAuB,EAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IAE5E,IAAI,CAAC,kBAAkB,EAAE;QACvB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAA;KACvD;IAED,MAAM,eAAe,GAAG,MAAM,kBAAkB,CAAC,WAAW,CAAC,YAAY,CAAC,CAAA;IAC1E,IACE,kBAAkB,CAAC,OAAO;QAC1B,eAAe,KAAK,kBAAkB,CAAC,OAAO,EAC9C;QACA,OAAO,IAAI,CAAA;KACZ;IAED,OAAO,kBAAkB,CAAC,OAAO,CAC/B,kBAAkB,CAAC,OAAO,EAC1B,YAAY,EACZ,OAAO,CACR,CAAA;AACH,CAAC;AAjCD,8EAiCC"}
|
|
@@ -76,9 +76,12 @@ class HumaReceivableFactory {
|
|
|
76
76
|
return balance.toNumber();
|
|
77
77
|
}
|
|
78
78
|
async throwIfReferenceIdExists(referenceId) {
|
|
79
|
+
if (referenceId === '') {
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
79
82
|
// Check whether a token already exists with this reference ID
|
|
80
83
|
const signerAddress = await tslib_1.__classPrivateFieldGet(this, _HumaReceivableFactory_humaContext, "f").signer.getAddress();
|
|
81
|
-
const receivableAlreadyExists = await (0, ReceivableContractHelper_1.getReceivableReferenceAlreadyExists)(referenceId, signerAddress, tslib_1.__classPrivateFieldGet(this, _HumaReceivableFactory_humaContext, "f").poolName, tslib_1.__classPrivateFieldGet(this, _HumaReceivableFactory_humaContext, "f").
|
|
84
|
+
const receivableAlreadyExists = await (0, ReceivableContractHelper_1.getReceivableReferenceAlreadyExists)(referenceId, signerAddress, tslib_1.__classPrivateFieldGet(this, _HumaReceivableFactory_humaContext, "f").poolName, tslib_1.__classPrivateFieldGet(this, _HumaReceivableFactory_humaContext, "f").signer);
|
|
82
85
|
if (receivableAlreadyExists) {
|
|
83
86
|
throw new Error('A token already exists with this reference ID');
|
|
84
87
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HumaReceivableFactory.js","sourceRoot":"","sources":["../../../../src/services/v2/HumaReceivableFactory.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"HumaReceivableFactory.js","sourceRoot":"","sources":["../../../../src/services/v2/HumaReceivableFactory.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,7 +20,7 @@ class HumaReceivableHandler {
|
|
|
20
20
|
}
|
|
21
21
|
gasOpts = await (0, utils_1.getDefaultGasOptions)(gasOpts, tslib_1.__classPrivateFieldGet(this, _HumaReceivableHandler_humaContext, "f").chainId);
|
|
22
22
|
const signerAddress = await tslib_1.__classPrivateFieldGet(this, _HumaReceivableHandler_humaContext, "f").signer.getAddress();
|
|
23
|
-
const tokenId = await (0, helpers_1.getReceivableTokenIdFromReferenceId)(referenceId, signerAddress, tslib_1.__classPrivateFieldGet(this, _HumaReceivableHandler_humaContext, "f").poolName, tslib_1.__classPrivateFieldGet(this, _HumaReceivableHandler_humaContext, "f").
|
|
23
|
+
const tokenId = await (0, helpers_1.getReceivableTokenIdFromReferenceId)(referenceId, signerAddress, tslib_1.__classPrivateFieldGet(this, _HumaReceivableHandler_humaContext, "f").poolName, tslib_1.__classPrivateFieldGet(this, _HumaReceivableHandler_humaContext, "f").signer);
|
|
24
24
|
if (!tokenId) {
|
|
25
25
|
throw new Error('Could not find tokenId');
|
|
26
26
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HumaReceivableHandler.js","sourceRoot":"","sources":["../../../../src/services/v2/HumaReceivableHandler.ts"],"names":[],"mappings":";;;;;AAGA,uCAAkD;AAClD,2CAGsB;AAEtB,MAAa,qBAAqB;IAGhC,YAAY,EAAE,WAAW,EAAgC;QAFzD,qDAAyB;QAGvB,IAAI,CAAC,WAAW,EAAE;YAChB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAA;SAC/C;QAED,+BAAA,IAAI,sCAAgB,WAAW,MAAA,CAAA;IACjC,CAAC;IAED,KAAK,CAAC,cAAc,CAClB,aAAwB,EACxB,cAAsB,EAAE,EACxB,UAAqB,EAAE;QAEvB,MAAM,QAAQ,GAAG,MAAM,IAAA,iCAAuB,EAC5C,+BAAA,IAAI,0CAAa,CAAC,QAAQ,EAC1B,+BAAA,IAAI,0CAAa,CAAC,MAAM,CACzB,CAAA;QACD,IAAI,CAAC,QAAQ,EAAE;YACb,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;SACtD;QAED,OAAO,GAAG,MAAM,IAAA,4BAAoB,EAAC,OAAO,EAAE,+BAAA,IAAI,0CAAa,CAAC,OAAO,CAAC,CAAA;QAExE,MAAM,aAAa,GAAG,MAAM,+BAAA,IAAI,0CAAa,CAAC,MAAM,CAAC,UAAU,EAAE,CAAA;QACjE,MAAM,OAAO,GAAG,MAAM,IAAA,6CAAmC,EACvD,WAAW,EACX,aAAa,EACb,+BAAA,IAAI,0CAAa,CAAC,QAAQ,EAC1B,+BAAA,IAAI,0CAAa,CAAC,
|
|
1
|
+
{"version":3,"file":"HumaReceivableHandler.js","sourceRoot":"","sources":["../../../../src/services/v2/HumaReceivableHandler.ts"],"names":[],"mappings":";;;;;AAGA,uCAAkD;AAClD,2CAGsB;AAEtB,MAAa,qBAAqB;IAGhC,YAAY,EAAE,WAAW,EAAgC;QAFzD,qDAAyB;QAGvB,IAAI,CAAC,WAAW,EAAE;YAChB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAA;SAC/C;QAED,+BAAA,IAAI,sCAAgB,WAAW,MAAA,CAAA;IACjC,CAAC;IAED,KAAK,CAAC,cAAc,CAClB,aAAwB,EACxB,cAAsB,EAAE,EACxB,UAAqB,EAAE;QAEvB,MAAM,QAAQ,GAAG,MAAM,IAAA,iCAAuB,EAC5C,+BAAA,IAAI,0CAAa,CAAC,QAAQ,EAC1B,+BAAA,IAAI,0CAAa,CAAC,MAAM,CACzB,CAAA;QACD,IAAI,CAAC,QAAQ,EAAE;YACb,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;SACtD;QAED,OAAO,GAAG,MAAM,IAAA,4BAAoB,EAAC,OAAO,EAAE,+BAAA,IAAI,0CAAa,CAAC,OAAO,CAAC,CAAA;QAExE,MAAM,aAAa,GAAG,MAAM,+BAAA,IAAI,0CAAa,CAAC,MAAM,CAAC,UAAU,EAAE,CAAA;QACjE,MAAM,OAAO,GAAG,MAAM,IAAA,6CAAmC,EACvD,WAAW,EACX,aAAa,EACb,+BAAA,IAAI,0CAAa,CAAC,QAAQ,EAC1B,+BAAA,IAAI,0CAAa,CAAC,MAAM,CACzB,CAAA;QAED,IAAI,CAAC,OAAO,EAAE;YACZ,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAA;SAC1C;QAED,OAAO,QAAQ,CAAC,cAAc,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,CAAC,CAAA;IACjE,CAAC;IAED,KAAK,CAAC,cAAc,CAClB,OAAqB,EACrB,UAAqB,EAAE;QAEvB,MAAM,QAAQ,GAAG,MAAM,IAAA,iCAAuB,EAC5C,+BAAA,IAAI,0CAAa,CAAC,QAAQ,EAC1B,+BAAA,IAAI,0CAAa,CAAC,MAAM,CACzB,CAAA;QACD,IAAI,CAAC,QAAQ,EAAE;YACb,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;SACtD;QAED,OAAO,GAAG,MAAM,IAAA,4BAAoB,EAAC,OAAO,EAAE,+BAAA,IAAI,0CAAa,CAAC,OAAO,CAAC,CAAA;QAExE,OAAO,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IACxC,CAAC;CACF;AAzDD,sDAyDC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { JsonRpcProvider, JsonRpcSigner } from '@ethersproject/providers';
|
|
2
2
|
import { ethers } from 'ethers';
|
|
3
|
+
export declare function getChainConfirmations(chainId: number): number;
|
|
3
4
|
export declare function isPolygonNetwork(network: number): boolean;
|
|
4
5
|
/**
|
|
5
6
|
* Get the chain ID from a signer or provider object.
|
package/dist/cjs/utils/chain.js
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getChainIdFromSignerOrProvider = exports.getChainIdFromJsonSignerOrProvider = exports.isPolygonNetwork = void 0;
|
|
4
|
-
const providers_1 = require("@ethersproject/providers");
|
|
3
|
+
exports.getChainIdFromSignerOrProvider = exports.getChainIdFromJsonSignerOrProvider = exports.isPolygonNetwork = exports.getChainConfirmations = void 0;
|
|
5
4
|
const shared_1 = require("@huma-finance/shared");
|
|
5
|
+
function getChainConfirmations(chainId) {
|
|
6
|
+
return chainId === shared_1.ChainEnum.Localhost ? 1 : 5;
|
|
7
|
+
}
|
|
8
|
+
exports.getChainConfirmations = getChainConfirmations;
|
|
6
9
|
function isPolygonNetwork(network) {
|
|
7
10
|
return network === 137 || network === 80001 || network === 80002;
|
|
8
11
|
}
|
|
@@ -13,9 +16,10 @@ exports.isPolygonNetwork = isPolygonNetwork;
|
|
|
13
16
|
* @returns {number} - The chain ID.
|
|
14
17
|
*/
|
|
15
18
|
function getChainIdFromJsonSignerOrProvider(signerOrProvider) {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
+
if ('network' in signerOrProvider) {
|
|
20
|
+
return signerOrProvider.network.chainId;
|
|
21
|
+
}
|
|
22
|
+
return signerOrProvider.provider.network.chainId;
|
|
19
23
|
}
|
|
20
24
|
exports.getChainIdFromJsonSignerOrProvider = getChainIdFromJsonSignerOrProvider;
|
|
21
25
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chain.js","sourceRoot":"","sources":["../../../src/utils/chain.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"chain.js","sourceRoot":"","sources":["../../../src/utils/chain.ts"],"names":[],"mappings":";;;AACA,iDAG6B;AAG7B,SAAgB,qBAAqB,CAAC,OAAe;IACnD,OAAO,OAAO,KAAK,kBAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAChD,CAAC;AAFD,sDAEC;AAED,SAAgB,gBAAgB,CAAC,OAAe;IAC9C,OAAO,OAAO,KAAK,GAAG,IAAI,OAAO,KAAK,KAAK,IAAI,OAAO,KAAK,KAAK,CAAA;AAClE,CAAC;AAFD,4CAEC;AAED;;;;GAIG;AACH,SAAgB,kCAAkC,CAChD,gBAAiD;IAEjD,IAAI,SAAS,IAAI,gBAAgB,EAAE;QACjC,OAAO,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAA;KACxC;IAED,OAAO,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAA;AAClD,CAAC;AARD,gFAQC;AAED;;;;GAIG;AACI,KAAK,UAAU,8BAA8B,CAClD,gBAA2D;IAE3D,OAAO,IAAA,uCAAsC,EAAC,gBAAgB,CAAC,CAAA;AACjE,CAAC;AAJD,wEAIC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { getChainIdFromSignerOrProvider, getCreditRecordV2, getPoolInfoV2, getPoolSafeContractV2, getPoolUnderlyingTokenContractV2, POOL_TYPE, RECEIVABLE_BACKED_CREDIT_LINE_V2_ABI, } from '@huma-finance/shared';
|
|
2
|
-
import { getContract } from '../../utils';
|
|
2
|
+
import { getChainConfirmations, getContract } from '../../utils';
|
|
3
3
|
import { approveERC20AllowanceIfInsufficient } from '../ERC20ContractHelper';
|
|
4
4
|
import { approveReceivableTransferIfNeeded } from './ReceivableContractHelper';
|
|
5
5
|
/**
|
|
@@ -46,12 +46,18 @@ export async function getTotalDueV2(poolName, account, provider) {
|
|
|
46
46
|
* @returns {Promise<TransactionResponse>} - A Promise of the transaction response.
|
|
47
47
|
*/
|
|
48
48
|
export async function drawdownWithReceivable(signer, poolName, receivableId, drawdownAmount, gasOpts = {}) {
|
|
49
|
-
const creditContract = await
|
|
49
|
+
const [creditContract, chainId] = await Promise.all([
|
|
50
|
+
getReceivableBackedCreditLineContractV2(poolName, signer),
|
|
51
|
+
getChainIdFromSignerOrProvider(signer),
|
|
52
|
+
]);
|
|
50
53
|
if (!creditContract) {
|
|
51
54
|
throw new Error('Could not find credit contract');
|
|
52
55
|
}
|
|
56
|
+
if (!chainId) {
|
|
57
|
+
throw new Error('Could not find chain ID');
|
|
58
|
+
}
|
|
53
59
|
const approveTx = await approveReceivableTransferIfNeeded(signer, poolName, receivableId);
|
|
54
|
-
await (approveTx === null || approveTx === void 0 ? void 0 : approveTx.wait(
|
|
60
|
+
await (approveTx === null || approveTx === void 0 ? void 0 : approveTx.wait(getChainConfirmations(chainId)));
|
|
55
61
|
return creditContract.drawdownWithReceivable(receivableId, drawdownAmount, gasOpts);
|
|
56
62
|
}
|
|
57
63
|
/**
|
|
@@ -68,20 +74,26 @@ export async function drawdownWithReceivable(signer, poolName, receivableId, dra
|
|
|
68
74
|
* @returns {Promise<TransactionResponse>} - A Promise of the transaction response.
|
|
69
75
|
*/
|
|
70
76
|
export async function makePaymentWithReceivable(signer, poolName, receivableId, paymentAmount, principalOnly, gasOpts = {}) {
|
|
71
|
-
const creditContract = await
|
|
77
|
+
const [creditContract, poolSafeContract, underlyingToken, chainId] = await Promise.all([
|
|
78
|
+
getReceivableBackedCreditLineContractV2(poolName, signer),
|
|
79
|
+
getPoolSafeContractV2(poolName, signer.provider),
|
|
80
|
+
getPoolUnderlyingTokenContractV2(poolName, signer.provider),
|
|
81
|
+
getChainIdFromSignerOrProvider(signer),
|
|
82
|
+
]);
|
|
72
83
|
if (!creditContract) {
|
|
73
84
|
throw new Error('Could not find credit contract');
|
|
74
85
|
}
|
|
75
|
-
const poolSafeContract = await getPoolSafeContractV2(poolName, signer.provider);
|
|
76
86
|
if (!poolSafeContract) {
|
|
77
87
|
throw new Error('Could not find pool safe contract');
|
|
78
88
|
}
|
|
79
|
-
const underlyingToken = await getPoolUnderlyingTokenContractV2(poolName, signer.provider);
|
|
80
89
|
if (!underlyingToken) {
|
|
81
90
|
throw new Error('Could not find underlying token contract');
|
|
82
91
|
}
|
|
92
|
+
if (!chainId) {
|
|
93
|
+
throw new Error('Could not find chain ID');
|
|
94
|
+
}
|
|
83
95
|
const approveERC20Tx = await approveERC20AllowanceIfInsufficient(signer, underlyingToken.address, poolSafeContract.address, paymentAmount, gasOpts);
|
|
84
|
-
await (approveERC20Tx === null || approveERC20Tx === void 0 ? void 0 : approveERC20Tx.wait(
|
|
96
|
+
await (approveERC20Tx === null || approveERC20Tx === void 0 ? void 0 : approveERC20Tx.wait(getChainConfirmations(chainId)));
|
|
85
97
|
let paymentTx;
|
|
86
98
|
if (principalOnly) {
|
|
87
99
|
paymentTx = await creditContract.makePrincipalPaymentWithReceivable(receivableId, paymentAmount, gasOpts);
|
|
@@ -106,22 +118,32 @@ export async function makePaymentWithReceivable(signer, poolName, receivableId,
|
|
|
106
118
|
* @returns {Promise<TransactionResponse>} - A Promise of the transaction response.
|
|
107
119
|
*/
|
|
108
120
|
export async function makePrincipalPaymentAndDrawdownWithReceivable(signer, poolName, paymentReceivableId, paymentAmount, drawdownReceivableId, drawdownAmount, gasOpts = {}) {
|
|
109
|
-
const creditContract = await
|
|
121
|
+
const [creditContract, underlyingToken, poolSafeContract, chainId] = await Promise.all([
|
|
122
|
+
getReceivableBackedCreditLineContractV2(poolName, signer),
|
|
123
|
+
getPoolUnderlyingTokenContractV2(poolName, signer.provider),
|
|
124
|
+
getPoolSafeContractV2(poolName, signer.provider),
|
|
125
|
+
getChainIdFromSignerOrProvider(signer),
|
|
126
|
+
]);
|
|
110
127
|
if (!creditContract) {
|
|
111
128
|
throw new Error('Could not find credit contract');
|
|
112
129
|
}
|
|
113
|
-
|
|
114
|
-
|
|
130
|
+
if (!underlyingToken) {
|
|
131
|
+
throw new Error('Could not find underlying token contract');
|
|
132
|
+
}
|
|
115
133
|
if (!poolSafeContract) {
|
|
116
134
|
throw new Error('Could not find pool safe contract');
|
|
117
135
|
}
|
|
118
|
-
if (!
|
|
119
|
-
throw new Error('Could not find
|
|
136
|
+
if (!chainId) {
|
|
137
|
+
throw new Error('Could not find chain ID');
|
|
120
138
|
}
|
|
121
139
|
const approveERC20Tx = await approveERC20AllowanceIfInsufficient(signer, underlyingToken.address, poolSafeContract.address, paymentAmount, gasOpts);
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
140
|
+
if (approveERC20Tx) {
|
|
141
|
+
await approveERC20Tx.wait(getChainConfirmations(chainId));
|
|
142
|
+
}
|
|
143
|
+
const approveTx = await approveReceivableTransferIfNeeded(signer, poolName, drawdownReceivableId, gasOpts);
|
|
144
|
+
if (approveTx) {
|
|
145
|
+
await (approveTx === null || approveTx === void 0 ? void 0 : approveTx.wait(getChainConfirmations(chainId)));
|
|
146
|
+
}
|
|
125
147
|
return creditContract.makePrincipalPaymentAndDrawdownWithReceivable(paymentReceivableId, paymentAmount, drawdownReceivableId, drawdownAmount, gasOpts);
|
|
126
148
|
}
|
|
127
149
|
//# sourceMappingURL=ReceivableBackedCreditLineContractHelper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReceivableBackedCreditLineContractHelper.js","sourceRoot":"","sources":["../../../src/helpers/v2/ReceivableBackedCreditLineContractHelper.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,8BAA8B,EAC9B,iBAAiB,EACjB,aAAa,EACb,qBAAqB,EACrB,gCAAgC,EAEhC,SAAS,EACT,oCAAoC,GACrC,MAAM,sBAAsB,CAAA;AAG7B,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"ReceivableBackedCreditLineContractHelper.js","sourceRoot":"","sources":["../../../src/helpers/v2/ReceivableBackedCreditLineContractHelper.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,24 @@
|
|
|
1
1
|
import { BigNumber, BigNumberish, Overrides, ethers } from 'ethers';
|
|
2
2
|
import { POOL_NAME, v2Contracts } from '@huma-finance/shared';
|
|
3
|
-
import {
|
|
3
|
+
import { TransactionResponse } from '@ethersproject/providers';
|
|
4
4
|
/**
|
|
5
5
|
* Returns an ethers contract instance for the V2 Receivable contract
|
|
6
6
|
* associated with the given pool name on the current chain.
|
|
7
7
|
*
|
|
8
|
-
* @param {
|
|
9
|
-
* @param {
|
|
8
|
+
* @param {POOL_NAME} poolName The name of the pool.
|
|
9
|
+
* @param {ethers.Signer} signer The signer instance to use for the contract.
|
|
10
10
|
* @returns {Contract | null} A contract instance for the Receivable contract or null if it could not be found.
|
|
11
11
|
*/
|
|
12
|
-
export declare function getReceivableContractV2(poolName: POOL_NAME,
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
export declare function getReceivableContractV2(poolName: POOL_NAME, signer: ethers.Signer): Promise<v2Contracts.Receivable | null>;
|
|
13
|
+
/**
|
|
14
|
+
* Retrieves the receivable token ID associated with a given reference ID.
|
|
15
|
+
*
|
|
16
|
+
* @param referenceId - The reference ID of the receivable.
|
|
17
|
+
* @param creator - The creator of the receivable.
|
|
18
|
+
* @param poolName - The name of the pool.
|
|
19
|
+
* @param signer - The signer used for the contract interaction.
|
|
20
|
+
* @returns A promise that resolves to the receivable token ID.
|
|
21
|
+
*/
|
|
22
|
+
export declare function getReceivableTokenIdFromReferenceId(referenceId: string, creator: string, poolName: POOL_NAME, signer: ethers.Signer): Promise<BigNumber>;
|
|
23
|
+
export declare function getReceivableReferenceAlreadyExists(referenceId: string, signerAddress: string, poolName: POOL_NAME, signer: ethers.Signer): Promise<boolean>;
|
|
15
24
|
export declare function approveReceivableTransferIfNeeded(signer: ethers.Signer, poolName: POOL_NAME, receivableId: BigNumberish, gasOpts?: Overrides): Promise<TransactionResponse | null>;
|
|
@@ -1,39 +1,40 @@
|
|
|
1
|
-
import { ethers } from 'ethers';
|
|
2
1
|
import { RECEIVABLE_V2_ABI, getPoolConfigContractV2, getPoolCreditContractV2, } from '@huma-finance/shared';
|
|
3
2
|
import { getContract } from '../../utils';
|
|
4
3
|
/**
|
|
5
4
|
* Returns an ethers contract instance for the V2 Receivable contract
|
|
6
5
|
* associated with the given pool name on the current chain.
|
|
7
6
|
*
|
|
8
|
-
* @param {
|
|
9
|
-
* @param {
|
|
7
|
+
* @param {POOL_NAME} poolName The name of the pool.
|
|
8
|
+
* @param {ethers.Signer} signer The signer instance to use for the contract.
|
|
10
9
|
* @returns {Contract | null} A contract instance for the Receivable contract or null if it could not be found.
|
|
11
10
|
*/
|
|
12
|
-
export async function getReceivableContractV2(poolName,
|
|
13
|
-
|
|
14
|
-
if (signerOrProvider instanceof ethers.Signer) {
|
|
15
|
-
provider = signerOrProvider.provider;
|
|
16
|
-
}
|
|
17
|
-
else {
|
|
18
|
-
provider = signerOrProvider;
|
|
19
|
-
}
|
|
20
|
-
const poolConfigContract = await getPoolConfigContractV2(poolName, provider);
|
|
11
|
+
export async function getReceivableContractV2(poolName, signer) {
|
|
12
|
+
const poolConfigContract = await getPoolConfigContractV2(poolName, signer.provider);
|
|
21
13
|
if (!poolConfigContract) {
|
|
22
14
|
throw new Error('Could not find PoolConfig contract');
|
|
23
15
|
}
|
|
24
16
|
const receivableAsset = await poolConfigContract.receivableAsset();
|
|
25
|
-
return getContract(receivableAsset, RECEIVABLE_V2_ABI,
|
|
17
|
+
return getContract(receivableAsset, RECEIVABLE_V2_ABI, signer);
|
|
26
18
|
}
|
|
27
|
-
|
|
28
|
-
|
|
19
|
+
/**
|
|
20
|
+
* Retrieves the receivable token ID associated with a given reference ID.
|
|
21
|
+
*
|
|
22
|
+
* @param referenceId - The reference ID of the receivable.
|
|
23
|
+
* @param creator - The creator of the receivable.
|
|
24
|
+
* @param poolName - The name of the pool.
|
|
25
|
+
* @param signer - The signer used for the contract interaction.
|
|
26
|
+
* @returns A promise that resolves to the receivable token ID.
|
|
27
|
+
*/
|
|
28
|
+
export async function getReceivableTokenIdFromReferenceId(referenceId, creator, poolName, signer) {
|
|
29
|
+
const contract = await getReceivableContractV2(poolName, signer);
|
|
29
30
|
if (!contract) {
|
|
30
31
|
throw new Error('Could not find Receivable contract');
|
|
31
32
|
}
|
|
32
33
|
const referenceIdHash = await contract.getReferenceIdHash(referenceId, creator);
|
|
33
34
|
return contract.referenceIdHashToTokenId(referenceIdHash);
|
|
34
35
|
}
|
|
35
|
-
export async function getReceivableReferenceAlreadyExists(referenceId, signerAddress, poolName,
|
|
36
|
-
const tokenId = await getReceivableTokenIdFromReferenceId(referenceId, signerAddress, poolName,
|
|
36
|
+
export async function getReceivableReferenceAlreadyExists(referenceId, signerAddress, poolName, signer) {
|
|
37
|
+
const tokenId = await getReceivableTokenIdFromReferenceId(referenceId, signerAddress, poolName, signer);
|
|
37
38
|
return !tokenId.isZero();
|
|
38
39
|
}
|
|
39
40
|
export async function approveReceivableTransferIfNeeded(signer, poolName, receivableId, gasOpts = {}) {
|