@huma-finance/shared 0.0.72-beta.901 → 0.0.72-beta.905

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.
@@ -1,5 +1,21 @@
1
1
  import { BN } from '@coral-xyz/anchor';
2
+ import { Account } from '@solana/spl-token';
2
3
  export declare const getSolanaPoolApy: (protocolFeeInBps: number, yieldInBps: number, rewardRateInBpsForPoolOwner: number, rewardRateInBpsForEA: number, liquidityCap: BN, seniorDeployedAssets: BN, juniorDeployedAssets: BN, defaultMaxSeniorJuniorRatio: number, fixedSeniorYieldInBps: number, tranchesRiskAdjustmentInBps: number) => import("../../utils/apy").PoolApy & {
3
4
  maxJuniorTrancheApy: number;
4
5
  };
5
6
  export declare const getSolanaUtilizationRate: (seniorTrancheAssets: BN | undefined, juniorTrancheAssets: BN | undefined, availableBalance: BN | undefined) => number | undefined;
7
+ export type PoolStateAccount = {
8
+ accruedIncomes: {
9
+ protocolIncome: BN;
10
+ poolOwnerIncome: BN;
11
+ eaIncome: BN;
12
+ };
13
+ incomeWithdrawn: {
14
+ eaIncomeWithdrawn: BN;
15
+ poolOwnerIncomeWithdrawn: BN;
16
+ protocolIncomeWithdrawn: BN;
17
+ };
18
+ disbursementReserve: BN;
19
+ trancheAssets: BN[];
20
+ };
21
+ export declare const calculateAvailablePoolBalance: (underlyingTokenAccount: Account, poolStateAccount: PoolStateAccount) => BN;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getSolanaUtilizationRate = exports.getSolanaPoolApy = void 0;
3
+ exports.calculateAvailablePoolBalance = exports.getSolanaUtilizationRate = exports.getSolanaPoolApy = void 0;
4
4
  const anchor_1 = require("@coral-xyz/anchor");
5
5
  const apy_1 = require("../../utils/apy");
6
6
  const const_1 = require("../const");
@@ -19,4 +19,21 @@ const getSolanaUtilizationRate = (seniorTrancheAssets, juniorTrancheAssets, avai
19
19
  return 0;
20
20
  };
21
21
  exports.getSolanaUtilizationRate = getSolanaUtilizationRate;
22
+ const calculateAvailablePoolBalance = (underlyingTokenAccount, poolStateAccount) => {
23
+ const poolTokenBalanceBN = new anchor_1.BN(underlyingTokenAccount.amount.toString());
24
+ const totalAccruedIncomesBN = poolStateAccount.accruedIncomes.protocolIncome
25
+ .add(poolStateAccount.accruedIncomes.poolOwnerIncome)
26
+ .add(poolStateAccount.accruedIncomes.eaIncome);
27
+ const totalIncomeWithdrawnBN = poolStateAccount.incomeWithdrawn.protocolIncomeWithdrawn
28
+ .add(poolStateAccount.incomeWithdrawn.poolOwnerIncomeWithdrawn)
29
+ .add(poolStateAccount.incomeWithdrawn.eaIncomeWithdrawn);
30
+ let availableAdminFeesBN = totalAccruedIncomesBN.sub(totalIncomeWithdrawnBN);
31
+ availableAdminFeesBN = availableAdminFeesBN.ltn(0)
32
+ ? new anchor_1.BN(0)
33
+ : availableAdminFeesBN;
34
+ return poolTokenBalanceBN
35
+ .sub(poolStateAccount.disbursementReserve)
36
+ .sub(availableAdminFeesBN);
37
+ };
38
+ exports.calculateAvailablePoolBalance = calculateAvailablePoolBalance;
22
39
  //# sourceMappingURL=poolUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"poolUtils.js","sourceRoot":"","sources":["../../../../src/solana/utils/poolUtils.ts"],"names":[],"mappings":";;;AAAA,8CAAsC;AAEtC,yCAA8C;AAC9C,oCAA2C;AAEpC,MAAM,gBAAgB,GAAG,CAC9B,gBAAwB,EACxB,UAAkB,EAClB,2BAAmC,EACnC,oBAA4B,EAC5B,YAAgB,EAChB,oBAAwB,EACxB,oBAAwB,EACxB,2BAAmC,EACnC,qBAA6B,EAC7B,2BAAmC,EACnC,EAAE,CACF,IAAA,kBAAY,EACV,gBAAgB,EAChB,UAAU,EACV,2BAA2B,EAC3B,oBAAoB,EACpB,YAAY,CAAC,QAAQ,EAAE,EACvB,oBAAoB,CAAC,QAAQ,EAAE,EAC/B,oBAAoB,CAAC,QAAQ,EAAE,EAC/B,2BAA2B,EAC3B,qBAAqB,EACrB,2BAA2B,EAC3B,wBAAgB,CAAC,QAAQ,EAAE,CAC5B,CAAA;AAxBU,QAAA,gBAAgB,oBAwB1B;AAEI,MAAM,wBAAwB,GAAG,CACtC,mBAAmC,EACnC,mBAAmC,EACnC,gBAAgC,EACZ,EAAE;IACtB,IAAI,CAAC,mBAAmB,IAAI,CAAC,mBAAmB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtE,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,MAAM,WAAW,GAAG,mBAAmB,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;IAChE,MAAM,eAAe,GAAG,WAAW,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;IACzD,IAAI,eAAe,CAAC,EAAE,CAAC,IAAI,WAAE,CAAC,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,EAAE,CAAC,IAAI,WAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/D,OAAO,CACL,eAAe,CAAC,GAAG,CAAC,wBAAgB,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE;YACjE,wBAAgB,CAAC,QAAQ,EAAE,CAC5B,CAAA;IACH,CAAC;IACD,OAAO,CAAC,CAAA;AACV,CAAC,CAAA;AAlBY,QAAA,wBAAwB,4BAkBpC"}
1
+ {"version":3,"file":"poolUtils.js","sourceRoot":"","sources":["../../../../src/solana/utils/poolUtils.ts"],"names":[],"mappings":";;;AAAA,8CAAsC;AAGtC,yCAA8C;AAC9C,oCAA2C;AAEpC,MAAM,gBAAgB,GAAG,CAC9B,gBAAwB,EACxB,UAAkB,EAClB,2BAAmC,EACnC,oBAA4B,EAC5B,YAAgB,EAChB,oBAAwB,EACxB,oBAAwB,EACxB,2BAAmC,EACnC,qBAA6B,EAC7B,2BAAmC,EACnC,EAAE,CACF,IAAA,kBAAY,EACV,gBAAgB,EAChB,UAAU,EACV,2BAA2B,EAC3B,oBAAoB,EACpB,YAAY,CAAC,QAAQ,EAAE,EACvB,oBAAoB,CAAC,QAAQ,EAAE,EAC/B,oBAAoB,CAAC,QAAQ,EAAE,EAC/B,2BAA2B,EAC3B,qBAAqB,EACrB,2BAA2B,EAC3B,wBAAgB,CAAC,QAAQ,EAAE,CAC5B,CAAA;AAxBU,QAAA,gBAAgB,oBAwB1B;AAEI,MAAM,wBAAwB,GAAG,CACtC,mBAAmC,EACnC,mBAAmC,EACnC,gBAAgC,EACZ,EAAE;IACtB,IAAI,CAAC,mBAAmB,IAAI,CAAC,mBAAmB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtE,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,MAAM,WAAW,GAAG,mBAAmB,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;IAChE,MAAM,eAAe,GAAG,WAAW,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;IACzD,IAAI,eAAe,CAAC,EAAE,CAAC,IAAI,WAAE,CAAC,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,EAAE,CAAC,IAAI,WAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/D,OAAO,CACL,eAAe,CAAC,GAAG,CAAC,wBAAgB,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE;YACjE,wBAAgB,CAAC,QAAQ,EAAE,CAC5B,CAAA;IACH,CAAC;IACD,OAAO,CAAC,CAAA;AACV,CAAC,CAAA;AAlBY,QAAA,wBAAwB,4BAkBpC;AAaM,MAAM,6BAA6B,GAAG,CAC3C,sBAA+B,EAC/B,gBAAkC,EAC9B,EAAE;IACN,MAAM,kBAAkB,GAAG,IAAI,WAAE,CAAC,sBAAsB,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;IAC3E,MAAM,qBAAqB,GAAG,gBAAgB,CAAC,cAAc,CAAC,cAAc;SACzE,GAAG,CAAC,gBAAgB,CAAC,cAAc,CAAC,eAAe,CAAC;SACpD,GAAG,CAAC,gBAAgB,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAA;IAChD,MAAM,sBAAsB,GAC1B,gBAAgB,CAAC,eAAe,CAAC,uBAAuB;SACrD,GAAG,CAAC,gBAAgB,CAAC,eAAe,CAAC,wBAAwB,CAAC;SAC9D,GAAG,CAAC,gBAAgB,CAAC,eAAe,CAAC,iBAAiB,CAAC,CAAA;IAC5D,IAAI,oBAAoB,GAAG,qBAAqB,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAA;IAC5E,oBAAoB,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;QAChD,CAAC,CAAC,IAAI,WAAE,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,oBAAoB,CAAA;IACxB,OAAO,kBAAkB;SACtB,GAAG,CAAC,gBAAgB,CAAC,mBAAmB,CAAC;SACzC,GAAG,CAAC,oBAAoB,CAAC,CAAA;AAC9B,CAAC,CAAA;AAnBY,QAAA,6BAA6B,iCAmBzC"}
@@ -25,7 +25,10 @@ export declare enum CreditEvent {
25
25
  YieldReinvested = 13,
26
26
  CreditLineApproved = 14,
27
27
  PaymentMadeWithReceivable = 15,
28
- PrincipalPaymentMadeWithReceivable = 16
28
+ PrincipalPaymentMadeWithReceivable = 16,
29
+ AddApprovedLender = 17,
30
+ RemoveApprovedLender = 18,
31
+ PaymentMadeOnBehalfOfWithReceivable = 19
29
32
  }
30
33
  export declare enum LenderEvent {
31
34
  LiquidityDeposited = 0,
@@ -41,6 +41,9 @@ var CreditEvent;
41
41
  CreditEvent[CreditEvent["CreditLineApproved"] = 14] = "CreditLineApproved";
42
42
  CreditEvent[CreditEvent["PaymentMadeWithReceivable"] = 15] = "PaymentMadeWithReceivable";
43
43
  CreditEvent[CreditEvent["PrincipalPaymentMadeWithReceivable"] = 16] = "PrincipalPaymentMadeWithReceivable";
44
+ CreditEvent[CreditEvent["AddApprovedLender"] = 17] = "AddApprovedLender";
45
+ CreditEvent[CreditEvent["RemoveApprovedLender"] = 18] = "RemoveApprovedLender";
46
+ CreditEvent[CreditEvent["PaymentMadeOnBehalfOfWithReceivable"] = 19] = "PaymentMadeOnBehalfOfWithReceivable";
44
47
  })(CreditEvent || (exports.CreditEvent = CreditEvent = {}));
45
48
  var LenderEvent;
46
49
  (function (LenderEvent) {
@@ -61,6 +64,7 @@ exports.CreditEventText = {
61
64
  [String(CreditEvent.PaymentMadeWithReceivable)]: 'Pay',
62
65
  [String(CreditEvent.PrincipalPaymentMade)]: 'Pay',
63
66
  [String(CreditEvent.PrincipalPaymentMadeWithReceivable)]: 'Pay',
67
+ [String(CreditEvent.PaymentMadeOnBehalfOfWithReceivable)]: 'Pay',
64
68
  [String(CreditEvent.ReceivedPaymentProcessed)]: 'Pay',
65
69
  [String(CreditEvent.LiquidityDeposited)]: 'Supply',
66
70
  [String(CreditEvent.LiquidityWithdrawn)]: 'Withdraw',
@@ -1 +1 @@
1
- {"version":3,"file":"credit.js","sourceRoot":"","sources":["../../../src/utils/credit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"credit.js","sourceRoot":"","sources":["../../../src/utils/credit.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,21 @@
1
1
  import { BN } from '@coral-xyz/anchor';
2
+ import { Account } from '@solana/spl-token';
2
3
  export declare const getSolanaPoolApy: (protocolFeeInBps: number, yieldInBps: number, rewardRateInBpsForPoolOwner: number, rewardRateInBpsForEA: number, liquidityCap: BN, seniorDeployedAssets: BN, juniorDeployedAssets: BN, defaultMaxSeniorJuniorRatio: number, fixedSeniorYieldInBps: number, tranchesRiskAdjustmentInBps: number) => import("../../utils/apy").PoolApy & {
3
4
  maxJuniorTrancheApy: number;
4
5
  };
5
6
  export declare const getSolanaUtilizationRate: (seniorTrancheAssets: BN | undefined, juniorTrancheAssets: BN | undefined, availableBalance: BN | undefined) => number | undefined;
7
+ export type PoolStateAccount = {
8
+ accruedIncomes: {
9
+ protocolIncome: BN;
10
+ poolOwnerIncome: BN;
11
+ eaIncome: BN;
12
+ };
13
+ incomeWithdrawn: {
14
+ eaIncomeWithdrawn: BN;
15
+ poolOwnerIncomeWithdrawn: BN;
16
+ protocolIncomeWithdrawn: BN;
17
+ };
18
+ disbursementReserve: BN;
19
+ trancheAssets: BN[];
20
+ };
21
+ export declare const calculateAvailablePoolBalance: (underlyingTokenAccount: Account, poolStateAccount: PoolStateAccount) => BN;
@@ -14,4 +14,20 @@ export const getSolanaUtilizationRate = (seniorTrancheAssets, juniorTrancheAsset
14
14
  }
15
15
  return 0;
16
16
  };
17
+ export const calculateAvailablePoolBalance = (underlyingTokenAccount, poolStateAccount) => {
18
+ const poolTokenBalanceBN = new BN(underlyingTokenAccount.amount.toString());
19
+ const totalAccruedIncomesBN = poolStateAccount.accruedIncomes.protocolIncome
20
+ .add(poolStateAccount.accruedIncomes.poolOwnerIncome)
21
+ .add(poolStateAccount.accruedIncomes.eaIncome);
22
+ const totalIncomeWithdrawnBN = poolStateAccount.incomeWithdrawn.protocolIncomeWithdrawn
23
+ .add(poolStateAccount.incomeWithdrawn.poolOwnerIncomeWithdrawn)
24
+ .add(poolStateAccount.incomeWithdrawn.eaIncomeWithdrawn);
25
+ let availableAdminFeesBN = totalAccruedIncomesBN.sub(totalIncomeWithdrawnBN);
26
+ availableAdminFeesBN = availableAdminFeesBN.ltn(0)
27
+ ? new BN(0)
28
+ : availableAdminFeesBN;
29
+ return poolTokenBalanceBN
30
+ .sub(poolStateAccount.disbursementReserve)
31
+ .sub(availableAdminFeesBN);
32
+ };
17
33
  //# sourceMappingURL=poolUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"poolUtils.js","sourceRoot":"","sources":["../../../src/solana/utils/poolUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAA;AAEtC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAE3C,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,gBAAwB,EACxB,UAAkB,EAClB,2BAAmC,EACnC,oBAA4B,EAC5B,YAAgB,EAChB,oBAAwB,EACxB,oBAAwB,EACxB,2BAAmC,EACnC,qBAA6B,EAC7B,2BAAmC,EACnC,EAAE,CACF,YAAY,CACV,gBAAgB,EAChB,UAAU,EACV,2BAA2B,EAC3B,oBAAoB,EACpB,YAAY,CAAC,QAAQ,EAAE,EACvB,oBAAoB,CAAC,QAAQ,EAAE,EAC/B,oBAAoB,CAAC,QAAQ,EAAE,EAC/B,2BAA2B,EAC3B,qBAAqB,EACrB,2BAA2B,EAC3B,gBAAgB,CAAC,QAAQ,EAAE,CAC5B,CAAA;AAEH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CACtC,mBAAmC,EACnC,mBAAmC,EACnC,gBAAgC,EACZ,EAAE;IACtB,IAAI,CAAC,mBAAmB,IAAI,CAAC,mBAAmB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtE,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,MAAM,WAAW,GAAG,mBAAmB,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;IAChE,MAAM,eAAe,GAAG,WAAW,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;IACzD,IAAI,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/D,OAAO,CACL,eAAe,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE;YACjE,gBAAgB,CAAC,QAAQ,EAAE,CAC5B,CAAA;IACH,CAAC;IACD,OAAO,CAAC,CAAA;AACV,CAAC,CAAA"}
1
+ {"version":3,"file":"poolUtils.js","sourceRoot":"","sources":["../../../src/solana/utils/poolUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAA;AAGtC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAE3C,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,gBAAwB,EACxB,UAAkB,EAClB,2BAAmC,EACnC,oBAA4B,EAC5B,YAAgB,EAChB,oBAAwB,EACxB,oBAAwB,EACxB,2BAAmC,EACnC,qBAA6B,EAC7B,2BAAmC,EACnC,EAAE,CACF,YAAY,CACV,gBAAgB,EAChB,UAAU,EACV,2BAA2B,EAC3B,oBAAoB,EACpB,YAAY,CAAC,QAAQ,EAAE,EACvB,oBAAoB,CAAC,QAAQ,EAAE,EAC/B,oBAAoB,CAAC,QAAQ,EAAE,EAC/B,2BAA2B,EAC3B,qBAAqB,EACrB,2BAA2B,EAC3B,gBAAgB,CAAC,QAAQ,EAAE,CAC5B,CAAA;AAEH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CACtC,mBAAmC,EACnC,mBAAmC,EACnC,gBAAgC,EACZ,EAAE;IACtB,IAAI,CAAC,mBAAmB,IAAI,CAAC,mBAAmB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtE,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,MAAM,WAAW,GAAG,mBAAmB,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;IAChE,MAAM,eAAe,GAAG,WAAW,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;IACzD,IAAI,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/D,OAAO,CACL,eAAe,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE;YACjE,gBAAgB,CAAC,QAAQ,EAAE,CAC5B,CAAA;IACH,CAAC;IACD,OAAO,CAAC,CAAA;AACV,CAAC,CAAA;AAaD,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAC3C,sBAA+B,EAC/B,gBAAkC,EAC9B,EAAE;IACN,MAAM,kBAAkB,GAAG,IAAI,EAAE,CAAC,sBAAsB,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;IAC3E,MAAM,qBAAqB,GAAG,gBAAgB,CAAC,cAAc,CAAC,cAAc;SACzE,GAAG,CAAC,gBAAgB,CAAC,cAAc,CAAC,eAAe,CAAC;SACpD,GAAG,CAAC,gBAAgB,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAA;IAChD,MAAM,sBAAsB,GAC1B,gBAAgB,CAAC,eAAe,CAAC,uBAAuB;SACrD,GAAG,CAAC,gBAAgB,CAAC,eAAe,CAAC,wBAAwB,CAAC;SAC9D,GAAG,CAAC,gBAAgB,CAAC,eAAe,CAAC,iBAAiB,CAAC,CAAA;IAC5D,IAAI,oBAAoB,GAAG,qBAAqB,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAA;IAC5E,oBAAoB,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;QAChD,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,oBAAoB,CAAA;IACxB,OAAO,kBAAkB;SACtB,GAAG,CAAC,gBAAgB,CAAC,mBAAmB,CAAC;SACzC,GAAG,CAAC,oBAAoB,CAAC,CAAA;AAC9B,CAAC,CAAA"}