@haven-fi/solauto-sdk 1.0.670 → 1.0.672

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/dist/generated/types/positionData.d.ts +3 -3
  2. package/dist/generated/types/positionData.d.ts.map +1 -1
  3. package/dist/generated/types/positionData.js +2 -2
  4. package/dist/idls/switchboard.json +0 -1949
  5. package/dist/services/rebalance/rebalanceTxBuilder.d.ts.map +1 -1
  6. package/dist/services/rebalance/rebalanceTxBuilder.js +3 -0
  7. package/dist/services/solauto/solautoClient.d.ts +1 -1
  8. package/dist/services/solauto/solautoClient.d.ts.map +1 -1
  9. package/dist/services/solauto/solautoClient.js +2 -25
  10. package/dist/services/solauto/solautoMarginfiClient.js +1 -1
  11. package/dist/solautoPosition/marginfiSolautoPositionEx.d.ts +0 -2
  12. package/dist/solautoPosition/marginfiSolautoPositionEx.d.ts.map +1 -1
  13. package/dist/solautoPosition/marginfiSolautoPositionEx.js +3 -17
  14. package/dist/solautoPosition/positionUtils.d.ts.map +1 -1
  15. package/dist/solautoPosition/positionUtils.js +6 -1
  16. package/dist/solautoPosition/solautoPositionEx.d.ts +5 -7
  17. package/dist/solautoPosition/solautoPositionEx.d.ts.map +1 -1
  18. package/dist/solautoPosition/solautoPositionEx.js +8 -11
  19. package/dist/utils/marginfi/data.d.ts +2 -2
  20. package/dist/utils/marginfi/data.d.ts.map +1 -1
  21. package/dist/utils/marginfi/data.js +6 -2
  22. package/local/txSandbox.ts +67 -12
  23. package/package.json +1 -1
  24. package/src/generated/types/positionData.ts +4 -7
  25. package/src/services/rebalance/rebalanceTxBuilder.ts +4 -0
  26. package/src/services/solauto/solautoClient.ts +3 -27
  27. package/src/services/solauto/solautoMarginfiClient.ts +1 -1
  28. package/src/solautoPosition/marginfiSolautoPositionEx.ts +4 -32
  29. package/src/solautoPosition/positionUtils.ts +8 -1
  30. package/src/solautoPosition/solautoPositionEx.ts +14 -18
  31. package/src/utils/marginfi/data.ts +16 -7
  32. package/dist/constants/generalConstants.d.ts +0 -7
  33. package/dist/constants/generalConstants.d.ts.map +0 -1
  34. package/dist/constants/generalConstants.js +0 -10
  35. package/dist/constants/index.d.ts +0 -7
  36. package/dist/constants/index.d.ts.map +0 -1
  37. package/dist/constants/index.js +0 -22
  38. package/dist/constants/marginfiAccounts.d.ts +0 -17
  39. package/dist/constants/marginfiAccounts.d.ts.map +0 -1
  40. package/dist/constants/marginfiAccounts.js +0 -234
  41. package/dist/constants/pythConstants.d.ts +0 -24
  42. package/dist/constants/pythConstants.d.ts.map +0 -1
  43. package/dist/constants/pythConstants.js +0 -52
  44. package/dist/constants/solautoConstants.d.ts +0 -19
  45. package/dist/constants/solautoConstants.d.ts.map +0 -1
  46. package/dist/constants/solautoConstants.js +0 -40
  47. package/dist/constants/switchboardConstants.d.ts +0 -9
  48. package/dist/constants/switchboardConstants.d.ts.map +0 -1
  49. package/dist/constants/switchboardConstants.js +0 -54
  50. package/dist/constants/tokenConstants.d.ts +0 -40
  51. package/dist/constants/tokenConstants.d.ts.map +0 -1
  52. package/dist/constants/tokenConstants.js +0 -174
  53. package/dist/index.d.ts +0 -12
  54. package/dist/index.d.ts.map +0 -1
  55. package/dist/index.js +0 -27
  56. package/dist/utils/index.d.ts +0 -14
  57. package/dist/utils/index.d.ts.map +0 -1
  58. package/dist/utils/index.js +0 -29
  59. package/dist/utils/switchboardUtils.d.ts +0 -12
  60. package/dist/utils/switchboardUtils.d.ts.map +0 -1
  61. package/dist/utils/switchboardUtils.js +0 -81
@@ -1 +1 @@
1
- {"version":3,"file":"rebalanceTxBuilder.d.ts","sourceRoot":"","sources":["../../../src/services/rebalance/rebalanceTxBuilder.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAGL,qBAAqB,EACtB,MAAM,aAAa,CAAC;AA2BrB,qBAAa,kBAAkB;IAQ3B,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,2BAA2B,CAAC;IARtC,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,aAAa,CAAwB;IAC7C,OAAO,CAAC,WAAW,CAAwB;IAC3C,OAAO,CAAC,cAAc,CAAC,CAAwB;IAC/C,OAAO,CAAC,SAAS,CAAiC;gBAGxC,MAAM,EAAE,aAAa,EACrB,2BAA2B,CAAC,EAAE,MAAM,YAAA;IAG9C,OAAO,CAAC,0BAA0B;IAQlC,OAAO,CAAC,kBAAkB;IAc1B,OAAO,CAAC,oBAAoB;YAyCd,qBAAqB;IAwCnC,OAAO,CAAC,mBAAmB;IAwB3B,OAAO,CAAC,gBAAgB;IA+BxB,OAAO,CAAC,yBAAyB;YAqBnB,mBAAmB;YAwBnB,sBAAsB;YAyBtB,mBAAmB;IAmEpB,gBAAgB,CAC3B,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC;CAe9C"}
1
+ {"version":3,"file":"rebalanceTxBuilder.d.ts","sourceRoot":"","sources":["../../../src/services/rebalance/rebalanceTxBuilder.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAGL,qBAAqB,EACtB,MAAM,aAAa,CAAC;AA2BrB,qBAAa,kBAAkB;IAQ3B,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,2BAA2B,CAAC;IARtC,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,aAAa,CAAwB;IAC7C,OAAO,CAAC,WAAW,CAAwB;IAC3C,OAAO,CAAC,cAAc,CAAC,CAAwB;IAC/C,OAAO,CAAC,SAAS,CAAiC;gBAGxC,MAAM,EAAE,aAAa,EACrB,2BAA2B,CAAC,EAAE,MAAM,YAAA;IAG9C,OAAO,CAAC,0BAA0B;IAYlC,OAAO,CAAC,kBAAkB;IAc1B,OAAO,CAAC,oBAAoB;YAyCd,qBAAqB;IAwCnC,OAAO,CAAC,mBAAmB;IAwB3B,OAAO,CAAC,gBAAgB;IA+BxB,OAAO,CAAC,yBAAyB;YAqBnB,mBAAmB;YAwBnB,sBAAsB;YAyBtB,mBAAmB;IAmEpB,gBAAgB,CAC3B,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC;CAe9C"}
@@ -16,6 +16,9 @@ class RebalanceTxBuilder {
16
16
  this.priceType = generated_1.PriceType.Realtime;
17
17
  }
18
18
  shouldProceedWithRebalance() {
19
+ if (this.client.pos.selfManaged && !this.targetLiqUtilizationRateBps) {
20
+ throw new Error("A target rate must be provided for self managed position rebalances");
21
+ }
19
22
  return (this.client.pos.supplyUsd() > 0 &&
20
23
  (this.targetLiqUtilizationRateBps !== undefined ||
21
24
  this.client.pos.eligibleForRebalance()));
@@ -11,7 +11,7 @@ export interface SolautoClientArgs extends ReferralStateManagerArgs {
11
11
  positionId?: number;
12
12
  supplyMint?: PublicKey;
13
13
  debtMint?: PublicKey;
14
- lendingPool?: PublicKey;
14
+ lpPoolAccount?: PublicKey;
15
15
  lpUserAccount?: PublicKey;
16
16
  }
17
17
  export declare abstract class SolautoClient extends ReferralStateManager {
@@ -1 +1 @@
1
- {"version":3,"file":"solautoClient.d.ts","sourceRoot":"","sources":["../../../src/services/solauto/solautoClient.ts"],"names":[],"mappings":"AAAA,OAAO,gCAAgC,CAAC;AACxC,OAAO,EAA6B,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EACL,kBAAkB,EAMnB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,SAAS,EACT,aAAa,EACb,iBAAiB,EACjB,gCAAgC,EAEhC,sBAAsB,EAGvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAKL,cAAc,EACf,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACzB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAEL,iBAAiB,EAClB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAErD,MAAM,WAAW,iBAAkB,SAAQ,wBAAwB;IACjE,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;IAClC,KAAK,EAAG,UAAU,CAAC;IAEnB,SAAS,EAAG,SAAS,CAAC;IAEtB,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;IA4ExC,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;IAezB,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;IAgEK,cAAc,IAAI,OAAO,CAAC;QAC9B,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IAgBF,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,CAAC,SAAS,EAAE,SAAS,GAAG,kBAAkB;IAE5D,qBAAqB,CAAC,IAAI,EAAE,iBAAiB,GAAG,kBAAkB;IAqFlE,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,EAA6B,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EACL,kBAAkB,EAMnB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,SAAS,EACT,aAAa,EACb,iBAAiB,EACjB,gCAAgC,EAEhC,sBAAsB,EAGvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAKL,cAAc,EACf,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACzB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAEL,iBAAiB,EAClB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAErD,MAAM,WAAW,iBAAkB,SAAQ,wBAAwB;IACjE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,aAAa,CAAC,EAAE,SAAS,CAAC;CAC3B;AAED,8BAAsB,aAAc,SAAQ,oBAAoB;IACvD,eAAe,EAAG,eAAe,CAAC;IAClC,KAAK,EAAG,UAAU,CAAC;IAEnB,SAAS,EAAG,SAAS,CAAC;IAEtB,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;IAyExC,kBAAkB,IAAI,SAAS,GAAG,SAAS;IAO3C,gBAAgB,IAAI,SAAS,GAAG,SAAS;IAOnC,kBAAkB,CAAC,OAAO,CAAC,EAAE,OAAO;IAe1C,mBAAmB,IAAI,MAAM,EAAE;IAS/B,gBAAgB,IAAI,SAAS,EAAE;IAezB,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;IAgEK,cAAc,IAAI,OAAO,CAAC;QAC9B,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IAgBF,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;IAcjC,QAAQ,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,GAAG,kBAAkB;IAE5D,qBAAqB,CAAC,IAAI,EAAE,iBAAiB,GAAG,kBAAkB;IAqFlE,QAAQ,CAAC,WAAW,CAClB,aAAa,EAAE,aAAa,EAC5B,IAAI,EAAE,gBAAgB,GACrB,kBAAkB;CACtB"}
@@ -22,14 +22,11 @@ class SolautoClient extends referralStateManager_1.ReferralStateManager {
22
22
  this.pos = await (0, solautoPosition_1.getOrCreatePositionEx)(this.umi, this.authority, positionId, this.programId, {
23
23
  supplyMint: args.supplyMint,
24
24
  debtMint: args.debtMint,
25
- lendingPool: args.lendingPool,
25
+ lpPoolAccount: args.lpPoolAccount,
26
26
  lpUserAccount: args.lpUserAccount,
27
27
  lendingPlatform: this.lendingPlatform,
28
28
  lpEnv: this.lpEnv,
29
29
  }, this.contextUpdates);
30
- if (this.pos.selfManaged) {
31
- await this.pos.refreshPositionState();
32
- }
33
30
  this.positionSupplyTa = (0, utils_1.getTokenAccount)(this.pos.publicKey, this.pos.supplyMint);
34
31
  this.signerSupplyTa = (0, utils_1.getTokenAccount)((0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.signer.publicKey), this.pos.supplyMint);
35
32
  this.positionDebtTa = (0, utils_1.getTokenAccount)(this.pos.publicKey, this.pos.debtMint);
@@ -46,9 +43,9 @@ class SolautoClient extends referralStateManager_1.ReferralStateManager {
46
43
  this.otherSigners.push(...this.flProvider.otherSigners());
47
44
  this.log("Position state: ", this.pos.state);
48
45
  this.log("Position settings: ", this.pos.settings);
49
- this.log("Position DCA: ", this.pos.dca);
50
46
  this.log("Supply mint:", this.pos.supplyMint.toString());
51
47
  this.log("Debt mint:", this.pos.debtMint.toString());
48
+ this.log("LP pool:", this.pos.lpPoolAccount.toString());
52
49
  }
53
50
  referredBySupplyTa() {
54
51
  if (this.referredByState !== undefined) {
@@ -72,9 +69,6 @@ class SolautoClient extends referralStateManager_1.ReferralStateManager {
72
69
  if (this.contextUpdates.settings) {
73
70
  this.pos.updateSettings(this.contextUpdates.settings);
74
71
  }
75
- if (this.contextUpdates.dca) {
76
- this.pos.updateDca(this.contextUpdates.dca);
77
- }
78
72
  // All other live position updates can be derived by getting a fresh position state, so we don't need to do anything else form contextUpdates
79
73
  }
80
74
  }
@@ -241,23 +235,6 @@ class SolautoClient extends referralStateManager_1.ReferralStateManager {
241
235
  let dcaMint = undefined;
242
236
  let positionDcaTa = undefined;
243
237
  let signerDcaTa = undefined;
244
- const currDca = this.pos.dca;
245
- if (currDca.dcaInBaseUnit > 0) {
246
- if (currDca.tokenType === generated_1.TokenType.Supply) {
247
- dcaMint = (0, umi_1.publicKey)(this.pos.supplyMint);
248
- positionDcaTa = (0, umi_1.publicKey)(this.positionSupplyTa);
249
- signerDcaTa = (0, umi_1.publicKey)(this.signerSupplyTa);
250
- }
251
- else {
252
- dcaMint = (0, umi_1.publicKey)(this.pos.debtMint);
253
- positionDcaTa = (0, umi_1.publicKey)(this.positionDebtTa);
254
- signerDcaTa = (0, umi_1.publicKey)(this.signerDebtTa);
255
- }
256
- this.contextUpdates.new({
257
- type: "cancellingDca",
258
- value: this.pos.dca.tokenType,
259
- });
260
- }
261
238
  return (0, generated_1.cancelDCA)(this.umi, {
262
239
  signer: this.signer,
263
240
  solautoPosition: (0, umi_1.publicKey)(this.pos.publicKey),
@@ -20,7 +20,7 @@ class SolautoMarginfiClient extends solautoClient_1.SolautoClient {
20
20
  async initialize(args) {
21
21
  await super.initialize(args);
22
22
  this.mfiAccounts = (0, constants_1.getMarginfiAccounts)(this.lpEnv);
23
- this.marginfiGroup = await this.pos.lendingPool();
23
+ this.marginfiGroup = this.pos.lpPoolAccount;
24
24
  if (this.pos.selfManaged) {
25
25
  this.marginfiAccount =
26
26
  args.lpUserAccount ??
@@ -4,10 +4,8 @@ import { SolautoPositionEx } from "./solautoPositionEx";
4
4
  import { LendingPlatform, PriceType } from "../generated";
5
5
  export declare class MarginfiSolautoPositionEx extends SolautoPositionEx {
6
6
  lendingPlatform: LendingPlatform;
7
- private marginfiAccountData;
8
7
  private supplyBank;
9
8
  private debtBank;
10
- lendingPool(): Promise<PublicKey>;
11
9
  getBanks(): Promise<Bank[]>;
12
10
  priceOracles(): Promise<PublicKey[]>;
13
11
  maxLtvAndLiqThresholdBps(): Promise<[number, number]>;
@@ -1 +1 @@
1
- {"version":3,"file":"marginfiSolautoPositionEx.d.ts","sourceRoot":"","sources":["../../src/solautoPosition/marginfiSolautoPositionEx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EACL,IAAI,EAIL,MAAM,iBAAiB,CAAC;AAazB,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE1D,qBAAa,yBAA0B,SAAQ,iBAAiB;IAC9D,eAAe,kBAA4B;IAE3C,OAAO,CAAC,mBAAmB,CAAgC;IAC3D,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,QAAQ,CAAqB;IAExB,WAAW,IAAI,OAAO,CAAC,SAAS,CAAC;IAqBxC,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IAgB3B,YAAY,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IASpC,wBAAwB,IAAI,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAa3D,IAAI,wBAAwB,IAAI,MAAM,CAKrC;IAEK,oBAAoB,CAAC,SAAS,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;CAuBjE"}
1
+ {"version":3,"file":"marginfiSolautoPositionEx.d.ts","sourceRoot":"","sources":["../../src/solautoPosition/marginfiSolautoPositionEx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAoB,MAAM,iBAAiB,CAAC;AAYzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE1D,qBAAa,yBAA0B,SAAQ,iBAAiB;IAC9D,eAAe,kBAA4B;IAE3C,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,QAAQ,CAAqB;IAE/B,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IAgB3B,YAAY,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IASpC,wBAAwB,IAAI,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAa3D,IAAI,wBAAwB,IAAI,MAAM,CAKrC;IAEK,oBAAoB,CAAC,SAAS,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;CAuBjE"}
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MarginfiSolautoPositionEx = void 0;
4
4
  const marginfi_sdk_1 = require("../marginfi-sdk");
5
5
  const umi_1 = require("@metaplex-foundation/umi");
6
- const umi_web3js_adapters_1 = require("@metaplex-foundation/umi-web3js-adapters");
7
6
  const utils_1 = require("../utils");
8
7
  const constants_1 = require("../constants");
9
8
  const solautoPositionEx_1 = require("./solautoPositionEx");
@@ -12,26 +11,12 @@ class MarginfiSolautoPositionEx extends solautoPositionEx_1.SolautoPositionEx {
12
11
  constructor() {
13
12
  super(...arguments);
14
13
  this.lendingPlatform = generated_1.LendingPlatform.Marginfi;
15
- this.marginfiAccountData = null;
16
14
  this.supplyBank = null;
17
15
  this.debtBank = null;
18
16
  }
19
- async lendingPool() {
20
- if (this.lp) {
21
- return this.lp;
22
- }
23
- if (!this.marginfiAccountData && (0, utils_1.validPubkey)(this.lpUserAccount)) {
24
- this.marginfiAccountData = await (0, marginfi_sdk_1.fetchMarginfiAccount)(this.umi, (0, umi_1.publicKey)(this.lpUserAccount), { commitment: "confirmed" });
25
- this.lp = (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.marginfiAccountData.group);
26
- }
27
- if (!this.lp) {
28
- this.lp = (0, constants_1.getMarginfiAccounts)(this.lpEnv).defaultGroup;
29
- }
30
- return this.lp;
31
- }
32
17
  async getBanks() {
33
18
  if (!this.supplyBank || !this.debtBank) {
34
- const group = (await this.lendingPool()).toString();
19
+ const group = this.lpPoolAccount.toString();
35
20
  const bankAccounts = (0, constants_1.getMarginfiAccounts)(this.lpEnv).bankAccounts;
36
21
  const supplyBank = bankAccounts[group][this.supplyMint.toString()].bank;
37
22
  const debtBank = bankAccounts[group][this.debtMint.toString()].bank;
@@ -62,10 +47,11 @@ class MarginfiSolautoPositionEx extends solautoPositionEx_1.SolautoPositionEx {
62
47
  const useDesignatedMint = !this.exists ||
63
48
  !this.selfManaged ||
64
49
  (this.selfManaged && !(0, utils_1.validPubkey)(this.lpUserAccount));
65
- const resp = await (0, utils_1.getMarginfiAccountPositionState)(this.umi, { pk: this.lpUserAccount }, await this.lendingPool(), useDesignatedMint ? { mint: this.supplyMint } : undefined, useDesignatedMint ? { mint: this.debtMint } : undefined, this.lpEnv, this.contextUpdates, priceType);
50
+ const resp = await (0, utils_1.getMarginfiAccountPositionState)(this.umi, { pk: this.lpUserAccount }, this._lpPoolAccount, useDesignatedMint ? { mint: this.supplyMint } : undefined, useDesignatedMint ? { mint: this.debtMint } : undefined, this.contextUpdates, priceType);
66
51
  if (resp) {
67
52
  this.supplyBank = resp.supplyBank;
68
53
  this.debtBank = resp.debtBank;
54
+ this._lpPoolAccount = resp.marginfiGroup;
69
55
  this._data.state = resp.state;
70
56
  }
71
57
  }
@@ -1 +1 @@
1
- {"version":3,"file":"positionUtils.d.ts","sourceRoot":"","sources":["../../src/solautoPosition/positionUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAK/C,OAAO,EAEL,aAAa,EAGb,yBAAyB,EACzB,gCAAgC,EACjC,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,cAAc,EASf,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,kBAAkB,EAElB,iBAAiB,EAClB,MAAM,qBAAqB,CAAC;AAG7B,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,gCAAgC,GACzC,yBAAyB,CAQ3B;AAED,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,GAAG,EACR,UAAU,EAAE,SAAS,EAAE,GACtB,OAAO,CAAC,iBAAiB,EAAE,CAAC,CA4B9B;AAED,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,SAAS,EACpB,UAAU,CAAC,EAAE,kBAAkB,EAC/B,cAAc,CAAC,EAAE,cAAc,GAC9B,OAAO,CAAC,iBAAiB,CAAC,CAoC5B;AAED,UAAU,UAAU;IAClB,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,MAAM,GACtB,aAAa,CAgEf"}
1
+ {"version":3,"file":"positionUtils.d.ts","sourceRoot":"","sources":["../../src/solautoPosition/positionUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAK/C,OAAO,EAEL,aAAa,EAGb,yBAAyB,EACzB,gCAAgC,EACjC,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,cAAc,EASf,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,kBAAkB,EAElB,iBAAiB,EAClB,MAAM,qBAAqB,CAAC;AAG7B,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,gCAAgC,GACzC,yBAAyB,CAQ3B;AAED,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,GAAG,EACR,UAAU,EAAE,SAAS,EAAE,GACtB,OAAO,CAAC,iBAAiB,EAAE,CAAC,CA4B9B;AAED,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,SAAS,EACpB,UAAU,CAAC,EAAE,kBAAkB,EAC/B,cAAc,CAAC,EAAE,cAAc,GAC9B,OAAO,CAAC,iBAAiB,CAAC,CA2C5B;AAED,UAAU,UAAU;IAClB,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,MAAM,GACtB,aAAa,CAgEf"}
@@ -55,11 +55,16 @@ async function getOrCreatePositionEx(umi, authority, positionId, programId, cust
55
55
  customArgs,
56
56
  contextUpdates,
57
57
  };
58
+ let position;
58
59
  switch (lendingPlatform) {
59
60
  case generated_1.LendingPlatform.Marginfi:
60
- return new marginfiSolautoPositionEx_1.MarginfiSolautoPositionEx(args);
61
+ position = new marginfiSolautoPositionEx_1.MarginfiSolautoPositionEx(args);
61
62
  // TODO: PF
62
63
  }
64
+ if (position.selfManaged) {
65
+ await position.refreshPositionState();
66
+ }
67
+ return position;
63
68
  }
64
69
  function createFakePositionState(supply, debt, maxLtvBps, liqThresholdBps) {
65
70
  const supplyDecimals = (0, utils_1.tokenInfo)(supply.mint).decimals;
@@ -1,6 +1,6 @@
1
1
  import { PublicKey } from "@solana/web3.js";
2
2
  import { Umi } from "@metaplex-foundation/umi";
3
- import { DCASettings, LendingPlatform, PositionState, PriceType, SolautoPosition, SolautoSettingsParameters } from "../generated";
3
+ import { LendingPlatform, PositionState, PriceType, SolautoPosition, SolautoSettingsParameters } from "../generated";
4
4
  import { ContextUpdates } from "../utils";
5
5
  import { ProgramEnv, RebalanceAction } from "../types";
6
6
  import { TokenInfo } from "../constants";
@@ -8,7 +8,7 @@ export interface PositionCustomArgs {
8
8
  lendingPlatform: LendingPlatform;
9
9
  supplyMint?: PublicKey;
10
10
  debtMint?: PublicKey;
11
- lendingPool?: PublicKey;
11
+ lpPoolAccount?: PublicKey;
12
12
  lpUserAccount?: PublicKey;
13
13
  lpEnv?: ProgramEnv;
14
14
  }
@@ -32,29 +32,27 @@ export declare abstract class SolautoPositionEx {
32
32
  lendingPlatform: LendingPlatform;
33
33
  positionId: number;
34
34
  authority: PublicKey;
35
- protected _data: SolautoPositionExData;
36
- protected lp?: PublicKey;
35
+ protected _lpPoolAccount?: PublicKey;
37
36
  lpUserAccount?: PublicKey;
38
37
  protected lpEnv: ProgramEnv;
39
38
  private _supplyMint?;
40
39
  private _debtMint?;
40
+ protected _data: SolautoPositionExData;
41
41
  private readonly firstState;
42
42
  private _supplyPrice?;
43
43
  private _debtPrice?;
44
44
  rebalance: PositionRebalanceHelper;
45
45
  constructor(args: PositionExArgs);
46
- abstract lendingPool(): Promise<PublicKey>;
47
46
  get exists(): boolean;
48
47
  get selfManaged(): boolean;
49
48
  get positionType(): import("../generated").PositionType | undefined;
50
49
  get strategyName(): string;
50
+ get lpPoolAccount(): PublicKey;
51
51
  liqUtilizationRateBps(priceType?: PriceType): number;
52
52
  protected get data(): SolautoPositionExData;
53
53
  get state(): PositionState;
54
54
  get settings(): SolautoSettingsParameters | undefined;
55
55
  updateSettings(settings: SolautoSettingsParameters): void;
56
- get dca(): DCASettings | undefined;
57
- updateDca(dca: DCASettings): void;
58
56
  get supplyMint(): PublicKey;
59
57
  get supplyMintInfo(): TokenInfo;
60
58
  get debtMint(): PublicKey;
@@ -1 +1 @@
1
- {"version":3,"file":"solautoPositionEx.d.ts","sourceRoot":"","sources":["../../src/solautoPosition/solautoPositionEx.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"solautoPositionEx.d.ts","sourceRoot":"","sources":["../../src/solautoPosition/solautoPositionEx.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,6 @@ const utils_1 = require("../utils");
7
7
  const rebalance_1 = require("../services/rebalance");
8
8
  class SolautoPositionEx {
9
9
  constructor(args) {
10
- this.lp = undefined;
11
10
  this.lpUserAccount = undefined;
12
11
  this.umi = args.umi;
13
12
  this.contextUpdates = args.contextUpdates;
@@ -16,15 +15,15 @@ class SolautoPositionEx {
16
15
  (0, utils_1.getSolautoPositionAccount)(args.authority, args.positionId, args.programId);
17
16
  this.positionId = args.positionId ?? args.data.positionId[0];
18
17
  this.authority = args.authority ?? (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(args.data.authority);
19
- this._supplyMint = args.customArgs?.supplyMint;
20
- this._debtMint = args.customArgs?.debtMint;
21
- this.lp = args.customArgs?.lendingPool;
18
+ this._lpPoolAccount = args.customArgs?.lpPoolAccount;
22
19
  this.lpUserAccount =
23
20
  args.customArgs?.lpUserAccount ??
24
21
  (args.data.position
25
22
  ? (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(args.data.position.lpUserAccount)
26
23
  : undefined);
27
24
  this.lpEnv = args.customArgs?.lpEnv ?? "Prod";
25
+ this._supplyMint = args.customArgs?.supplyMint;
26
+ this._debtMint = args.customArgs?.debtMint;
28
27
  this._data = args.data;
29
28
  this.firstState = { ...args.data.state };
30
29
  this.rebalance = new PositionRebalanceHelper(this);
@@ -41,6 +40,10 @@ class SolautoPositionEx {
41
40
  get strategyName() {
42
41
  return (0, utils_1.solautoStrategyName)(this.supplyMint, this.debtMint);
43
42
  }
43
+ get lpPoolAccount() {
44
+ return (this._lpPoolAccount ??
45
+ (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.data.position.lpPoolAccount));
46
+ }
44
47
  liqUtilizationRateBps(priceType) {
45
48
  return (0, utils_1.getLiqUtilzationRateBps)(this.supplyUsd(priceType), this.debtUsd(priceType), this.state.liqThresholdBps);
46
49
  }
@@ -56,12 +59,6 @@ class SolautoPositionEx {
56
59
  updateSettings(settings) {
57
60
  this.data.position.settings = settings;
58
61
  }
59
- get dca() {
60
- return this.contextUpdates?.dca ?? this.data.position?.dca;
61
- }
62
- updateDca(dca) {
63
- this.data.position.dca = dca;
64
- }
65
62
  get supplyMint() {
66
63
  return this._supplyMint ?? (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.state.supply.mint);
67
64
  }
@@ -241,7 +238,7 @@ class PositionRebalanceHelper {
241
238
  return this.validRealtimePricesBoost(debtAdjustmentUsd);
242
239
  }
243
240
  eligibleForRebalance(bpsDistanceThreshold, skipExtraChecks) {
244
- if (!this.pos.settings || !this.pos.supplyUsd()) {
241
+ if (this.pos.selfManaged || !this.pos.supplyUsd()) {
245
242
  return undefined;
246
243
  }
247
244
  const realtimeLiqUtilRateBps = this.pos.liqUtilizationRateBps(generated_1.PriceType.Realtime);
@@ -1,6 +1,5 @@
1
1
  import { PublicKey } from "@solana/web3.js";
2
2
  import { Umi } from "@metaplex-foundation/umi";
3
- import { ProgramEnv } from "../../types";
4
3
  import { PositionState, PriceType } from "../../generated";
5
4
  import { Bank, MarginfiAccount } from "../../marginfi-sdk";
6
5
  import { ContextUpdates } from "../solautoUtils";
@@ -30,9 +29,10 @@ type BanksCache = {
30
29
  export declare function getMarginfiAccountPositionState(umi: Umi, lpUserAccount: {
31
30
  pk?: PublicKey;
32
31
  data?: MarginfiAccount | null;
33
- }, marginfiGroup?: PublicKey, supply?: BankSelection, debt?: BankSelection, programEnv?: ProgramEnv, contextUpdates?: ContextUpdates, priceType?: PriceType): Promise<{
32
+ }, marginfiGroup?: PublicKey, supply?: BankSelection, debt?: BankSelection, contextUpdates?: ContextUpdates, priceType?: PriceType): Promise<{
34
33
  supplyBank: Bank | null;
35
34
  debtBank: Bank | null;
35
+ marginfiGroup: PublicKey;
36
36
  state: PositionState;
37
37
  } | undefined>;
38
38
  export declare function calculateAnnualAPYs(bank: Bank): [number, number];
@@ -1 +1 @@
1
- {"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../../src/utils/marginfi/data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAa,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAI1D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,aAAa,EAAsB,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAO/E,OAAO,EACL,IAAI,EAGJ,eAAe,EAIhB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAajD,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,CA8C3B;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;AA0DD,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;AAwBhE,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,UAAU,CAAC,EAAE,UAAU,EACvB,cAAc,CAAC,EAAE,cAAc,EAC/B,SAAS,CAAC,EAAE,SAAS,GACpB,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,CA2KA;AA+DD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,IAAI,oBAU7C;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAgBnE"}
1
+ {"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../../src/utils/marginfi/data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAa,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAG1D,OAAO,EAAE,aAAa,EAAsB,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAO/E,OAAO,EACL,IAAI,EAGJ,eAAe,EAIhB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAgBjD,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,CA8C3B;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;AA0DD,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;AAwBhE,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,EAC/B,SAAS,CAAC,EAAE,SAAS,GACpB,OAAO,CACN;IACE,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAC;IACtB,aAAa,EAAE,SAAS,CAAC;IACzB,KAAK,EAAE,aAAa,CAAC;CACtB,GACD,SAAS,CACZ,CA+KA;AA+DD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,IAAI,oBAU7C;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAgBnE"}
@@ -171,7 +171,7 @@ async function getBank(umi, data, marginfiGroup) {
171
171
  ? await (0, marginfi_sdk_1.safeFetchBank)(umi, (0, umi_1.publicKey)((0, constants_1.getMarginfiAccounts)(undefined, marginfiGroup).bankAccounts[marginfiGroup.toString()][mint].bank), { commitment: "confirmed" })
172
172
  : null;
173
173
  }
174
- async function getMarginfiAccountPositionState(umi, lpUserAccount, marginfiGroup, supply, debt, programEnv, contextUpdates, priceType) {
174
+ async function getMarginfiAccountPositionState(umi, lpUserAccount, marginfiGroup, supply, debt, contextUpdates, priceType) {
175
175
  let marginfiAccount = lpUserAccount.data ??
176
176
  ((0, generalUtils_1.validPubkey)(lpUserAccount.pk)
177
177
  ? await (0, marginfi_sdk_1.safeFetchMarginfiAccount)(umi, (0, umi_1.publicKey)(lpUserAccount.pk), {
@@ -245,8 +245,11 @@ async function getMarginfiAccountPositionState(umi, lpUserAccount, marginfiGroup
245
245
  if (!debtUsage) {
246
246
  debtUsage = await getTokenUsage(debtBank, false, 0, contextUpdates?.debtAdjustment);
247
247
  }
248
+ if (!marginfiGroup) {
249
+ marginfiGroup = (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(supplyBank.group);
250
+ }
248
251
  const supplyPrice = (0, priceUtils_1.safeGetPrice)((0, umi_web3js_adapters_1.toWeb3JsPublicKey)(supplyBank.mint));
249
- let [maxLtvBps, liqThresholdBps] = await getMarginfiMaxLtvAndLiqThresholdBps(umi, marginfiGroup ?? (0, constants_1.getMarginfiAccounts)(programEnv).defaultGroup, {
252
+ let [maxLtvBps, liqThresholdBps] = await getMarginfiMaxLtvAndLiqThresholdBps(umi, marginfiGroup, {
250
253
  mint: (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(supplyBank.mint),
251
254
  bank: supplyBank,
252
255
  }, {
@@ -258,6 +261,7 @@ async function getMarginfiAccountPositionState(umi, lpUserAccount, marginfiGroup
258
261
  return {
259
262
  supplyBank,
260
263
  debtBank,
264
+ marginfiGroup,
261
265
  state: {
262
266
  liqUtilizationRateBps: (0, numberUtils_1.getLiqUtilzationRateBps)(supplyUsd, debtUsd, liqThresholdBps),
263
267
  netWorth: {
@@ -3,15 +3,21 @@ import { createSignerFromKeypair } from "@metaplex-foundation/umi";
3
3
  import { fromWeb3JsKeypair } from "@metaplex-foundation/umi-web3js-adapters";
4
4
  import {
5
5
  consoleLog,
6
+ getBatches,
6
7
  getClient,
8
+ getPositionExBulk,
7
9
  getSolanaRpcConnection,
10
+ getSolautoManagedPositions,
8
11
  LendingPlatform,
9
12
  LOCAL_IRONFORGE_API_URL,
13
+ PriceType,
10
14
  PriorityFeeSetting,
11
15
  ProgramEnv,
12
16
  rebalance,
13
17
  SOLAUTO_PROD_PROGRAM,
14
18
  SOLAUTO_TEST_PROGRAM,
19
+ SolautoClient,
20
+ TransactionItem,
15
21
  TransactionsManager,
16
22
  } from "../src";
17
23
  import { getSecretKey } from "./shared";
@@ -20,18 +26,18 @@ const payForTransaction = false;
20
26
  const testProgram = false;
21
27
  const lpEnv: ProgramEnv = "Prod";
22
28
 
23
- export async function main() {
24
- let [, umi] = getSolanaRpcConnection(
25
- LOCAL_IRONFORGE_API_URL,
26
- testProgram ? SOLAUTO_TEST_PROGRAM : SOLAUTO_PROD_PROGRAM,
27
- lpEnv
28
- );
29
+ let [, umi] = getSolanaRpcConnection(
30
+ LOCAL_IRONFORGE_API_URL,
31
+ testProgram ? SOLAUTO_TEST_PROGRAM : SOLAUTO_PROD_PROGRAM,
32
+ lpEnv
33
+ );
29
34
 
30
- const signer = createSignerFromKeypair(
31
- umi,
32
- fromWeb3JsKeypair(Keypair.fromSecretKey(getSecretKey()))
33
- );
35
+ const signer = createSignerFromKeypair(
36
+ umi,
37
+ fromWeb3JsKeypair(Keypair.fromSecretKey(getSecretKey()))
38
+ );
34
39
 
40
+ export async function main() {
35
41
  const client = getClient(LendingPlatform.Marginfi, {
36
42
  signer,
37
43
  showLogs: true,
@@ -41,7 +47,7 @@ export async function main() {
41
47
  });
42
48
 
43
49
  await client.initialize({
44
- positionId: 1,
50
+ positionId: 2,
45
51
  authority: new PublicKey("5UqsR2PGzbP8pGPbXEeXx86Gjz2N2UFBAuFZUSVydAEe"),
46
52
  // lpUserAccount: new PublicKey(
47
53
  // "GEokw9jqbh6d1xUNA3qaeYFFetbSR5Y1nt7C3chwwgSz"
@@ -60,8 +66,57 @@ export async function main() {
60
66
  { totalRetries: 5 }
61
67
  );
62
68
  const statuses = await txManager.clientSend(transactionItems);
63
-
64
69
  consoleLog(statuses);
65
70
  }
66
71
 
72
+ async function refreshAll() {
73
+ const allPositions = await getSolautoManagedPositions(umi);
74
+ const positions = await getPositionExBulk(
75
+ umi,
76
+ allPositions.map((x) => new PublicKey(x.publicKey!))
77
+ );
78
+
79
+ let client: SolautoClient | undefined;
80
+ const transactionItems: TransactionItem[] = [];
81
+ for (const pos of positions) {
82
+ client = getClient(pos.lendingPlatform, {
83
+ signer,
84
+ showLogs: true,
85
+ rpcUrl: LOCAL_IRONFORGE_API_URL,
86
+ programId: testProgram ? SOLAUTO_TEST_PROGRAM : SOLAUTO_PROD_PROGRAM,
87
+ lpEnv,
88
+ });
89
+
90
+ await client!.initialize({
91
+ positionId: pos.positionId,
92
+ authority: pos.authority,
93
+ });
94
+
95
+ const ix = client!.refreshIx(PriceType.Realtime);
96
+ transactionItems.push(
97
+ new TransactionItem(
98
+ async () => ({ tx: ix }),
99
+ `refresh ${pos.authority} (${pos.positionId})`
100
+ )
101
+ );
102
+ }
103
+
104
+ const txBatches = getBatches(transactionItems, 15);
105
+
106
+ for (const batch of txBatches) {
107
+ const txManager = new TransactionsManager(
108
+ client!,
109
+ undefined,
110
+ payForTransaction ? "normal" : "only-simulate",
111
+ PriorityFeeSetting.High,
112
+ true,
113
+ undefined,
114
+ { totalRetries: 5 }
115
+ );
116
+ const statuses = await txManager.send(batch);
117
+ consoleLog(statuses);
118
+ }
119
+ }
120
+
67
121
  main();
122
+ // refreshAll();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@haven-fi/solauto-sdk",
3
- "version": "1.0.670",
3
+ "version": "1.0.672",
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",
@@ -16,13 +16,10 @@ import {
16
16
  u8,
17
17
  } from '@metaplex-foundation/umi/serializers';
18
18
  import {
19
- DCASettings,
20
- DCASettingsArgs,
21
19
  LendingPlatform,
22
20
  LendingPlatformArgs,
23
21
  SolautoSettingsParameters,
24
22
  SolautoSettingsParametersArgs,
25
- getDCASettingsSerializer,
26
23
  getLendingPlatformSerializer,
27
24
  getSolautoSettingsParametersSerializer,
28
25
  } from '.';
@@ -34,7 +31,7 @@ export type PositionData = {
34
31
  lpSupplyAccount: PublicKey;
35
32
  lpDebtAccount: PublicKey;
36
33
  settings: SolautoSettingsParameters;
37
- dca: DCASettings;
34
+ lpPoolAccount: PublicKey;
38
35
  padding: Array<number>;
39
36
  };
40
37
 
@@ -45,7 +42,7 @@ export type PositionDataArgs = {
45
42
  lpSupplyAccount: PublicKey;
46
43
  lpDebtAccount: PublicKey;
47
44
  settings: SolautoSettingsParametersArgs;
48
- dca: DCASettingsArgs;
45
+ lpPoolAccount: PublicKey;
49
46
  padding: Array<number>;
50
47
  };
51
48
 
@@ -61,8 +58,8 @@ export function getPositionDataSerializer(): Serializer<
61
58
  ['lpSupplyAccount', publicKeySerializer()],
62
59
  ['lpDebtAccount', publicKeySerializer()],
63
60
  ['settings', getSolautoSettingsParametersSerializer()],
64
- ['dca', getDCASettingsSerializer()],
65
- ['padding', array(u32(), { size: 4 })],
61
+ ['lpPoolAccount', publicKeySerializer()],
62
+ ['padding', array(u32(), { size: 20 })],
66
63
  ],
67
64
  { description: 'PositionData' }
68
65
  ) as Serializer<PositionDataArgs, PositionData>;
@@ -46,6 +46,10 @@ export class RebalanceTxBuilder {
46
46
  ) {}
47
47
 
48
48
  private shouldProceedWithRebalance() {
49
+ if (this.client.pos.selfManaged && !this.targetLiqUtilizationRateBps) {
50
+ throw new Error("A target rate must be provided for self managed position rebalances");
51
+ }
52
+
49
53
  return (
50
54
  this.client.pos.supplyUsd() > 0 &&
51
55
  (this.targetLiqUtilizationRateBps !== undefined ||
@@ -44,7 +44,7 @@ export interface SolautoClientArgs extends ReferralStateManagerArgs {
44
44
  positionId?: number;
45
45
  supplyMint?: PublicKey;
46
46
  debtMint?: PublicKey;
47
- lendingPool?: PublicKey;
47
+ lpPoolAccount?: PublicKey;
48
48
  lpUserAccount?: PublicKey;
49
49
  }
50
50
 
@@ -85,16 +85,13 @@ export abstract class SolautoClient extends ReferralStateManager {
85
85
  {
86
86
  supplyMint: args.supplyMint,
87
87
  debtMint: args.debtMint,
88
- lendingPool: args.lendingPool,
88
+ lpPoolAccount: args.lpPoolAccount,
89
89
  lpUserAccount: args.lpUserAccount,
90
90
  lendingPlatform: this.lendingPlatform,
91
91
  lpEnv: this.lpEnv,
92
92
  },
93
93
  this.contextUpdates
94
94
  );
95
- if (this.pos.selfManaged) {
96
- await this.pos.refreshPositionState();
97
- }
98
95
 
99
96
  this.positionSupplyTa = getTokenAccount(
100
97
  this.pos.publicKey,
@@ -144,9 +141,9 @@ export abstract class SolautoClient extends ReferralStateManager {
144
141
 
145
142
  this.log("Position state: ", this.pos.state);
146
143
  this.log("Position settings: ", this.pos.settings);
147
- this.log("Position DCA: ", this.pos.dca);
148
144
  this.log("Supply mint:", this.pos.supplyMint.toString());
149
145
  this.log("Debt mint:", this.pos.debtMint.toString());
146
+ this.log("LP pool:", this.pos.lpPoolAccount.toString());
150
147
  }
151
148
 
152
149
  referredBySupplyTa(): PublicKey | undefined {
@@ -172,9 +169,6 @@ export abstract class SolautoClient extends ReferralStateManager {
172
169
  if (this.contextUpdates.settings) {
173
170
  this.pos.updateSettings(this.contextUpdates.settings);
174
171
  }
175
- if (this.contextUpdates.dca) {
176
- this.pos.updateDca(this.contextUpdates.dca);
177
- }
178
172
  // All other live position updates can be derived by getting a fresh position state, so we don't need to do anything else form contextUpdates
179
173
  }
180
174
  }
@@ -395,24 +389,6 @@ export abstract class SolautoClient extends ReferralStateManager {
395
389
  let positionDcaTa: UmiPublicKey | undefined = undefined;
396
390
  let signerDcaTa: UmiPublicKey | undefined = undefined;
397
391
 
398
- const currDca = this.pos.dca!;
399
- if (currDca.dcaInBaseUnit > 0) {
400
- if (currDca.tokenType === TokenType.Supply) {
401
- dcaMint = publicKey(this.pos.supplyMint);
402
- positionDcaTa = publicKey(this.positionSupplyTa);
403
- signerDcaTa = publicKey(this.signerSupplyTa);
404
- } else {
405
- dcaMint = publicKey(this.pos.debtMint);
406
- positionDcaTa = publicKey(this.positionDebtTa);
407
- signerDcaTa = publicKey(this.signerDebtTa);
408
- }
409
-
410
- this.contextUpdates.new({
411
- type: "cancellingDca",
412
- value: this.pos.dca!.tokenType,
413
- });
414
- }
415
-
416
392
  return cancelDCA(this.umi, {
417
393
  signer: this.signer,
418
394
  solautoPosition: publicKey(this.pos.publicKey),