@haven-fi/solauto-sdk 1.0.666 → 1.0.667
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/constants/solautoConstants.d.ts +0 -1
- package/dist/constants/solautoConstants.d.ts.map +1 -1
- package/dist/constants/solautoConstants.js +1 -2
- package/dist/services/solauto/solautoClient.d.ts.map +1 -1
- package/dist/services/solauto/solautoMarginfiClient.d.ts.map +1 -1
- package/dist/services/transactions/transactionsManager.d.ts.map +1 -1
- package/dist/solautoPosition/marginfiSolautoPositionEx.d.ts.map +1 -1
- package/dist/solautoPosition/marginfiSolautoPositionEx.js +4 -5
- package/dist/solautoPosition/solautoPositionEx.d.ts +4 -2
- package/dist/solautoPosition/solautoPositionEx.d.ts.map +1 -1
- package/dist/solautoPosition/solautoPositionEx.js +8 -8
- package/dist/utils/generalUtils.d.ts +2 -1
- package/dist/utils/generalUtils.d.ts.map +1 -1
- package/dist/utils/generalUtils.js +4 -0
- package/dist/utils/marginfiUtils.d.ts.map +1 -1
- package/dist/utils/marginfiUtils.js +4 -7
- package/dist/utils/solautoUtils.d.ts.map +1 -1
- package/dist/utils/solautoUtils.js +4 -5
- package/local/logPositions.ts +1 -1
- package/local/updateSolautoLUT.ts +0 -12
- package/package.json +1 -1
- package/src/solautoPosition/marginfiSolautoPositionEx.ts +8 -7
- package/src/solautoPosition/solautoPositionEx.ts +9 -4
- package/src/utils/generalUtils.ts +5 -1
- package/src/utils/marginfiUtils.ts +6 -12
- package/src/utils/solautoUtils.ts +4 -7
- package/tests/unit/rebalanceCalculations.ts +6 -3
@@ -1,7 +1,6 @@
|
|
1
1
|
import { PublicKey } from "@solana/web3.js";
|
2
2
|
export declare const SOLAUTO_PROD_PROGRAM: PublicKey;
|
3
3
|
export declare const SOLAUTO_TEST_PROGRAM: PublicKey;
|
4
|
-
export declare const MIN_POSITION_STATE_FRESHNESS_SECS = 5;
|
5
4
|
export declare const MIN_REPAY_GAP_BPS = 50;
|
6
5
|
export declare const MIN_BOOST_GAP_BPS = 50;
|
7
6
|
export declare const MIN_USD_SUPPORTED_POSITION = 1000;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"solautoConstants.d.ts","sourceRoot":"","sources":["../../src/constants/solautoConstants.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,SAAS,EACV,MAAM,iBAAiB,CAAC;AAQzB,eAAO,MAAM,oBAAoB,WAEhC,CAAC;AACF,eAAO,MAAM,oBAAoB,WAEhC,CAAC;AAIF,eAAO,MAAM,
|
1
|
+
{"version":3,"file":"solautoConstants.d.ts","sourceRoot":"","sources":["../../src/constants/solautoConstants.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,SAAS,EACV,MAAM,iBAAiB,CAAC;AAQzB,eAAO,MAAM,oBAAoB,WAEhC,CAAC;AACF,eAAO,MAAM,oBAAoB,WAEhC,CAAC;AAIF,eAAO,MAAM,iBAAiB,KAAK,CAAC;AACpC,eAAO,MAAM,iBAAiB,KAAK,CAAC;AACpC,eAAO,MAAM,0BAA0B,OAAO,CAAC;AAE/C,eAAO,MAAM,mBAAmB,QAAQ,CAAC;AAEzC,eAAO,MAAM,mBAAmB,OAAO,CAAC;AAExC,eAAO,MAAM,MAAM,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;CAAO,CAAC;AAEvG,eAAO,MAAM,iBAAiB,UAS7B,CAAC;AAEF,eAAO,MAAM,WAAW,iDAAiD,CAAC;AAC1E,eAAO,MAAM,qBAAqB,UAYR,CAAC"}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.STANDARD_LUT_ACCOUNTS = exports.SOLAUTO_LUT = exports.JITO_TIP_ACCOUNTS = exports.PRICES = exports.REFERRER_PERCENTAGE = exports.OFFSET_FROM_MAX_LTV = exports.MIN_USD_SUPPORTED_POSITION = exports.MIN_BOOST_GAP_BPS = exports.MIN_REPAY_GAP_BPS = exports.
|
3
|
+
exports.STANDARD_LUT_ACCOUNTS = exports.SOLAUTO_LUT = exports.JITO_TIP_ACCOUNTS = exports.PRICES = exports.REFERRER_PERCENTAGE = exports.OFFSET_FROM_MAX_LTV = exports.MIN_USD_SUPPORTED_POSITION = exports.MIN_BOOST_GAP_BPS = exports.MIN_REPAY_GAP_BPS = exports.SOLAUTO_TEST_PROGRAM = exports.SOLAUTO_PROD_PROGRAM = void 0;
|
4
4
|
const web3_js_1 = require("@solana/web3.js");
|
5
5
|
const spl_token_1 = require("@solana/spl-token");
|
6
6
|
const generalConstants_1 = require("./generalConstants");
|
@@ -8,7 +8,6 @@ const jupiter_sdk_1 = require("../jupiter-sdk");
|
|
8
8
|
exports.SOLAUTO_PROD_PROGRAM = new web3_js_1.PublicKey("AutoyKBRaHSBHy9RsmXCZMy6nNFAg5FYijrvZyQcNLV");
|
9
9
|
exports.SOLAUTO_TEST_PROGRAM = new web3_js_1.PublicKey("TesTjfQ6TbXv96Tv6fqr95XTZ1LYPxtkafmShN9PjBp");
|
10
10
|
globalThis.SHOW_LOGS = false;
|
11
|
-
exports.MIN_POSITION_STATE_FRESHNESS_SECS = 5;
|
12
11
|
exports.MIN_REPAY_GAP_BPS = 50;
|
13
12
|
exports.MIN_BOOST_GAP_BPS = 50;
|
14
13
|
exports.MIN_USD_SUPPORTED_POSITION = 1000;
|
@@ -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,
|
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 +1 @@
|
|
1
|
-
{"version":3,"file":"solautoMarginfiClient.d.ts","sourceRoot":"","sources":["../../../src/services/solauto/solautoMarginfiClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAA8B,MAAM,iBAAiB,CAAC;AACxE,OAAO,EACL,MAAM,EACN,kBAAkB,EAIlB,WAAW,EACZ,MAAM,0BAA0B,CAAC;AAKlC,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAuB,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EACL,kBAAkB,EAClB,eAAe,EAEf,SAAS,EAET,aAAa,EACb,iBAAiB,EAEjB,gCAAgC,EAOjC,MAAM,iBAAiB,CAAC;
|
1
|
+
{"version":3,"file":"solautoMarginfiClient.d.ts","sourceRoot":"","sources":["../../../src/services/solauto/solautoMarginfiClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAA8B,MAAM,iBAAiB,CAAC;AACxE,OAAO,EACL,MAAM,EACN,kBAAkB,EAIlB,WAAW,EACZ,MAAM,0BAA0B,CAAC;AAKlC,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAuB,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EACL,kBAAkB,EAClB,eAAe,EAEf,SAAS,EAET,aAAa,EACb,iBAAiB,EAEjB,gCAAgC,EAOjC,MAAM,iBAAiB,CAAC;AAmBzB,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAMnE,qBAAa,qBAAsB,SAAQ,aAAa;IAC/C,eAAe,kBAA4B;IAE3C,WAAW,EAAG,uBAAuB,CAAC;IAEtC,eAAe,EAAG,SAAS,GAAG,MAAM,CAAC;IACrC,iBAAiB,EAAG,SAAS,CAAC;IAC9B,4BAA4B,CAAC,EAAE,WAAW,EAAE,CAAC;IAC7C,aAAa,EAAG,SAAS,CAAC;IAE1B,sBAAsB,EAAG,qBAAqB,CAAC;IAC/C,oBAAoB,EAAG,qBAAqB,CAAC;IAE7C,iBAAiB,EAAG,SAAS,CAAC;IAC9B,eAAe,EAAG,SAAS,CAAC;IAE7B,UAAU,CAAC,IAAI,EAAE,iBAAiB;IA6ExC,mBAAmB,IAAI,MAAM,EAAE;IAO/B,gBAAgB,IAAI,SAAS,EAAE;IAI/B,yBAAyB,CAAC,eAAe,EAAE,MAAM,GAAG,kBAAkB;IAStE,cAAc,CACZ,QAAQ,CAAC,EAAE,gCAAgC,EAC3C,GAAG,CAAC,EAAE,kBAAkB,GACvB,kBAAkB;IAMrB,OAAO,CAAC,sBAAsB;IA0C9B,eAAe,IAAI,kBAAkB;IAYrC,SAAS,CAAC,SAAS,EAAE,SAAS,GAAG,kBAAkB;IAenD,qBAAqB,CAAC,IAAI,EAAE,iBAAiB,GAAG,kBAAkB;IAUlE,OAAO,CAAC,6BAA6B;IAiFrC,OAAO,CAAC,oCAAoC;IA0D5C,WAAW,CACT,aAAa,EAAE,aAAa,EAC5B,IAAI,EAAE,gBAAgB,GACrB,kBAAkB;CA4EtB"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"transactionsManager.d.ts","sourceRoot":"","sources":["../../../src/services/transactions/transactionsManager.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"transactionsManager.d.ts","sourceRoot":"","sources":["../../../src/services/transactions/transactionsManager.ts"],"names":[],"mappings":"AAKA,OAAO,EAGL,kBAAkB,EAEnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,kBAAkB,EAElB,qBAAqB,EACrB,kBAAkB,EACnB,MAAM,aAAa,CAAC;AAMrB,OAAO,EAEL,aAAa,EAQd,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAa,MAAM,YAAY,CAAC;AAM5E,qBAAa,wBAAyB,SAAQ,KAAK;gBACrC,OAAO,EAAE,MAAM;CAK5B;AAqCD,qBAAa,eAAe;IAOjB,OAAO,EAAE,CACd,UAAU,EAAE,MAAM,KACf,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC;IACxC,IAAI,CAAC,EAAE,MAAM;IATtB,oBAAoB,EAAG,MAAM,EAAE,CAAC;IAChC,EAAE,CAAC,EAAE,kBAAkB,CAAC;IACxB,WAAW,EAAE,OAAO,CAAS;IAC7B,SAAS,EAAE,MAAM,CAAK;gBAGb,OAAO,EAAE,CACd,UAAU,EAAE,MAAM,KACf,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,EACxC,IAAI,CAAC,EAAE,MAAM,YAAA;IAGhB,UAAU;IAKV,OAAO,CAAC,UAAU,EAAE,MAAM;IAOhC,cAAc,IAAI,MAAM,EAAE;CAY3B;AAwGD,oBAAY,iBAAiB;IAC3B,OAAO,YAAY;IACnB,UAAU,eAAe;IACzB,MAAM,WAAW;IACjB,UAAU,eAAe;IACzB,MAAM,WAAW;CAClB;AAED,MAAM,MAAM,0BAA0B,GAAG;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,EAAE,CAAC;AAEJ,UAAU,WAAW;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,mBAAmB;IAU5B,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,cAAc,CAAC;IACvB,OAAO,CAAC,MAAM,CAAC;IACf,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,aAAa,CAAC;IAdxB,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,UAAU,CAAS;IAE3B,kBAAkB,SAAmB;gBAG3B,SAAS,EAAE,aAAa,GAAG,oBAAoB,EAC/C,cAAc,CAAC,GAAE,CAAC,QAAQ,EAAE,0BAA0B,KAAK,IAAI,aAAA,EAC/D,MAAM,CAAC,EAAE,kBAAkB,YAAA,EAC3B,kBAAkB,GAAE,kBAA2C,EAC/D,UAAU,GAAE,OAAc,EAC1B,aAAa,CAAC,EAAE,aAAa,YAAA,EACrC,WAAW,CAAC,EAAE,WAAW;YAab,uBAAuB;IA0CrC,OAAO,CAAC,YAAY;YA6CN,aAAa;IAoB3B,OAAO,CAAC,4BAA4B;IAgBpC,OAAO,CAAC,mBAAmB;YAoBb,SAAS;IAmBV,UAAU,CACrB,YAAY,EAAE,eAAe,EAAE,GAC9B,OAAO,CAAC,0BAA0B,CAAC;IAyGzB,IAAI,CACf,KAAK,EAAE,eAAe,EAAE,GACvB,OAAO,CAAC,0BAA0B,CAAC;YA8BxB,6BAA6B;YA4I7B,qBAAqB;YAgDrB,eAAe;YA0Df,eAAe;CA4D9B"}
|
@@ -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;
|
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,7 +1,6 @@
|
|
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");
|
5
4
|
const marginfi_sdk_1 = require("../marginfi-sdk");
|
6
5
|
const umi_1 = require("@metaplex-foundation/umi");
|
7
6
|
const umi_web3js_adapters_1 = require("@metaplex-foundation/umi-web3js-adapters");
|
@@ -21,9 +20,7 @@ class MarginfiSolautoPositionEx extends solautoPositionEx_1.SolautoPositionEx {
|
|
21
20
|
if (this.lp) {
|
22
21
|
return this.lp;
|
23
22
|
}
|
24
|
-
if (!this.marginfiAccountData &&
|
25
|
-
this.lpUserAccount &&
|
26
|
-
!this.lpUserAccount.equals(web3_js_1.PublicKey.default)) {
|
23
|
+
if (!this.marginfiAccountData && (0, utils_1.validPubkey)(this.lpUserAccount)) {
|
27
24
|
this.marginfiAccountData = await (0, marginfi_sdk_1.fetchMarginfiAccount)(this.umi, (0, umi_1.publicKey)(this.lpUserAccount), { commitment: "confirmed" });
|
28
25
|
this.lp = (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.marginfiAccountData.group);
|
29
26
|
}
|
@@ -62,7 +59,9 @@ class MarginfiSolautoPositionEx extends solautoPositionEx_1.SolautoPositionEx {
|
|
62
59
|
return (0, utils_1.fromBaseUnit)((0, utils_1.getBankLiquidityAvailableBaseUnit)(this.supplyBank, false), this.supplyMintInfo.decimals);
|
63
60
|
}
|
64
61
|
async refreshPositionState(priceType) {
|
65
|
-
const useDesignatedMint = !this.
|
62
|
+
const useDesignatedMint = !this.exists ||
|
63
|
+
!this.selfManaged ||
|
64
|
+
(this.selfManaged && !(0, utils_1.validPubkey)(this.lpUserAccount));
|
66
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);
|
67
66
|
if (resp) {
|
68
67
|
this.supplyBank = resp.supplyBank;
|
@@ -36,9 +36,11 @@ export declare abstract class SolautoPositionEx {
|
|
36
36
|
protected lp?: PublicKey;
|
37
37
|
lpUserAccount?: PublicKey;
|
38
38
|
protected lpEnv: ProgramEnv;
|
39
|
+
private _supplyMint?;
|
40
|
+
private _debtMint?;
|
39
41
|
private readonly firstState;
|
40
|
-
|
41
|
-
|
42
|
+
private _supplyPrice?;
|
43
|
+
private _debtPrice?;
|
42
44
|
rebalanceHelper: PositionRebalanceHelper;
|
43
45
|
constructor(args: PositionExArgs);
|
44
46
|
abstract lendingPool(): Promise<PublicKey>;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"solautoPositionEx.d.ts","sourceRoot":"","sources":["../../src/solautoPosition/solautoPositionEx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAK/C,OAAO,EACL,WAAW,EAEX,eAAe,EACf,aAAa,EACb,SAAS,EACT,eAAe,EACf,yBAAyB,EAC1B,MAAM,cAAc,CAAC;AACtB,OAAO,EAOL,cAAc,EAkBf,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAMvD,OAAO,
|
1
|
+
{"version":3,"file":"solautoPositionEx.d.ts","sourceRoot":"","sources":["../../src/solautoPosition/solautoPositionEx.ts"],"names":[],"mappings":"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"}
|
@@ -16,6 +16,8 @@ class SolautoPositionEx {
|
|
16
16
|
(0, utils_1.getSolautoPositionAccount)(args.authority, args.positionId, args.programId);
|
17
17
|
this.positionId = args.positionId ?? args.data.positionId[0];
|
18
18
|
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;
|
19
21
|
this.lp = args.customArgs?.lendingPool;
|
20
22
|
this.lpUserAccount =
|
21
23
|
args.customArgs?.lpUserAccount ??
|
@@ -61,13 +63,13 @@ class SolautoPositionEx {
|
|
61
63
|
this.data.position.dca = dca;
|
62
64
|
}
|
63
65
|
get supplyMint() {
|
64
|
-
return (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.state.supply.mint);
|
66
|
+
return this._supplyMint ?? (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.state.supply.mint);
|
65
67
|
}
|
66
68
|
get supplyMintInfo() {
|
67
69
|
return (0, utils_1.tokenInfo)(this.supplyMint);
|
68
70
|
}
|
69
71
|
get debtMint() {
|
70
|
-
return (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.state.debt.mint);
|
72
|
+
return this._debtMint ?? (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.state.debt.mint);
|
71
73
|
}
|
72
74
|
get debtMintInfo() {
|
73
75
|
return (0, utils_1.tokenInfo)(this.debtMint);
|
@@ -237,16 +239,14 @@ class PositionRebalanceHelper {
|
|
237
239
|
return undefined;
|
238
240
|
}
|
239
241
|
const realtimeLiqUtilRateBps = this.pos.liqUtilizationRateBps(generated_1.PriceType.Realtime);
|
240
|
-
const emaLiqUtilRateBps = this.pos.liqUtilizationRateBps(generated_1.PriceType.Ema);
|
241
242
|
if (this.pos.repayFromBps - realtimeLiqUtilRateBps <=
|
242
243
|
bpsDistanceThreshold) {
|
243
244
|
return "repay";
|
244
245
|
}
|
245
|
-
else if (
|
246
|
-
|
247
|
-
this.
|
248
|
-
|
249
|
-
return sufficientLiquidity ? "boost" : undefined;
|
246
|
+
else if (realtimeLiqUtilRateBps - this.pos.boostFromBps <= bpsDistanceThreshold &&
|
247
|
+
this.validBoostFromHere() &&
|
248
|
+
this.sufficientLiquidityToBoost()) {
|
249
|
+
return "boost";
|
250
250
|
}
|
251
251
|
return undefined;
|
252
252
|
}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import { PublicKey } from "@solana/web3.js";
|
2
|
-
import { MaybeRpcAccount, Umi } from "@metaplex-foundation/umi";
|
2
|
+
import { MaybeRpcAccount, Umi, PublicKey as UmiPublicKey } from "@metaplex-foundation/umi";
|
3
3
|
import { TokenInfo } from "../constants";
|
4
4
|
export declare function buildHeliusApiUrl(heliusApiKey: string): string;
|
5
5
|
export declare function buildIronforgeApiUrl(ironforgeApiKey: string): string;
|
@@ -20,4 +20,5 @@ export declare function retryWithExponentialBackoff<T>(fn: (attemptNum: number,
|
|
20
20
|
export declare function toEnumValue<E extends object>(enumObj: E, value: number): E[keyof E] | undefined;
|
21
21
|
export declare function customRpcCall(umi: Umi, method: string, params?: any): Promise<any>;
|
22
22
|
export declare function u16ToArrayBufferLE(value: number): Uint8Array;
|
23
|
+
export declare function validPubkey(pubkey?: PublicKey | UmiPublicKey | string): boolean;
|
23
24
|
//# sourceMappingURL=generalUtils.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"generalUtils.d.ts","sourceRoot":"","sources":["../../src/utils/generalUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAa,GAAG,EAAE,MAAM,0BAA0B,CAAC;
|
1
|
+
{"version":3,"file":"generalUtils.d.ts","sourceRoot":"","sources":["../../src/utils/generalUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAa,GAAG,EAAE,SAAS,IAAI,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACtG,OAAO,EAAc,SAAS,EAAE,MAAM,cAAc,CAAC;AAErD,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,UAErD;AAED,wBAAgB,oBAAoB,CAAC,eAAe,EAAE,MAAM,UAE3D;AAED,wBAAgB,UAAU,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAI/C;AAED,wBAAgB,SAAS,CAAC,IAAI,CAAC,EAAE,SAAS,GAAG,SAAS,CAErD;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAW1D;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,yBAQ/C;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,CAAC,EAAE,EAAE,CAMlE;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAO1C;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,wBAAsB,uBAAuB,CAC3C,GAAG,EAAE,GAAG,EACR,EAAE,EAAE,SAAS,GACZ,OAAO,CAAC,OAAO,CAAC,CAKlB;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAEnE;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAU1E;AAED,wBAAgB,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAS1D;AAED,MAAM,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,KAAK,CAAC,CAAC;AAEjE,wBAAgB,2BAA2B,CAAC,CAAC,EAC3C,EAAE,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,EACvD,OAAO,GAAE,MAAU,EACnB,KAAK,GAAE,MAAY,EACnB,aAAa,CAAC,EAAE,aAAa,GAC5B,OAAO,CAAC,CAAC,CAAC,CA8BZ;AAED,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,EAC1C,OAAO,EAAE,CAAC,EACV,KAAK,EAAE,MAAM,GACZ,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,SAAS,CAUxB;AAED,wBAAsB,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,gBAuBzE;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAU5D;AAED,wBAAgB,WAAW,CAAC,MAAM,CAAC,EAAE,SAAS,GAAG,YAAY,GAAG,MAAM,WAErE"}
|
@@ -21,6 +21,7 @@ exports.retryWithExponentialBackoff = retryWithExponentialBackoff;
|
|
21
21
|
exports.toEnumValue = toEnumValue;
|
22
22
|
exports.customRpcCall = customRpcCall;
|
23
23
|
exports.u16ToArrayBufferLE = u16ToArrayBufferLE;
|
24
|
+
exports.validPubkey = validPubkey;
|
24
25
|
const axios_1 = __importDefault(require("axios"));
|
25
26
|
const web3_js_1 = require("@solana/web3.js");
|
26
27
|
const umi_1 = require("@metaplex-foundation/umi");
|
@@ -169,3 +170,6 @@ function u16ToArrayBufferLE(value) {
|
|
169
170
|
// Return the buffer
|
170
171
|
return new Uint8Array(buffer);
|
171
172
|
}
|
173
|
+
function validPubkey(pubkey) {
|
174
|
+
return Boolean(pubkey) && pubkey.toString() !== web3_js_1.PublicKey.default.toString();
|
175
|
+
}
|
@@ -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,EAAE,WAAW,EAAE,OAAO,EAAa,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAKhF,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAsB,SAAS,EAAE,MAAM,cAAc,CAAC;AAC5E,OAAO,EAIL,uBAAuB,EAIxB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,OAAO,EACP,IAAI,EAMJ,eAAe,EAKhB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAkBhD,wBAAgB,4BAA4B,CAAC,GAAG,CAAC,EAAE,UAAU,GAAG,OAAO,CActE;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,GAAG,EAAE,WAAW,CAAC,EAAE,UAAU,OASxE;AAED,wBAAsB,yBAAyB,CAC7C,GAAG,EAAE,GAAG,EACR,eAAe,EAAE,uBAAuB,GACvC,OAAO,CAAC,SAAS,EAAE,CAAC,CAkCtB;AAED,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS;;;;;GAanE;AAED,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,GAAG,EACR,IAAI,EAAE;IAAE,EAAE,CAAC,EAAE,SAAS,CAAC;IAAC,IAAI,CAAC,EAAE,IAAI,CAAA;CAAE,sBAgBtC;AAED,UAAU,wBAAyB,SAAQ,qBAAqB;IAC9D,IAAI,EAAE,SAAS,CAAC;CACjB;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,SAAS,GACd,wBAAwB,CAyB1B;AAED,wBAAsB,0CAA0C,CAC9D,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,WAAW,EAAE,CAAC,CAWxB;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,
|
1
|
+
{"version":3,"file":"marginfiUtils.d.ts","sourceRoot":"","sources":["../../src/utils/marginfiUtils.ts"],"names":[],"mappings":"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"}
|
@@ -149,15 +149,14 @@ function calcMarginfiMaxLtvAndLiqThresholdBps(supplyBank, debtBank, supplyPrice)
|
|
149
149
|
return [(0, numberUtils_1.toBps)(maxLtv, "Floor"), (0, numberUtils_1.toBps)(liqThreshold, "Floor")];
|
150
150
|
}
|
151
151
|
async function getMarginfiMaxLtvAndLiqThresholdBps(umi, marginfiGroup, supply, debt, supplyPrice) {
|
152
|
-
if (!supply.bank && supply.mint
|
152
|
+
if (!supply.bank && !(0, generalUtils_1.validPubkey)(supply.mint)) {
|
153
153
|
return [0, 0];
|
154
154
|
}
|
155
155
|
const bankAccounts = (0, constants_1.getMarginfiAccounts)(undefined, marginfiGroup).bankAccounts;
|
156
156
|
if (!supply.bank || supply.bank === null) {
|
157
157
|
supply.bank = await (0, marginfi_sdk_1.safeFetchBank)(umi, (0, umi_1.publicKey)(bankAccounts[marginfiGroup.toString()][supply.mint.toString()].bank), { commitment: "confirmed" });
|
158
158
|
}
|
159
|
-
if ((!debt.bank || debt.bank === null) &&
|
160
|
-
!debt.mint.equals(web3_js_1.PublicKey.default)) {
|
159
|
+
if ((!debt.bank || debt.bank === null) && !(0, generalUtils_1.validPubkey)(debt.mint)) {
|
161
160
|
debt.bank = await (0, marginfi_sdk_1.safeFetchBank)(umi, (0, umi_1.publicKey)(bankAccounts[marginfiGroup.toString()][debt.mint.toString()].bank), { commitment: "confirmed" });
|
162
161
|
}
|
163
162
|
if (!supplyPrice) {
|
@@ -297,9 +296,7 @@ async function getTokenUsage(bank, isAsset, shares, amountUsedAdjustment, priceT
|
|
297
296
|
};
|
298
297
|
}
|
299
298
|
async function getBank(umi, data, marginfiGroup) {
|
300
|
-
const mint = data
|
301
|
-
? data.mint.toString()
|
302
|
-
: undefined;
|
299
|
+
const mint = (0, generalUtils_1.validPubkey)(data.mint) ? data.mint.toString() : undefined;
|
303
300
|
return data?.banksCache && mint
|
304
301
|
? data.banksCache[marginfiGroup.toString()][mint]
|
305
302
|
: mint && mint !== web3_js_1.PublicKey.default.toString()
|
@@ -308,7 +305,7 @@ async function getBank(umi, data, marginfiGroup) {
|
|
308
305
|
}
|
309
306
|
async function getMarginfiAccountPositionState(umi, lpUserAccount, marginfiGroup, supply, debt, programEnv, contextUpdates, priceType) {
|
310
307
|
let marginfiAccount = lpUserAccount.data ??
|
311
|
-
(lpUserAccount.pk
|
308
|
+
((0, generalUtils_1.validPubkey)(lpUserAccount.pk)
|
312
309
|
? await (0, marginfi_sdk_1.safeFetchMarginfiAccount)(umi, (0, umi_1.publicKey)(lpUserAccount.pk), {
|
313
310
|
commitment: "confirmed",
|
314
311
|
})
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"solautoUtils.d.ts","sourceRoot":"","sources":["../../src/utils/solautoUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAa,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAEnE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,kBAAkB,EAClB,eAAe,EACf,aAAa,EACb,YAAY,EACZ,oBAAoB,EACpB,yBAAyB,EACzB,gCAAgC,EAChC,SAAS,EAMV,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,cAAc,EACf,MAAM,aAAa,CAAC;
|
1
|
+
{"version":3,"file":"solautoUtils.d.ts","sourceRoot":"","sources":["../../src/utils/solautoUtils.ts"],"names":[],"mappings":"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"}
|
@@ -14,7 +14,6 @@ exports.getClient = getClient;
|
|
14
14
|
exports.isMarginfiClient = isMarginfiClient;
|
15
15
|
exports.hasFirstRebalance = hasFirstRebalance;
|
16
16
|
exports.hasLastRebalance = hasLastRebalance;
|
17
|
-
const web3_js_1 = require("@solana/web3.js");
|
18
17
|
const umi_1 = require("@metaplex-foundation/umi");
|
19
18
|
const umi_web3js_adapters_1 = require("@metaplex-foundation/umi-web3js-adapters");
|
20
19
|
const generated_1 = require("../generated");
|
@@ -25,6 +24,7 @@ const accountUtils_1 = require("./accountUtils");
|
|
25
24
|
const numberUtils_1 = require("./numberUtils");
|
26
25
|
const priceUtils_1 = require("./priceUtils");
|
27
26
|
const marginfiUtils_1 = require("./marginfiUtils");
|
27
|
+
const generalUtils_1 = require("./generalUtils");
|
28
28
|
function createDynamicSolautoProgram(programId) {
|
29
29
|
return {
|
30
30
|
name: "solauto",
|
@@ -121,7 +121,8 @@ async function getSolautoManagedPositions(umi, authority, positionTypeFilter) {
|
|
121
121
|
if (position.position.lendingPlatform === generated_1.LendingPlatform.Marginfi) {
|
122
122
|
tokens = [
|
123
123
|
(0, marginfiUtils_1.findMarginfiAccounts)((0, umi_web3js_adapters_1.toWeb3JsPublicKey)(position.position.lpSupplyAccount)).mint,
|
124
|
-
(0, marginfiUtils_1.findMarginfiAccounts)((0, umi_web3js_adapters_1.toWeb3JsPublicKey)(position.position.lpDebtAccount))
|
124
|
+
(0, marginfiUtils_1.findMarginfiAccounts)((0, umi_web3js_adapters_1.toWeb3JsPublicKey)(position.position.lpDebtAccount))
|
125
|
+
.mint,
|
125
126
|
];
|
126
127
|
}
|
127
128
|
// TODO: PF
|
@@ -193,9 +194,7 @@ async function getAllPositionsByAuthority(umi, user, positionTypeFilter) {
|
|
193
194
|
return [];
|
194
195
|
}
|
195
196
|
let marginfiPositions = await (0, marginfiUtils_1.getAllMarginfiAccountsByAuthority)(umi, user, undefined, true);
|
196
|
-
marginfiPositions = marginfiPositions.filter((x) => x.supplyMint &&
|
197
|
-
(x.debtMint.equals(web3_js_1.PublicKey.default) ||
|
198
|
-
constants_1.ALL_SUPPORTED_TOKENS.includes(x.debtMint.toString())));
|
197
|
+
marginfiPositions = marginfiPositions.filter((x) => (0, generalUtils_1.validPubkey)(x.supplyMint) && (0, generalUtils_1.validPubkey)(x.debtMint));
|
199
198
|
return marginfiPositions.map((x) => ({
|
200
199
|
publicKey: x.marginfiAccount,
|
201
200
|
authority: user,
|
package/local/logPositions.ts
CHANGED
@@ -137,7 +137,7 @@ async function main(filterWhitelist: boolean, programEnv: ProgramEnv = "Prod") {
|
|
137
137
|
`(${pos.authority.toString()} ${pos.positionId})`
|
138
138
|
);
|
139
139
|
console.log(
|
140
|
-
`${pos.strategyName}: $${formatNumber(pos.netWorthUsd(), 2, 10000, 2)} ${healthText} ${boostText}`
|
140
|
+
`${pos.strategyName}: $${formatNumber(pos.netWorthUsd(), 2, 10000, 2)} ${healthText} ${boostText}\n`
|
141
141
|
);
|
142
142
|
}
|
143
143
|
|
@@ -6,10 +6,7 @@ import {
|
|
6
6
|
STANDARD_LUT_ACCOUNTS,
|
7
7
|
SWITCHBOARD_PRICE_FEED_IDS,
|
8
8
|
ALL_SUPPORTED_TOKENS,
|
9
|
-
getAllMarginfiAccountsByAuthority,
|
10
|
-
getSolanaRpcConnection,
|
11
9
|
getTokenAccounts,
|
12
|
-
LOCAL_IRONFORGE_API_URL,
|
13
10
|
} from "../src";
|
14
11
|
import { updateLookupTable } from "./shared";
|
15
12
|
|
@@ -26,21 +23,12 @@ const solautoFeeWalletTokenAccounts = getTokenAccounts(
|
|
26
23
|
);
|
27
24
|
|
28
25
|
export async function updateSolautoLut(additionalAccounts?: string[]) {
|
29
|
-
const [_, umi] = getSolanaRpcConnection(
|
30
|
-
LOCAL_IRONFORGE_API_URL
|
31
|
-
);
|
32
|
-
const ismAccounts = await getAllMarginfiAccountsByAuthority(
|
33
|
-
umi,
|
34
|
-
SOLAUTO_MANAGER
|
35
|
-
);
|
36
|
-
|
37
26
|
return updateLookupTable(
|
38
27
|
[
|
39
28
|
...STANDARD_LUT_ACCOUNTS,
|
40
29
|
...ALL_SUPPORTED_TOKENS,
|
41
30
|
...solautoManagerTokenAccounts.map((x) => x.toString()),
|
42
31
|
...solautoFeeWalletTokenAccounts.map((x) => x.toString()),
|
43
|
-
...ismAccounts.map((x) => x.marginfiAccount.toString()),
|
44
32
|
...Object.values(SWITCHBOARD_PRICE_FEED_IDS).map((x) => x.feedId),
|
45
33
|
...(additionalAccounts ?? []),
|
46
34
|
],
|
package/package.json
CHANGED
@@ -14,6 +14,7 @@ import {
|
|
14
14
|
getBankLiquidityAvailableBaseUnit,
|
15
15
|
getMarginfiAccountPositionState,
|
16
16
|
getMarginfiPriceOracle,
|
17
|
+
validPubkey,
|
17
18
|
} from "../utils";
|
18
19
|
import { getMarginfiAccounts } from "../constants";
|
19
20
|
import { SolautoPositionEx } from "./solautoPositionEx";
|
@@ -31,14 +32,10 @@ export class MarginfiSolautoPositionEx extends SolautoPositionEx {
|
|
31
32
|
return this.lp;
|
32
33
|
}
|
33
34
|
|
34
|
-
if (
|
35
|
-
!this.marginfiAccountData &&
|
36
|
-
this.lpUserAccount &&
|
37
|
-
!this.lpUserAccount.equals(PublicKey.default)
|
38
|
-
) {
|
35
|
+
if (!this.marginfiAccountData && validPubkey(this.lpUserAccount)) {
|
39
36
|
this.marginfiAccountData = await fetchMarginfiAccount(
|
40
37
|
this.umi,
|
41
|
-
publicKey(this.lpUserAccount),
|
38
|
+
publicKey(this.lpUserAccount!),
|
42
39
|
{ commitment: "confirmed" }
|
43
40
|
);
|
44
41
|
this.lp = toWeb3JsPublicKey(this.marginfiAccountData.group);
|
@@ -97,7 +94,11 @@ export class MarginfiSolautoPositionEx extends SolautoPositionEx {
|
|
97
94
|
}
|
98
95
|
|
99
96
|
async refreshPositionState(priceType?: PriceType): Promise<void> {
|
100
|
-
const useDesignatedMint =
|
97
|
+
const useDesignatedMint =
|
98
|
+
!this.exists ||
|
99
|
+
!this.selfManaged ||
|
100
|
+
(this.selfManaged && !validPubkey(this.lpUserAccount));
|
101
|
+
|
101
102
|
const resp = await getMarginfiAccountPositionState(
|
102
103
|
this.umi,
|
103
104
|
{ pk: this.lpUserAccount },
|
@@ -83,10 +83,13 @@ export abstract class SolautoPositionEx {
|
|
83
83
|
protected lp?: PublicKey = undefined;
|
84
84
|
public lpUserAccount?: PublicKey = undefined;
|
85
85
|
protected lpEnv!: ProgramEnv;
|
86
|
+
private _supplyMint?: PublicKey;
|
87
|
+
private _debtMint?: PublicKey;
|
86
88
|
|
87
89
|
private readonly firstState!: PositionState;
|
88
|
-
|
89
|
-
|
90
|
+
|
91
|
+
private _supplyPrice?: number;
|
92
|
+
private _debtPrice?: number;
|
90
93
|
|
91
94
|
public rebalanceHelper!: PositionRebalanceHelper;
|
92
95
|
|
@@ -104,6 +107,8 @@ export abstract class SolautoPositionEx {
|
|
104
107
|
this.positionId = args.positionId ?? args.data.positionId![0];
|
105
108
|
this.authority = args.authority ?? toWeb3JsPublicKey(args.data.authority!);
|
106
109
|
|
110
|
+
this._supplyMint = args.customArgs?.supplyMint;
|
111
|
+
this._debtMint = args.customArgs?.debtMint;
|
107
112
|
this.lp = args.customArgs?.lendingPool;
|
108
113
|
this.lpUserAccount =
|
109
114
|
args.customArgs?.lpUserAccount ??
|
@@ -169,7 +174,7 @@ export abstract class SolautoPositionEx {
|
|
169
174
|
}
|
170
175
|
|
171
176
|
get supplyMint(): PublicKey {
|
172
|
-
return toWeb3JsPublicKey(this.state.supply.mint);
|
177
|
+
return this._supplyMint ?? toWeb3JsPublicKey(this.state.supply.mint);
|
173
178
|
}
|
174
179
|
|
175
180
|
get supplyMintInfo(): TokenInfo {
|
@@ -177,7 +182,7 @@ export abstract class SolautoPositionEx {
|
|
177
182
|
}
|
178
183
|
|
179
184
|
get debtMint(): PublicKey {
|
180
|
-
return toWeb3JsPublicKey(this.state.debt.mint);
|
185
|
+
return this._debtMint ?? toWeb3JsPublicKey(this.state.debt.mint);
|
181
186
|
}
|
182
187
|
|
183
188
|
get debtMintInfo(): TokenInfo {
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import axios from "axios";
|
2
2
|
import { PublicKey } from "@solana/web3.js";
|
3
|
-
import { MaybeRpcAccount, publicKey, Umi } from "@metaplex-foundation/umi";
|
3
|
+
import { MaybeRpcAccount, publicKey, Umi, PublicKey as UmiPublicKey } from "@metaplex-foundation/umi";
|
4
4
|
import { TOKEN_INFO, TokenInfo } from "../constants";
|
5
5
|
|
6
6
|
export function buildHeliusApiUrl(heliusApiKey: string) {
|
@@ -195,4 +195,8 @@ export function u16ToArrayBufferLE(value: number): Uint8Array {
|
|
195
195
|
|
196
196
|
// Return the buffer
|
197
197
|
return new Uint8Array(buffer);
|
198
|
+
}
|
199
|
+
|
200
|
+
export function validPubkey(pubkey?: PublicKey | UmiPublicKey | string) {
|
201
|
+
return Boolean(pubkey) && pubkey!.toString() !== PublicKey.default.toString();
|
198
202
|
}
|
@@ -31,7 +31,7 @@ import {
|
|
31
31
|
} from "../marginfi-sdk";
|
32
32
|
import { ContextUpdates } from "./solautoUtils";
|
33
33
|
import { fetchTokenPrices, safeGetPrice } from "./priceUtils";
|
34
|
-
import { currentUnixSeconds } from "./generalUtils";
|
34
|
+
import { currentUnixSeconds, validPubkey } from "./generalUtils";
|
35
35
|
import {
|
36
36
|
bytesToI80F48,
|
37
37
|
calcNetWorthUsd,
|
@@ -245,7 +245,7 @@ export async function getMarginfiMaxLtvAndLiqThresholdBps(
|
|
245
245
|
},
|
246
246
|
supplyPrice?: number
|
247
247
|
): Promise<[number, number]> {
|
248
|
-
if (!supply.bank && supply.mint
|
248
|
+
if (!supply.bank && !validPubkey(supply.mint)) {
|
249
249
|
return [0, 0];
|
250
250
|
}
|
251
251
|
|
@@ -264,10 +264,7 @@ export async function getMarginfiMaxLtvAndLiqThresholdBps(
|
|
264
264
|
);
|
265
265
|
}
|
266
266
|
|
267
|
-
if (
|
268
|
-
(!debt.bank || debt.bank === null) &&
|
269
|
-
!debt.mint.equals(PublicKey.default)
|
270
|
-
) {
|
267
|
+
if ((!debt.bank || debt.bank === null) && !validPubkey(debt.mint)) {
|
271
268
|
debt.bank = await safeFetchBank(
|
272
269
|
umi,
|
273
270
|
publicKey(
|
@@ -488,10 +485,7 @@ async function getBank(
|
|
488
485
|
data: BankSelection,
|
489
486
|
marginfiGroup: PublicKey
|
490
487
|
) {
|
491
|
-
const mint =
|
492
|
-
data?.mint && !data.mint.equals(PublicKey.default)
|
493
|
-
? data.mint.toString()
|
494
|
-
: undefined;
|
488
|
+
const mint = validPubkey(data.mint) ? data.mint!.toString() : undefined;
|
495
489
|
|
496
490
|
return data?.banksCache && mint
|
497
491
|
? data.banksCache[marginfiGroup.toString()][mint]
|
@@ -523,8 +517,8 @@ export async function getMarginfiAccountPositionState(
|
|
523
517
|
> {
|
524
518
|
let marginfiAccount =
|
525
519
|
lpUserAccount.data ??
|
526
|
-
(lpUserAccount.pk
|
527
|
-
? await safeFetchMarginfiAccount(umi, publicKey(lpUserAccount.pk), {
|
520
|
+
(validPubkey(lpUserAccount.pk)
|
521
|
+
? await safeFetchMarginfiAccount(umi, publicKey(lpUserAccount.pk!), {
|
528
522
|
commitment: "confirmed",
|
529
523
|
})
|
530
524
|
: null);
|
@@ -41,6 +41,7 @@ import {
|
|
41
41
|
findMarginfiAccounts,
|
42
42
|
getAllMarginfiAccountsByAuthority,
|
43
43
|
} from "./marginfiUtils";
|
44
|
+
import { validPubkey } from "./generalUtils";
|
44
45
|
|
45
46
|
export function createDynamicSolautoProgram(programId?: PublicKey): Program {
|
46
47
|
return {
|
@@ -179,9 +180,8 @@ export async function getSolautoManagedPositions(
|
|
179
180
|
findMarginfiAccounts(
|
180
181
|
toWeb3JsPublicKey(position.position.lpSupplyAccount)
|
181
182
|
).mint,
|
182
|
-
findMarginfiAccounts(
|
183
|
-
|
184
|
-
).mint,
|
183
|
+
findMarginfiAccounts(toWeb3JsPublicKey(position.position.lpDebtAccount))
|
184
|
+
.mint,
|
185
185
|
];
|
186
186
|
}
|
187
187
|
// TODO: PF
|
@@ -285,10 +285,7 @@ export async function getAllPositionsByAuthority(
|
|
285
285
|
true
|
286
286
|
);
|
287
287
|
marginfiPositions = marginfiPositions.filter(
|
288
|
-
(x) =>
|
289
|
-
x.supplyMint &&
|
290
|
-
(x.debtMint!.equals(PublicKey.default) ||
|
291
|
-
ALL_SUPPORTED_TOKENS.includes(x.debtMint!.toString()))
|
288
|
+
(x) => validPubkey(x.supplyMint) && validPubkey(x.debtMint)
|
292
289
|
);
|
293
290
|
return marginfiPositions.map((x) => ({
|
294
291
|
publicKey: x.marginfiAccount,
|
@@ -92,16 +92,19 @@ async function getFakePosition(
|
|
92
92
|
liqThresholdBps
|
93
93
|
);
|
94
94
|
|
95
|
+
const defaultPk = publicKey(PublicKey.default);
|
95
96
|
client.pos = new MarginfiSolautoPositionEx({
|
96
97
|
umi: client.umi,
|
97
98
|
publicKey: PublicKey.default,
|
98
99
|
data: {
|
99
100
|
state: fakeState,
|
101
|
+
positionId: [1],
|
102
|
+
authority: defaultPk,
|
100
103
|
position: {
|
101
104
|
lendingPlatform: LendingPlatform.Marginfi,
|
102
|
-
lpUserAccount:
|
103
|
-
lpSupplyAccount:
|
104
|
-
lpDebtAccount:
|
105
|
+
lpUserAccount: defaultPk,
|
106
|
+
lpSupplyAccount: defaultPk,
|
107
|
+
lpDebtAccount: defaultPk,
|
105
108
|
settings,
|
106
109
|
dca: null,
|
107
110
|
padding: [],
|