@huma-finance/sdk 0.0.48-beta.286 → 0.0.48-beta.290

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.
@@ -4,6 +4,7 @@ exports.makePrincipalPaymentAndDrawdownWithReceivable = exports.makePaymentWithR
4
4
  const shared_1 = require("@huma-finance/shared");
5
5
  const utils_1 = require("../../utils");
6
6
  const ERC20ContractHelper_1 = require("../ERC20ContractHelper");
7
+ const ReceivableContractHelper_1 = require("./ReceivableContractHelper");
7
8
  /**
8
9
  * Returns an ethers contract instance for the V2 Receivable contract
9
10
  * associated with the given pool name on the current chain.
@@ -38,6 +39,8 @@ async function drawdownWithReceivable(signer, poolName, receivableId, drawdownAm
38
39
  if (!creditContract) {
39
40
  throw new Error('Could not find credit contract');
40
41
  }
42
+ const approveTx = await (0, ReceivableContractHelper_1.approveReceivableTransferIfNeeded)(signer, poolName, receivableId);
43
+ await (approveTx === null || approveTx === void 0 ? void 0 : approveTx.wait(5));
41
44
  return creditContract.drawdownWithReceivable(await signer.getAddress(), receivableId, drawdownAmount, gasOpts);
42
45
  }
43
46
  exports.drawdownWithReceivable = drawdownWithReceivable;
@@ -59,10 +62,16 @@ async function makePaymentWithReceivable(signer, poolName, receivableId, payment
59
62
  if (!creditContract) {
60
63
  throw new Error('Could not find credit contract');
61
64
  }
65
+ const poolSafeContract = await (0, shared_1.getPoolSafeContractV2)(poolName, signer.provider);
66
+ if (!poolSafeContract) {
67
+ throw new Error('Could not find pool safe contract');
68
+ }
62
69
  const underlyingToken = await (0, shared_1.getPoolUnderlyingTokenContractV2)(poolName, signer.provider);
63
- if (underlyingToken) {
64
- await (0, ERC20ContractHelper_1.approveERC20AllowanceIfInsufficient)(signer, underlyingToken.address, creditContract.address, paymentAmount, gasOpts);
70
+ if (!underlyingToken) {
71
+ throw new Error('Could not find underlying token contract');
65
72
  }
73
+ const approveERC20Tx = await (0, ERC20ContractHelper_1.approveERC20AllowanceIfInsufficient)(signer, underlyingToken.address, poolSafeContract.address, paymentAmount, gasOpts);
74
+ await (approveERC20Tx === null || approveERC20Tx === void 0 ? void 0 : approveERC20Tx.wait(5));
66
75
  let paymentTx;
67
76
  if (principalOnly) {
68
77
  paymentTx = await creditContract.makePrincipalPaymentWithReceivable(await signer.getAddress(), receivableId, paymentAmount, gasOpts);
@@ -93,9 +102,17 @@ async function makePrincipalPaymentAndDrawdownWithReceivable(signer, poolName, p
93
102
  throw new Error('Could not find credit contract');
94
103
  }
95
104
  const underlyingToken = await (0, shared_1.getPoolUnderlyingTokenContractV2)(poolName, signer.provider);
96
- if (underlyingToken) {
97
- await (0, ERC20ContractHelper_1.approveERC20AllowanceIfInsufficient)(signer, underlyingToken.address, creditContract.address, paymentAmount, gasOpts);
105
+ const poolSafeContract = await (0, shared_1.getPoolSafeContractV2)(poolName, signer.provider);
106
+ if (!poolSafeContract) {
107
+ throw new Error('Could not find pool safe contract');
108
+ }
109
+ if (!underlyingToken) {
110
+ throw new Error('Could not find underlying token contract');
98
111
  }
112
+ const approveERC20Tx = await (0, ERC20ContractHelper_1.approveERC20AllowanceIfInsufficient)(signer, underlyingToken.address, poolSafeContract.address, paymentAmount, gasOpts);
113
+ await (approveERC20Tx === null || approveERC20Tx === void 0 ? void 0 : approveERC20Tx.wait(5));
114
+ const approveTx = await (0, ReceivableContractHelper_1.approveReceivableTransferIfNeeded)(signer, poolName, drawdownReceivableId);
115
+ await (approveTx === null || approveTx === void 0 ? void 0 : approveTx.wait(5));
99
116
  return creditContract.makePrincipalPaymentAndDrawdownWithReceivable(await signer.getAddress(), paymentReceivableId, paymentAmount, drawdownReceivableId, drawdownAmount, gasOpts);
100
117
  }
101
118
  exports.makePrincipalPaymentAndDrawdownWithReceivable = makePrincipalPaymentAndDrawdownWithReceivable;
@@ -1 +1 @@
1
- {"version":3,"file":"ReceivableBackedCreditLineContractHelper.js","sourceRoot":"","sources":["../../../../src/helpers/v2/ReceivableBackedCreditLineContractHelper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ReceivableBackedCreditLineContractHelper.js","sourceRoot":"","sources":["../../../../src/helpers/v2/ReceivableBackedCreditLineContractHelper.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { BigNumber, ethers } from 'ethers';
1
+ import { BigNumber, BigNumberish, Overrides, ethers } from 'ethers';
2
2
  import { POOL_NAME, v2Contracts } from '@huma-finance/shared';
3
- import { JsonRpcProvider, Web3Provider } from '@ethersproject/providers';
3
+ import { JsonRpcProvider, TransactionResponse, Web3Provider } 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.
@@ -12,3 +12,4 @@ import { JsonRpcProvider, Web3Provider } from '@ethersproject/providers';
12
12
  export declare function getReceivableContractV2(poolName: POOL_NAME, signerOrProvider: JsonRpcProvider | Web3Provider | ethers.Signer): Promise<v2Contracts.Receivable | null>;
13
13
  export declare function getReceivableTokenIdFromReferenceId(referenceId: string, creator: string, poolName: POOL_NAME, provider: JsonRpcProvider | Web3Provider): Promise<BigNumber>;
14
14
  export declare function getReceivableReferenceAlreadyExists(referenceId: string, signerAddress: string, poolName: POOL_NAME, provider: JsonRpcProvider | Web3Provider): Promise<boolean>;
15
+ export declare function approveReceivableTransferIfNeeded(signer: ethers.Signer, poolName: POOL_NAME, receivableId: BigNumberish, gasOpts?: Overrides): Promise<TransactionResponse | null>;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getReceivableReferenceAlreadyExists = exports.getReceivableTokenIdFromReferenceId = exports.getReceivableContractV2 = void 0;
3
+ exports.approveReceivableTransferIfNeeded = exports.getReceivableReferenceAlreadyExists = exports.getReceivableTokenIdFromReferenceId = exports.getReceivableContractV2 = void 0;
4
4
  const ethers_1 = require("ethers");
5
5
  const shared_1 = require("@huma-finance/shared");
6
6
  const utils_1 = require("../../utils");
@@ -42,4 +42,23 @@ async function getReceivableReferenceAlreadyExists(referenceId, signerAddress, p
42
42
  return !tokenId.isZero();
43
43
  }
44
44
  exports.getReceivableReferenceAlreadyExists = getReceivableReferenceAlreadyExists;
45
+ async function approveReceivableTransferIfNeeded(signer, poolName, receivableId, gasOpts = {}) {
46
+ const receivableContract = await getReceivableContractV2(poolName, signer);
47
+ if (!receivableContract) {
48
+ throw new Error('Could not find Receivable contract');
49
+ }
50
+ // Check if the pool is already approved to transfer the receivable
51
+ const provider = signer.provider;
52
+ const poolCreditContract = await (0, shared_1.getPoolCreditContractV2)(poolName, provider);
53
+ if (!poolCreditContract) {
54
+ throw new Error('Could not find pool credit contract');
55
+ }
56
+ const approvedAddress = await receivableContract.getApproved(receivableId);
57
+ if (poolCreditContract.address &&
58
+ approvedAddress === poolCreditContract.address) {
59
+ return null;
60
+ }
61
+ return receivableContract.approve(poolCreditContract.address, receivableId, gasOpts);
62
+ }
63
+ exports.approveReceivableTransferIfNeeded = approveReceivableTransferIfNeeded;
45
64
  //# sourceMappingURL=ReceivableContractHelper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ReceivableContractHelper.js","sourceRoot":"","sources":["../../../../src/helpers/v2/ReceivableContractHelper.ts"],"names":[],"mappings":";;;AAAA,mCAA0C;AAC1C,iDAK6B;AAG7B,uCAAyC;AAEzC;;;;;;;GAOG;AACI,KAAK,UAAU,uBAAuB,CAC3C,QAAmB,EACnB,gBAAgE;IAEhE,IAAI,QAAQ,CAAA;IACZ,IAAI,gBAAgB,YAAY,eAAM,CAAC,MAAM,EAAE;QAC7C,QAAQ,GAAG,gBAAgB,CAAC,QAA0C,CAAA;KACvE;SAAM;QACL,QAAQ,GAAG,gBAAgB,CAAA;KAC5B;IAED,MAAM,kBAAkB,GAAG,MAAM,IAAA,gCAAuB,EAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IAE5E,IAAI,CAAC,kBAAkB,EAAE;QACvB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;KACtD;IAED,MAAM,eAAe,GAAG,MAAM,kBAAkB,CAAC,eAAe,EAAE,CAAA;IAElE,OAAO,IAAA,mBAAW,EAChB,eAAe,EACf,0BAAiB,EACjB,gBAAgB,CACjB,CAAA;AACH,CAAC;AAxBD,0DAwBC;AAEM,KAAK,UAAU,mCAAmC,CACvD,WAAmB,EACnB,OAAe,EACf,QAAmB,EACnB,QAAwC;IAExC,MAAM,QAAQ,GAAG,MAAM,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IAClE,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,QAAwC;IAExC,MAAM,OAAO,GAAG,MAAM,mCAAmC,CACvD,WAAW,EACX,aAAa,EACb,QAAQ,EACR,QAAQ,CACT,CAAA;IAED,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAA;AAC1B,CAAC;AAdD,kFAcC"}
1
+ {"version":3,"file":"ReceivableContractHelper.js","sourceRoot":"","sources":["../../../../src/helpers/v2/ReceivableContractHelper.ts"],"names":[],"mappings":";;;AAAA,mCAAmE;AACnE,iDAM6B;AAO7B,uCAAyC;AAEzC;;;;;;;GAOG;AACI,KAAK,UAAU,uBAAuB,CAC3C,QAAmB,EACnB,gBAAgE;IAEhE,IAAI,QAAQ,CAAA;IACZ,IAAI,gBAAgB,YAAY,eAAM,CAAC,MAAM,EAAE;QAC7C,QAAQ,GAAG,gBAAgB,CAAC,QAA0C,CAAA;KACvE;SAAM;QACL,QAAQ,GAAG,gBAAgB,CAAA;KAC5B;IAED,MAAM,kBAAkB,GAAG,MAAM,IAAA,gCAAuB,EAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IAE5E,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,gBAAgB,CACjB,CAAA;AACH,CAAC;AAvBD,0DAuBC;AAEM,KAAK,UAAU,mCAAmC,CACvD,WAAmB,EACnB,OAAe,EACf,QAAmB,EACnB,QAAwC;IAExC,MAAM,QAAQ,GAAG,MAAM,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IAClE,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,QAAwC;IAExC,MAAM,OAAO,GAAG,MAAM,mCAAmC,CACvD,WAAW,EACX,aAAa,EACb,QAAQ,EACR,QAAQ,CACT,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"}
@@ -14,7 +14,7 @@ class HumaReceivableHandler {
14
14
  tslib_1.__classPrivateFieldSet(this, _HumaReceivableHandler_humaContext, humaContext, "f");
15
15
  }
16
16
  async declarePayment(paymentAmount, referenceId = '', gasOpts = {}) {
17
- const contract = await (0, helpers_1.getReceivableContractV2)(tslib_1.__classPrivateFieldGet(this, _HumaReceivableHandler_humaContext, "f").poolName, tslib_1.__classPrivateFieldGet(this, _HumaReceivableHandler_humaContext, "f").provider);
17
+ const contract = await (0, helpers_1.getReceivableContractV2)(tslib_1.__classPrivateFieldGet(this, _HumaReceivableHandler_humaContext, "f").poolName, tslib_1.__classPrivateFieldGet(this, _HumaReceivableHandler_humaContext, "f").signer);
18
18
  if (!contract) {
19
19
  throw new Error('Could not find Receivable contract');
20
20
  }
@@ -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,QAAQ,CAC3B,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,QAAQ,CAC3B,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;CACF;AAxCD,sDAwCC"}
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,QAAQ,CAC3B,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;CACF;AAxCD,sDAwCC"}
@@ -1,6 +1,7 @@
1
- import { getChainIdFromSignerOrProvider, getPoolInfoV2, getPoolUnderlyingTokenContractV2, POOL_TYPE, RECEIVABLE_BACKED_CREDIT_LINE_V2_ABI, } from '@huma-finance/shared';
1
+ import { getChainIdFromSignerOrProvider, getPoolInfoV2, getPoolSafeContractV2, getPoolUnderlyingTokenContractV2, POOL_TYPE, RECEIVABLE_BACKED_CREDIT_LINE_V2_ABI, } from '@huma-finance/shared';
2
2
  import { getContract } from '../../utils';
3
3
  import { approveERC20AllowanceIfInsufficient } from '../ERC20ContractHelper';
4
+ import { approveReceivableTransferIfNeeded } from './ReceivableContractHelper';
4
5
  /**
5
6
  * Returns an ethers contract instance for the V2 Receivable contract
6
7
  * associated with the given pool name on the current chain.
@@ -34,6 +35,8 @@ export async function drawdownWithReceivable(signer, poolName, receivableId, dra
34
35
  if (!creditContract) {
35
36
  throw new Error('Could not find credit contract');
36
37
  }
38
+ const approveTx = await approveReceivableTransferIfNeeded(signer, poolName, receivableId);
39
+ await (approveTx === null || approveTx === void 0 ? void 0 : approveTx.wait(5));
37
40
  return creditContract.drawdownWithReceivable(await signer.getAddress(), receivableId, drawdownAmount, gasOpts);
38
41
  }
39
42
  /**
@@ -54,10 +57,16 @@ export async function makePaymentWithReceivable(signer, poolName, receivableId,
54
57
  if (!creditContract) {
55
58
  throw new Error('Could not find credit contract');
56
59
  }
60
+ const poolSafeContract = await getPoolSafeContractV2(poolName, signer.provider);
61
+ if (!poolSafeContract) {
62
+ throw new Error('Could not find pool safe contract');
63
+ }
57
64
  const underlyingToken = await getPoolUnderlyingTokenContractV2(poolName, signer.provider);
58
- if (underlyingToken) {
59
- await approveERC20AllowanceIfInsufficient(signer, underlyingToken.address, creditContract.address, paymentAmount, gasOpts);
65
+ if (!underlyingToken) {
66
+ throw new Error('Could not find underlying token contract');
60
67
  }
68
+ const approveERC20Tx = await approveERC20AllowanceIfInsufficient(signer, underlyingToken.address, poolSafeContract.address, paymentAmount, gasOpts);
69
+ await (approveERC20Tx === null || approveERC20Tx === void 0 ? void 0 : approveERC20Tx.wait(5));
61
70
  let paymentTx;
62
71
  if (principalOnly) {
63
72
  paymentTx = await creditContract.makePrincipalPaymentWithReceivable(await signer.getAddress(), receivableId, paymentAmount, gasOpts);
@@ -87,9 +96,17 @@ export async function makePrincipalPaymentAndDrawdownWithReceivable(signer, pool
87
96
  throw new Error('Could not find credit contract');
88
97
  }
89
98
  const underlyingToken = await getPoolUnderlyingTokenContractV2(poolName, signer.provider);
90
- if (underlyingToken) {
91
- await approveERC20AllowanceIfInsufficient(signer, underlyingToken.address, creditContract.address, paymentAmount, gasOpts);
99
+ const poolSafeContract = await getPoolSafeContractV2(poolName, signer.provider);
100
+ if (!poolSafeContract) {
101
+ throw new Error('Could not find pool safe contract');
102
+ }
103
+ if (!underlyingToken) {
104
+ throw new Error('Could not find underlying token contract');
92
105
  }
106
+ const approveERC20Tx = await approveERC20AllowanceIfInsufficient(signer, underlyingToken.address, poolSafeContract.address, paymentAmount, gasOpts);
107
+ await (approveERC20Tx === null || approveERC20Tx === void 0 ? void 0 : approveERC20Tx.wait(5));
108
+ const approveTx = await approveReceivableTransferIfNeeded(signer, poolName, drawdownReceivableId);
109
+ await (approveTx === null || approveTx === void 0 ? void 0 : approveTx.wait(5));
93
110
  return creditContract.makePrincipalPaymentAndDrawdownWithReceivable(await signer.getAddress(), paymentReceivableId, paymentAmount, drawdownReceivableId, drawdownAmount, gasOpts);
94
111
  }
95
112
  //# sourceMappingURL=ReceivableBackedCreditLineContractHelper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ReceivableBackedCreditLineContractHelper.js","sourceRoot":"","sources":["../../../src/helpers/v2/ReceivableBackedCreditLineContractHelper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ReceivableBackedCreditLineContractHelper.js","sourceRoot":"","sources":["../../../src/helpers/v2/ReceivableBackedCreditLineContractHelper.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { BigNumber, ethers } from 'ethers';
1
+ import { BigNumber, BigNumberish, Overrides, ethers } from 'ethers';
2
2
  import { POOL_NAME, v2Contracts } from '@huma-finance/shared';
3
- import { JsonRpcProvider, Web3Provider } from '@ethersproject/providers';
3
+ import { JsonRpcProvider, TransactionResponse, Web3Provider } 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.
@@ -12,3 +12,4 @@ import { JsonRpcProvider, Web3Provider } from '@ethersproject/providers';
12
12
  export declare function getReceivableContractV2(poolName: POOL_NAME, signerOrProvider: JsonRpcProvider | Web3Provider | ethers.Signer): Promise<v2Contracts.Receivable | null>;
13
13
  export declare function getReceivableTokenIdFromReferenceId(referenceId: string, creator: string, poolName: POOL_NAME, provider: JsonRpcProvider | Web3Provider): Promise<BigNumber>;
14
14
  export declare function getReceivableReferenceAlreadyExists(referenceId: string, signerAddress: string, poolName: POOL_NAME, provider: JsonRpcProvider | Web3Provider): Promise<boolean>;
15
+ export declare function approveReceivableTransferIfNeeded(signer: ethers.Signer, poolName: POOL_NAME, receivableId: BigNumberish, gasOpts?: Overrides): Promise<TransactionResponse | null>;
@@ -1,5 +1,5 @@
1
1
  import { ethers } from 'ethers';
2
- import { RECEIVABLE_V2_ABI, getPoolConfigContractV2, } from '@huma-finance/shared';
2
+ import { RECEIVABLE_V2_ABI, getPoolConfigContractV2, getPoolCreditContractV2, } from '@huma-finance/shared';
3
3
  import { getContract } from '../../utils';
4
4
  /**
5
5
  * Returns an ethers contract instance for the V2 Receivable contract
@@ -36,4 +36,22 @@ export async function getReceivableReferenceAlreadyExists(referenceId, signerAdd
36
36
  const tokenId = await getReceivableTokenIdFromReferenceId(referenceId, signerAddress, poolName, provider);
37
37
  return !tokenId.isZero();
38
38
  }
39
+ export async function approveReceivableTransferIfNeeded(signer, poolName, receivableId, gasOpts = {}) {
40
+ const receivableContract = await getReceivableContractV2(poolName, signer);
41
+ if (!receivableContract) {
42
+ throw new Error('Could not find Receivable contract');
43
+ }
44
+ // Check if the pool is already approved to transfer the receivable
45
+ const provider = signer.provider;
46
+ const poolCreditContract = await getPoolCreditContractV2(poolName, provider);
47
+ if (!poolCreditContract) {
48
+ throw new Error('Could not find pool credit contract');
49
+ }
50
+ const approvedAddress = await receivableContract.getApproved(receivableId);
51
+ if (poolCreditContract.address &&
52
+ approvedAddress === poolCreditContract.address) {
53
+ return null;
54
+ }
55
+ return receivableContract.approve(poolCreditContract.address, receivableId, gasOpts);
56
+ }
39
57
  //# sourceMappingURL=ReceivableContractHelper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ReceivableContractHelper.js","sourceRoot":"","sources":["../../../src/helpers/v2/ReceivableContractHelper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC1C,OAAO,EAGL,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,sBAAsB,CAAA;AAG7B,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAEzC;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,QAAmB,EACnB,gBAAgE;IAEhE,IAAI,QAAQ,CAAA;IACZ,IAAI,gBAAgB,YAAY,MAAM,CAAC,MAAM,EAAE;QAC7C,QAAQ,GAAG,gBAAgB,CAAC,QAA0C,CAAA;KACvE;SAAM;QACL,QAAQ,GAAG,gBAAgB,CAAA;KAC5B;IAED,MAAM,kBAAkB,GAAG,MAAM,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IAE5E,IAAI,CAAC,kBAAkB,EAAE;QACvB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;KACtD;IAED,MAAM,eAAe,GAAG,MAAM,kBAAkB,CAAC,eAAe,EAAE,CAAA;IAElE,OAAO,WAAW,CAChB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,CACjB,CAAA;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mCAAmC,CACvD,WAAmB,EACnB,OAAe,EACf,QAAmB,EACnB,QAAwC;IAExC,MAAM,QAAQ,GAAG,MAAM,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IAClE,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;AAED,MAAM,CAAC,KAAK,UAAU,mCAAmC,CACvD,WAAmB,EACnB,aAAqB,EACrB,QAAmB,EACnB,QAAwC;IAExC,MAAM,OAAO,GAAG,MAAM,mCAAmC,CACvD,WAAW,EACX,aAAa,EACb,QAAQ,EACR,QAAQ,CACT,CAAA;IAED,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAA;AAC1B,CAAC"}
1
+ {"version":3,"file":"ReceivableContractHelper.js","sourceRoot":"","sources":["../../../src/helpers/v2/ReceivableContractHelper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsC,MAAM,EAAE,MAAM,QAAQ,CAAA;AACnE,OAAO,EAGL,iBAAiB,EACjB,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,sBAAsB,CAAA;AAO7B,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAEzC;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,QAAmB,EACnB,gBAAgE;IAEhE,IAAI,QAAQ,CAAA;IACZ,IAAI,gBAAgB,YAAY,MAAM,CAAC,MAAM,EAAE;QAC7C,QAAQ,GAAG,gBAAgB,CAAC,QAA0C,CAAA;KACvE;SAAM;QACL,QAAQ,GAAG,gBAAgB,CAAA;KAC5B;IAED,MAAM,kBAAkB,GAAG,MAAM,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IAE5E,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,WAAW,CAChB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,CACjB,CAAA;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mCAAmC,CACvD,WAAmB,EACnB,OAAe,EACf,QAAmB,EACnB,QAAwC;IAExC,MAAM,QAAQ,GAAG,MAAM,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IAClE,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;AAED,MAAM,CAAC,KAAK,UAAU,mCAAmC,CACvD,WAAmB,EACnB,aAAqB,EACrB,QAAmB,EACnB,QAAwC;IAExC,MAAM,OAAO,GAAG,MAAM,mCAAmC,CACvD,WAAW,EACX,aAAa,EACb,QAAQ,EACR,QAAQ,CACT,CAAA;IAED,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAA;AAC1B,CAAC;AAED,MAAM,CAAC,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,uBAAuB,CAAC,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"}
@@ -11,7 +11,7 @@ export class HumaReceivableHandler {
11
11
  __classPrivateFieldSet(this, _HumaReceivableHandler_humaContext, humaContext, "f");
12
12
  }
13
13
  async declarePayment(paymentAmount, referenceId = '', gasOpts = {}) {
14
- const contract = await getReceivableContractV2(__classPrivateFieldGet(this, _HumaReceivableHandler_humaContext, "f").poolName, __classPrivateFieldGet(this, _HumaReceivableHandler_humaContext, "f").provider);
14
+ const contract = await getReceivableContractV2(__classPrivateFieldGet(this, _HumaReceivableHandler_humaContext, "f").poolName, __classPrivateFieldGet(this, _HumaReceivableHandler_humaContext, "f").signer);
15
15
  if (!contract) {
16
16
  throw new Error('Could not find Receivable contract');
17
17
  }
@@ -1 +1 @@
1
- {"version":3,"file":"HumaReceivableHandler.js","sourceRoot":"","sources":["../../../src/services/v2/HumaReceivableHandler.ts"],"names":[],"mappings":";;AAGA,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,EACL,uBAAuB,EACvB,mCAAmC,GACpC,MAAM,eAAe,CAAA;AAEtB,MAAM,OAAO,qBAAqB;IAGhC,YAAY,EAAE,WAAW,EAAgC;QAFzD,qDAAyB;QAGvB,IAAI,CAAC,WAAW,EAAE;YAChB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAA;SAC/C;QAED,uBAAA,IAAI,sCAAgB,WAAW,MAAA,CAAA;IACjC,CAAC;IAED,KAAK,CAAC,cAAc,CAClB,aAAwB,EACxB,cAAsB,EAAE,EACxB,UAAqB,EAAE;QAEvB,MAAM,QAAQ,GAAG,MAAM,uBAAuB,CAC5C,uBAAA,IAAI,0CAAa,CAAC,QAAQ,EAC1B,uBAAA,IAAI,0CAAa,CAAC,QAAQ,CAC3B,CAAA;QACD,IAAI,CAAC,QAAQ,EAAE;YACb,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;SACtD;QAED,OAAO,GAAG,MAAM,oBAAoB,CAAC,OAAO,EAAE,uBAAA,IAAI,0CAAa,CAAC,OAAO,CAAC,CAAA;QAExE,MAAM,aAAa,GAAG,MAAM,uBAAA,IAAI,0CAAa,CAAC,MAAM,CAAC,UAAU,EAAE,CAAA;QACjE,MAAM,OAAO,GAAG,MAAM,mCAAmC,CACvD,WAAW,EACX,aAAa,EACb,uBAAA,IAAI,0CAAa,CAAC,QAAQ,EAC1B,uBAAA,IAAI,0CAAa,CAAC,QAAQ,CAC3B,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;CACF"}
1
+ {"version":3,"file":"HumaReceivableHandler.js","sourceRoot":"","sources":["../../../src/services/v2/HumaReceivableHandler.ts"],"names":[],"mappings":";;AAGA,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,EACL,uBAAuB,EACvB,mCAAmC,GACpC,MAAM,eAAe,CAAA;AAEtB,MAAM,OAAO,qBAAqB;IAGhC,YAAY,EAAE,WAAW,EAAgC;QAFzD,qDAAyB;QAGvB,IAAI,CAAC,WAAW,EAAE;YAChB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAA;SAC/C;QAED,uBAAA,IAAI,sCAAgB,WAAW,MAAA,CAAA;IACjC,CAAC;IAED,KAAK,CAAC,cAAc,CAClB,aAAwB,EACxB,cAAsB,EAAE,EACxB,UAAqB,EAAE;QAEvB,MAAM,QAAQ,GAAG,MAAM,uBAAuB,CAC5C,uBAAA,IAAI,0CAAa,CAAC,QAAQ,EAC1B,uBAAA,IAAI,0CAAa,CAAC,MAAM,CACzB,CAAA;QACD,IAAI,CAAC,QAAQ,EAAE;YACb,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;SACtD;QAED,OAAO,GAAG,MAAM,oBAAoB,CAAC,OAAO,EAAE,uBAAA,IAAI,0CAAa,CAAC,OAAO,CAAC,CAAA;QAExE,MAAM,aAAa,GAAG,MAAM,uBAAA,IAAI,0CAAa,CAAC,MAAM,CAAC,UAAU,EAAE,CAAA;QACjE,MAAM,OAAO,GAAG,MAAM,mCAAmC,CACvD,WAAW,EACX,aAAa,EACb,uBAAA,IAAI,0CAAa,CAAC,QAAQ,EAC1B,uBAAA,IAAI,0CAAa,CAAC,QAAQ,CAC3B,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;CACF"}