@haven-fi/solauto-sdk 1.0.605 → 1.0.607

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.
@@ -5,7 +5,7 @@ import { Signer, TransactionBuilder, Umi } from "@metaplex-foundation/umi";
5
5
  import { TokenType } from "../../generated";
6
6
  export declare class FlProviderAggregator extends FlProviderBase {
7
7
  private marginfiFlProvider;
8
- constructor(umi: Umi, signer: Signer, supplyMint: PublicKey, debtMint: PublicKey);
8
+ constructor(umi: Umi, signer: Signer, authority: PublicKey, supplyMint: PublicKey, debtMint: PublicKey);
9
9
  initialize(): Promise<void>;
10
10
  flAccountPrereqIxs(): Promise<TransactionBuilder>;
11
11
  otherSigners(): Signer[];
@@ -1 +1 @@
1
- {"version":3,"file":"flProviderAggregator.d.ts","sourceRoot":"","sources":["../../../src/services/flashLoans/flProviderAggregator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAyB,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,qBAAa,oBAAqB,SAAQ,cAAc;IACtD,OAAO,CAAC,kBAAkB,CAAsB;gBAG9C,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,SAAS,EACrB,QAAQ,EAAE,SAAS;IAWf,UAAU;IAMV,kBAAkB,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAIvD,YAAY,IAAI,MAAM,EAAE;IAKxB,gBAAgB,IAAI,SAAS,EAAE;IAO/B,OAAO,CAAC,UAAU;IAKlB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM;IAI7C,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,eAAe,CAAC,EAAE,OAAO,GAAG,MAAM;IAI9D,WAAW,CACT,SAAS,EAAE,gBAAgB,EAC3B,gBAAgB,EAAE,SAAS,GAC1B,kBAAkB;IAOrB,UAAU,CAAC,SAAS,EAAE,gBAAgB,GAAG,kBAAkB;CAG5D"}
1
+ {"version":3,"file":"flProviderAggregator.d.ts","sourceRoot":"","sources":["../../../src/services/flashLoans/flProviderAggregator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAyB,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAI5C,qBAAa,oBAAqB,SAAQ,cAAc;IACtD,OAAO,CAAC,kBAAkB,CAAsB;gBAG9C,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,SAAS,EACrB,QAAQ,EAAE,SAAS;IAYf,UAAU;IAMV,kBAAkB,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAIvD,YAAY,IAAI,MAAM,EAAE;IAKxB,gBAAgB,IAAI,SAAS,EAAE;IAS/B,OAAO,CAAC,UAAU;IAKlB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM;IAI7C,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,eAAe,CAAC,EAAE,OAAO,GAAG,MAAM;IAI9D,WAAW,CACT,SAAS,EAAE,gBAAgB,EAC3B,gBAAgB,EAAE,SAAS,GAC1B,kBAAkB;IAOrB,UAAU,CAAC,SAAS,EAAE,gBAAgB,GAAG,kBAAkB;CAG5D"}
@@ -3,10 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.FlProviderAggregator = void 0;
4
4
  const flProviderBase_1 = require("./flProviderBase");
5
5
  const marginfiFlProvider_1 = require("./marginfiFlProvider");
6
+ const umi_web3js_adapters_1 = require("@metaplex-foundation/umi-web3js-adapters");
6
7
  class FlProviderAggregator extends flProviderBase_1.FlProviderBase {
7
- constructor(umi, signer, supplyMint, debtMint) {
8
- super(umi, signer, supplyMint, debtMint);
9
- this.marginfiFlProvider = new marginfiFlProvider_1.MarginfiFlProvider(umi, signer, supplyMint, debtMint);
8
+ constructor(umi, signer, authority, supplyMint, debtMint) {
9
+ super(umi, signer, authority, supplyMint, debtMint);
10
+ this.marginfiFlProvider = new marginfiFlProvider_1.MarginfiFlProvider(umi, signer, authority, supplyMint, debtMint);
10
11
  }
11
12
  async initialize() {
12
13
  // TODO: PF
@@ -21,10 +22,12 @@ class FlProviderAggregator extends flProviderBase_1.FlProviderBase {
21
22
  return [...this.flSigners, ...this.marginfiFlProvider.otherSigners()];
22
23
  }
23
24
  lutAccountsToAdd() {
24
- return [
25
- ...super.lutAccountsToAdd(),
26
- ...this.marginfiFlProvider.lutAccountsToAdd(),
27
- ];
25
+ return (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.signer.publicKey).equals(this.authority)
26
+ ? [
27
+ ...super.lutAccountsToAdd(),
28
+ ...this.marginfiFlProvider.lutAccountsToAdd(),
29
+ ]
30
+ : [];
28
31
  }
29
32
  flProvider(source) {
30
33
  // TODO: PF
@@ -5,10 +5,11 @@ import { FlashLoanDetails } from "../../types";
5
5
  export declare abstract class FlProviderBase {
6
6
  protected umi: Umi;
7
7
  protected signer: Signer;
8
+ protected authority: PublicKey;
8
9
  protected supplyMint: PublicKey;
9
10
  protected debtMint: PublicKey;
10
11
  protected flSigners: Signer[];
11
- constructor(umi: Umi, signer: Signer, supplyMint: PublicKey, debtMint: PublicKey);
12
+ constructor(umi: Umi, signer: Signer, authority: PublicKey, supplyMint: PublicKey, debtMint: PublicKey);
12
13
  abstract initialize(): Promise<void>;
13
14
  lutAccountsToAdd(): PublicKey[];
14
15
  otherSigners(): Signer[];
@@ -1 +1 @@
1
- {"version":3,"file":"flProviderBase.d.ts","sourceRoot":"","sources":["../../../src/services/flashLoans/flProviderBase.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EAEN,kBAAkB,EAClB,GAAG,EACJ,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAQ5C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG/C,8BAAsB,cAAc;IAIhC,SAAS,CAAC,GAAG,EAAE,GAAG;IAClB,SAAS,CAAC,MAAM,EAAE,MAAM;IACxB,SAAS,CAAC,UAAU,EAAE,SAAS;IAC/B,SAAS,CAAC,QAAQ,EAAE,SAAS;IAN/B,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,CAAM;gBAGvB,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,SAAS,EACrB,QAAQ,EAAE,SAAS;IAG/B,QAAQ,CAAC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAEpC,gBAAgB,IAAI,SAAS,EAAE;IAI/B,YAAY,IAAI,MAAM,EAAE;IAIxB,IAAI,CAAC,MAAM,EAAE,SAAS;IAItB,QAAQ,CAAC,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM;IACtD,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM;IAShD,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,eAAe,CAAC,EAAE,OAAO,GAAG,MAAM;IACvE,QAAQ,CAAC,WAAW,CAClB,SAAS,EAAE,gBAAgB,EAC3B,gBAAgB,EAAE,SAAS,GAC1B,kBAAkB;IACrB,QAAQ,CAAC,UAAU,CAAC,SAAS,EAAE,gBAAgB,GAAG,kBAAkB;IAEpE,SAAS,CAAC,iBAAiB,CACzB,SAAS,EAAE,gBAAgB,EAC3B,gBAAgB,EAAE,SAAS,GAC1B,kBAAkB;CAyBtB"}
1
+ {"version":3,"file":"flProviderBase.d.ts","sourceRoot":"","sources":["../../../src/services/flashLoans/flProviderBase.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EAEN,kBAAkB,EAClB,GAAG,EACJ,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAQ5C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG/C,8BAAsB,cAAc;IAIhC,SAAS,CAAC,GAAG,EAAE,GAAG;IAClB,SAAS,CAAC,MAAM,EAAE,MAAM;IACxB,SAAS,CAAC,SAAS,EAAE,SAAS;IAC9B,SAAS,CAAC,UAAU,EAAE,SAAS;IAC/B,SAAS,CAAC,QAAQ,EAAE,SAAS;IAP/B,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,CAAM;gBAGvB,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,SAAS,EACrB,QAAQ,EAAE,SAAS;IAG/B,QAAQ,CAAC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAEpC,gBAAgB,IAAI,SAAS,EAAE;IAI/B,YAAY,IAAI,MAAM,EAAE;IAIxB,IAAI,CAAC,MAAM,EAAE,SAAS;IAItB,QAAQ,CAAC,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM;IACtD,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM;IAShD,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,eAAe,CAAC,EAAE,OAAO,GAAG,MAAM;IACvE,QAAQ,CAAC,WAAW,CAClB,SAAS,EAAE,gBAAgB,EAC3B,gBAAgB,EAAE,SAAS,GAC1B,kBAAkB;IACrB,QAAQ,CAAC,UAAU,CAAC,SAAS,EAAE,gBAAgB,GAAG,kBAAkB;IAEpE,SAAS,CAAC,iBAAiB,CACzB,SAAS,EAAE,gBAAgB,EAC3B,gBAAgB,EAAE,SAAS,GAC1B,kBAAkB;CAyBtB"}
@@ -6,9 +6,10 @@ const utils_1 = require("../../utils");
6
6
  const generated_1 = require("../../generated");
7
7
  const umi_web3js_adapters_1 = require("@metaplex-foundation/umi-web3js-adapters");
8
8
  class FlProviderBase {
9
- constructor(umi, signer, supplyMint, debtMint) {
9
+ constructor(umi, signer, authority, supplyMint, debtMint) {
10
10
  this.umi = umi;
11
11
  this.signer = signer;
12
+ this.authority = authority;
12
13
  this.supplyMint = supplyMint;
13
14
  this.debtMint = debtMint;
14
15
  this.flSigners = [];
@@ -1 +1 @@
1
- {"version":3,"file":"rebalanceTxBuilder.d.ts","sourceRoot":"","sources":["../../../src/services/rebalance/rebalanceTxBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAGL,qBAAqB,EACtB,MAAM,aAAa,CAAC;AA2BrB,qBAAa,kBAAkB;IAO3B,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,2BAA2B,CAAC;IAPtC,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,aAAa,CAAwB;IAC7C,OAAO,CAAC,WAAW,CAAwB;IAC3C,OAAO,CAAC,cAAc,CAAC,CAAwB;gBAGrC,MAAM,EAAE,aAAa,EACrB,2BAA2B,CAAC,EAAE,MAAM,YAAA;YAGhC,0BAA0B;IAQxC,OAAO,CAAC,kBAAkB;IAa1B,OAAO,CAAC,oBAAoB;YAyCd,qBAAqB;IAyCnC,OAAO,CAAC,mBAAmB;IAwB3B,OAAO,CAAC,gBAAgB;YAgCV,mBAAmB;YAoBnB,sBAAsB;YAyBtB,mBAAmB;IAkEpB,gBAAgB,CAC3B,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC;CAW9C"}
1
+ {"version":3,"file":"rebalanceTxBuilder.d.ts","sourceRoot":"","sources":["../../../src/services/rebalance/rebalanceTxBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAGL,qBAAqB,EACtB,MAAM,aAAa,CAAC;AA2BrB,qBAAa,kBAAkB;IAO3B,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,2BAA2B,CAAC;IAPtC,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,aAAa,CAAwB;IAC7C,OAAO,CAAC,WAAW,CAAwB;IAC3C,OAAO,CAAC,cAAc,CAAC,CAAwB;gBAGrC,MAAM,EAAE,aAAa,EACrB,2BAA2B,CAAC,EAAE,MAAM,YAAA;IAG9C,OAAO,CAAC,0BAA0B;IAQlC,OAAO,CAAC,kBAAkB;IAa1B,OAAO,CAAC,oBAAoB;YAyCd,qBAAqB;IAyCnC,OAAO,CAAC,mBAAmB;IAwB3B,OAAO,CAAC,gBAAgB;YAgCV,mBAAmB;YAoBnB,sBAAsB;YAyBtB,mBAAmB;IAkEpB,gBAAgB,CAC3B,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC;CAW9C"}
@@ -14,7 +14,7 @@ class RebalanceTxBuilder {
14
14
  this.client = client;
15
15
  this.targetLiqUtilizationRateBps = targetLiqUtilizationRateBps;
16
16
  }
17
- async shouldProceedWithRebalance() {
17
+ shouldProceedWithRebalance() {
18
18
  return (this.client.pos.supplyUsd() > 0 &&
19
19
  (this.targetLiqUtilizationRateBps !== undefined ||
20
20
  this.client.pos.eligibleForRebalance()));
@@ -1 +1 @@
1
- {"version":3,"file":"solautoClient.d.ts","sourceRoot":"","sources":["../../../src/services/solauto/solautoClient.ts"],"names":[],"mappings":"AAAA,OAAO,gCAAgC,CAAC;AACxC,OAAO,EAEL,SAAS,EAGV,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,kBAAkB,EAMnB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,gCAAgC,EAEhC,sBAAsB,EAGvB,MAAM,iBAAiB,CAAC;AAWzB,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACzB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAEL,iBAAiB,EAClB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAE1E,MAAM,WAAW,iBAAkB,SAAQ,wBAAwB;IACjE,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,aAAa,CAAC,EAAE,SAAS,CAAC;CAC3B;AAED,8BAAsB,aAAc,SAAQ,oBAAoB;IACvD,eAAe,EAAG,eAAe,CAAC;IAElC,SAAS,EAAG,SAAS,CAAC;IAEtB,UAAU,EAAG,MAAM,CAAC;IACpB,WAAW,EAAG,OAAO,CAAC;IACtB,GAAG,EAAG,iBAAiB,CAAC;IAExB,gBAAgB,EAAG,SAAS,CAAC;IAC7B,cAAc,EAAG,SAAS,CAAC;IAE3B,cAAc,EAAG,SAAS,CAAC;IAC3B,YAAY,EAAG,SAAS,CAAC;IAEzB,mBAAmB,EAAG,SAAS,CAAC;IAChC,iBAAiB,EAAG,SAAS,CAAC;IAE9B,mBAAmB,CAAC,EAAE,SAAS,CAAC;IAEhC,UAAU,EAAG,oBAAoB,CAAC;IAClC,cAAc,EAAE,cAAc,CAAwB;IAE7D,OAAO,CAAC,mBAAmB,CAAqB;IAChD,OAAO,CAAC,iBAAiB,CAAqB;IAExC,UAAU,CAAC,IAAI,EAAE,iBAAiB;IA+ExC,kBAAkB,IAAI,SAAS,GAAG,SAAS;IAO3C,gBAAgB,IAAI,SAAS,GAAG,SAAS;IAOnC,kBAAkB,CAAC,OAAO,CAAC,EAAE,OAAO;IAkB1C,mBAAmB,IAAI,MAAM,EAAE;IAS/B,gBAAgB,IAAI,SAAS,EAAE;IAmBzB,iCAAiC,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAUzD,iBAAiB,IAAI,OAAO,CAC9B;QACE,EAAE,EAAE,kBAAkB,CAAC;QACvB,GAAG,EAAE,OAAO,CAAC;QACb,aAAa,EAAE,SAAS,EAAE,CAAC;KAC5B,GACD,SAAS,CACZ;IA2DK,cAAc,IAAI,OAAO,CAAC;QAC9B,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IA8CF,cAAc,CACZ,QAAQ,CAAC,EAAE,gCAAgC,EAC3C,GAAG,CAAC,EAAE,kBAAkB,GACvB,kBAAkB;IA0BrB,gBAAgB,CAAC,IAAI,EAAE,sBAAsB,GAAG,kBAAkB;IAsDlE,QAAQ,CAAC,eAAe,IAAI,kBAAkB;IAE9C,WAAW,IAAI,kBAAkB;IAgCjC,QAAQ,CAAC,SAAS,IAAI,kBAAkB;IAExC,qBAAqB,CAAC,IAAI,EAAE,iBAAiB,GAAG,kBAAkB;IAsFlE,QAAQ,CAAC,WAAW,CAClB,aAAa,EAAE,aAAa,EAC5B,IAAI,EAAE,gBAAgB,GACrB,kBAAkB;CACtB"}
1
+ {"version":3,"file":"solautoClient.d.ts","sourceRoot":"","sources":["../../../src/services/solauto/solautoClient.ts"],"names":[],"mappings":"AAAA,OAAO,gCAAgC,CAAC;AACxC,OAAO,EAEL,SAAS,EAGV,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,kBAAkB,EAMnB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,gCAAgC,EAEhC,sBAAsB,EAGvB,MAAM,iBAAiB,CAAC;AAWzB,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACzB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAEL,iBAAiB,EAClB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAE1E,MAAM,WAAW,iBAAkB,SAAQ,wBAAwB;IACjE,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,aAAa,CAAC,EAAE,SAAS,CAAC;CAC3B;AAED,8BAAsB,aAAc,SAAQ,oBAAoB;IACvD,eAAe,EAAG,eAAe,CAAC;IAElC,SAAS,EAAG,SAAS,CAAC;IAEtB,UAAU,EAAG,MAAM,CAAC;IACpB,WAAW,EAAG,OAAO,CAAC;IACtB,GAAG,EAAG,iBAAiB,CAAC;IAExB,gBAAgB,EAAG,SAAS,CAAC;IAC7B,cAAc,EAAG,SAAS,CAAC;IAE3B,cAAc,EAAG,SAAS,CAAC;IAC3B,YAAY,EAAG,SAAS,CAAC;IAEzB,mBAAmB,EAAG,SAAS,CAAC;IAChC,iBAAiB,EAAG,SAAS,CAAC;IAE9B,mBAAmB,CAAC,EAAE,SAAS,CAAC;IAEhC,UAAU,EAAG,oBAAoB,CAAC;IAClC,cAAc,EAAE,cAAc,CAAwB;IAE7D,OAAO,CAAC,mBAAmB,CAAqB;IAChD,OAAO,CAAC,iBAAiB,CAAqB;IAExC,UAAU,CAAC,IAAI,EAAE,iBAAiB;IAgFxC,kBAAkB,IAAI,SAAS,GAAG,SAAS;IAO3C,gBAAgB,IAAI,SAAS,GAAG,SAAS;IAOnC,kBAAkB,CAAC,OAAO,CAAC,EAAE,OAAO;IAkB1C,mBAAmB,IAAI,MAAM,EAAE;IAS/B,gBAAgB,IAAI,SAAS,EAAE;IAmBzB,iCAAiC,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAUzD,iBAAiB,IAAI,OAAO,CAC9B;QACE,EAAE,EAAE,kBAAkB,CAAC;QACvB,GAAG,EAAE,OAAO,CAAC;QACb,aAAa,EAAE,SAAS,EAAE,CAAC;KAC5B,GACD,SAAS,CACZ;IA2DK,cAAc,IAAI,OAAO,CAAC;QAC9B,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IA8CF,cAAc,CACZ,QAAQ,CAAC,EAAE,gCAAgC,EAC3C,GAAG,CAAC,EAAE,kBAAkB,GACvB,kBAAkB;IA0BrB,gBAAgB,CAAC,IAAI,EAAE,sBAAsB,GAAG,kBAAkB;IAsDlE,QAAQ,CAAC,eAAe,IAAI,kBAAkB;IAE9C,WAAW,IAAI,kBAAkB;IAgCjC,QAAQ,CAAC,SAAS,IAAI,kBAAkB;IAExC,qBAAqB,CAAC,IAAI,EAAE,iBAAiB,GAAG,kBAAkB;IAsFlE,QAAQ,CAAC,WAAW,CAClB,aAAa,EAAE,aAAa,EAC5B,IAAI,EAAE,gBAAgB,GACrB,kBAAkB;CACtB"}
@@ -46,7 +46,7 @@ class SolautoClient extends referralStateManager_1.ReferralStateManager {
46
46
  !(0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.referralStateData.lookupTable).equals(web3_js_1.PublicKey.default)
47
47
  ? (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.referralStateData.lookupTable)
48
48
  : undefined;
49
- this.flProvider = new flProviderAggregator_1.FlProviderAggregator(this.umi, this.signer, this.pos.supplyMint(), this.pos.debtMint());
49
+ this.flProvider = new flProviderAggregator_1.FlProviderAggregator(this.umi, this.signer, this.authority, this.pos.supplyMint(), this.pos.debtMint());
50
50
  await this.flProvider.initialize();
51
51
  this.otherSigners.push(...this.flProvider.otherSigners());
52
52
  this.log("Position state: ", this.pos.state());
@@ -41,8 +41,8 @@ class MarginfiSolautoPositionEx extends solautoPositionEx_1.SolautoPositionEx {
41
41
  ]);
42
42
  }
43
43
  const [supplyPrice] = await (0, utils_1.fetchTokenPrices)([this.supplyMint()]);
44
- const [maxLtv, liqThreshold] = (0, utils_1.calcMarginfiMaxLtvAndLiqThreshold)(this.supplyBank, this.debtBank, supplyPrice);
45
- return [(0, utils_1.toBps)(maxLtv), (0, utils_1.toBps)(liqThreshold)];
44
+ const [maxLtvBps, liqThresholdBps] = (0, utils_1.calcMarginfiMaxLtvAndLiqThresholdBps)(this.supplyBank, this.debtBank, supplyPrice);
45
+ return [maxLtvBps, liqThresholdBps];
46
46
  }
47
47
  supplyLiquidityAvailable() {
48
48
  return (0, utils_1.getBankLiquidityAvailableBaseUnit)(this.supplyBank, false);
@@ -8,8 +8,8 @@ interface AllMarginfiAssetAccounts extends MarginfiAssetAccounts {
8
8
  mint: PublicKey;
9
9
  }
10
10
  export declare function findMarginfiAccounts(bank: PublicKey): AllMarginfiAssetAccounts;
11
- export declare function calcMarginfiMaxLtvAndLiqThreshold(supplyBank: Bank, debtBank: Bank, supplyPrice: number): [number, number];
12
- export declare function getMarginfiMaxLtvAndLiqThreshold(umi: Umi, marginfiGroup: PublicKey, supply: {
11
+ export declare function calcMarginfiMaxLtvAndLiqThresholdBps(supplyBank: Bank, debtBank: Bank, supplyPrice: number): [number, number];
12
+ export declare function getMarginfiMaxLtvAndLiqThresholdBps(umi: Umi, marginfiGroup: PublicKey, supply: {
13
13
  mint: PublicKey;
14
14
  bank?: Bank | null;
15
15
  }, debt: {
@@ -1 +1 @@
1
- {"version":3,"file":"marginfiUtils.d.ts","sourceRoot":"","sources":["../../src/utils/marginfiUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAa,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EACL,IAAI,EAIJ,eAAe,EAIhB,MAAM,iBAAiB,CAAC;AAczB,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAsB,MAAM,cAAc,CAAC;AAEjE,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAIhD,UAAU,wBAAyB,SAAQ,qBAAqB;IAC9D,IAAI,EAAE,SAAS,CAAC;CACjB;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,SAAS,GACd,wBAAwB,CAY1B;AAED,wBAAgB,iCAAiC,CAC/C,UAAU,EAAE,IAAI,EAChB,QAAQ,EAAE,IAAI,EACd,WAAW,EAAE,MAAM,GAClB,CAAC,MAAM,EAAE,MAAM,CAAC,CA6BlB;AAED,wBAAsB,gCAAgC,CACpD,GAAG,EAAE,GAAG,EACR,aAAa,EAAE,SAAS,EACxB,MAAM,EAAE;IACN,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;CACpB,EACD,IAAI,EAAE;IACJ,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;CACpB,EACD,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CA4C3B;AAED,wBAAsB,mCAAmC,CACvD,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,SAAS,GACnB,OAAO,CAAC,eAAe,EAAE,CAAC,CA6B5B;AAED,wBAAsB,iCAAiC,CACrD,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,SAAS,EACpB,KAAK,CAAC,EAAE,SAAS,EACjB,qBAAqB,CAAC,EAAE,OAAO,GAC9B,OAAO,CACR;IAAE,eAAe,EAAE,SAAS,CAAC;IAAC,UAAU,CAAC,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;CAAE,EAAE,CAC/E,CAyDA;AAED,wBAAgB,iCAAiC,CAC/C,IAAI,EAAE,IAAI,GAAG,IAAI,EACjB,kBAAkB,EAAE,OAAO,UAqB5B;AAsDD,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AAED,KAAK,UAAU,GAAG;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAA;CAAE,CAAC;AAsBhE,wBAAsB,+BAA+B,CACnD,GAAG,EAAE,GAAG,EACR,aAAa,EAAE;IAAE,EAAE,CAAC,EAAE,SAAS,CAAC;IAAC,IAAI,CAAC,EAAE,eAAe,GAAG,IAAI,CAAA;CAAE,EAChE,aAAa,CAAC,EAAE,SAAS,EACzB,MAAM,CAAC,EAAE,aAAa,EACtB,IAAI,CAAC,EAAE,aAAa,EACpB,cAAc,CAAC,EAAE,cAAc,GAC9B,OAAO,CACN;IAAE,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC;IAAC,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,aAAa,CAAA;CAAE,GACxE,SAAS,CACZ,CAyKA;AA+DD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,IAAI,oBAU7C;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAgBnE;AAED,wBAAgB,oBAAoB,CAAC,eAAe,EAAE,eAAe,WASpE"}
1
+ {"version":3,"file":"marginfiUtils.d.ts","sourceRoot":"","sources":["../../src/utils/marginfiUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAa,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EACL,IAAI,EAIJ,eAAe,EAIhB,MAAM,iBAAiB,CAAC;AAczB,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAsB,MAAM,cAAc,CAAC;AAEjE,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAIhD,UAAU,wBAAyB,SAAQ,qBAAqB;IAC9D,IAAI,EAAE,SAAS,CAAC;CACjB;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,SAAS,GACd,wBAAwB,CAY1B;AAED,wBAAgB,oCAAoC,CAClD,UAAU,EAAE,IAAI,EAChB,QAAQ,EAAE,IAAI,EACd,WAAW,EAAE,MAAM,GAClB,CAAC,MAAM,EAAE,MAAM,CAAC,CA6BlB;AAED,wBAAsB,mCAAmC,CACvD,GAAG,EAAE,GAAG,EACR,aAAa,EAAE,SAAS,EACxB,MAAM,EAAE;IACN,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;CACpB,EACD,IAAI,EAAE;IACJ,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;CACpB,EACD,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CA4C3B;AAED,wBAAsB,mCAAmC,CACvD,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,SAAS,GACnB,OAAO,CAAC,eAAe,EAAE,CAAC,CA6B5B;AAED,wBAAsB,iCAAiC,CACrD,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,SAAS,EACpB,KAAK,CAAC,EAAE,SAAS,EACjB,qBAAqB,CAAC,EAAE,OAAO,GAC9B,OAAO,CACR;IAAE,eAAe,EAAE,SAAS,CAAC;IAAC,UAAU,CAAC,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;CAAE,EAAE,CAC/E,CAyDA;AAED,wBAAgB,iCAAiC,CAC/C,IAAI,EAAE,IAAI,GAAG,IAAI,EACjB,kBAAkB,EAAE,OAAO,UAqB5B;AAsDD,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AAED,KAAK,UAAU,GAAG;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAA;CAAE,CAAC;AAsBhE,wBAAsB,+BAA+B,CACnD,GAAG,EAAE,GAAG,EACR,aAAa,EAAE;IAAE,EAAE,CAAC,EAAE,SAAS,CAAC;IAAC,IAAI,CAAC,EAAE,eAAe,GAAG,IAAI,CAAA;CAAE,EAChE,aAAa,CAAC,EAAE,SAAS,EACzB,MAAM,CAAC,EAAE,aAAa,EACtB,IAAI,CAAC,EAAE,aAAa,EACpB,cAAc,CAAC,EAAE,cAAc,GAC9B,OAAO,CACN;IAAE,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC;IAAC,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,aAAa,CAAA;CAAE,GACxE,SAAS,CACZ,CAyKA;AA+DD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,IAAI,oBAU7C;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAgBnE;AAED,wBAAgB,oBAAoB,CAAC,eAAe,EAAE,eAAe,WASpE"}
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.findMarginfiAccounts = findMarginfiAccounts;
4
- exports.calcMarginfiMaxLtvAndLiqThreshold = calcMarginfiMaxLtvAndLiqThreshold;
5
- exports.getMarginfiMaxLtvAndLiqThreshold = getMarginfiMaxLtvAndLiqThreshold;
4
+ exports.calcMarginfiMaxLtvAndLiqThresholdBps = calcMarginfiMaxLtvAndLiqThresholdBps;
5
+ exports.getMarginfiMaxLtvAndLiqThresholdBps = getMarginfiMaxLtvAndLiqThresholdBps;
6
6
  exports.getEmptyMarginfiAccountsByAuthority = getEmptyMarginfiAccountsByAuthority;
7
7
  exports.getAllMarginfiAccountsByAuthority = getAllMarginfiAccountsByAuthority;
8
8
  exports.getBankLiquidityAvailableBaseUnit = getBankLiquidityAvailableBaseUnit;
@@ -31,7 +31,7 @@ function findMarginfiAccounts(bank) {
31
31
  }
32
32
  throw new Error(`Marginfi accounts not found by the bank: ${bank}`);
33
33
  }
34
- function calcMarginfiMaxLtvAndLiqThreshold(supplyBank, debtBank, supplyPrice) {
34
+ function calcMarginfiMaxLtvAndLiqThresholdBps(supplyBank, debtBank, supplyPrice) {
35
35
  let maxLtv = (0, numberUtils_1.bytesToI80F48)(supplyBank.config.assetWeightInit.value) /
36
36
  (0, numberUtils_1.bytesToI80F48)(debtBank.config.liabilityWeightInit.value);
37
37
  const liqThreshold = (0, numberUtils_1.bytesToI80F48)(supplyBank.config.assetWeightMaint.value) /
@@ -44,9 +44,9 @@ function calcMarginfiMaxLtvAndLiqThreshold(supplyBank, debtBank, supplyPrice) {
44
44
  totalDepositedUsdValue;
45
45
  maxLtv = maxLtv * Number(discount);
46
46
  }
47
- return [maxLtv, liqThreshold];
47
+ return [(0, numberUtils_1.toBps)(maxLtv, "Floor"), (0, numberUtils_1.toBps)(liqThreshold, "Floor")];
48
48
  }
49
- async function getMarginfiMaxLtvAndLiqThreshold(umi, marginfiGroup, supply, debt, supplyPrice) {
49
+ async function getMarginfiMaxLtvAndLiqThresholdBps(umi, marginfiGroup, supply, debt, supplyPrice) {
50
50
  if (!supply.bank && supply.mint.equals(web3_js_1.PublicKey.default)) {
51
51
  return [0, 0];
52
52
  }
@@ -66,7 +66,7 @@ async function getMarginfiMaxLtvAndLiqThreshold(umi, marginfiGroup, supply, debt
66
66
  if (!debt.bank || debt.bank === null) {
67
67
  return [0, 0];
68
68
  }
69
- return calcMarginfiMaxLtvAndLiqThreshold(supply.bank, debt.bank, supplyPrice);
69
+ return calcMarginfiMaxLtvAndLiqThresholdBps(supply.bank, debt.bank, supplyPrice);
70
70
  }
71
71
  async function getEmptyMarginfiAccountsByAuthority(umi, authority) {
72
72
  const marginfiAccounts = await umi.rpc.getProgramAccounts(marginfi_sdk_1.MARGINFI_PROGRAM_ID, {
@@ -155,7 +155,7 @@ function getBankLiquidityAvailableBaseUnit(bank, availableToDeposit) {
155
155
  ? Number(bank.config.depositLimit) - totalDeposited
156
156
  : Math.min(totalDeposited - totalBorrowed, Math.max(0, Number(bank.config.borrowLimit) - totalBorrowed));
157
157
  }
158
- return BigInt(Math.round(amountCanBeUsed));
158
+ return BigInt(Math.floor(amountCanBeUsed));
159
159
  }
160
160
  async function getTokenUsage(bank, isAsset, shares, amountUsedAdjustment) {
161
161
  let amountUsed = 0;
@@ -275,7 +275,7 @@ async function getMarginfiAccountPositionState(umi, lpUserAccount, marginfiGroup
275
275
  debtUsage = await getTokenUsage(debtBank, false, 0, contextUpdates?.debtAdjustment);
276
276
  }
277
277
  const supplyPrice = (0, priceUtils_1.safeGetPrice)(supply.mint);
278
- let [maxLtv, liqThreshold] = await getMarginfiMaxLtvAndLiqThreshold(umi, marginfiGroup ?? new web3_js_1.PublicKey(marginfiAccounts_1.DEFAULT_MARGINFI_GROUP), {
278
+ let [maxLtvBps, liqThresholdBps] = await getMarginfiMaxLtvAndLiqThresholdBps(umi, marginfiGroup ?? new web3_js_1.PublicKey(marginfiAccounts_1.DEFAULT_MARGINFI_GROUP), {
279
279
  mint: (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(supplyBank.mint),
280
280
  bank: supplyBank,
281
281
  }, {
@@ -288,15 +288,15 @@ async function getMarginfiAccountPositionState(umi, lpUserAccount, marginfiGroup
288
288
  supplyBank,
289
289
  debtBank,
290
290
  state: {
291
- liqUtilizationRateBps: (0, numberUtils_1.getLiqUtilzationRateBps)(supplyUsd, debtUsd, (0, numberUtils_1.toBps)(liqThreshold)),
291
+ liqUtilizationRateBps: (0, numberUtils_1.getLiqUtilzationRateBps)(supplyUsd, debtUsd, liqThresholdBps),
292
292
  netWorth: {
293
293
  baseAmountUsdValue: (0, numberUtils_1.toBaseUnit)(supplyUsd - debtUsd, generalAccounts_1.USD_DECIMALS),
294
294
  baseUnit: (0, numberUtils_1.toBaseUnit)((supplyUsd - debtUsd) / supplyPrice, supplyUsage.decimals),
295
295
  },
296
296
  supply: supplyUsage,
297
297
  debt: debtUsage,
298
- maxLtvBps: (0, numberUtils_1.toBps)(maxLtv),
299
- liqThresholdBps: (0, numberUtils_1.toBps)(liqThreshold),
298
+ maxLtvBps,
299
+ liqThresholdBps,
300
300
  lastRefreshed: BigInt((0, generalUtils_1.currentUnixSeconds)()),
301
301
  padding1: [],
302
302
  padding2: [],
@@ -13,11 +13,13 @@ export declare function getLiqUtilzationRateBps(supplyUsd: number, debtUsd: numb
13
13
  export declare function toBaseUnit(value: number, decimals: number): bigint;
14
14
  export declare function fromBaseUnit(value: bigint, decimals: number): number;
15
15
  export declare function fromBps(value: number): number;
16
- export declare function toBps(value: number): number;
16
+ type RoundAction = "Floor" | "Round" | "Ceil";
17
+ export declare function toBps(value: number, roundAction?: RoundAction): number;
17
18
  export declare function bytesToI80F48(bytes: number[]): number;
18
19
  export declare function uint8ArrayToBigInt(uint8Array: Uint8Array): bigint;
19
20
  export declare function getMaxLiqUtilizationRateBps(maxLtvBps: number, liqThresholdBps: number, offsetFromMaxLtv: number): number;
20
21
  export declare function maxRepayFromBps(maxLtvBps: number, liqThresholdBps: number): number;
21
22
  export declare function maxRepayToBps(maxLtvBps: number, liqThresholdBps: number): number;
22
23
  export declare function maxBoostToBps(maxLtvBps: number, liqThresholdBps: number): number;
24
+ export {};
23
25
  //# sourceMappingURL=numberUtils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"numberUtils.d.ts","sourceRoot":"","sources":["../../src/utils/numberUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,wBAAgB,eAAe,CAAC,KAAK,CAAC,EAAE,aAAa,UAEpD;AAED,wBAAgB,aAAa,CAAC,KAAK,CAAC,EAAE,aAAa,UAIlD;AAED,wBAAgB,WAAW,CAAC,KAAK,CAAC,EAAE,aAAa,UAIhD;AAED,wBAAgB,YAAY,CAAC,KAAK,CAAC,EAAE,aAAa,UAKjD;AAED,wBAAgB,eAAe,CAAC,KAAK,CAAC,EAAE,aAAa,UAKpD;AAED,wBAAgB,aAAa,CAAC,KAAK,CAAC,EAAE,aAAa,UAKlD;AAED,wBAAgB,yBAAyB,CAAC,KAAK,CAAC,EAAE,aAAa,UAI9D;AAED,wBAAgB,6BAA6B,CAAC,KAAK,CAAC,EAAE,aAAa,UAIlE;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,UAEjD;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,UAE/C;AAED,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,MAAM,GACtB,MAAM,CAMR;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAKlE;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAKpE;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE3C;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAqBrD;AAED,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAejE;AAED,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,MAAM,EACvB,gBAAgB,EAAE,MAAM,GACvB,MAAM,CAKR;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,UAKzE;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,UAKvE;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,UAKvE"}
1
+ {"version":3,"file":"numberUtils.d.ts","sourceRoot":"","sources":["../../src/utils/numberUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,wBAAgB,eAAe,CAAC,KAAK,CAAC,EAAE,aAAa,UAEpD;AAED,wBAAgB,aAAa,CAAC,KAAK,CAAC,EAAE,aAAa,UAIlD;AAED,wBAAgB,WAAW,CAAC,KAAK,CAAC,EAAE,aAAa,UAIhD;AAED,wBAAgB,YAAY,CAAC,KAAK,CAAC,EAAE,aAAa,UAKjD;AAED,wBAAgB,eAAe,CAAC,KAAK,CAAC,EAAE,aAAa,UAKpD;AAED,wBAAgB,aAAa,CAAC,KAAK,CAAC,EAAE,aAAa,UAKlD;AAED,wBAAgB,yBAAyB,CAAC,KAAK,CAAC,EAAE,aAAa,UAI9D;AAED,wBAAgB,6BAA6B,CAAC,KAAK,CAAC,EAAE,aAAa,UAIlE;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,UAEjD;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,UAE/C;AAED,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,MAAM,GACtB,MAAM,CAMR;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAKlE;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAKpE;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED,KAAK,WAAW,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,CAAC;AAC9C,wBAAgB,KAAK,CACnB,KAAK,EAAE,MAAM,EACb,WAAW,GAAE,WAAqB,GACjC,MAAM,CAOR;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAqBrD;AAED,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAejE;AAED,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,MAAM,EACvB,gBAAgB,EAAE,MAAM,GACvB,MAAM,CAKR;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,UAKzE;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,UAKvE;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,UAKvE"}
@@ -73,8 +73,13 @@ function fromBaseUnit(value, decimals) {
73
73
  function fromBps(value) {
74
74
  return value / constants_1.BASIS_POINTS;
75
75
  }
76
- function toBps(value) {
77
- return Math.round(value * constants_1.BASIS_POINTS);
76
+ function toBps(value, roundAction = "Round") {
77
+ const bps = value * constants_1.BASIS_POINTS;
78
+ return roundAction === "Round"
79
+ ? Math.round(bps)
80
+ : roundAction === "Floor"
81
+ ? Math.floor(bps)
82
+ : Math.ceil(bps);
78
83
  }
79
84
  function bytesToI80F48(bytes) {
80
85
  if (bytes.length !== 16) {
@@ -1,10 +1,12 @@
1
- import { Keypair } from "@solana/web3.js";
1
+ import { Keypair, PublicKey } from "@solana/web3.js";
2
2
  import {
3
3
  buildIronforgeApiUrl,
4
4
  consoleLog,
5
5
  getClient,
6
6
  getSolanaRpcConnection,
7
7
  LendingPlatform,
8
+ PriorityFeeSetting,
9
+ RebalanceTxBuilder,
8
10
  SOLAUTO_PROD_PROGRAM,
9
11
  SOLAUTO_TEST_PROGRAM,
10
12
  TransactionItem,
@@ -14,7 +16,7 @@ import { getSecretKey } from "./shared";
14
16
  import { createSignerFromKeypair } from "@metaplex-foundation/umi";
15
17
  import { fromWeb3JsKeypair } from "@metaplex-foundation/umi-web3js-adapters";
16
18
 
17
- const payForTransaction = false;
19
+ const payForTransaction = true;
18
20
  const testProgram = true;
19
21
 
20
22
  export async function main() {
@@ -25,7 +27,7 @@ export async function main() {
25
27
 
26
28
  const signer = createSignerFromKeypair(
27
29
  umi,
28
- fromWeb3JsKeypair(Keypair.fromSecretKey(getSecretKey()))
30
+ fromWeb3JsKeypair(Keypair.fromSecretKey(getSecretKey("solauto-manager")))
29
31
  );
30
32
 
31
33
  const client = getClient(LendingPlatform.Marginfi, {
@@ -37,16 +39,16 @@ export async function main() {
37
39
 
38
40
  await client.initialize({
39
41
  positionId: 1,
42
+ authority: new PublicKey("5UqsR2PGzbP8pGPbXEeXx86Gjz2N2UFBAuFZUSVydAEe"),
40
43
  });
41
44
 
42
45
  const transactionItems: TransactionItem[] = [];
43
46
 
44
47
  transactionItems.push(
45
48
  new TransactionItem(
46
- async () => ({
47
- tx: client.closePositionIx(),
48
- }),
49
- "close position"
49
+ async (attemptNum) =>
50
+ await new RebalanceTxBuilder(client).buildRebalanceTx(attemptNum),
51
+ "rebalance"
50
52
  )
51
53
  );
52
54
 
@@ -54,7 +56,7 @@ export async function main() {
54
56
  client,
55
57
  undefined,
56
58
  payForTransaction ? "normal" : "only-simulate",
57
- undefined,
59
+ PriorityFeeSetting.Min,
58
60
  true,
59
61
  undefined,
60
62
  { totalRetries: 5 }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@haven-fi/solauto-sdk",
3
- "version": "1.0.605",
3
+ "version": "1.0.607",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "description": "Typescript SDK for the Solauto program on the Solana blockchain",
@@ -4,6 +4,7 @@ import { FlashLoanDetails, FlashLoanRequirements } from "../../types";
4
4
  import { Signer, TransactionBuilder, Umi } from "@metaplex-foundation/umi";
5
5
  import { TokenType } from "../../generated";
6
6
  import { MarginfiFlProvider } from "./marginfiFlProvider";
7
+ import { toWeb3JsPublicKey } from "@metaplex-foundation/umi-web3js-adapters";
7
8
 
8
9
  export class FlProviderAggregator extends FlProviderBase {
9
10
  private marginfiFlProvider!: MarginfiFlProvider;
@@ -11,13 +12,15 @@ export class FlProviderAggregator extends FlProviderBase {
11
12
  constructor(
12
13
  umi: Umi,
13
14
  signer: Signer,
15
+ authority: PublicKey,
14
16
  supplyMint: PublicKey,
15
17
  debtMint: PublicKey
16
18
  ) {
17
- super(umi, signer, supplyMint, debtMint);
19
+ super(umi, signer, authority, supplyMint, debtMint);
18
20
  this.marginfiFlProvider = new MarginfiFlProvider(
19
21
  umi,
20
22
  signer,
23
+ authority,
21
24
  supplyMint,
22
25
  debtMint
23
26
  );
@@ -39,10 +42,12 @@ export class FlProviderAggregator extends FlProviderBase {
39
42
  }
40
43
 
41
44
  lutAccountsToAdd(): PublicKey[] {
42
- return [
43
- ...super.lutAccountsToAdd(),
44
- ...this.marginfiFlProvider.lutAccountsToAdd(),
45
- ];
45
+ return toWeb3JsPublicKey(this.signer.publicKey).equals(this.authority)
46
+ ? [
47
+ ...super.lutAccountsToAdd(),
48
+ ...this.marginfiFlProvider.lutAccountsToAdd(),
49
+ ]
50
+ : [];
46
51
  }
47
52
 
48
53
  private flProvider(source: TokenType): FlProviderBase {
@@ -22,6 +22,7 @@ export abstract class FlProviderBase {
22
22
  constructor(
23
23
  protected umi: Umi,
24
24
  protected signer: Signer,
25
+ protected authority: PublicKey,
25
26
  protected supplyMint: PublicKey,
26
27
  protected debtMint: PublicKey
27
28
  ) {}
@@ -41,7 +41,7 @@ export class RebalanceTxBuilder {
41
41
  private targetLiqUtilizationRateBps?: number
42
42
  ) {}
43
43
 
44
- private async shouldProceedWithRebalance() {
44
+ private shouldProceedWithRebalance() {
45
45
  return (
46
46
  this.client.pos.supplyUsd() > 0 &&
47
47
  (this.targetLiqUtilizationRateBps !== undefined ||
@@ -150,6 +150,7 @@ export abstract class SolautoClient extends ReferralStateManager {
150
150
  this.flProvider = new FlProviderAggregator(
151
151
  this.umi,
152
152
  this.signer,
153
+ this.authority,
153
154
  this.pos.supplyMint(),
154
155
  this.pos.debtMint()
155
156
  );
@@ -9,7 +9,7 @@ import {
9
9
  import { publicKey } from "@metaplex-foundation/umi";
10
10
  import { toWeb3JsPublicKey } from "@metaplex-foundation/umi-web3js-adapters";
11
11
  import {
12
- calcMarginfiMaxLtvAndLiqThreshold,
12
+ calcMarginfiMaxLtvAndLiqThresholdBps,
13
13
  fetchTokenPrices,
14
14
  getBankLiquidityAvailableBaseUnit,
15
15
  getMarginfiAccountPositionState,
@@ -62,13 +62,13 @@ export class MarginfiSolautoPositionEx extends SolautoPositionEx {
62
62
  }
63
63
 
64
64
  const [supplyPrice] = await fetchTokenPrices([this.supplyMint()]);
65
- const [maxLtv, liqThreshold] = calcMarginfiMaxLtvAndLiqThreshold(
65
+ const [maxLtvBps, liqThresholdBps] = calcMarginfiMaxLtvAndLiqThresholdBps(
66
66
  this.supplyBank,
67
67
  this.debtBank,
68
68
  supplyPrice
69
69
  );
70
70
 
71
- return [toBps(maxLtv), toBps(liqThreshold)];
71
+ return [maxLtvBps, liqThresholdBps];
72
72
  }
73
73
 
74
74
  supplyLiquidityAvailable(): bigint {
@@ -51,7 +51,7 @@ export function findMarginfiAccounts(
51
51
  throw new Error(`Marginfi accounts not found by the bank: ${bank}`);
52
52
  }
53
53
 
54
- export function calcMarginfiMaxLtvAndLiqThreshold(
54
+ export function calcMarginfiMaxLtvAndLiqThresholdBps(
55
55
  supplyBank: Bank,
56
56
  debtBank: Bank,
57
57
  supplyPrice: number
@@ -83,10 +83,10 @@ export function calcMarginfiMaxLtvAndLiqThreshold(
83
83
  maxLtv = maxLtv * Number(discount);
84
84
  }
85
85
 
86
- return [maxLtv, liqThreshold];
86
+ return [toBps(maxLtv, "Floor"), toBps(liqThreshold, "Floor")];
87
87
  }
88
88
 
89
- export async function getMarginfiMaxLtvAndLiqThreshold(
89
+ export async function getMarginfiMaxLtvAndLiqThresholdBps(
90
90
  umi: Umi,
91
91
  marginfiGroup: PublicKey,
92
92
  supply: {
@@ -137,7 +137,7 @@ export async function getMarginfiMaxLtvAndLiqThreshold(
137
137
  return [0, 0];
138
138
  }
139
139
 
140
- return calcMarginfiMaxLtvAndLiqThreshold(
140
+ return calcMarginfiMaxLtvAndLiqThresholdBps(
141
141
  supply.bank!,
142
142
  debt.bank,
143
143
  supplyPrice
@@ -266,7 +266,7 @@ export function getBankLiquidityAvailableBaseUnit(
266
266
  );
267
267
  }
268
268
 
269
- return BigInt(Math.round(amountCanBeUsed));
269
+ return BigInt(Math.floor(amountCanBeUsed));
270
270
  }
271
271
 
272
272
  async function getTokenUsage(
@@ -479,7 +479,7 @@ export async function getMarginfiAccountPositionState(
479
479
  }
480
480
 
481
481
  const supplyPrice = safeGetPrice(supply.mint!)!;
482
- let [maxLtv, liqThreshold] = await getMarginfiMaxLtvAndLiqThreshold(
482
+ let [maxLtvBps, liqThresholdBps] = await getMarginfiMaxLtvAndLiqThresholdBps(
483
483
  umi,
484
484
  marginfiGroup ?? new PublicKey(DEFAULT_MARGINFI_GROUP),
485
485
  {
@@ -508,7 +508,7 @@ export async function getMarginfiAccountPositionState(
508
508
  liqUtilizationRateBps: getLiqUtilzationRateBps(
509
509
  supplyUsd,
510
510
  debtUsd,
511
- toBps(liqThreshold)
511
+ liqThresholdBps
512
512
  ),
513
513
  netWorth: {
514
514
  baseAmountUsdValue: toBaseUnit(supplyUsd - debtUsd, USD_DECIMALS),
@@ -519,8 +519,8 @@ export async function getMarginfiAccountPositionState(
519
519
  },
520
520
  supply: supplyUsage!,
521
521
  debt: debtUsage!,
522
- maxLtvBps: toBps(maxLtv),
523
- liqThresholdBps: toBps(liqThreshold),
522
+ maxLtvBps,
523
+ liqThresholdBps,
524
524
  lastRefreshed: BigInt(currentUnixSeconds()),
525
525
  padding1: [],
526
526
  padding2: [],
@@ -88,8 +88,17 @@ export function fromBps(value: number): number {
88
88
  return value / BASIS_POINTS;
89
89
  }
90
90
 
91
- export function toBps(value: number): number {
92
- return Math.round(value * BASIS_POINTS);
91
+ type RoundAction = "Floor" | "Round" | "Ceil";
92
+ export function toBps(
93
+ value: number,
94
+ roundAction: RoundAction = "Round"
95
+ ): number {
96
+ const bps = value * BASIS_POINTS;
97
+ return roundAction === "Round"
98
+ ? Math.round(bps)
99
+ : roundAction === "Floor"
100
+ ? Math.floor(bps)
101
+ : Math.ceil(bps);
93
102
  }
94
103
 
95
104
  export function bytesToI80F48(bytes: number[]): number {