@haven-fi/solauto-sdk 1.0.811 → 1.0.813
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/tokenConstants.d.ts +2 -0
- package/dist/constants/tokenConstants.d.ts.map +1 -1
- package/dist/constants/tokenConstants.js +11 -2
- package/dist/utils/stringUtils.js +1 -1
- package/dist/utils/switchboardUtils.d.ts +3 -3
- package/dist/utils/switchboardUtils.d.ts.map +1 -1
- package/dist/utils/switchboardUtils.js +40 -7
- package/local/txSandbox.ts +7 -27
- package/package.json +2 -2
- package/src/constants/marginfiAccounts.ts +5 -0
- package/src/constants/pythConstants.ts +2 -0
- package/src/constants/tokenConstants.ts +11 -2
- package/src/utils/stringUtils.ts +1 -1
- package/src/utils/switchboardUtils.ts +10 -16
|
@@ -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",
|
|
@@ -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
|
};
|
|
@@ -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,10 @@
|
|
|
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
5
|
export declare function getPullFeed(conn: Connection, mint: PublicKey, wallet?: PublicKey): Promise<{
|
|
6
|
-
gateway:
|
|
7
|
-
feed: PullFeed;
|
|
6
|
+
gateway: OnDemand.Gateway;
|
|
7
|
+
feed: OnDemand.PullFeed;
|
|
8
8
|
}>;
|
|
9
9
|
export declare function buildSwbSubmitResponseTx(conn: Connection, signer: Signer, mint: PublicKey): Promise<TransactionItemInputs | undefined>;
|
|
10
10
|
export declare function getSwitchboardFeedData(conn: Connection, mints: PublicKey[]): Promise<{
|
|
@@ -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;AAGvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AASjD,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,CAmD5C;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"}
|
|
@@ -1,4 +1,37 @@
|
|
|
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;
|
|
@@ -8,7 +41,7 @@ const web3_js_1 = require("@solana/web3.js");
|
|
|
8
41
|
const umi_1 = require("@metaplex-foundation/umi");
|
|
9
42
|
const umi_web3js_adapters_1 = require("@metaplex-foundation/umi-web3js-adapters");
|
|
10
43
|
const anchor_1 = require("@coral-xyz/anchor");
|
|
11
|
-
const
|
|
44
|
+
const OnDemand = __importStar(require("@switchboard-xyz/on-demand"));
|
|
12
45
|
const constants_1 = require("../constants");
|
|
13
46
|
const generalUtils_1 = require("./generalUtils");
|
|
14
47
|
const solanaUtils_1 = require("./solanaUtils");
|
|
@@ -21,28 +54,28 @@ async function getPullFeed(conn, mint, wallet) {
|
|
|
21
54
|
};
|
|
22
55
|
const provider = new anchor_1.AnchorProvider(conn, dummyWallet, anchor_1.AnchorProvider.defaultOptions());
|
|
23
56
|
(0, generalUtils_1.consoleLog)("Pulling SWB program...");
|
|
24
|
-
const
|
|
57
|
+
const { PullFeed, Queue, ON_DEMAND_MAINNET_PID } = OnDemand;
|
|
58
|
+
const sbProgram = await anchor_1.Program.at(ON_DEMAND_MAINNET_PID, provider);
|
|
25
59
|
const crossbar = new common_1.CrossbarClient("https://integrator-crossbar.mrgn.app/");
|
|
26
|
-
const queue = await
|
|
60
|
+
const queue = await Queue.loadDefault(sbProgram);
|
|
27
61
|
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
62
|
(0, generalUtils_1.consoleLog)("Pulled SWB program!");
|
|
31
63
|
(0, generalUtils_1.consoleLog)("Feed id:", constants_1.SWITCHBOARD_PRICE_FEED_IDS[mint.toString()].feedId);
|
|
32
64
|
return {
|
|
33
65
|
gateway,
|
|
34
|
-
feed: new
|
|
66
|
+
feed: new PullFeed(sbProgram, new web3_js_1.PublicKey(constants_1.SWITCHBOARD_PRICE_FEED_IDS[mint.toString()].feedId)),
|
|
35
67
|
};
|
|
36
68
|
}
|
|
37
69
|
async function buildSwbSubmitResponseTx(conn, signer, mint) {
|
|
38
70
|
const { feed, gateway } = await getPullFeed(conn, mint, (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(signer.publicKey));
|
|
71
|
+
// Try to replicate locally in the lambda docker container
|
|
39
72
|
(0, generalUtils_1.consoleLog)("Fetching crank IX...");
|
|
40
73
|
const [pullIxs, responses] = await (0, generalUtils_1.retryWithExponentialBackoff)(async () => {
|
|
41
74
|
const res = await feed.fetchUpdateIx({
|
|
42
75
|
gateway: gateway.endpoint(),
|
|
43
76
|
chain: "solana",
|
|
44
77
|
network: "mainnet-beta",
|
|
45
|
-
}
|
|
78
|
+
});
|
|
46
79
|
if (!res[1] || !res[1][0].value) {
|
|
47
80
|
throw new Error("Unable to fetch Switchboard pull IX");
|
|
48
81
|
}
|
package/local/txSandbox.ts
CHANGED
|
@@ -2,22 +2,15 @@ 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
|
-
deposit,
|
|
9
7
|
getBatches,
|
|
10
8
|
getClient,
|
|
11
|
-
getMarginfiAccounts,
|
|
12
9
|
getPositionExBulk,
|
|
13
10
|
getSolanaRpcConnection,
|
|
14
11
|
getSolautoManagedPositions,
|
|
15
|
-
H_SOL,
|
|
16
|
-
JITO_SOL,
|
|
17
|
-
JUP_SOL,
|
|
18
12
|
LendingPlatform,
|
|
19
13
|
LOCAL_IRONFORGE_API_URL,
|
|
20
|
-
openSolautoPosition,
|
|
21
14
|
PriceType,
|
|
22
15
|
PriorityFeeSetting,
|
|
23
16
|
ProgramEnv,
|
|
@@ -25,18 +18,15 @@ import {
|
|
|
25
18
|
SOLAUTO_PROD_PROGRAM,
|
|
26
19
|
SOLAUTO_TEST_PROGRAM,
|
|
27
20
|
SolautoClient,
|
|
28
|
-
toBaseUnit,
|
|
29
21
|
TransactionItem,
|
|
30
|
-
USDC,
|
|
31
22
|
} from "../src";
|
|
32
23
|
import { getSecretKey } from "./shared";
|
|
33
|
-
import { NATIVE_MINT } from "@solana/spl-token";
|
|
34
24
|
|
|
35
25
|
const payForTransaction = true;
|
|
36
26
|
const testProgram = false;
|
|
37
27
|
const lpEnv: ProgramEnv = "Prod";
|
|
38
28
|
|
|
39
|
-
let [
|
|
29
|
+
let [, umi] = getSolanaRpcConnection(
|
|
40
30
|
LOCAL_IRONFORGE_API_URL,
|
|
41
31
|
testProgram ? SOLAUTO_TEST_PROGRAM : SOLAUTO_PROD_PROGRAM,
|
|
42
32
|
lpEnv
|
|
@@ -44,7 +34,7 @@ let [conn, umi] = getSolanaRpcConnection(
|
|
|
44
34
|
|
|
45
35
|
const signer = createSignerFromKeypair(
|
|
46
36
|
umi,
|
|
47
|
-
fromWeb3JsKeypair(Keypair.fromSecretKey(getSecretKey("
|
|
37
|
+
fromWeb3JsKeypair(Keypair.fromSecretKey(getSecretKey("solauto-manager")))
|
|
48
38
|
);
|
|
49
39
|
|
|
50
40
|
export async function main() {
|
|
@@ -58,23 +48,13 @@ export async function main() {
|
|
|
58
48
|
|
|
59
49
|
await client.initializeExistingSolautoPosition({
|
|
60
50
|
positionId: 1,
|
|
61
|
-
authority: new PublicKey("
|
|
62
|
-
//
|
|
63
|
-
//
|
|
64
|
-
//
|
|
51
|
+
authority: new PublicKey("61rtn5tzVkesapo6Cz83SPoShUfAePSxJsqniuF2wRKC"),
|
|
52
|
+
// lpUserAccount: new PublicKey(
|
|
53
|
+
// "GEokw9jqbh6d1xUNA3qaeYFFetbSR5Y1nt7C3chwwgSz"
|
|
54
|
+
// ),
|
|
65
55
|
});
|
|
66
56
|
|
|
67
|
-
|
|
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
|
-
];
|
|
57
|
+
const transactionItems = [rebalance(client)];
|
|
78
58
|
|
|
79
59
|
const txManager = new ClientTransactionsManager({
|
|
80
60
|
txHandler: client,
|
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.813",
|
|
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
|
+
};
|
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,12 +6,8 @@ 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
12
|
import { PRICES, SWITCHBOARD_PRICE_FEED_IDS } from "../constants";
|
|
17
13
|
import { TransactionItemInputs } from "../types";
|
|
@@ -44,14 +40,13 @@ export async function getPullFeed(
|
|
|
44
40
|
);
|
|
45
41
|
|
|
46
42
|
consoleLog("Pulling SWB program...");
|
|
43
|
+
const { PullFeed, Queue, ON_DEMAND_MAINNET_PID } = OnDemand;
|
|
47
44
|
const sbProgram = await Program.at(ON_DEMAND_MAINNET_PID, provider);
|
|
48
45
|
|
|
49
46
|
const crossbar = new CrossbarClient("https://integrator-crossbar.mrgn.app/");
|
|
50
47
|
const queue = await Queue.loadDefault(sbProgram);
|
|
51
48
|
const gateway = await queue.fetchGatewayFromCrossbar(crossbar as any);
|
|
52
49
|
|
|
53
|
-
consoleLog("Gateway URL: ", gateway.gatewayUrl);
|
|
54
|
-
consoleLog("Gateway endpoint: ", gateway.endpoint());
|
|
55
50
|
consoleLog("Pulled SWB program!");
|
|
56
51
|
consoleLog("Feed id:", SWITCHBOARD_PRICE_FEED_IDS[mint.toString()].feedId);
|
|
57
52
|
return {
|
|
@@ -74,17 +69,16 @@ export async function buildSwbSubmitResponseTx(
|
|
|
74
69
|
toWeb3JsPublicKey(signer.publicKey)
|
|
75
70
|
);
|
|
76
71
|
|
|
72
|
+
// Try to replicate locally in the lambda docker container
|
|
73
|
+
|
|
77
74
|
consoleLog("Fetching crank IX...");
|
|
78
75
|
const [pullIxs, responses] = await retryWithExponentialBackoff(
|
|
79
76
|
async () => {
|
|
80
|
-
const res = await feed.fetchUpdateIx(
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
},
|
|
86
|
-
true
|
|
87
|
-
);
|
|
77
|
+
const res = await feed.fetchUpdateIx({
|
|
78
|
+
gateway: gateway.endpoint(),
|
|
79
|
+
chain: "solana",
|
|
80
|
+
network: "mainnet-beta",
|
|
81
|
+
});
|
|
88
82
|
if (!res[1] || !res[1][0].value) {
|
|
89
83
|
throw new Error("Unable to fetch Switchboard pull IX");
|
|
90
84
|
}
|