@haven-fi/solauto-sdk 1.0.791 → 1.0.793
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/pythConstants.d.ts +20 -1
- package/dist/constants/pythConstants.d.ts.map +1 -1
- package/dist/constants/pythConstants.js +5 -0
- package/dist/utils/priceUtils.d.ts.map +1 -1
- package/dist/utils/priceUtils.js +6 -3
- package/local/txSandbox.ts +1 -1
- package/package.json +1 -1
- package/src/constants/pythConstants.ts +9 -1
- package/src/utils/priceUtils.ts +8 -4
@@ -1,6 +1,25 @@
|
|
1
1
|
import { PublicKey } from "@solana/web3.js";
|
2
2
|
export declare const PYTH_PUSH_PROGRAM: PublicKey;
|
3
|
-
export declare const PYTH_PRICE_FEED_IDS:
|
3
|
+
export declare const PYTH_PRICE_FEED_IDS: {
|
4
|
+
[x: string]: string;
|
5
|
+
bSo13r4TkiE4KumL71LsHTPpL2euBYLFx6h9HP3piy1: string;
|
6
|
+
mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So: string;
|
7
|
+
J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn: string;
|
8
|
+
LSTxxxnJzKDFSLr4dUkPcmCf5VyryEqzPLz5j4bpxFp: string;
|
9
|
+
"5oVNBeEEQvYi1cX3ir8Dx5n1P7pdxydbGF2X4TxVusJm": string;
|
10
|
+
JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN: string;
|
11
|
+
jtojtomepa8beP8AuQc6eXt5FriJwfFMwQx2v2f9mCL: string;
|
12
|
+
"27G8MtK7VtTcCHkpASjSDdkWWYfoqT6ggEuKidVJidD4": string;
|
13
|
+
"3NZ9JMVBmGAqocybic2c7LQCJScmgsAZ6vQqTDzcqmJh": string;
|
14
|
+
"7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs": string;
|
15
|
+
hntyVP6YFm1Hg25TN9WGLqM12b8TQmcknKrdu1oxWux: string;
|
16
|
+
HZ1JovNiVvGrGNiiYvEozEVgZ58xaU3RKwX8eACQBCt3: string;
|
17
|
+
EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v: string;
|
18
|
+
Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB: string;
|
19
|
+
DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263: string;
|
20
|
+
EKpQGSJtjMFqKZ9KQanSqYXRcF8fBopzLHYxdM65zcjm: string;
|
21
|
+
pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn: string;
|
22
|
+
};
|
4
23
|
export declare const PYTH_ORACLE_ACCOUNTS: {
|
5
24
|
pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn: string;
|
6
25
|
};
|
@@ -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;;;;;;;;;;;;;;;;;;;CAqC/B,CAAC;AAEF,eAAO,MAAM,oBAAoB;;CAEhC,CAAC"}
|
@@ -34,15 +34,20 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
34
34
|
})();
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
36
36
|
exports.PYTH_ORACLE_ACCOUNTS = exports.PYTH_PRICE_FEED_IDS = exports.PYTH_PUSH_PROGRAM = void 0;
|
37
|
+
const spl_token_1 = require("@solana/spl-token");
|
37
38
|
const tokens = __importStar(require("./tokenConstants"));
|
38
39
|
const web3_js_1 = require("@solana/web3.js");
|
39
40
|
exports.PYTH_PUSH_PROGRAM = new web3_js_1.PublicKey("pythWSnswVUd12oZpeFP8e9CVaEqJg25g1Vtc2biRsT");
|
40
41
|
// https://pyth.network/developers/price-feed-ids#solana-stable
|
41
42
|
exports.PYTH_PRICE_FEED_IDS = {
|
43
|
+
[spl_token_1.NATIVE_MINT.toString()]: "0xef0d8b6fda2ceba41da15d4095d1da392a0d2f8ed0c6c7bc0f4cfac8c280b56d",
|
42
44
|
[tokens.B_SOL]: "0x89875379e70f8fbadc17aef315adf3a8d5d160b811435537e03c97e8aac97d9c",
|
43
45
|
[tokens.M_SOL]: "0xc2289a6a43d2ce91c6f55caec370f4acc38a2ed477f58813334c6d03749ff2a4",
|
46
|
+
[tokens.JITO_SOL]: "0x67be9f519b95cf24338801051f9a808eff0a578ccb388db73b7f6fe1de019ffb",
|
47
|
+
[tokens.LST]: "0x12fb674ee496045b1d9cf7d5e65379acb026133c2ad69f3ed996fb9fe68e3a37",
|
44
48
|
[tokens.INF]: "0xf51570985c642c49c2d6e50156390fdba80bb6d5f7fa389d2f012ced4f7d208f",
|
45
49
|
[tokens.JUP]: "0x0a0408d619e9380abad35060f9192039ed5042fa6f82301d0e48bb52be830996",
|
50
|
+
[tokens.JTO]: "0xb43660a5f790c69354b0729a5ef9d50d68f1df92107540210b9cccba1f947cc2",
|
46
51
|
[tokens.JLP]: "0xc811abc82b4bad1f9bd711a2773ccaa935b03ecef974236942cec5e0eb845a3a",
|
47
52
|
[tokens.WBTC]: "0xc9d8b075a5c69303365ae23633d4e085199bf5c520a3b90fed1322a0342ffc33",
|
48
53
|
[tokens.WETH]: "0x9d4294bbcd1174d6f2003ec365831e64cc31d9f6f15a2b85399db8d5000960f6",
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"priceUtils.d.ts","sourceRoot":"","sources":["../../src/utils/priceUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,SAAS,IAAI,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAgBrE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAErD,UAAU,WAAW;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,SAAS,EAAE,EAClB,SAAS,GAAE,SAA8B,EACzC,SAAS,CAAC,EAAE,SAAS,GACpB,OAAO,CAAC,MAAM,EAAE,CAAC,
|
1
|
+
{"version":3,"file":"priceUtils.d.ts","sourceRoot":"","sources":["../../src/utils/priceUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,SAAS,IAAI,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAgBrE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAErD,UAAU,WAAW;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,SAAS,EAAE,EAClB,SAAS,GAAE,SAA8B,EACzC,SAAS,CAAC,EAAE,SAAS,GACpB,OAAO,CAAC,MAAM,EAAE,CAAC,CA8CnB;AAED,wBAAsB,aAAa,CACjC,KAAK,EAAE,SAAS,EAAE,GACjB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAuDtC;AAkBD,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,SAAS,EAAE,GACjB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAkDtC;AAED,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,SAAS,EAAE,GACjB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAsBtC;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,SAAS,GAAG,YAAY,GAAG,MAAM,GAAG,SAAS,EACnD,SAAS,GAAE,SAA8B,EACzC,SAAS,CAAC,EAAE,SAAS,GACpB,MAAM,GAAG,SAAS,CAyBpB"}
|
package/dist/utils/priceUtils.js
CHANGED
@@ -54,7 +54,8 @@ async function fetchTokenPrices(mints, priceType = generated_1.PriceType.Realtim
|
|
54
54
|
.filter((x) => !Object.keys(cachedPrices).includes(x))
|
55
55
|
.map((x) => new web3_js_1.PublicKey(x));
|
56
56
|
const pythMints = newMints.filter((x) => Object.keys(constants_1.PYTH_PRICE_FEED_IDS).includes(x.toString()));
|
57
|
-
const switchboardMints = newMints.filter((x) => Object.keys(constants_1.SWITCHBOARD_PRICE_FEED_IDS).includes(x.toString())
|
57
|
+
const switchboardMints = newMints.filter((x) => Object.keys(constants_1.SWITCHBOARD_PRICE_FEED_IDS).includes(x.toString()) &&
|
58
|
+
!pythMints.map((y) => y.toString()).includes(x.toString()));
|
58
59
|
const otherMints = newMints.filter((x) => !pythMints.includes(x) && !switchboardMints.includes(x));
|
59
60
|
const newPrices = Object.assign({}, ...(await Promise.all([
|
60
61
|
getPythPrices(pythMints),
|
@@ -79,7 +80,9 @@ async function getPythPrices(mints) {
|
|
79
80
|
return {};
|
80
81
|
}
|
81
82
|
const priceFeedIds = mints.map((mint) => constants_1.PYTH_PRICE_FEED_IDS[mint.toString()]);
|
82
|
-
const getReq = async () => await fetch(`https://hermes.pyth.network/v2/updates/price/latest?${priceFeedIds
|
83
|
+
const getReq = async () => await fetch(`https://hermes.pyth.network/v2/updates/price/latest?${priceFeedIds
|
84
|
+
.map((x) => `ids%5B%5D=${x}`)
|
85
|
+
.join("&")}`);
|
83
86
|
const deriveValue = (price, exponent) => {
|
84
87
|
if (exponent > 0) {
|
85
88
|
return Number((0, numberUtils_1.toBaseUnit)(Number(price), exponent));
|
@@ -125,7 +128,7 @@ async function getSwitchboardPrices(mints) {
|
|
125
128
|
return {};
|
126
129
|
}
|
127
130
|
const { CrossbarClient } = SwbCommon;
|
128
|
-
const crossbar = CrossbarClient.
|
131
|
+
const crossbar = new CrossbarClient("https://integrator-crossbar.mrgn.app/");
|
129
132
|
let prices = {};
|
130
133
|
try {
|
131
134
|
prices = await (0, generalUtils_1.retryWithExponentialBackoff)(async () => {
|
package/local/txSandbox.ts
CHANGED
@@ -48,7 +48,7 @@ export async function main() {
|
|
48
48
|
|
49
49
|
await client.initializeExistingSolautoPosition({
|
50
50
|
positionId: 1,
|
51
|
-
authority: new PublicKey("
|
51
|
+
authority: new PublicKey("61rtn5tzVkesapo6Cz83SPoShUfAePSxJsqniuF2wRKC"),
|
52
52
|
// lpUserAccount: new PublicKey(
|
53
53
|
// "GEokw9jqbh6d1xUNA3qaeYFFetbSR5Y1nt7C3chwwgSz"
|
54
54
|
// ),
|
package/package.json
CHANGED
@@ -7,15 +7,23 @@ export const PYTH_PUSH_PROGRAM = new PublicKey(
|
|
7
7
|
);
|
8
8
|
|
9
9
|
// https://pyth.network/developers/price-feed-ids#solana-stable
|
10
|
-
export const PYTH_PRICE_FEED_IDS
|
10
|
+
export const PYTH_PRICE_FEED_IDS = {
|
11
|
+
[NATIVE_MINT.toString()]:
|
12
|
+
"0xef0d8b6fda2ceba41da15d4095d1da392a0d2f8ed0c6c7bc0f4cfac8c280b56d",
|
11
13
|
[tokens.B_SOL]:
|
12
14
|
"0x89875379e70f8fbadc17aef315adf3a8d5d160b811435537e03c97e8aac97d9c",
|
13
15
|
[tokens.M_SOL]:
|
14
16
|
"0xc2289a6a43d2ce91c6f55caec370f4acc38a2ed477f58813334c6d03749ff2a4",
|
17
|
+
[tokens.JITO_SOL]:
|
18
|
+
"0x67be9f519b95cf24338801051f9a808eff0a578ccb388db73b7f6fe1de019ffb",
|
19
|
+
[tokens.LST]:
|
20
|
+
"0x12fb674ee496045b1d9cf7d5e65379acb026133c2ad69f3ed996fb9fe68e3a37",
|
15
21
|
[tokens.INF]:
|
16
22
|
"0xf51570985c642c49c2d6e50156390fdba80bb6d5f7fa389d2f012ced4f7d208f",
|
17
23
|
[tokens.JUP]:
|
18
24
|
"0x0a0408d619e9380abad35060f9192039ed5042fa6f82301d0e48bb52be830996",
|
25
|
+
[tokens.JTO]:
|
26
|
+
"0xb43660a5f790c69354b0729a5ef9d50d68f1df92107540210b9cccba1f947cc2",
|
19
27
|
[tokens.JLP]:
|
20
28
|
"0xc811abc82b4bad1f9bd711a2773ccaa935b03ecef974236942cec5e0eb845a3a",
|
21
29
|
[tokens.WBTC]:
|
package/src/utils/priceUtils.ts
CHANGED
@@ -45,8 +45,10 @@ export async function fetchTokenPrices(
|
|
45
45
|
const pythMints = newMints.filter((x) =>
|
46
46
|
Object.keys(PYTH_PRICE_FEED_IDS).includes(x.toString())
|
47
47
|
);
|
48
|
-
const switchboardMints = newMints.filter(
|
49
|
-
|
48
|
+
const switchboardMints = newMints.filter(
|
49
|
+
(x) =>
|
50
|
+
Object.keys(SWITCHBOARD_PRICE_FEED_IDS).includes(x.toString()) &&
|
51
|
+
!pythMints.map((y) => y.toString()).includes(x.toString())
|
50
52
|
);
|
51
53
|
const otherMints = newMints.filter(
|
52
54
|
(x) => !pythMints.includes(x) && !switchboardMints.includes(x)
|
@@ -88,7 +90,9 @@ export async function getPythPrices(
|
|
88
90
|
|
89
91
|
const getReq = async () =>
|
90
92
|
await fetch(
|
91
|
-
`https://hermes.pyth.network/v2/updates/price/latest?${priceFeedIds
|
93
|
+
`https://hermes.pyth.network/v2/updates/price/latest?${priceFeedIds
|
94
|
+
.map((x) => `ids%5B%5D=${x}`)
|
95
|
+
.join("&")}`
|
92
96
|
);
|
93
97
|
|
94
98
|
const deriveValue = (price: number, exponent: number) => {
|
@@ -156,7 +160,7 @@ export async function getSwitchboardPrices(
|
|
156
160
|
}
|
157
161
|
|
158
162
|
const { CrossbarClient } = SwbCommon;
|
159
|
-
const crossbar = CrossbarClient.
|
163
|
+
const crossbar = new CrossbarClient("https://integrator-crossbar.mrgn.app/");
|
160
164
|
|
161
165
|
let prices: Record<string, PriceResult> = {};
|
162
166
|
try {
|