@haven-fi/solauto-sdk 1.0.812 → 1.0.814
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/marginfiAccounts.d.ts.map +1 -1
- package/dist/constants/marginfiAccounts.js +5 -0
- package/dist/constants/pythConstants.d.ts +1 -0
- package/dist/constants/pythConstants.d.ts.map +1 -1
- package/dist/constants/pythConstants.js +1 -0
- package/dist/constants/solautoConstants.d.ts +1 -0
- package/dist/constants/solautoConstants.d.ts.map +1 -1
- package/dist/constants/solautoConstants.js +2 -1
- package/dist/constants/tokenConstants.d.ts +2 -0
- package/dist/constants/tokenConstants.d.ts.map +1 -1
- package/dist/constants/tokenConstants.js +11 -2
- package/dist/services/transactions/manager/clientTransactionsManager.d.ts +0 -1
- package/dist/services/transactions/manager/clientTransactionsManager.d.ts.map +1 -1
- package/dist/services/transactions/manager/clientTransactionsManager.js +1 -21
- package/dist/services/transactions/manager/transactionsManager.d.ts +0 -1
- package/dist/services/transactions/manager/transactionsManager.d.ts.map +1 -1
- package/dist/services/transactions/manager/transactionsManager.js +5 -3
- package/dist/utils/stringUtils.js +1 -1
- package/dist/utils/switchboardUtils.d.ts +5 -3
- package/dist/utils/switchboardUtils.d.ts.map +1 -1
- package/dist/utils/switchboardUtils.js +59 -7
- package/local/txSandbox.ts +27 -38
- package/package.json +2 -2
- package/src/constants/marginfiAccounts.ts +5 -0
- package/src/constants/pythConstants.ts +2 -0
- package/src/constants/solautoConstants.ts +2 -0
- package/src/constants/tokenConstants.ts +11 -2
- package/src/services/transactions/manager/clientTransactionsManager.ts +2 -41
- package/src/services/transactions/manager/transactionsManager.ts +16 -7
- package/src/utils/stringUtils.ts +1 -1
- package/src/utils/switchboardUtils.ts +52 -17
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"marginfiAccounts.d.ts","sourceRoot":"","sources":["../../src/constants/marginfiAccounts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAetC,MAAM,MAAM,uBAAuB,GAAG;IACpC,CAAC,KAAK,EAAE,MAAM,GAAG;QAAE,CAAC,KAAK,EAAE,MAAM,GAAG,qBAAqB,CAAA;KAAE,CAAC;CAC7D,CAAC;
|
|
1
|
+
{"version":3,"file":"marginfiAccounts.d.ts","sourceRoot":"","sources":["../../src/constants/marginfiAccounts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAetC,MAAM,MAAM,uBAAuB,GAAG;IACpC,CAAC,KAAK,EAAE,MAAM,GAAG;QAAE,CAAC,KAAK,EAAE,MAAM,GAAG,qBAAqB,CAAA;KAAE,CAAC;CAC7D,CAAC;AA0LF,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,SAAS,CAAC;IACnB,YAAY,EAAE,SAAS,CAAC;IACxB,WAAW,EAAE,SAAS,CAAC;IACvB,YAAY,EAAE,uBAAuB,CAAC;CACvC;AAED,wBAAgB,mBAAmB,CACjC,UAAU,CAAC,EAAE,UAAU,EACvB,aAAa,CAAC,EAAE,SAAS,GACxB,uBAAuB,CA4BzB;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,SAAS,WAKrD"}
|
|
@@ -162,6 +162,11 @@ const MARGINFI_PROD_ACCOUNTS = {
|
|
|
162
162
|
bank: "61Qx9kgWo9RVtPHf8Rku6gbaUtcnzgkpAuifQBUcMRVK",
|
|
163
163
|
liquidityVault: "6FxnrCaJNHLyrFy6EPtqFjoUK5iRxDQbaVo1bA69nDhH",
|
|
164
164
|
vaultAuthority: "6VL2QW6sy8cjxL24xHL7eFbnUSi35DMJd8AzRwssSs9y"
|
|
165
|
+
},
|
|
166
|
+
[tokens.CBBTC]: {
|
|
167
|
+
bank: "Ac4KV5K5isDqtABtg6h5DiwzZMe3Sp9bc3pBiCUvUpaQ",
|
|
168
|
+
liquidityVault: "FvrJsHu7X9jkT9rTuR6Kfs6wSjPvjV6zhH4gVSiJ8LFT",
|
|
169
|
+
vaultAuthority: "jfBsYE2sAkNj1pwE6U1gQ515JU5vn9huZMDYVvZagb4",
|
|
165
170
|
}
|
|
166
171
|
},
|
|
167
172
|
["DQ2jqDJw9uzTwttf6h6r217BQ7kws3jZbJXDkfbCJa1q"]: {
|
|
@@ -19,6 +19,7 @@ export declare const PYTH_PRICE_FEED_IDS: {
|
|
|
19
19
|
DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263: string;
|
|
20
20
|
EKpQGSJtjMFqKZ9KQanSqYXRcF8fBopzLHYxdM65zcjm: string;
|
|
21
21
|
pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn: string;
|
|
22
|
+
cbbtcf3aa214zXHbiAZQwf4122FBYbraNdFqgw4iMij: string;
|
|
22
23
|
};
|
|
23
24
|
export declare const PYTH_ORACLE_ACCOUNTS: {
|
|
24
25
|
pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pythConstants.d.ts","sourceRoot":"","sources":["../../src/constants/pythConstants.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,eAAO,MAAM,iBAAiB,WAE7B,CAAC;AAGF,eAAO,MAAM,mBAAmB
|
|
1
|
+
{"version":3,"file":"pythConstants.d.ts","sourceRoot":"","sources":["../../src/constants/pythConstants.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,eAAO,MAAM,iBAAiB,WAE7B,CAAC;AAGF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;CAuC/B,CAAC;AAEF,eAAO,MAAM,oBAAoB;;CAEhC,CAAC"}
|
|
@@ -58,6 +58,7 @@ exports.PYTH_PRICE_FEED_IDS = {
|
|
|
58
58
|
[tokens.BONK]: "0x72b021217ca3fe68922a19aaf990109cb9d84e9ad004b4d2025ad6f529314419",
|
|
59
59
|
[tokens.WIF]: "0x4ca4beeca86f0d164160323817a4e42b10010a724c2217c6ee41b54cd4cc61fc",
|
|
60
60
|
[tokens.PUMP]: "0x7a01fca212788bba7c5bf8c9efd576a8a722f070d2c17596ff7bb609b8d5c3b9",
|
|
61
|
+
[tokens.CBBTC]: "0x2817d7bfe5c64b8ea956e9a26f573ef64e72e4d7891f2d6af9bcc93f7aff9a97",
|
|
61
62
|
};
|
|
62
63
|
exports.PYTH_ORACLE_ACCOUNTS = {
|
|
63
64
|
[tokens.PUMP]: "HMm3GPbdnqGwbkTnUUqCFsH8AMHDdEC3Lg8gcPD3HJSH",
|
|
@@ -20,5 +20,6 @@ export declare const CHORES_TX_NAME = "account chores";
|
|
|
20
20
|
export declare const JITO_TIP_ACCOUNTS: string[];
|
|
21
21
|
export declare const SOLAUTO_LUT = "8b7KefQDroVLGao71J5H3hFwABeyMCgCrLpXWssNFhk9";
|
|
22
22
|
export declare const STANDARD_LUT_ACCOUNTS: string[];
|
|
23
|
+
export declare const UPDATE_ORACLE_TX_NAME = "update oracle";
|
|
23
24
|
export {};
|
|
24
25
|
//# sourceMappingURL=solautoConstants.d.ts.map
|
|
@@ -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,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,UAAU,UAAU;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;CACd;AACD,eAAO,MAAM,MAAM,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAA;CAAO,CAAC;AAExD,eAAO,MAAM,cAAc,mBAAmB,CAAC;AAE/C,eAAO,MAAM,iBAAiB,UAS7B,CAAC;AAEF,eAAO,MAAM,WAAW,iDAAiD,CAAC;AAC1E,eAAO,MAAM,qBAAqB,UAYR,CAAC"}
|
|
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,UAAU,UAAU;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;CACd;AACD,eAAO,MAAM,MAAM,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAA;CAAO,CAAC;AAExD,eAAO,MAAM,cAAc,mBAAmB,CAAC;AAE/C,eAAO,MAAM,iBAAiB,UAS7B,CAAC;AAEF,eAAO,MAAM,WAAW,iDAAiD,CAAC;AAC1E,eAAO,MAAM,qBAAqB,UAYR,CAAC;AAE3B,eAAO,MAAM,qBAAqB,kBAAkB,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.CHORES_TX_NAME = 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;
|
|
3
|
+
exports.UPDATE_ORACLE_TX_NAME = exports.STANDARD_LUT_ACCOUNTS = exports.SOLAUTO_LUT = exports.JITO_TIP_ACCOUNTS = exports.CHORES_TX_NAME = 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");
|
|
@@ -39,3 +39,4 @@ exports.STANDARD_LUT_ACCOUNTS = [
|
|
|
39
39
|
web3_js_1.SYSVAR_INSTRUCTIONS_PUBKEY,
|
|
40
40
|
jupiter_1.JUPITER_PROGRAM_ID,
|
|
41
41
|
].map((x) => x.toString());
|
|
42
|
+
exports.UPDATE_ORACLE_TX_NAME = "update oracle";
|
|
@@ -21,6 +21,7 @@ export declare const RETARDIO = "6ogzHhzdrQr9Pgv6hZ2MNze7UrzBMAFyBBWUYp1Fhitx";
|
|
|
21
21
|
export declare const BILLY = "3B5wuUrMEi5yATD7on46hKfej3pfmd7t1RKgrsN3pump";
|
|
22
22
|
export declare const HMTR = "7JhmUcZrrfhyt5nTSu3AfsrUq2L9992a7AhwdSDxdoL2";
|
|
23
23
|
export declare const PUMP = "pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn";
|
|
24
|
+
export declare const CBBTC = "cbbtcf3aa214zXHbiAZQwf4122FBYbraNdFqgw4iMij";
|
|
24
25
|
export declare const ALL_SUPPORTED_TOKENS: string[];
|
|
25
26
|
export interface TokenInfo {
|
|
26
27
|
ticker: string;
|
|
@@ -37,6 +38,7 @@ export declare const TOKEN_INFO: {
|
|
|
37
38
|
export declare const MAJORS_PRIO: {
|
|
38
39
|
[x: string]: number;
|
|
39
40
|
"3NZ9JMVBmGAqocybic2c7LQCJScmgsAZ6vQqTDzcqmJh": number;
|
|
41
|
+
cbbtcf3aa214zXHbiAZQwf4122FBYbraNdFqgw4iMij: number;
|
|
40
42
|
"7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs": number;
|
|
41
43
|
};
|
|
42
44
|
//# sourceMappingURL=tokenConstants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokenConstants.d.ts","sourceRoot":"","sources":["../../src/constants/tokenConstants.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,KAAK,gDAAgD,CAAC;AACnE,eAAO,MAAM,QAAQ,iDAAiD,CAAC;AACvE,eAAO,MAAM,GAAG,gDAAgD,CAAC;AACjE,eAAO,MAAM,KAAK,gDAAgD,CAAC;AACnE,eAAO,MAAM,GAAG,iDAAiD,CAAC;AAClE,eAAO,MAAM,KAAK,gDAAgD,CAAC;AACnE,eAAO,MAAM,OAAO,gDAAgD,CAAC;AACrE,eAAO,MAAM,GAAG,gDAAgD,CAAC;AACjE,eAAO,MAAM,GAAG,gDAAgD,CAAC;AACjE,eAAO,MAAM,GAAG,iDAAiD,CAAC;AAClE,eAAO,MAAM,IAAI,iDAAiD,CAAC;AACnE,eAAO,MAAM,IAAI,iDAAiD,CAAC;AACnE,eAAO,MAAM,GAAG,gDAAgD,CAAC;AACjE,eAAO,MAAM,IAAI,iDAAiD,CAAC;AACnE,eAAO,MAAM,IAAI,iDAAiD,CAAC;AACnE,eAAO,MAAM,IAAI,iDAAiD,CAAC;AACnE,eAAO,MAAM,IAAI,iDAAiD,CAAC;AACnE,eAAO,MAAM,GAAG,iDAAiD,CAAC;AAClE,eAAO,MAAM,MAAM,iDAAiD,CAAC;AACrE,eAAO,MAAM,QAAQ,iDAAiD,CAAC;AACvE,eAAO,MAAM,KAAK,iDAAiD,CAAC;AACpE,eAAO,MAAM,IAAI,iDAAiD,CAAC;AACnE,eAAO,MAAM,IAAI,gDAAgD,CAAC;
|
|
1
|
+
{"version":3,"file":"tokenConstants.d.ts","sourceRoot":"","sources":["../../src/constants/tokenConstants.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,KAAK,gDAAgD,CAAC;AACnE,eAAO,MAAM,QAAQ,iDAAiD,CAAC;AACvE,eAAO,MAAM,GAAG,gDAAgD,CAAC;AACjE,eAAO,MAAM,KAAK,gDAAgD,CAAC;AACnE,eAAO,MAAM,GAAG,iDAAiD,CAAC;AAClE,eAAO,MAAM,KAAK,gDAAgD,CAAC;AACnE,eAAO,MAAM,OAAO,gDAAgD,CAAC;AACrE,eAAO,MAAM,GAAG,gDAAgD,CAAC;AACjE,eAAO,MAAM,GAAG,gDAAgD,CAAC;AACjE,eAAO,MAAM,GAAG,iDAAiD,CAAC;AAClE,eAAO,MAAM,IAAI,iDAAiD,CAAC;AACnE,eAAO,MAAM,IAAI,iDAAiD,CAAC;AACnE,eAAO,MAAM,GAAG,gDAAgD,CAAC;AACjE,eAAO,MAAM,IAAI,iDAAiD,CAAC;AACnE,eAAO,MAAM,IAAI,iDAAiD,CAAC;AACnE,eAAO,MAAM,IAAI,iDAAiD,CAAC;AACnE,eAAO,MAAM,IAAI,iDAAiD,CAAC;AACnE,eAAO,MAAM,GAAG,iDAAiD,CAAC;AAClE,eAAO,MAAM,MAAM,iDAAiD,CAAC;AACrE,eAAO,MAAM,QAAQ,iDAAiD,CAAC;AACvE,eAAO,MAAM,KAAK,iDAAiD,CAAC;AACpE,eAAO,MAAM,IAAI,iDAAiD,CAAC;AACnE,eAAO,MAAM,IAAI,gDAAgD,CAAC;AAClE,eAAO,MAAM,KAAK,gDAAgD,CAAC;AAEnE,eAAO,MAAM,oBAAoB,UA0BhC,CAAC;AAEF,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,eAAO,MAAM,UAAU,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CA+IlD,CAAC;AAEF,eAAO,MAAM,WAAW;;;;;CAKvB,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.MAJORS_PRIO = exports.TOKEN_INFO = exports.ALL_SUPPORTED_TOKENS = exports.PUMP = exports.HMTR = exports.BILLY = exports.RETARDIO = exports.POPCAT = exports.WIF = exports.BONK = exports.USDT = exports.USDC = exports.PYTH = exports.HNT = exports.WETH = exports.WBTC = exports.JLP = exports.JTO = exports.JUP = exports.JUP_SOL = exports.H_SOL = exports.INF = exports.M_SOL = exports.LST = exports.JITO_SOL = exports.B_SOL = void 0;
|
|
3
|
+
exports.MAJORS_PRIO = exports.TOKEN_INFO = exports.ALL_SUPPORTED_TOKENS = exports.CBBTC = exports.PUMP = exports.HMTR = exports.BILLY = exports.RETARDIO = exports.POPCAT = exports.WIF = exports.BONK = exports.USDT = exports.USDC = exports.PYTH = exports.HNT = exports.WETH = exports.WBTC = exports.JLP = exports.JTO = exports.JUP = exports.JUP_SOL = exports.H_SOL = exports.INF = exports.M_SOL = exports.LST = exports.JITO_SOL = exports.B_SOL = void 0;
|
|
4
4
|
const spl_token_1 = require("@solana/spl-token");
|
|
5
5
|
const web3_js_1 = require("@solana/web3.js");
|
|
6
6
|
// When adding token ensure a price feed is provided in pythConstants.ts & the token is in TOKEN_INFO
|
|
@@ -27,6 +27,7 @@ exports.RETARDIO = "6ogzHhzdrQr9Pgv6hZ2MNze7UrzBMAFyBBWUYp1Fhitx";
|
|
|
27
27
|
exports.BILLY = "3B5wuUrMEi5yATD7on46hKfej3pfmd7t1RKgrsN3pump";
|
|
28
28
|
exports.HMTR = "7JhmUcZrrfhyt5nTSu3AfsrUq2L9992a7AhwdSDxdoL2";
|
|
29
29
|
exports.PUMP = "pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn";
|
|
30
|
+
exports.CBBTC = "cbbtcf3aa214zXHbiAZQwf4122FBYbraNdFqgw4iMij";
|
|
30
31
|
exports.ALL_SUPPORTED_TOKENS = [
|
|
31
32
|
spl_token_1.NATIVE_MINT.toString(),
|
|
32
33
|
exports.B_SOL,
|
|
@@ -52,6 +53,7 @@ exports.ALL_SUPPORTED_TOKENS = [
|
|
|
52
53
|
exports.BILLY,
|
|
53
54
|
exports.HMTR,
|
|
54
55
|
exports.PUMP,
|
|
56
|
+
exports.CBBTC,
|
|
55
57
|
];
|
|
56
58
|
exports.TOKEN_INFO = {
|
|
57
59
|
[web3_js_1.PublicKey.default.toString()]: {
|
|
@@ -189,10 +191,17 @@ exports.TOKEN_INFO = {
|
|
|
189
191
|
ticker: "PUMP",
|
|
190
192
|
name: "Pump.fun",
|
|
191
193
|
decimals: 6,
|
|
192
|
-
}
|
|
194
|
+
},
|
|
195
|
+
[exports.CBBTC]: {
|
|
196
|
+
ticker: "CBBTC",
|
|
197
|
+
name: "Coinbase BTC",
|
|
198
|
+
decimals: 8,
|
|
199
|
+
isMajor: true,
|
|
200
|
+
},
|
|
193
201
|
};
|
|
194
202
|
exports.MAJORS_PRIO = {
|
|
195
203
|
[exports.WBTC]: 0,
|
|
204
|
+
[exports.CBBTC]: 0,
|
|
196
205
|
[exports.WETH]: 1,
|
|
197
206
|
[spl_token_1.NATIVE_MINT.toString()]: 2,
|
|
198
207
|
};
|
|
@@ -3,7 +3,6 @@ import { TransactionsManager } from "./transactionsManager";
|
|
|
3
3
|
import { TransactionItem } from "../types";
|
|
4
4
|
export declare class ClientTransactionsManager extends TransactionsManager<SolautoClient> {
|
|
5
5
|
private updateLut;
|
|
6
|
-
private addSwbOraclePullTxs;
|
|
7
6
|
private addChoreTxs;
|
|
8
7
|
send(transactions: TransactionItem[]): Promise<import("./transactionsManager").TransactionManagerStatuses>;
|
|
9
8
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clientTransactionsManager.d.ts","sourceRoot":"","sources":["../../../../src/services/transactions/manager/clientTransactionsManager.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"clientTransactionsManager.d.ts","sourceRoot":"","sources":["../../../../src/services/transactions/manager/clientTransactionsManager.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAQ5D,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAI3C,qBAAa,yBAA0B,SAAQ,mBAAmB,CAAC,aAAa,CAAC;YACjE,SAAS;YAmBT,WAAW;IA4CZ,IAAI,CAAC,YAAY,EAAE,eAAe,EAAE;CAmClD"}
|
|
@@ -14,26 +14,6 @@ class ClientTransactionsManager extends transactionsManager_1.TransactionsManage
|
|
|
14
14
|
await (0, utils_1.retryWithExponentialBackoff)(async (attemptNum, prevError) => await this.sendTransaction(tx.setAddressLookupTables(lutInputs), updateLutTxName, attemptNum, this.getUpdatedPriorityFeeSetting(prevError, attemptNum), "skip-simulation"), this.signableRetries, 150, this.errorsToThrow);
|
|
15
15
|
await this.txHandler.refetchReferralState();
|
|
16
16
|
}
|
|
17
|
-
async addSwbOraclePullTxs(txs) {
|
|
18
|
-
const switchboardMints = [
|
|
19
|
-
...((0, utils_1.isSwitchboardMint)(this.txHandler.pos.supplyMint)
|
|
20
|
-
? [this.txHandler.pos.supplyMint]
|
|
21
|
-
: []),
|
|
22
|
-
...((0, utils_1.isSwitchboardMint)(this.txHandler.pos.debtMint)
|
|
23
|
-
? [this.txHandler.pos.debtMint]
|
|
24
|
-
: []),
|
|
25
|
-
];
|
|
26
|
-
if (txs.find((x) => x.oracleInteractor) && switchboardMints.length) {
|
|
27
|
-
this.txHandler.log("Checking if oracle update(s) needed...");
|
|
28
|
-
const staleOracles = (await (0, utils_1.getSwitchboardFeedData)(this.txHandler.connection, switchboardMints)).filter((x) => x.stale).length > 0;
|
|
29
|
-
if (staleOracles) {
|
|
30
|
-
this.txHandler.log("Requires oracle update(s)...");
|
|
31
|
-
const oracleTxs = switchboardMints.map((x) => new types_1.TransactionItem(async () => await (0, utils_1.buildSwbSubmitResponseTx)(this.txHandler.connection, this.txHandler.signer, x), this.updateOracleTxName));
|
|
32
|
-
this.txHandler.log("Set crank IXs in TX");
|
|
33
|
-
txs.unshift(...oracleTxs);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
17
|
async addChoreTxs(txs, updateLutTx) {
|
|
38
18
|
let [choresBefore, choresAfter] = await (0, transactionUtils_1.getTransactionChores)(this.txHandler, (0, umi_1.transactionBuilder)().add(txs
|
|
39
19
|
.filter((x) => x.tx && x.tx.getInstructions().length > 0)
|
|
@@ -63,7 +43,7 @@ class ClientTransactionsManager extends transactionsManager_1.TransactionsManage
|
|
|
63
43
|
await this.updateLut(updateLut.tx, updateLut.new);
|
|
64
44
|
}
|
|
65
45
|
this.lookupTables.defaultLuts = client.defaultLookupTables();
|
|
66
|
-
await this.
|
|
46
|
+
// await addSwbOraclePullTxs(this.txHandler, items);
|
|
67
47
|
for (const item of items) {
|
|
68
48
|
await item.initialize();
|
|
69
49
|
}
|
|
@@ -50,7 +50,6 @@ export declare class TransactionsManager<T extends TxHandler> {
|
|
|
50
50
|
protected totalRetries: number;
|
|
51
51
|
protected retryDelay: number;
|
|
52
52
|
protected abortController?: AbortController;
|
|
53
|
-
updateOracleTxName: string;
|
|
54
53
|
constructor(args: TransactionsManagerArgs<T>);
|
|
55
54
|
private assembleTransactionSets;
|
|
56
55
|
private updateStatus;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transactionsManager.d.ts","sourceRoot":"","sources":["../../../../src/services/transactions/manager/transactionsManager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EACL,kBAAkB,EAElB,kBAAkB,EACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAEL,aAAa,EAId,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C,OAAO,EAAE,YAAY,EAAE,eAAe,EAAkB,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"transactionsManager.d.ts","sourceRoot":"","sources":["../../../../src/services/transactions/manager/transactionsManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,7 @@ const types_1 = require("../../../types");
|
|
|
10
10
|
const utils_1 = require("../../../utils");
|
|
11
11
|
const transactionUtils_1 = require("../transactionUtils");
|
|
12
12
|
const types_2 = require("../types");
|
|
13
|
+
const constants_1 = require("../../../constants");
|
|
13
14
|
class TransactionTooLargeError extends Error {
|
|
14
15
|
constructor(message) {
|
|
15
16
|
super(message);
|
|
@@ -29,7 +30,6 @@ var TransactionStatus;
|
|
|
29
30
|
class TransactionsManager {
|
|
30
31
|
constructor(args) {
|
|
31
32
|
this.statuses = [];
|
|
32
|
-
this.updateOracleTxName = "update oracle";
|
|
33
33
|
this.txHandler = args.txHandler;
|
|
34
34
|
this.statusCallback = args.statusCallback;
|
|
35
35
|
this.txRunType = args.txRunType;
|
|
@@ -102,7 +102,9 @@ class TransactionsManager {
|
|
|
102
102
|
this.statuses.push(args);
|
|
103
103
|
}
|
|
104
104
|
}
|
|
105
|
-
(0, utils_1.consoleLog)(`${args.name} ${args.attemptNum} is ${args.status
|
|
105
|
+
(0, utils_1.consoleLog)(`${args.name} ${args.attemptNum} is ${args.status
|
|
106
|
+
.toString()
|
|
107
|
+
.toLowerCase()}`);
|
|
106
108
|
this.statusCallback?.([...this.statuses]);
|
|
107
109
|
}
|
|
108
110
|
async debugAccounts(itemSet, tx) {
|
|
@@ -171,7 +173,7 @@ class TransactionsManager {
|
|
|
171
173
|
}
|
|
172
174
|
const newItemSetNames = itemSets.flatMap((x) => x.items.map((y) => y.name ?? ""));
|
|
173
175
|
if (newItemSetNames.length === 1 &&
|
|
174
|
-
newItemSetNames[0] ===
|
|
176
|
+
newItemSetNames[0] === constants_1.UPDATE_ORACLE_TX_NAME) {
|
|
175
177
|
(0, utils_1.consoleLog)("Skipping unnecessary oracle update");
|
|
176
178
|
this.updateStatusForSets(itemSets.map((x) => x.name()), {
|
|
177
179
|
status: TransactionStatus.Skipped,
|
|
@@ -13,7 +13,7 @@ const generalUtils_1 = require("./generalUtils");
|
|
|
13
13
|
exports.StrategyTypes = ["Long", "Short", "Ratio"];
|
|
14
14
|
function adjustedTicker(mint) {
|
|
15
15
|
const info = (0, generalUtils_1.tokenInfo)(mint);
|
|
16
|
-
if (info.ticker.toLowerCase()
|
|
16
|
+
if (info.ticker.toLowerCase().includes("btc")) {
|
|
17
17
|
return "BTC";
|
|
18
18
|
}
|
|
19
19
|
else if (info.ticker.toLowerCase() === "weth") {
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { Connection, PublicKey } from "@solana/web3.js";
|
|
2
2
|
import { Signer } from "@metaplex-foundation/umi";
|
|
3
|
-
import
|
|
3
|
+
import * as OnDemand from "@switchboard-xyz/on-demand";
|
|
4
4
|
import { TransactionItemInputs } from "../types";
|
|
5
|
+
import { SolautoClient, TransactionItem } from "../services";
|
|
5
6
|
export declare function getPullFeed(conn: Connection, mint: PublicKey, wallet?: PublicKey): Promise<{
|
|
6
|
-
gateway:
|
|
7
|
-
feed: PullFeed;
|
|
7
|
+
gateway: OnDemand.Gateway;
|
|
8
|
+
feed: OnDemand.PullFeed;
|
|
8
9
|
}>;
|
|
9
10
|
export declare function buildSwbSubmitResponseTx(conn: Connection, signer: Signer, mint: PublicKey): Promise<TransactionItemInputs | undefined>;
|
|
10
11
|
export declare function getSwitchboardFeedData(conn: Connection, mints: PublicKey[]): Promise<{
|
|
@@ -13,4 +14,5 @@ export declare function getSwitchboardFeedData(conn: Connection, mints: PublicKe
|
|
|
13
14
|
stale: boolean;
|
|
14
15
|
}[]>;
|
|
15
16
|
export declare function isSwitchboardMint(mint: PublicKey | string): boolean;
|
|
17
|
+
export declare function addSwbOraclePullTxs(client: SolautoClient, txs: TransactionItem[]): Promise<void>;
|
|
16
18
|
//# sourceMappingURL=switchboardUtils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"switchboardUtils.d.ts","sourceRoot":"","sources":["../../src/utils/switchboardUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,SAAS,EAGV,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,MAAM,EAAsB,MAAM,0BAA0B,CAAC;AAGtE,OAAO,
|
|
1
|
+
{"version":3,"file":"switchboardUtils.d.ts","sourceRoot":"","sources":["../../src/utils/switchboardUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,SAAS,EAGV,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,MAAM,EAAsB,MAAM,0BAA0B,CAAC;AAGtE,OAAO,KAAK,QAAQ,MAAM,4BAA4B,CAAC;AAOvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAQjD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE7D,wBAAsB,WAAW,CAC/B,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,SAAS,EACf,MAAM,CAAC,EAAE,SAAS;;;GAkCnB;AAED,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,SAAS,GACd,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAiD5C;AAED,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,SAAS,EAAE,GACjB,OAAO,CAAC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,EAAE,CAAC,CAuB/D;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,WAEzD;AAED,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,aAAa,EACrB,GAAG,EAAE,eAAe,EAAE,iBAkCvB"}
|
|
@@ -1,18 +1,53 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
36
|
exports.getPullFeed = getPullFeed;
|
|
4
37
|
exports.buildSwbSubmitResponseTx = buildSwbSubmitResponseTx;
|
|
5
38
|
exports.getSwitchboardFeedData = getSwitchboardFeedData;
|
|
6
39
|
exports.isSwitchboardMint = isSwitchboardMint;
|
|
40
|
+
exports.addSwbOraclePullTxs = addSwbOraclePullTxs;
|
|
7
41
|
const web3_js_1 = require("@solana/web3.js");
|
|
8
42
|
const umi_1 = require("@metaplex-foundation/umi");
|
|
9
43
|
const umi_web3js_adapters_1 = require("@metaplex-foundation/umi-web3js-adapters");
|
|
10
44
|
const anchor_1 = require("@coral-xyz/anchor");
|
|
11
|
-
const
|
|
45
|
+
const OnDemand = __importStar(require("@switchboard-xyz/on-demand"));
|
|
12
46
|
const constants_1 = require("../constants");
|
|
13
47
|
const generalUtils_1 = require("./generalUtils");
|
|
14
48
|
const solanaUtils_1 = require("./solanaUtils");
|
|
15
49
|
const common_1 = require("@switchboard-xyz/common");
|
|
50
|
+
const services_1 = require("../services");
|
|
16
51
|
async function getPullFeed(conn, mint, wallet) {
|
|
17
52
|
const dummyWallet = {
|
|
18
53
|
publicKey: wallet ?? new web3_js_1.PublicKey("11111111111111111111111111111111"),
|
|
@@ -21,17 +56,16 @@ async function getPullFeed(conn, mint, wallet) {
|
|
|
21
56
|
};
|
|
22
57
|
const provider = new anchor_1.AnchorProvider(conn, dummyWallet, anchor_1.AnchorProvider.defaultOptions());
|
|
23
58
|
(0, generalUtils_1.consoleLog)("Pulling SWB program...");
|
|
24
|
-
const
|
|
59
|
+
const { PullFeed, Queue, ON_DEMAND_MAINNET_PID } = OnDemand;
|
|
60
|
+
const sbProgram = await anchor_1.Program.at(ON_DEMAND_MAINNET_PID, provider);
|
|
25
61
|
const crossbar = new common_1.CrossbarClient("https://integrator-crossbar.mrgn.app/");
|
|
26
|
-
const queue = await
|
|
62
|
+
const queue = await Queue.loadDefault(sbProgram);
|
|
27
63
|
const gateway = await queue.fetchGatewayFromCrossbar(crossbar);
|
|
28
|
-
(0, generalUtils_1.consoleLog)("Gateway URL: ", gateway.gatewayUrl);
|
|
29
|
-
(0, generalUtils_1.consoleLog)("Gateway endpoint: ", gateway.endpoint());
|
|
30
64
|
(0, generalUtils_1.consoleLog)("Pulled SWB program!");
|
|
31
65
|
(0, generalUtils_1.consoleLog)("Feed id:", constants_1.SWITCHBOARD_PRICE_FEED_IDS[mint.toString()].feedId);
|
|
32
66
|
return {
|
|
33
67
|
gateway,
|
|
34
|
-
feed: new
|
|
68
|
+
feed: new PullFeed(sbProgram, new web3_js_1.PublicKey(constants_1.SWITCHBOARD_PRICE_FEED_IDS[mint.toString()].feedId)),
|
|
35
69
|
};
|
|
36
70
|
}
|
|
37
71
|
async function buildSwbSubmitResponseTx(conn, signer, mint) {
|
|
@@ -42,7 +76,7 @@ async function buildSwbSubmitResponseTx(conn, signer, mint) {
|
|
|
42
76
|
gateway: gateway.endpoint(),
|
|
43
77
|
chain: "solana",
|
|
44
78
|
network: "mainnet-beta",
|
|
45
|
-
}
|
|
79
|
+
});
|
|
46
80
|
if (!res[1] || !res[1][0].value) {
|
|
47
81
|
throw new Error("Unable to fetch Switchboard pull IX");
|
|
48
82
|
}
|
|
@@ -87,3 +121,21 @@ async function getSwitchboardFeedData(conn, mints) {
|
|
|
87
121
|
function isSwitchboardMint(mint) {
|
|
88
122
|
return Object.keys(constants_1.SWITCHBOARD_PRICE_FEED_IDS).includes(mint.toString());
|
|
89
123
|
}
|
|
124
|
+
async function addSwbOraclePullTxs(client, txs) {
|
|
125
|
+
const switchboardMints = [
|
|
126
|
+
...(isSwitchboardMint(client.pos.supplyMint)
|
|
127
|
+
? [client.pos.supplyMint]
|
|
128
|
+
: []),
|
|
129
|
+
...(isSwitchboardMint(client.pos.debtMint) ? [client.pos.debtMint] : []),
|
|
130
|
+
];
|
|
131
|
+
if (txs.find((x) => x.oracleInteractor) && switchboardMints.length) {
|
|
132
|
+
(0, generalUtils_1.consoleLog)("Checking if oracle update(s) needed...");
|
|
133
|
+
const staleOracles = (await getSwitchboardFeedData(client.connection, switchboardMints)).filter((x) => x.stale).length > 0;
|
|
134
|
+
if (staleOracles) {
|
|
135
|
+
(0, generalUtils_1.consoleLog)("Requires oracle update(s)...");
|
|
136
|
+
const oracleTxs = switchboardMints.map((x) => new services_1.TransactionItem(async () => await buildSwbSubmitResponseTx(client.connection, client.signer, x), constants_1.UPDATE_ORACLE_TX_NAME));
|
|
137
|
+
(0, generalUtils_1.consoleLog)("Set crank IXs in TX");
|
|
138
|
+
txs.unshift(...oracleTxs);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
package/local/txSandbox.ts
CHANGED
|
@@ -2,41 +2,34 @@ import { Keypair, PublicKey } from "@solana/web3.js";
|
|
|
2
2
|
import { createSignerFromKeypair, publicKey } from "@metaplex-foundation/umi";
|
|
3
3
|
import { fromWeb3JsKeypair } from "@metaplex-foundation/umi-web3js-adapters";
|
|
4
4
|
import {
|
|
5
|
-
buildSwbSubmitResponseTx,
|
|
6
5
|
ClientTransactionsManager,
|
|
7
6
|
consoleLog,
|
|
8
|
-
|
|
7
|
+
fetchBank,
|
|
9
8
|
getBatches,
|
|
10
9
|
getClient,
|
|
11
|
-
getMarginfiAccounts,
|
|
12
10
|
getPositionExBulk,
|
|
13
11
|
getSolanaRpcConnection,
|
|
14
12
|
getSolautoManagedPositions,
|
|
15
|
-
H_SOL,
|
|
16
|
-
JITO_SOL,
|
|
17
|
-
JUP_SOL,
|
|
18
13
|
LendingPlatform,
|
|
19
14
|
LOCAL_IRONFORGE_API_URL,
|
|
20
|
-
openSolautoPosition,
|
|
21
15
|
PriceType,
|
|
22
16
|
PriorityFeeSetting,
|
|
23
17
|
ProgramEnv,
|
|
24
18
|
rebalance,
|
|
19
|
+
safeFetchBank,
|
|
20
|
+
safeFetchMarginfiAccount,
|
|
25
21
|
SOLAUTO_PROD_PROGRAM,
|
|
26
22
|
SOLAUTO_TEST_PROGRAM,
|
|
27
23
|
SolautoClient,
|
|
28
|
-
toBaseUnit,
|
|
29
24
|
TransactionItem,
|
|
30
|
-
USDC,
|
|
31
25
|
} from "../src";
|
|
32
26
|
import { getSecretKey } from "./shared";
|
|
33
|
-
import { NATIVE_MINT } from "@solana/spl-token";
|
|
34
27
|
|
|
35
28
|
const payForTransaction = true;
|
|
36
29
|
const testProgram = false;
|
|
37
30
|
const lpEnv: ProgramEnv = "Prod";
|
|
38
31
|
|
|
39
|
-
let [
|
|
32
|
+
let [, umi] = getSolanaRpcConnection(
|
|
40
33
|
LOCAL_IRONFORGE_API_URL,
|
|
41
34
|
testProgram ? SOLAUTO_TEST_PROGRAM : SOLAUTO_PROD_PROGRAM,
|
|
42
35
|
lpEnv
|
|
@@ -44,7 +37,7 @@ let [conn, umi] = getSolanaRpcConnection(
|
|
|
44
37
|
|
|
45
38
|
const signer = createSignerFromKeypair(
|
|
46
39
|
umi,
|
|
47
|
-
fromWeb3JsKeypair(Keypair.fromSecretKey(getSecretKey("
|
|
40
|
+
fromWeb3JsKeypair(Keypair.fromSecretKey(getSecretKey("solauto-manager")))
|
|
48
41
|
);
|
|
49
42
|
|
|
50
43
|
export async function main() {
|
|
@@ -56,34 +49,30 @@ export async function main() {
|
|
|
56
49
|
lpEnv,
|
|
57
50
|
});
|
|
58
51
|
|
|
59
|
-
await client.initializeExistingSolautoPosition({
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
});
|
|
52
|
+
// await client.initializeExistingSolautoPosition({
|
|
53
|
+
// positionId: 1,
|
|
54
|
+
// authority: new PublicKey("61rtn5tzVkesapo6Cz83SPoShUfAePSxJsqniuF2wRKC"),
|
|
55
|
+
// // lpUserAccount: new PublicKey(
|
|
56
|
+
// // "GEokw9jqbh6d1xUNA3qaeYFFetbSR5Y1nt7C3chwwgSz"
|
|
57
|
+
// // ),
|
|
58
|
+
// });
|
|
66
59
|
|
|
67
|
-
// const transactionItems = [
|
|
68
|
-
// rebalance(client, 3000),
|
|
69
|
-
// ];
|
|
70
|
-
const transactionItems = [
|
|
71
|
-
new TransactionItem(
|
|
72
|
-
async () => await buildSwbSubmitResponseTx(conn, signer, new PublicKey(NATIVE_MINT)),
|
|
73
|
-
// async () => await buildSwbSubmitResponseTx(conn, signer, new PublicKey(JUP_SOL)),
|
|
74
|
-
// async () => await buildSwbSubmitResponseTx(conn, signer, new PublicKey(JITO_SOL))
|
|
75
|
-
// async () => await buildSwbSubmitResponseTx(conn, signer, new PublicKey(H_SOL))
|
|
76
|
-
),
|
|
77
|
-
];
|
|
60
|
+
// const transactionItems = [rebalance(client)];
|
|
78
61
|
|
|
79
|
-
const
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
const
|
|
86
|
-
|
|
62
|
+
const account = await fetchBank(umi, publicKey("Ac4KV5K5isDqtABtg6h5DiwzZMe3Sp9bc3pBiCUvUpaQ"));
|
|
63
|
+
console.log(account.config.oracleKeys[0]);
|
|
64
|
+
console.log(account.config.oracleKeys[1]);
|
|
65
|
+
console.log(account.config.oracleKeys[2]);
|
|
66
|
+
console.log(account.config.oracleKeys[3]);
|
|
67
|
+
|
|
68
|
+
// const txManager = new ClientTransactionsManager({
|
|
69
|
+
// txHandler: client,
|
|
70
|
+
// txRunType: payForTransaction ? "normal" : "only-simulate",
|
|
71
|
+
// priorityFeeSetting: PriorityFeeSetting.Default,
|
|
72
|
+
// retryConfig: { totalRetries: 2 },
|
|
73
|
+
// });
|
|
74
|
+
// const statuses = await txManager.send(transactionItems);
|
|
75
|
+
// consoleLog(statuses);
|
|
87
76
|
}
|
|
88
77
|
|
|
89
78
|
async function refreshAll() {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@haven-fi/solauto-sdk",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.814",
|
|
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",
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"@solana/spl-token": "^0.4.0",
|
|
22
22
|
"@solana/web3.js": "=1.98.2",
|
|
23
23
|
"@switchboard-xyz/common": "=3.4.1",
|
|
24
|
-
"@
|
|
24
|
+
"@switchboard-xyz/on-demand": "=2.17.4",
|
|
25
25
|
"axios": "^1.7.8",
|
|
26
26
|
"big.js": "^6.2.2",
|
|
27
27
|
"bs58": "^5.0.0",
|
|
@@ -142,6 +142,11 @@ const MARGINFI_PROD_ACCOUNTS: MarginfiBankAccountsMap = {
|
|
|
142
142
|
bank: "61Qx9kgWo9RVtPHf8Rku6gbaUtcnzgkpAuifQBUcMRVK",
|
|
143
143
|
liquidityVault: "6FxnrCaJNHLyrFy6EPtqFjoUK5iRxDQbaVo1bA69nDhH",
|
|
144
144
|
vaultAuthority: "6VL2QW6sy8cjxL24xHL7eFbnUSi35DMJd8AzRwssSs9y"
|
|
145
|
+
},
|
|
146
|
+
[tokens.CBBTC]: {
|
|
147
|
+
bank: "Ac4KV5K5isDqtABtg6h5DiwzZMe3Sp9bc3pBiCUvUpaQ",
|
|
148
|
+
liquidityVault: "FvrJsHu7X9jkT9rTuR6Kfs6wSjPvjV6zhH4gVSiJ8LFT",
|
|
149
|
+
vaultAuthority: "jfBsYE2sAkNj1pwE6U1gQ515JU5vn9huZMDYVvZagb4",
|
|
145
150
|
}
|
|
146
151
|
},
|
|
147
152
|
["DQ2jqDJw9uzTwttf6h6r217BQ7kws3jZbJXDkfbCJa1q"]: {
|
|
@@ -44,6 +44,8 @@ export const PYTH_PRICE_FEED_IDS = {
|
|
|
44
44
|
"0x4ca4beeca86f0d164160323817a4e42b10010a724c2217c6ee41b54cd4cc61fc",
|
|
45
45
|
[tokens.PUMP]:
|
|
46
46
|
"0x7a01fca212788bba7c5bf8c9efd576a8a722f070d2c17596ff7bb609b8d5c3b9",
|
|
47
|
+
[tokens.CBBTC]:
|
|
48
|
+
"0x2817d7bfe5c64b8ea956e9a26f573ef64e72e4d7891f2d6af9bcc93f7aff9a97",
|
|
47
49
|
};
|
|
48
50
|
|
|
49
51
|
export const PYTH_ORACLE_ACCOUNTS = {
|
|
@@ -25,6 +25,7 @@ export const RETARDIO = "6ogzHhzdrQr9Pgv6hZ2MNze7UrzBMAFyBBWUYp1Fhitx";
|
|
|
25
25
|
export const BILLY = "3B5wuUrMEi5yATD7on46hKfej3pfmd7t1RKgrsN3pump";
|
|
26
26
|
export const HMTR = "7JhmUcZrrfhyt5nTSu3AfsrUq2L9992a7AhwdSDxdoL2";
|
|
27
27
|
export const PUMP = "pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn";
|
|
28
|
+
export const CBBTC = "cbbtcf3aa214zXHbiAZQwf4122FBYbraNdFqgw4iMij";
|
|
28
29
|
|
|
29
30
|
export const ALL_SUPPORTED_TOKENS = [
|
|
30
31
|
NATIVE_MINT.toString(),
|
|
@@ -51,6 +52,7 @@ export const ALL_SUPPORTED_TOKENS = [
|
|
|
51
52
|
BILLY,
|
|
52
53
|
HMTR,
|
|
53
54
|
PUMP,
|
|
55
|
+
CBBTC,
|
|
54
56
|
];
|
|
55
57
|
|
|
56
58
|
export interface TokenInfo {
|
|
@@ -199,11 +201,18 @@ export const TOKEN_INFO: { [key: string]: TokenInfo } = {
|
|
|
199
201
|
ticker: "PUMP",
|
|
200
202
|
name: "Pump.fun",
|
|
201
203
|
decimals: 6,
|
|
202
|
-
}
|
|
204
|
+
},
|
|
205
|
+
[CBBTC]: {
|
|
206
|
+
ticker: "CBBTC",
|
|
207
|
+
name: "Coinbase BTC",
|
|
208
|
+
decimals: 8,
|
|
209
|
+
isMajor: true,
|
|
210
|
+
},
|
|
203
211
|
};
|
|
204
212
|
|
|
205
213
|
export const MAJORS_PRIO = {
|
|
206
214
|
[WBTC]: 0,
|
|
215
|
+
[CBBTC]: 0,
|
|
207
216
|
[WETH]: 1,
|
|
208
217
|
[NATIVE_MINT.toString()]: 2,
|
|
209
|
-
};
|
|
218
|
+
};
|
|
@@ -5,6 +5,7 @@ import {
|
|
|
5
5
|
import { SolautoClient } from "../../solauto";
|
|
6
6
|
import { TransactionsManager } from "./transactionsManager";
|
|
7
7
|
import {
|
|
8
|
+
addSwbOraclePullTxs,
|
|
8
9
|
buildSwbSubmitResponseTx,
|
|
9
10
|
getSwitchboardFeedData,
|
|
10
11
|
isSwitchboardMint,
|
|
@@ -34,46 +35,6 @@ export class ClientTransactionsManager extends TransactionsManager<SolautoClient
|
|
|
34
35
|
await this.txHandler.refetchReferralState();
|
|
35
36
|
}
|
|
36
37
|
|
|
37
|
-
private async addSwbOraclePullTxs(txs: TransactionItem[]) {
|
|
38
|
-
const switchboardMints = [
|
|
39
|
-
...(isSwitchboardMint(this.txHandler.pos.supplyMint)
|
|
40
|
-
? [this.txHandler.pos.supplyMint]
|
|
41
|
-
: []),
|
|
42
|
-
...(isSwitchboardMint(this.txHandler.pos.debtMint)
|
|
43
|
-
? [this.txHandler.pos.debtMint]
|
|
44
|
-
: []),
|
|
45
|
-
];
|
|
46
|
-
|
|
47
|
-
if (txs.find((x) => x.oracleInteractor) && switchboardMints.length) {
|
|
48
|
-
this.txHandler.log("Checking if oracle update(s) needed...");
|
|
49
|
-
const staleOracles =
|
|
50
|
-
(
|
|
51
|
-
await getSwitchboardFeedData(
|
|
52
|
-
this.txHandler.connection,
|
|
53
|
-
switchboardMints
|
|
54
|
-
)
|
|
55
|
-
).filter((x) => x.stale).length > 0;
|
|
56
|
-
|
|
57
|
-
if (staleOracles) {
|
|
58
|
-
this.txHandler.log("Requires oracle update(s)...");
|
|
59
|
-
const oracleTxs = switchboardMints.map(
|
|
60
|
-
(x) =>
|
|
61
|
-
new TransactionItem(
|
|
62
|
-
async () =>
|
|
63
|
-
await buildSwbSubmitResponseTx(
|
|
64
|
-
this.txHandler.connection,
|
|
65
|
-
this.txHandler.signer,
|
|
66
|
-
x
|
|
67
|
-
),
|
|
68
|
-
this.updateOracleTxName
|
|
69
|
-
)
|
|
70
|
-
);
|
|
71
|
-
this.txHandler.log("Set crank IXs in TX");
|
|
72
|
-
txs.unshift(...oracleTxs);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
|
|
77
38
|
private async addChoreTxs(
|
|
78
39
|
txs: TransactionItem[],
|
|
79
40
|
updateLutTx?: TransactionBuilder
|
|
@@ -131,7 +92,7 @@ export class ClientTransactionsManager extends TransactionsManager<SolautoClient
|
|
|
131
92
|
}
|
|
132
93
|
this.lookupTables.defaultLuts = client.defaultLookupTables();
|
|
133
94
|
|
|
134
|
-
await this.
|
|
95
|
+
// await addSwbOraclePullTxs(this.txHandler, items);
|
|
135
96
|
|
|
136
97
|
for (const item of items) {
|
|
137
98
|
await item.initialize();
|
|
@@ -16,6 +16,7 @@ import {
|
|
|
16
16
|
import { TxHandler } from "../../solauto";
|
|
17
17
|
import { getErrorInfo } from "../transactionUtils";
|
|
18
18
|
import { LookupTables, TransactionItem, TransactionSet } from "../types";
|
|
19
|
+
import { UPDATE_ORACLE_TX_NAME } from "../../../constants";
|
|
19
20
|
|
|
20
21
|
export class TransactionTooLargeError extends Error {
|
|
21
22
|
constructor(message: string) {
|
|
@@ -75,8 +76,6 @@ export class TransactionsManager<T extends TxHandler> {
|
|
|
75
76
|
protected retryDelay: number;
|
|
76
77
|
protected abortController?: AbortController;
|
|
77
78
|
|
|
78
|
-
updateOracleTxName = "update oracle";
|
|
79
|
-
|
|
80
79
|
constructor(args: TransactionsManagerArgs<T>) {
|
|
81
80
|
this.txHandler = args.txHandler;
|
|
82
81
|
this.statusCallback = args.statusCallback;
|
|
@@ -118,7 +117,9 @@ export class TransactionsManager<T extends TxHandler> {
|
|
|
118
117
|
);
|
|
119
118
|
if (!transaction.fitsInOneTransaction(this.txHandler.umi)) {
|
|
120
119
|
throw new TransactionTooLargeError(
|
|
121
|
-
`Exceeds max transaction size (${transaction.getTransactionSize(
|
|
120
|
+
`Exceeds max transaction size (${transaction.getTransactionSize(
|
|
121
|
+
this.txHandler.umi
|
|
122
|
+
)})`
|
|
122
123
|
);
|
|
123
124
|
} else {
|
|
124
125
|
let newSet = new TransactionSet(this.txHandler, this.lookupTables, [
|
|
@@ -166,7 +167,9 @@ export class TransactionsManager<T extends TxHandler> {
|
|
|
166
167
|
}
|
|
167
168
|
}
|
|
168
169
|
consoleLog(
|
|
169
|
-
`${args.name} ${args.attemptNum} is ${args.status
|
|
170
|
+
`${args.name} ${args.attemptNum} is ${args.status
|
|
171
|
+
.toString()
|
|
172
|
+
.toLowerCase()}`
|
|
170
173
|
);
|
|
171
174
|
this.statusCallback?.([...this.statuses]);
|
|
172
175
|
}
|
|
@@ -180,7 +183,11 @@ export class TransactionsManager<T extends TxHandler> {
|
|
|
180
183
|
(x) => !lutAccounts.includes(x)
|
|
181
184
|
);
|
|
182
185
|
consoleLog(
|
|
183
|
-
`Program ${ix.programId}, data len: ${
|
|
186
|
+
`Program ${ix.programId}, data len: ${
|
|
187
|
+
ix.data.length
|
|
188
|
+
}, LUT accounts data: ${
|
|
189
|
+
ix.keys.filter((x) => lutAccounts.includes(x.pubkey)).length * 3
|
|
190
|
+
}`
|
|
184
191
|
);
|
|
185
192
|
if (accountsNotInLut.length > 0) {
|
|
186
193
|
consoleLog(`${accountsNotInLut.length} accounts not in LUT:`);
|
|
@@ -273,7 +280,7 @@ export class TransactionsManager<T extends TxHandler> {
|
|
|
273
280
|
);
|
|
274
281
|
if (
|
|
275
282
|
newItemSetNames.length === 1 &&
|
|
276
|
-
newItemSetNames[0] ===
|
|
283
|
+
newItemSetNames[0] === UPDATE_ORACLE_TX_NAME
|
|
277
284
|
) {
|
|
278
285
|
consoleLog("Skipping unnecessary oracle update");
|
|
279
286
|
this.updateStatusForSets(
|
|
@@ -570,7 +577,9 @@ export class TransactionsManager<T extends TxHandler> {
|
|
|
570
577
|
this.priorityFeeSetting
|
|
571
578
|
);
|
|
572
579
|
|
|
573
|
-
const errorString = `${errorDetails.errorName ?? "Unknown error"}: ${
|
|
580
|
+
const errorString = `${errorDetails.errorName ?? "Unknown error"}: ${
|
|
581
|
+
errorDetails.errorInfo?.split("\n")[0] ?? "unknown"
|
|
582
|
+
}`;
|
|
574
583
|
const errorInfo =
|
|
575
584
|
errorDetails.errorName || errorDetails.errorInfo
|
|
576
585
|
? errorString
|
package/src/utils/stringUtils.ts
CHANGED
|
@@ -9,7 +9,7 @@ export type StrategyType = (typeof StrategyTypes)[number];
|
|
|
9
9
|
export function adjustedTicker(mint?: PublicKey) {
|
|
10
10
|
const info = tokenInfo(mint);
|
|
11
11
|
|
|
12
|
-
if (info.ticker.toLowerCase()
|
|
12
|
+
if (info.ticker.toLowerCase().includes("btc")) {
|
|
13
13
|
return "BTC";
|
|
14
14
|
} else if (info.ticker.toLowerCase() === "weth") {
|
|
15
15
|
return "ETH";
|
|
@@ -6,14 +6,14 @@ import {
|
|
|
6
6
|
} from "@solana/web3.js";
|
|
7
7
|
import { Signer, transactionBuilder } from "@metaplex-foundation/umi";
|
|
8
8
|
import { toWeb3JsPublicKey } from "@metaplex-foundation/umi-web3js-adapters";
|
|
9
|
-
import { AnchorProvider, Program } from "@coral-xyz/anchor";
|
|
10
|
-
import
|
|
11
|
-
PullFeed,
|
|
12
|
-
Queue,
|
|
13
|
-
ON_DEMAND_MAINNET_PID,
|
|
14
|
-
} from "@haven-fi/test-swb";
|
|
9
|
+
import { AnchorProvider, Idl, Program } from "@coral-xyz/anchor";
|
|
10
|
+
import * as OnDemand from "@switchboard-xyz/on-demand";
|
|
15
11
|
import Big from "big.js";
|
|
16
|
-
import {
|
|
12
|
+
import {
|
|
13
|
+
PRICES,
|
|
14
|
+
SWITCHBOARD_PRICE_FEED_IDS,
|
|
15
|
+
UPDATE_ORACLE_TX_NAME,
|
|
16
|
+
} from "../constants";
|
|
17
17
|
import { TransactionItemInputs } from "../types";
|
|
18
18
|
import {
|
|
19
19
|
consoleLog,
|
|
@@ -22,6 +22,7 @@ import {
|
|
|
22
22
|
} from "./generalUtils";
|
|
23
23
|
import { getWrappedInstruction } from "./solanaUtils";
|
|
24
24
|
import { CrossbarClient } from "@switchboard-xyz/common";
|
|
25
|
+
import { SolautoClient, TransactionItem } from "../services";
|
|
25
26
|
|
|
26
27
|
export async function getPullFeed(
|
|
27
28
|
conn: Connection,
|
|
@@ -44,14 +45,13 @@ export async function getPullFeed(
|
|
|
44
45
|
);
|
|
45
46
|
|
|
46
47
|
consoleLog("Pulling SWB program...");
|
|
48
|
+
const { PullFeed, Queue, ON_DEMAND_MAINNET_PID } = OnDemand;
|
|
47
49
|
const sbProgram = await Program.at(ON_DEMAND_MAINNET_PID, provider);
|
|
48
50
|
|
|
49
51
|
const crossbar = new CrossbarClient("https://integrator-crossbar.mrgn.app/");
|
|
50
52
|
const queue = await Queue.loadDefault(sbProgram);
|
|
51
53
|
const gateway = await queue.fetchGatewayFromCrossbar(crossbar as any);
|
|
52
54
|
|
|
53
|
-
consoleLog("Gateway URL: ", gateway.gatewayUrl);
|
|
54
|
-
consoleLog("Gateway endpoint: ", gateway.endpoint());
|
|
55
55
|
consoleLog("Pulled SWB program!");
|
|
56
56
|
consoleLog("Feed id:", SWITCHBOARD_PRICE_FEED_IDS[mint.toString()].feedId);
|
|
57
57
|
return {
|
|
@@ -77,14 +77,11 @@ export async function buildSwbSubmitResponseTx(
|
|
|
77
77
|
consoleLog("Fetching crank IX...");
|
|
78
78
|
const [pullIxs, responses] = await retryWithExponentialBackoff(
|
|
79
79
|
async () => {
|
|
80
|
-
const res = await feed.fetchUpdateIx(
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
},
|
|
86
|
-
true
|
|
87
|
-
);
|
|
80
|
+
const res = await feed.fetchUpdateIx({
|
|
81
|
+
gateway: gateway.endpoint(),
|
|
82
|
+
chain: "solana",
|
|
83
|
+
network: "mainnet-beta",
|
|
84
|
+
});
|
|
88
85
|
if (!res[1] || !res[1][0].value) {
|
|
89
86
|
throw new Error("Unable to fetch Switchboard pull IX");
|
|
90
87
|
}
|
|
@@ -152,3 +149,41 @@ export async function getSwitchboardFeedData(
|
|
|
152
149
|
export function isSwitchboardMint(mint: PublicKey | string) {
|
|
153
150
|
return Object.keys(SWITCHBOARD_PRICE_FEED_IDS).includes(mint.toString());
|
|
154
151
|
}
|
|
152
|
+
|
|
153
|
+
export async function addSwbOraclePullTxs(
|
|
154
|
+
client: SolautoClient,
|
|
155
|
+
txs: TransactionItem[]
|
|
156
|
+
) {
|
|
157
|
+
const switchboardMints = [
|
|
158
|
+
...(isSwitchboardMint(client.pos.supplyMint)
|
|
159
|
+
? [client.pos.supplyMint]
|
|
160
|
+
: []),
|
|
161
|
+
...(isSwitchboardMint(client.pos.debtMint) ? [client.pos.debtMint] : []),
|
|
162
|
+
];
|
|
163
|
+
|
|
164
|
+
if (txs.find((x) => x.oracleInteractor) && switchboardMints.length) {
|
|
165
|
+
consoleLog("Checking if oracle update(s) needed...");
|
|
166
|
+
const staleOracles =
|
|
167
|
+
(
|
|
168
|
+
await getSwitchboardFeedData(client.connection, switchboardMints)
|
|
169
|
+
).filter((x) => x.stale).length > 0;
|
|
170
|
+
|
|
171
|
+
if (staleOracles) {
|
|
172
|
+
consoleLog("Requires oracle update(s)...");
|
|
173
|
+
const oracleTxs = switchboardMints.map(
|
|
174
|
+
(x) =>
|
|
175
|
+
new TransactionItem(
|
|
176
|
+
async () =>
|
|
177
|
+
await buildSwbSubmitResponseTx(
|
|
178
|
+
client.connection,
|
|
179
|
+
client.signer,
|
|
180
|
+
x
|
|
181
|
+
),
|
|
182
|
+
UPDATE_ORACLE_TX_NAME
|
|
183
|
+
)
|
|
184
|
+
);
|
|
185
|
+
consoleLog("Set crank IXs in TX");
|
|
186
|
+
txs.unshift(...oracleTxs);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|