@haven-fi/solauto-sdk 1.0.678 → 1.0.680
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/services/flashLoans/flProviderAggregator.d.ts +1 -0
- package/dist/services/flashLoans/flProviderAggregator.d.ts.map +1 -1
- package/dist/services/flashLoans/flProviderAggregator.js +6 -3
- package/dist/services/flashLoans/flProviderBase.d.ts +1 -0
- package/dist/services/flashLoans/flProviderBase.d.ts.map +1 -1
- package/dist/services/flashLoans/marginfiFlProvider.d.ts +1 -0
- package/dist/services/flashLoans/marginfiFlProvider.d.ts.map +1 -1
- package/dist/services/flashLoans/marginfiFlProvider.js +3 -0
- package/dist/services/rebalance/rebalanceTxBuilder.d.ts.map +1 -1
- package/dist/services/rebalance/rebalanceTxBuilder.js +7 -4
- package/dist/services/transactions/transactionUtils.js +2 -2
- package/dist/solautoPosition/marginfiSolautoPositionEx.d.ts +3 -0
- package/dist/solautoPosition/marginfiSolautoPositionEx.d.ts.map +1 -1
- package/dist/solautoPosition/marginfiSolautoPositionEx.js +14 -6
- package/dist/solautoPosition/positionUtils.js +2 -2
- package/dist/solautoPosition/solautoPositionEx.d.ts +2 -0
- package/dist/solautoPosition/solautoPositionEx.d.ts.map +1 -1
- package/dist/utils/solautoUtils.js +1 -1
- package/local/txSandbox.ts +63 -23
- package/package.json +1 -1
- package/src/services/flashLoans/flProviderAggregator.ts +7 -3
- package/src/services/flashLoans/flProviderBase.ts +2 -0
- package/src/services/flashLoans/marginfiFlProvider.ts +4 -0
- package/src/services/rebalance/rebalanceTxBuilder.ts +8 -5
- package/src/services/transactions/transactionUtils.ts +2 -2
- package/src/solautoPosition/marginfiSolautoPositionEx.ts +16 -7
- package/src/solautoPosition/positionUtils.ts +2 -2
- package/src/solautoPosition/solautoPositionEx.ts +14 -10
- package/src/utils/solautoUtils.ts +1 -1
@@ -11,6 +11,7 @@ export declare class FlProviderAggregator extends FlProviderBase {
|
|
11
11
|
otherSigners(): Signer[];
|
12
12
|
lutAccountsToAdd(): PublicKey[];
|
13
13
|
private flProvider;
|
14
|
+
liquiditySource(source: TokenType): PublicKey;
|
14
15
|
liquidityAvailable(source: TokenType): bigint;
|
15
16
|
flFeeBps(source: TokenType, signerFlashLoan?: boolean): number;
|
16
17
|
flashBorrow(flashLoan: FlashLoanDetails, destTokenAccount: PublicKey): TransactionBuilder;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"flProviderAggregator.d.ts","sourceRoot":"","sources":["../../../src/services/flashLoans/flProviderAggregator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAE3E,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC3D,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,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,SAAS,EACrB,QAAQ,EAAE,SAAS,EACnB,UAAU,CAAC,EAAE,UAAU;IAanB,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;CAK5D"}
|
1
|
+
{"version":3,"file":"flProviderAggregator.d.ts","sourceRoot":"","sources":["../../../src/services/flashLoans/flProviderAggregator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAE3E,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC3D,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,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,SAAS,EACrB,QAAQ,EAAE,SAAS,EACnB,UAAU,CAAC,EAAE,UAAU;IAanB,UAAU;IAMV,kBAAkB,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAIvD,YAAY,IAAI,MAAM,EAAE;IAKxB,gBAAgB,IAAI,SAAS,EAAE;IAS/B,OAAO,CAAC,UAAU;IAKlB,eAAe,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS;IAI7C,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;CAK5D"}
|
@@ -10,7 +10,7 @@ class FlProviderAggregator extends flProviderBase_1.FlProviderBase {
|
|
10
10
|
this.marginfiFlProvider = new marginfiFlProvider_1.MarginfiFlProvider(umi, signer, authority, supplyMint, debtMint, programEnv);
|
11
11
|
}
|
12
12
|
async initialize() {
|
13
|
-
// TODO:
|
13
|
+
// TODO: LP
|
14
14
|
// Once we have more than one, set the right fl provider for each liquidity source
|
15
15
|
await this.marginfiFlProvider.initialize();
|
16
16
|
}
|
@@ -18,7 +18,7 @@ class FlProviderAggregator extends flProviderBase_1.FlProviderBase {
|
|
18
18
|
return await this.marginfiFlProvider.initializeIMfiAccounts();
|
19
19
|
}
|
20
20
|
otherSigners() {
|
21
|
-
// TODO:
|
21
|
+
// TODO: LP
|
22
22
|
return [...this.flSigners, ...this.marginfiFlProvider.otherSigners()];
|
23
23
|
}
|
24
24
|
lutAccountsToAdd() {
|
@@ -30,9 +30,12 @@ class FlProviderAggregator extends flProviderBase_1.FlProviderBase {
|
|
30
30
|
: [];
|
31
31
|
}
|
32
32
|
flProvider(source) {
|
33
|
-
// TODO:
|
33
|
+
// TODO: LP
|
34
34
|
return this.marginfiFlProvider;
|
35
35
|
}
|
36
|
+
liquiditySource(source) {
|
37
|
+
return this.flProvider(source).liquiditySource(source);
|
38
|
+
}
|
36
39
|
liquidityAvailable(source) {
|
37
40
|
return this.flProvider(source).liquidityAvailable(source);
|
38
41
|
}
|
@@ -17,6 +17,7 @@ export declare abstract class FlProviderBase {
|
|
17
17
|
mint(source: TokenType): PublicKey;
|
18
18
|
abstract liquidityAvailable(source: TokenType): bigint;
|
19
19
|
liquidityAvailableUsd(source: TokenType): number;
|
20
|
+
abstract liquiditySource(source: TokenType): PublicKey;
|
20
21
|
abstract flFeeBps(source: TokenType, signerFlashLoan?: boolean): number;
|
21
22
|
abstract flashBorrow(flashLoan: FlashLoanDetails, destTokenAccount: PublicKey): TransactionBuilder;
|
22
23
|
abstract flashRepay(flashLoan: FlashLoanDetails): TransactionBuilder;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"flProviderBase.d.ts","sourceRoot":"","sources":["../../../src/services/flashLoans/flProviderBase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EACL,MAAM,EAEN,kBAAkB,EAClB,GAAG,EACJ,MAAM,0BAA0B,CAAC;AASlC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE3D,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;IAC7B,SAAS,CAAC,UAAU,EAAE,UAAU;IARlC,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,EACnB,UAAU,GAAE,UAAmB;IAG3C,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,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EACL,MAAM,EAEN,kBAAkB,EAClB,GAAG,EACJ,MAAM,0BAA0B,CAAC;AASlC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE3D,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;IAC7B,SAAS,CAAC,UAAU,EAAE,UAAU;IARlC,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,EACnB,UAAU,GAAE,UAAmB;IAG3C,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,eAAe,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS;IAEtD,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"}
|
@@ -16,6 +16,7 @@ export declare class MarginfiFlProvider extends FlProviderBase {
|
|
16
16
|
private setIntermediaryAccount;
|
17
17
|
initializeIMfiAccounts(): Promise<TransactionBuilder>;
|
18
18
|
lutAccountsToAdd(): PublicKey[];
|
19
|
+
liquiditySource(source: TokenType): PublicKey;
|
19
20
|
private liquidityBank;
|
20
21
|
private iMfiAccount;
|
21
22
|
liquidityAvailable(source: TokenType): bigint;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"marginfiFlProvider.d.ts","sourceRoot":"","sources":["../../../src/services/flashLoans/marginfiFlProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAA8B,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAML,kBAAkB,EACnB,MAAM,0BAA0B,CAAC;AAclC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAiBlD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAQ5C,qBAAa,kBAAmB,SAAQ,cAAc;IACpD,OAAO,CAAC,wBAAwB,CAAqB;IACrD,OAAO,CAAC,yBAAyB,CAAQ;IACzC,OAAO,CAAC,uBAAuB,CAAQ;IAEvC,OAAO,CAAC,iBAAiB,CAAe;IACxC,OAAO,CAAC,eAAe,CAAe;IACtC,OAAO,CAAC,uBAAuB,CAAiB;IAChD,OAAO,CAAC,qBAAqB,CAAiB;IAExC,UAAU;YAiBF,iBAAiB;YA6CjB,sBAAsB;IAsD9B,sBAAsB,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAyC3D,gBAAgB,IAAI,SAAS,EAAE;IAY/B,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,WAAW;IAMnB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM;IAI7C,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,eAAe,CAAC,EAAE,OAAO,GAAG,MAAM;IAc9D,WAAW,CACT,SAAS,EAAE,gBAAgB,EAC3B,gBAAgB,EAAE,SAAS,GAC1B,kBAAkB;IAoCrB,UAAU,CAAC,SAAS,EAAE,gBAAgB,GAAG,kBAAkB;IAgD3D,YAAY,CACV,eAAe,EAAE,SAAS,EAC1B,IAAI,EAAE,SAAS,EACf,aAAa,EAAE,SAAS;CAW3B"}
|
1
|
+
{"version":3,"file":"marginfiFlProvider.d.ts","sourceRoot":"","sources":["../../../src/services/flashLoans/marginfiFlProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAA8B,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAML,kBAAkB,EACnB,MAAM,0BAA0B,CAAC;AAclC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAiBlD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAQ5C,qBAAa,kBAAmB,SAAQ,cAAc;IACpD,OAAO,CAAC,wBAAwB,CAAqB;IACrD,OAAO,CAAC,yBAAyB,CAAQ;IACzC,OAAO,CAAC,uBAAuB,CAAQ;IAEvC,OAAO,CAAC,iBAAiB,CAAe;IACxC,OAAO,CAAC,eAAe,CAAe;IACtC,OAAO,CAAC,uBAAuB,CAAiB;IAChD,OAAO,CAAC,qBAAqB,CAAiB;IAExC,UAAU;YAiBF,iBAAiB;YA6CjB,sBAAsB;IAsD9B,sBAAsB,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAyC3D,gBAAgB,IAAI,SAAS,EAAE;IAY/B,eAAe,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS;IAI7C,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,WAAW;IAMnB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM;IAI7C,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,eAAe,CAAC,EAAE,OAAO,GAAG,MAAM;IAc9D,WAAW,CACT,SAAS,EAAE,gBAAgB,EAC3B,gBAAgB,EAAE,SAAS,GAC1B,kBAAkB;IAoCrB,UAAU,CAAC,SAAS,EAAE,gBAAgB,GAAG,kBAAkB;IAgD3D,YAAY,CACV,eAAe,EAAE,SAAS,EAC1B,IAAI,EAAE,SAAS,EACf,aAAa,EAAE,SAAS;CAW3B"}
|
@@ -124,6 +124,9 @@ class MarginfiFlProvider extends flProviderBase_1.FlProviderBase {
|
|
124
124
|
])).map((x) => new web3_js_1.PublicKey(x)),
|
125
125
|
];
|
126
126
|
}
|
127
|
+
liquiditySource(source) {
|
128
|
+
return (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.liquidityBank(source).publicKey);
|
129
|
+
}
|
127
130
|
liquidityBank(source) {
|
128
131
|
return source === generated_1.TokenType.Supply
|
129
132
|
? this.supplyBankLiquiditySource
|
@@ -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;AAgCrB,qBAAa,kBAAkB;IAS3B,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,2BAA2B,CAAC;IATtC,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;IAClD,OAAO,CAAC,QAAQ,CAAC,CAAS;gBAGhB,MAAM,EAAE,aAAa,EACrB,2BAA2B,CAAC,EAAE,MAAM,YAAA;IAG9C,OAAO,CAAC,0BAA0B;IAclC,OAAO,CAAC,kBAAkB;IAc1B,OAAO,CAAC,oBAAoB;
|
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;AAgCrB,qBAAa,kBAAkB;IAS3B,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,2BAA2B,CAAC;IATtC,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;IAClD,OAAO,CAAC,QAAQ,CAAC,CAAS;gBAGhB,MAAM,EAAE,aAAa,EACrB,2BAA2B,CAAC,EAAE,MAAM,YAAA;IAG9C,OAAO,CAAC,0BAA0B;IAclC,OAAO,CAAC,kBAAkB;IAc1B,OAAO,CAAC,oBAAoB;IA2C5B,OAAO,CAAC,iCAAiC;YAgC3B,qBAAqB;IA2CnC,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"}
|
@@ -29,12 +29,14 @@ class RebalanceTxBuilder {
|
|
29
29
|
getFlLiquiditySource(supplyLiquidityAvailable, debtLiquidityAvailable) {
|
30
30
|
const debtAdjustmentUsd = Math.abs(this.values.debtAdjustmentUsd);
|
31
31
|
const insufficientLiquidity = (amountNeededUsd, liquidityAvailable, tokenMint) => {
|
32
|
-
|
33
|
-
(
|
34
|
-
|
35
|
-
|
32
|
+
const liquidityUsd = (0, utils_1.fromBaseUnit)(liquidityAvailable, (0, utils_1.tokenInfo)(tokenMint).decimals) *
|
33
|
+
((0, utils_1.safeGetPrice)(tokenMint) ?? 0);
|
34
|
+
(0, utils_1.consoleLog)(liquidityUsd);
|
35
|
+
return amountNeededUsd > liquidityUsd * 0.95;
|
36
36
|
};
|
37
|
+
(0, utils_1.consoleLog)("Supply liquidity available:", supplyLiquidityAvailable);
|
37
38
|
const insufficientSupplyLiquidity = insufficientLiquidity(debtAdjustmentUsd, supplyLiquidityAvailable, this.client.pos.supplyMint);
|
39
|
+
(0, utils_1.consoleLog)("Debt liquidity available:", debtLiquidityAvailable);
|
38
40
|
const insufficientDebtLiquidity = insufficientLiquidity(debtAdjustmentUsd, debtLiquidityAvailable, this.client.pos.debtMint);
|
39
41
|
let useDebtLiquidity = this.values.rebalanceDirection === generated_1.RebalanceDirection.Boost ||
|
40
42
|
insufficientSupplyLiquidity;
|
@@ -70,6 +72,7 @@ class RebalanceTxBuilder {
|
|
70
72
|
}
|
71
73
|
const stdFlLiquiditySource = this.getFlLiquiditySource(this.client.flProvider.liquidityAvailable(generated_1.TokenType.Supply), this.client.flProvider.liquidityAvailable(generated_1.TokenType.Debt));
|
72
74
|
if ((attemptNum ?? 0) >= 3 || stdFlLiquiditySource === undefined) {
|
75
|
+
(0, utils_1.consoleLog)("Checking signer liquidity");
|
73
76
|
const { supplyBalance, debtBalance } = await this.client.signerBalances();
|
74
77
|
const signerFlLiquiditySource = this.getFlLiquiditySource(supplyBalance, debtBalance);
|
75
78
|
if (signerFlLiquiditySource) {
|
@@ -57,7 +57,7 @@ async function transactionChoresBefore(client, accountsGettingCreated, solautoAc
|
|
57
57
|
!(await (0, utils_1.getSolanaAccountCreated)(client.umi, client.marginfiAccountPk))) {
|
58
58
|
chores = chores.add(client.marginfiAccountInitialize(client.marginfiAccount));
|
59
59
|
}
|
60
|
-
// TODO:
|
60
|
+
// TODO: LP
|
61
61
|
if (!client.pos.exists) {
|
62
62
|
chores = chores.add(client.openPositionIx());
|
63
63
|
}
|
@@ -297,7 +297,7 @@ function getSolautoActions(umi, tx) {
|
|
297
297
|
}
|
298
298
|
catch { }
|
299
299
|
}
|
300
|
-
// TODO:
|
300
|
+
// TODO: LP
|
301
301
|
});
|
302
302
|
return solautoActions;
|
303
303
|
}
|
@@ -7,12 +7,15 @@ export declare class MarginfiSolautoPositionEx extends SolautoPositionEx {
|
|
7
7
|
maxLtvPriceType: PriceType;
|
8
8
|
private supplyBank;
|
9
9
|
private debtBank;
|
10
|
+
private getBankAccounts;
|
10
11
|
getBanks(): Promise<Bank[]>;
|
11
12
|
priceOracles(): Promise<PublicKey[]>;
|
12
13
|
maxLtvAndLiqThresholdBps(): Promise<[number, number]>;
|
13
14
|
private getUpToDateLiquidityAvailable;
|
14
15
|
updateSupplyLiquidityDepositable(banks: Bank[]): void;
|
15
16
|
updateDebtLiquidityAvailable(banks: Bank[]): void;
|
17
|
+
get lpSupplyAccount(): PublicKey;
|
18
|
+
get lpDebtAccount(): PublicKey;
|
16
19
|
get supplyLiquidityAvailable(): number;
|
17
20
|
refreshPositionState(priceType?: PriceType): Promise<void>;
|
18
21
|
}
|
@@ -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,EAAE,IAAI,EAAoB,MAAM,iBAAiB,CAAC;AAezD,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;IAC3C,eAAe,YAAiB;IAEhC,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,QAAQ,CAAqB;
|
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;AAezD,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;IAC3C,eAAe,YAAiB;IAEhC,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,QAAQ,CAAqB;IAErC,OAAO,CAAC,eAAe;IAMjB,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IAW3B,YAAY,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IASpC,wBAAwB,IAAI,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAa3D,OAAO,CAAC,6BAA6B;IAwBrC,gCAAgC,CAAC,KAAK,EAAE,IAAI,EAAE;IAK9C,4BAA4B,CAAC,KAAK,EAAE,IAAI,EAAE;IAQ1C,IAAI,eAAe,cAElB;IAED,IAAI,aAAa,cAEhB;IAED,IAAI,wBAAwB,IAAI,MAAM,CAKrC;IAEK,oBAAoB,CAAC,SAAS,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;CA2BjE"}
|
@@ -1,6 +1,7 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.MarginfiSolautoPositionEx = void 0;
|
4
|
+
const web3_js_1 = require("@solana/web3.js");
|
4
5
|
const marginfi_sdk_1 = require("../marginfi-sdk");
|
5
6
|
const umi_1 = require("@metaplex-foundation/umi");
|
6
7
|
const utils_1 = require("../utils");
|
@@ -15,15 +16,16 @@ class MarginfiSolautoPositionEx extends solautoPositionEx_1.SolautoPositionEx {
|
|
15
16
|
this.supplyBank = null;
|
16
17
|
this.debtBank = null;
|
17
18
|
}
|
19
|
+
getBankAccounts(mint) {
|
20
|
+
const group = this.lpPoolAccount.toString();
|
21
|
+
const bankAccounts = (0, constants_1.getMarginfiAccounts)(this.lpEnv).bankAccounts;
|
22
|
+
return bankAccounts[group][mint.toString()];
|
23
|
+
}
|
18
24
|
async getBanks() {
|
19
25
|
if (!this.supplyBank || !this.debtBank) {
|
20
|
-
const group = this.lpPoolAccount.toString();
|
21
|
-
const bankAccounts = (0, constants_1.getMarginfiAccounts)(this.lpEnv).bankAccounts;
|
22
|
-
const supplyBank = bankAccounts[group][this.supplyMint.toString()].bank;
|
23
|
-
const debtBank = bankAccounts[group][this.debtMint.toString()].bank;
|
24
26
|
[this.supplyBank, this.debtBank] = await (0, marginfi_sdk_1.safeFetchAllBank)(this.umi, [
|
25
|
-
(0, umi_1.publicKey)(
|
26
|
-
(0, umi_1.publicKey)(
|
27
|
+
(0, umi_1.publicKey)(this.lpSupplyAccount),
|
28
|
+
(0, umi_1.publicKey)(this.lpDebtAccount),
|
27
29
|
]);
|
28
30
|
}
|
29
31
|
return [this.supplyBank, this.debtBank];
|
@@ -58,6 +60,12 @@ class MarginfiSolautoPositionEx extends solautoPositionEx_1.SolautoPositionEx {
|
|
58
60
|
updateDebtLiquidityAvailable(banks) {
|
59
61
|
this._data.state.debt.amountCanBeUsed = this.getUpToDateLiquidityAvailable(banks, this.debtMint, false);
|
60
62
|
}
|
63
|
+
get lpSupplyAccount() {
|
64
|
+
return new web3_js_1.PublicKey(this.getBankAccounts(this.supplyMint).bank);
|
65
|
+
}
|
66
|
+
get lpDebtAccount() {
|
67
|
+
return new web3_js_1.PublicKey(this.getBankAccounts(this.debtMint).bank);
|
68
|
+
}
|
61
69
|
get supplyLiquidityAvailable() {
|
62
70
|
return (0, utils_1.fromBaseUnit)((0, utils_1.getBankLiquidityAvailableBaseUnit)(this.supplyBank, false), this.supplyMintInfo.decimals);
|
63
71
|
}
|
@@ -31,7 +31,7 @@ async function getPositionExBulk(umi, publicKeys) {
|
|
31
31
|
publicKey: (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(x.publicKey),
|
32
32
|
data: x,
|
33
33
|
});
|
34
|
-
// TODO:
|
34
|
+
// TODO: LP
|
35
35
|
}
|
36
36
|
});
|
37
37
|
}
|
@@ -59,7 +59,7 @@ async function getOrCreatePositionEx(umi, authority, positionId, programId, cust
|
|
59
59
|
switch (lendingPlatform) {
|
60
60
|
case generated_1.LendingPlatform.Marginfi:
|
61
61
|
position = new marginfiSolautoPositionEx_1.MarginfiSolautoPositionEx(args);
|
62
|
-
// TODO:
|
62
|
+
// TODO: LP
|
63
63
|
}
|
64
64
|
if (position.selfManaged) {
|
65
65
|
await position.refreshPositionState();
|
@@ -78,6 +78,8 @@ export declare abstract class SolautoPositionEx {
|
|
78
78
|
get supplyLiquidityUsdAvailable(): number;
|
79
79
|
get debtLiquidityAvailable(): number;
|
80
80
|
get debtLiquidityUsdAvailable(): number;
|
81
|
+
abstract get lpSupplyAccount(): PublicKey;
|
82
|
+
abstract get lpDebtAccount(): PublicKey;
|
81
83
|
abstract get supplyLiquidityAvailable(): number;
|
82
84
|
abstract maxLtvAndLiqThresholdBps(): Promise<[number, number]>;
|
83
85
|
abstract priceOracles(): Promise<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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"}
|
@@ -126,7 +126,7 @@ async function getSolautoManagedPositions(umi, authority, positionTypeFilter) {
|
|
126
126
|
.mint,
|
127
127
|
];
|
128
128
|
}
|
129
|
-
// TODO:
|
129
|
+
// TODO: LP
|
130
130
|
return {
|
131
131
|
publicKey: (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(x.publicKey),
|
132
132
|
authority: (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(position.authority),
|
package/local/txSandbox.ts
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
import { Keypair, PublicKey } from "@solana/web3.js";
|
2
|
-
import { createSignerFromKeypair } from "@metaplex-foundation/umi";
|
2
|
+
import { createSignerFromKeypair, publicKey } from "@metaplex-foundation/umi";
|
3
3
|
import { fromWeb3JsKeypair } from "@metaplex-foundation/umi-web3js-adapters";
|
4
4
|
import {
|
5
5
|
consoleLog,
|
6
|
+
fromBaseUnit,
|
6
7
|
getBatches,
|
7
8
|
getClient,
|
8
9
|
getPositionExBulk,
|
@@ -10,6 +11,7 @@ import {
|
|
10
11
|
getSolautoManagedPositions,
|
11
12
|
LendingPlatform,
|
12
13
|
LOCAL_IRONFORGE_API_URL,
|
14
|
+
openSolautoPosition,
|
13
15
|
PriceType,
|
14
16
|
PriorityFeeSetting,
|
15
17
|
ProgramEnv,
|
@@ -17,13 +19,25 @@ import {
|
|
17
19
|
SOLAUTO_PROD_PROGRAM,
|
18
20
|
SOLAUTO_TEST_PROGRAM,
|
19
21
|
SolautoClient,
|
22
|
+
tokenInfo,
|
20
23
|
TransactionItem,
|
21
24
|
TransactionsManager,
|
25
|
+
USDC,
|
26
|
+
deposit,
|
27
|
+
toBaseUnit,
|
28
|
+
RETARDIO,
|
29
|
+
withdraw,
|
30
|
+
closeSolautoPosition,
|
31
|
+
fetchBank,
|
32
|
+
getBankLiquidityAvailableBaseUnit,
|
33
|
+
fetchTokenPrices,
|
34
|
+
fetchMarginfiAccount,
|
35
|
+
marginfiAccountEmpty,
|
22
36
|
} from "../src";
|
23
37
|
import { getSecretKey } from "./shared";
|
24
38
|
|
25
|
-
const payForTransaction =
|
26
|
-
const testProgram =
|
39
|
+
const payForTransaction = true;
|
40
|
+
const testProgram = true;
|
27
41
|
const lpEnv: ProgramEnv = "Prod";
|
28
42
|
|
29
43
|
let [, umi] = getSolanaRpcConnection(
|
@@ -34,7 +48,7 @@ let [, umi] = getSolanaRpcConnection(
|
|
34
48
|
|
35
49
|
const signer = createSignerFromKeypair(
|
36
50
|
umi,
|
37
|
-
fromWeb3JsKeypair(Keypair.fromSecretKey(getSecretKey(
|
51
|
+
fromWeb3JsKeypair(Keypair.fromSecretKey(getSecretKey()))
|
38
52
|
);
|
39
53
|
|
40
54
|
export async function main() {
|
@@ -46,27 +60,53 @@ export async function main() {
|
|
46
60
|
lpEnv,
|
47
61
|
});
|
48
62
|
|
49
|
-
await client.initialize({
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
63
|
+
// await client.initialize({
|
64
|
+
// positionId: 2,
|
65
|
+
// supplyMint: new PublicKey(USDC),
|
66
|
+
// debtMint: new PublicKey(RETARDIO),
|
67
|
+
// lpPoolAccount: new PublicKey("EpzY5EYF1A5eFDRfjtsPXSYMPmEx1FXKaXPnouTMF4dm")
|
68
|
+
// // authority: new PublicKey("5UqsR2PGzbP8pGPbXEeXx86Gjz2N2UFBAuFZUSVydAEe"),
|
69
|
+
// // lpUserAccount: new PublicKey(
|
70
|
+
// // "GEokw9jqbh6d1xUNA3qaeYFFetbSR5Y1nt7C3chwwgSz"
|
71
|
+
// // ),
|
72
|
+
// });
|
56
73
|
|
57
|
-
const
|
74
|
+
const bank = await fetchBank(client.umi, publicKey("3J5rKmCi7JXG6qmiobFJyAidVTnnNAMGj4jomfBxKGRM"));
|
58
75
|
|
59
|
-
const
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
);
|
68
|
-
|
69
|
-
|
76
|
+
const mint = new PublicKey(RETARDIO);
|
77
|
+
const [price] = await fetchTokenPrices([mint]);
|
78
|
+
const debtAvailableBaseUnit = getBankLiquidityAvailableBaseUnit(bank, false);
|
79
|
+
const debtAvailable = fromBaseUnit(debtAvailableBaseUnit, tokenInfo(mint).decimals);
|
80
|
+
const debtAvailableUsd = debtAvailable * price;
|
81
|
+
|
82
|
+
console.log(debtAvailable, debtAvailableUsd);
|
83
|
+
|
84
|
+
const account = await fetchMarginfiAccount(umi, publicKey("CKDgZfh7b7FdYyL7qWxYTKmyKYgr2PzsQcm2b5ptDxYW"));
|
85
|
+
|
86
|
+
console.log(marginfiAccountEmpty(account));
|
87
|
+
|
88
|
+
// const transactionItems = [
|
89
|
+
// openSolautoPosition(client, {
|
90
|
+
// boostGap: 250,
|
91
|
+
// boostToBps: 8681,
|
92
|
+
// repayGap: 250,
|
93
|
+
// repayToBps: 8681,
|
94
|
+
// }),
|
95
|
+
// deposit(client, toBaseUnit(10, tokenInfo(new PublicKey(USDC)).decimals)),
|
96
|
+
// rebalance(client, 8500),
|
97
|
+
// ];
|
98
|
+
|
99
|
+
// const txManager = new TransactionsManager(
|
100
|
+
// client,
|
101
|
+
// undefined,
|
102
|
+
// payForTransaction ? "normal" : "only-simulate",
|
103
|
+
// PriorityFeeSetting.High,
|
104
|
+
// true,
|
105
|
+
// undefined,
|
106
|
+
// { totalRetries: 5 }
|
107
|
+
// );
|
108
|
+
// const statuses = await txManager.clientSend(transactionItems);
|
109
|
+
// consoleLog(statuses);
|
70
110
|
}
|
71
111
|
|
72
112
|
async function refreshAll() {
|
package/package.json
CHANGED
@@ -29,7 +29,7 @@ export class FlProviderAggregator extends FlProviderBase {
|
|
29
29
|
}
|
30
30
|
|
31
31
|
async initialize() {
|
32
|
-
// TODO:
|
32
|
+
// TODO: LP
|
33
33
|
// Once we have more than one, set the right fl provider for each liquidity source
|
34
34
|
await this.marginfiFlProvider.initialize();
|
35
35
|
}
|
@@ -39,7 +39,7 @@ export class FlProviderAggregator extends FlProviderBase {
|
|
39
39
|
}
|
40
40
|
|
41
41
|
otherSigners(): Signer[] {
|
42
|
-
// TODO:
|
42
|
+
// TODO: LP
|
43
43
|
return [...this.flSigners, ...this.marginfiFlProvider.otherSigners()];
|
44
44
|
}
|
45
45
|
|
@@ -53,10 +53,14 @@ export class FlProviderAggregator extends FlProviderBase {
|
|
53
53
|
}
|
54
54
|
|
55
55
|
private flProvider(source: TokenType): FlProviderBase {
|
56
|
-
// TODO:
|
56
|
+
// TODO: LP
|
57
57
|
return this.marginfiFlProvider;
|
58
58
|
}
|
59
59
|
|
60
|
+
liquiditySource(source: TokenType): PublicKey {
|
61
|
+
return this.flProvider(source).liquiditySource(source);
|
62
|
+
}
|
63
|
+
|
60
64
|
liquidityAvailable(source: TokenType): bigint {
|
61
65
|
return this.flProvider(source).liquidityAvailable(source);
|
62
66
|
}
|
@@ -225,6 +225,10 @@ export class MarginfiFlProvider extends FlProviderBase {
|
|
225
225
|
];
|
226
226
|
}
|
227
227
|
|
228
|
+
liquiditySource(source: TokenType): PublicKey {
|
229
|
+
return toWeb3JsPublicKey(this.liquidityBank(source).publicKey);
|
230
|
+
}
|
231
|
+
|
228
232
|
private liquidityBank(source: TokenType): Bank {
|
229
233
|
return source === TokenType.Supply
|
230
234
|
? this.supplyBankLiquiditySource
|
@@ -90,19 +90,21 @@ export class RebalanceTxBuilder {
|
|
90
90
|
liquidityAvailable: bigint,
|
91
91
|
tokenMint: PublicKey
|
92
92
|
) => {
|
93
|
-
|
94
|
-
amountNeededUsd >
|
93
|
+
const liquidityUsd =
|
95
94
|
fromBaseUnit(liquidityAvailable, tokenInfo(tokenMint).decimals) *
|
96
|
-
|
97
|
-
|
98
|
-
|
95
|
+
(safeGetPrice(tokenMint) ?? 0);
|
96
|
+
consoleLog(liquidityUsd);
|
97
|
+
return amountNeededUsd > liquidityUsd * 0.95;
|
99
98
|
};
|
100
99
|
|
100
|
+
consoleLog("Supply liquidity available:", supplyLiquidityAvailable);
|
101
101
|
const insufficientSupplyLiquidity = insufficientLiquidity(
|
102
102
|
debtAdjustmentUsd,
|
103
103
|
supplyLiquidityAvailable,
|
104
104
|
this.client.pos.supplyMint
|
105
105
|
);
|
106
|
+
|
107
|
+
consoleLog("Debt liquidity available:", debtLiquidityAvailable);
|
106
108
|
const insufficientDebtLiquidity = insufficientLiquidity(
|
107
109
|
debtAdjustmentUsd,
|
108
110
|
debtLiquidityAvailable,
|
@@ -172,6 +174,7 @@ export class RebalanceTxBuilder {
|
|
172
174
|
);
|
173
175
|
|
174
176
|
if ((attemptNum ?? 0) >= 3 || stdFlLiquiditySource === undefined) {
|
177
|
+
consoleLog("Checking signer liquidity");
|
175
178
|
const { supplyBalance, debtBalance } = await this.client.signerBalances();
|
176
179
|
const signerFlLiquiditySource = this.getFlLiquiditySource(
|
177
180
|
supplyBalance,
|
@@ -145,7 +145,7 @@ async function transactionChoresBefore(
|
|
145
145
|
client.marginfiAccountInitialize(client.marginfiAccount as Signer)
|
146
146
|
);
|
147
147
|
}
|
148
|
-
// TODO:
|
148
|
+
// TODO: LP
|
149
149
|
|
150
150
|
if (!client.pos.exists) {
|
151
151
|
chores = chores.add(client.openPositionIx());
|
@@ -517,7 +517,7 @@ function getSolautoActions(umi: Umi, tx: TransactionBuilder): SolautoAction[] {
|
|
517
517
|
} catch {}
|
518
518
|
}
|
519
519
|
|
520
|
-
// TODO:
|
520
|
+
// TODO: LP
|
521
521
|
});
|
522
522
|
|
523
523
|
return solautoActions;
|
@@ -24,16 +24,17 @@ export class MarginfiSolautoPositionEx extends SolautoPositionEx {
|
|
24
24
|
private supplyBank: Bank | null = null;
|
25
25
|
private debtBank: Bank | null = null;
|
26
26
|
|
27
|
+
private getBankAccounts(mint: PublicKey) {
|
28
|
+
const group = this.lpPoolAccount.toString();
|
29
|
+
const bankAccounts = getMarginfiAccounts(this.lpEnv).bankAccounts;
|
30
|
+
return bankAccounts[group][mint.toString()];
|
31
|
+
}
|
32
|
+
|
27
33
|
async getBanks(): Promise<Bank[]> {
|
28
34
|
if (!this.supplyBank || !this.debtBank) {
|
29
|
-
const group = this.lpPoolAccount.toString();
|
30
|
-
const bankAccounts = getMarginfiAccounts(this.lpEnv).bankAccounts;
|
31
|
-
const supplyBank = bankAccounts[group][this.supplyMint.toString()].bank;
|
32
|
-
const debtBank = bankAccounts[group][this.debtMint.toString()].bank;
|
33
|
-
|
34
35
|
[this.supplyBank, this.debtBank] = await safeFetchAllBank(this.umi, [
|
35
|
-
publicKey(
|
36
|
-
publicKey(
|
36
|
+
publicKey(this.lpSupplyAccount),
|
37
|
+
publicKey(this.lpDebtAccount),
|
37
38
|
]);
|
38
39
|
}
|
39
40
|
|
@@ -99,6 +100,14 @@ export class MarginfiSolautoPositionEx extends SolautoPositionEx {
|
|
99
100
|
);
|
100
101
|
}
|
101
102
|
|
103
|
+
get lpSupplyAccount() {
|
104
|
+
return new PublicKey(this.getBankAccounts(this.supplyMint).bank);
|
105
|
+
}
|
106
|
+
|
107
|
+
get lpDebtAccount() {
|
108
|
+
return new PublicKey(this.getBankAccounts(this.debtMint).bank);
|
109
|
+
}
|
110
|
+
|
102
111
|
get supplyLiquidityAvailable(): number {
|
103
112
|
return fromBaseUnit(
|
104
113
|
getBankLiquidityAvailableBaseUnit(this.supplyBank, false),
|
@@ -70,7 +70,7 @@ export async function getPositionExBulk(
|
|
70
70
|
publicKey: toWeb3JsPublicKey(x.publicKey),
|
71
71
|
data: x,
|
72
72
|
});
|
73
|
-
// TODO:
|
73
|
+
// TODO: LP
|
74
74
|
}
|
75
75
|
});
|
76
76
|
}
|
@@ -117,7 +117,7 @@ export async function getOrCreatePositionEx(
|
|
117
117
|
switch (lendingPlatform) {
|
118
118
|
case LendingPlatform.Marginfi:
|
119
119
|
position = new MarginfiSolautoPositionEx(args);
|
120
|
-
// TODO:
|
120
|
+
// TODO: LP
|
121
121
|
}
|
122
122
|
|
123
123
|
if (position.selfManaged) {
|
@@ -240,41 +240,45 @@ export abstract class SolautoPositionEx {
|
|
240
240
|
return this._supplyPrice ?? safeGetPrice(this.supplyMint, priceType);
|
241
241
|
}
|
242
242
|
|
243
|
+
|
243
244
|
get totalDebt() {
|
244
245
|
return calcTotalDebt(this.state);
|
245
246
|
}
|
246
|
-
|
247
|
+
|
247
248
|
debtUsd(priceType?: PriceType) {
|
248
249
|
const debtPrice = this.debtPrice(priceType);
|
249
250
|
return debtPrice
|
250
|
-
|
251
|
-
|
251
|
+
? calcTotalDebt(this.state) * debtPrice
|
252
|
+
: calcDebtUsd(this.state);
|
252
253
|
}
|
253
|
-
|
254
|
+
|
254
255
|
protected debtPrice(priceType?: PriceType) {
|
255
256
|
return this._debtPrice ?? safeGetPrice(this.debtMint, priceType);
|
256
257
|
}
|
257
|
-
|
258
|
+
|
259
|
+
|
258
260
|
get supplyLiquidityDepositable() {
|
259
261
|
return supplyLiquidityDepositable(this.state);
|
260
262
|
}
|
261
|
-
|
263
|
+
|
262
264
|
get supplyLiquidityUsdDepositable() {
|
263
265
|
return supplyLiquidityUsdDepositable(this.state);
|
264
266
|
}
|
265
|
-
|
267
|
+
|
266
268
|
get supplyLiquidityUsdAvailable() {
|
267
269
|
return this.supplyLiquidityAvailable * (this.supplyPrice() ?? 0);
|
268
270
|
}
|
269
|
-
|
271
|
+
|
270
272
|
get debtLiquidityAvailable() {
|
271
273
|
return debtLiquidityAvailable(this.state);
|
272
274
|
}
|
273
|
-
|
275
|
+
|
274
276
|
get debtLiquidityUsdAvailable() {
|
275
277
|
return debtLiquidityUsdAvailable(this.state);
|
276
278
|
}
|
277
|
-
|
279
|
+
|
280
|
+
abstract get lpSupplyAccount(): PublicKey;
|
281
|
+
abstract get lpDebtAccount(): PublicKey;
|
278
282
|
abstract get supplyLiquidityAvailable(): number;
|
279
283
|
|
280
284
|
abstract maxLtvAndLiqThresholdBps(): Promise<[number, number]>;
|