@drift-labs/sdk 2.85.0-beta.9 → 2.86.0-beta.1

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.
Files changed (51) hide show
  1. package/VERSION +1 -1
  2. package/bun.lockb +0 -0
  3. package/lib/addresses/pda.d.ts +1 -0
  4. package/lib/addresses/pda.js +8 -1
  5. package/lib/adminClient.d.ts +2 -0
  6. package/lib/adminClient.js +22 -0
  7. package/lib/config.d.ts +3 -0
  8. package/lib/config.js +4 -1
  9. package/lib/constants/perpMarkets.d.ts +1 -0
  10. package/lib/constants/perpMarkets.js +57 -0
  11. package/lib/constants/spotMarkets.d.ts +1 -0
  12. package/lib/constants/spotMarkets.js +20 -0
  13. package/lib/driftClient.d.ts +26 -1
  14. package/lib/driftClient.js +157 -31
  15. package/lib/driftClientConfig.d.ts +2 -1
  16. package/lib/idl/drift.json +161 -2
  17. package/lib/math/oracles.d.ts +2 -0
  18. package/lib/math/oracles.js +14 -1
  19. package/lib/oracles/pythPullClient.js +1 -1
  20. package/lib/tx/baseTxSender.js +1 -0
  21. package/lib/tx/blockhashFetcher/baseBlockhashFetcher.d.ts +8 -0
  22. package/lib/tx/blockhashFetcher/baseBlockhashFetcher.js +13 -0
  23. package/lib/tx/blockhashFetcher/cachedBlockhashFetcher.d.ts +28 -0
  24. package/lib/tx/blockhashFetcher/cachedBlockhashFetcher.js +73 -0
  25. package/lib/tx/blockhashFetcher/types.d.ts +4 -0
  26. package/lib/tx/blockhashFetcher/types.js +2 -0
  27. package/lib/tx/txHandler.d.ts +10 -0
  28. package/lib/tx/txHandler.js +16 -7
  29. package/lib/tx/utils.d.ts +2 -0
  30. package/lib/tx/utils.js +10 -0
  31. package/lib/util/pythPullOracleUtils.d.ts +2 -0
  32. package/lib/util/pythPullOracleUtils.js +15 -0
  33. package/package.json +6 -1
  34. package/src/addresses/pda.ts +13 -0
  35. package/src/adminClient.ts +39 -0
  36. package/src/config.ts +6 -0
  37. package/src/constants/perpMarkets.ts +115 -0
  38. package/src/constants/spotMarkets.ts +41 -0
  39. package/src/driftClient.ts +347 -41
  40. package/src/driftClientConfig.ts +2 -1
  41. package/src/idl/drift.json +161 -2
  42. package/src/math/oracles.ts +17 -0
  43. package/src/oracles/pythPullClient.ts +2 -3
  44. package/src/tx/baseTxSender.ts +1 -0
  45. package/src/tx/blockhashFetcher/baseBlockhashFetcher.ts +19 -0
  46. package/src/tx/blockhashFetcher/cachedBlockhashFetcher.ts +90 -0
  47. package/src/tx/blockhashFetcher/types.ts +5 -0
  48. package/src/tx/txHandler.ts +38 -4
  49. package/src/tx/utils.ts +11 -0
  50. package/src/util/pythPullOracleUtils.ts +11 -0
  51. package/tests/tx/cachedBlockhashFetcher.test.ts +96 -0
package/VERSION CHANGED
@@ -1 +1 @@
1
- 2.85.0-beta.9
1
+ 2.86.0-beta.1
package/bun.lockb CHANGED
Binary file
@@ -20,3 +20,4 @@ export declare function getPhoenixFulfillmentConfigPublicKey(programId: PublicKe
20
20
  export declare function getReferrerNamePublicKeySync(programId: PublicKey, nameBuffer: number[]): PublicKey;
21
21
  export declare function getProtocolIfSharesTransferConfigPublicKey(programId: PublicKey): PublicKey;
22
22
  export declare function getPrelaunchOraclePublicKey(programId: PublicKey, marketIndex: number): PublicKey;
23
+ export declare function getPythPullOraclePublicKey(progarmId: PublicKey, feedId: Uint8Array): PublicKey;
@@ -23,7 +23,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.getPrelaunchOraclePublicKey = exports.getProtocolIfSharesTransferConfigPublicKey = exports.getReferrerNamePublicKeySync = exports.getPhoenixFulfillmentConfigPublicKey = exports.getSerumFulfillmentConfigPublicKey = exports.getSerumSignerPublicKey = exports.getSerumOpenOrdersPublicKey = exports.getDriftSignerPublicKey = exports.getInsuranceFundStakeAccountPublicKey = exports.getInsuranceFundVaultPublicKey = exports.getSpotMarketVaultPublicKey = exports.getSpotMarketPublicKey = exports.getPerpMarketPublicKey = exports.getUserStatsAccountPublicKey = exports.getUserAccountPublicKeySync = exports.getUserAccountPublicKey = exports.getUserAccountPublicKeyAndNonce = exports.getDriftStateAccountPublicKey = exports.getDriftStateAccountPublicKeyAndNonce = void 0;
26
+ exports.getPythPullOraclePublicKey = exports.getPrelaunchOraclePublicKey = exports.getProtocolIfSharesTransferConfigPublicKey = exports.getReferrerNamePublicKeySync = exports.getPhoenixFulfillmentConfigPublicKey = exports.getSerumFulfillmentConfigPublicKey = exports.getSerumSignerPublicKey = exports.getSerumOpenOrdersPublicKey = exports.getDriftSignerPublicKey = exports.getInsuranceFundStakeAccountPublicKey = exports.getInsuranceFundVaultPublicKey = exports.getSpotMarketVaultPublicKey = exports.getSpotMarketPublicKey = exports.getPerpMarketPublicKey = exports.getUserStatsAccountPublicKey = exports.getUserAccountPublicKeySync = exports.getUserAccountPublicKey = exports.getUserAccountPublicKeyAndNonce = exports.getDriftStateAccountPublicKey = exports.getDriftStateAccountPublicKeyAndNonce = void 0;
27
27
  const web3_js_1 = require("@solana/web3.js");
28
28
  const anchor = __importStar(require("@coral-xyz/anchor"));
29
29
  async function getDriftStateAccountPublicKeyAndNonce(programId) {
@@ -144,3 +144,10 @@ function getPrelaunchOraclePublicKey(programId, marketIndex) {
144
144
  ], programId)[0];
145
145
  }
146
146
  exports.getPrelaunchOraclePublicKey = getPrelaunchOraclePublicKey;
147
+ function getPythPullOraclePublicKey(progarmId, feedId) {
148
+ return web3_js_1.PublicKey.findProgramAddressSync([
149
+ Buffer.from(anchor.utils.bytes.utf8.encode('pyth_pull')),
150
+ Buffer.from(feedId),
151
+ ], progarmId)[0];
152
+ }
153
+ exports.getPythPullOraclePublicKey = getPythPullOraclePublicKey;
@@ -179,4 +179,6 @@ export declare class AdminClient extends DriftClient {
179
179
  getUpdatePrelaunchOracleParamsIx(perpMarketIndex: number, price?: BN, maxPrice?: BN): Promise<TransactionInstruction>;
180
180
  deletePrelaunchOracle(perpMarketIndex: number): Promise<TransactionSignature>;
181
181
  getDeletePrelaunchOracleIx(perpMarketIndex: number, price?: BN, maxPrice?: BN): Promise<TransactionInstruction>;
182
+ initializePythPullOracle(feedId: string): Promise<TransactionSignature>;
183
+ getInitializePythPullOracleIx(feedId: string): Promise<TransactionInstruction>;
182
184
  }
@@ -37,6 +37,8 @@ const numericConstants_1 = require("./constants/numericConstants");
37
37
  const trade_1 = require("./math/trade");
38
38
  const amm_1 = require("./math/amm");
39
39
  const phoenix_sdk_1 = require("@ellipsis-labs/phoenix-sdk");
40
+ const config_1 = require("./config");
41
+ const pythPullOracleUtils_1 = require("./util/pythPullOracleUtils");
40
42
  class AdminClient extends driftClient_1.DriftClient {
41
43
  async initialize(usdcMint, _adminControlsPrices) {
42
44
  const stateAccountRPCResponse = await this.connection.getParsedAccountInfo(await this.getStatePublicKey());
@@ -1629,5 +1631,25 @@ class AdminClient extends driftClient_1.DriftClient {
1629
1631
  },
1630
1632
  });
1631
1633
  }
1634
+ async initializePythPullOracle(feedId) {
1635
+ const initializePythPullOracleIx = await this.getInitializePythPullOracleIx(feedId);
1636
+ const tx = await this.buildTransaction(initializePythPullOracleIx);
1637
+ const { txSig } = await this.sendTransaction(tx, [], this.opts);
1638
+ return txSig;
1639
+ }
1640
+ async getInitializePythPullOracleIx(feedId) {
1641
+ const feedIdBuffer = (0, pythPullOracleUtils_1.getFeedIdUint8Array)(feedId);
1642
+ return await this.program.instruction.initializePythPullOracle(feedIdBuffer, {
1643
+ accounts: {
1644
+ admin: this.isSubscribed
1645
+ ? this.getStateAccount().admin
1646
+ : this.wallet.publicKey,
1647
+ state: await this.getStatePublicKey(),
1648
+ systemProgram: web3_js_1.SystemProgram.programId,
1649
+ priceFeed: (0, pda_1.getPythPullOraclePublicKey)(this.program.programId, feedIdBuffer),
1650
+ pythSolanaReceiver: config_1.DRIFT_ORACLE_RECEIVER_ID,
1651
+ },
1652
+ });
1653
+ }
1632
1654
  }
1633
1655
  exports.AdminClient = AdminClient;
package/lib/config.d.ts CHANGED
@@ -7,6 +7,7 @@ type DriftConfig = {
7
7
  PYTH_ORACLE_MAPPING_ADDRESS: string;
8
8
  DRIFT_PROGRAM_ID: string;
9
9
  JIT_PROXY_PROGRAM_ID?: string;
10
+ DRIFT_ORACLE_RECEIVER_ID: string;
10
11
  USDC_MINT_ADDRESS: string;
11
12
  SERUM_V3: string;
12
13
  PHOENIX: string;
@@ -15,9 +16,11 @@ type DriftConfig = {
15
16
  SPOT_MARKETS: SpotMarketConfig[];
16
17
  MARKET_LOOKUP_TABLE: string;
17
18
  SERUM_LOOKUP_TABLE?: string;
19
+ PYTH_PULL_ORACLE_LOOKUP_TABLE?: string;
18
20
  };
19
21
  export type DriftEnv = 'devnet' | 'mainnet-beta';
20
22
  export declare const DRIFT_PROGRAM_ID = "dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH";
23
+ export declare const DRIFT_ORACLE_RECEIVER_ID = "G6EoTTTgpkNBtVXo96EQp2m6uwwVh2Kt6YidjkmQqoha";
21
24
  export declare const configs: {
22
25
  [key in DriftEnv]: DriftConfig;
23
26
  };
package/lib/config.js CHANGED
@@ -1,9 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.findAllMarketAndOracles = exports.getMarketsAndOraclesForSubscription = exports.initialize = exports.getConfig = exports.configs = exports.DRIFT_PROGRAM_ID = void 0;
3
+ exports.findAllMarketAndOracles = exports.getMarketsAndOraclesForSubscription = exports.initialize = exports.getConfig = exports.configs = exports.DRIFT_ORACLE_RECEIVER_ID = exports.DRIFT_PROGRAM_ID = void 0;
4
4
  const perpMarkets_1 = require("./constants/perpMarkets");
5
5
  const spotMarkets_1 = require("./constants/spotMarkets");
6
6
  exports.DRIFT_PROGRAM_ID = 'dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH';
7
+ exports.DRIFT_ORACLE_RECEIVER_ID = 'G6EoTTTgpkNBtVXo96EQp2m6uwwVh2Kt6YidjkmQqoha';
7
8
  exports.configs = {
8
9
  devnet: {
9
10
  ENV: 'devnet',
@@ -17,6 +18,7 @@ exports.configs = {
17
18
  PERP_MARKETS: perpMarkets_1.DevnetPerpMarkets,
18
19
  SPOT_MARKETS: spotMarkets_1.DevnetSpotMarkets,
19
20
  MARKET_LOOKUP_TABLE: 'FaMS3U4uBojvGn5FSDEPimddcXsCfwkKsFgMVVnDdxGb',
21
+ DRIFT_ORACLE_RECEIVER_ID: exports.DRIFT_ORACLE_RECEIVER_ID,
20
22
  },
21
23
  'mainnet-beta': {
22
24
  ENV: 'mainnet-beta',
@@ -31,6 +33,7 @@ exports.configs = {
31
33
  SPOT_MARKETS: spotMarkets_1.MainnetSpotMarkets,
32
34
  MARKET_LOOKUP_TABLE: 'D9cnvzswDikQDf53k4HpQ3KJ9y1Fv3HGGDFYMXnK5T6c',
33
35
  SERUM_LOOKUP_TABLE: 'GPZkp76cJtNL2mphCvT6FXkJCVPpouidnacckR6rzKDN',
36
+ DRIFT_ORACLE_RECEIVER_ID: exports.DRIFT_ORACLE_RECEIVER_ID,
34
37
  },
35
38
  };
36
39
  let currentConfig = exports.configs.devnet;
@@ -10,6 +10,7 @@ export type PerpMarketConfig = {
10
10
  launchTs: number;
11
11
  oracle: PublicKey;
12
12
  oracleSource: OracleSource;
13
+ pythFeedId?: string;
13
14
  };
14
15
  export declare const DevnetPerpMarkets: PerpMarketConfig[];
15
16
  export declare const MainnetPerpMarkets: PerpMarketConfig[];
@@ -13,6 +13,7 @@ exports.DevnetPerpMarkets = [
13
13
  oracle: new web3_js_1.PublicKey('J83w4HKfqxwcq3BEMMkPFSppX3gqekLyLJBexebFVkix'),
14
14
  launchTs: 1655751353000,
15
15
  oracleSource: __1.OracleSource.PYTH,
16
+ pythFeedId: '0xef0d8b6fda2ceba41da15d4095d1da392a0d2f8ed0c6c7bc0f4cfac8c280b56d',
16
17
  },
17
18
  {
18
19
  fullName: 'Bitcoin',
@@ -23,6 +24,7 @@ exports.DevnetPerpMarkets = [
23
24
  oracle: new web3_js_1.PublicKey('HovQMDrbAgAYPCmHVSrezcSmkMtXSSUsLDFANExrZh2J'),
24
25
  launchTs: 1655751353000,
25
26
  oracleSource: __1.OracleSource.PYTH,
27
+ pythFeedId: '0xe62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43',
26
28
  },
27
29
  {
28
30
  fullName: 'Ethereum',
@@ -33,6 +35,7 @@ exports.DevnetPerpMarkets = [
33
35
  oracle: new web3_js_1.PublicKey('EdVCmQ9FSPcVe5YySXDPCRmc8aDQLKJ9xvYBMZPie1Vw'),
34
36
  launchTs: 1637691133472,
35
37
  oracleSource: __1.OracleSource.PYTH,
38
+ pythFeedId: '0xff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace',
36
39
  },
37
40
  {
38
41
  fullName: 'Aptos',
@@ -43,6 +46,7 @@ exports.DevnetPerpMarkets = [
43
46
  oracle: new web3_js_1.PublicKey('5d2QJ6u2NveZufmJ4noHja5EHs3Bv1DUMPLG5xfasSVs'),
44
47
  launchTs: 1675610186000,
45
48
  oracleSource: __1.OracleSource.PYTH,
49
+ pythFeedId: '0x03ae4db29ed4ae33d323568895aa00337e658e348b37509f5372ae51f0af00d5',
46
50
  },
47
51
  {
48
52
  fullName: 'Bonk',
@@ -53,6 +57,7 @@ exports.DevnetPerpMarkets = [
53
57
  oracle: new web3_js_1.PublicKey('6bquU99ktV1VRiHDr8gMhDFt3kMfhCQo5nfNrg2Urvsn'),
54
58
  launchTs: 1677068931000,
55
59
  oracleSource: __1.OracleSource.PYTH_1M,
60
+ pythFeedId: '0x72b021217ca3fe68922a19aaf990109cb9d84e9ad004b4d2025ad6f529314419',
56
61
  },
57
62
  {
58
63
  fullName: 'Polygon',
@@ -63,6 +68,7 @@ exports.DevnetPerpMarkets = [
63
68
  oracle: new web3_js_1.PublicKey('FBirwuDFuRAu4iSGc7RGxN5koHB7EJM1wbCmyPuQoGur'),
64
69
  launchTs: 1677690149000,
65
70
  oracleSource: __1.OracleSource.PYTH,
71
+ pythFeedId: '0x5de33a9112c2b700b8d30b8a3402c103578ccfa2765696471cc672bd5cf6ac52',
66
72
  },
67
73
  {
68
74
  fullName: 'Arbitrum',
@@ -73,6 +79,7 @@ exports.DevnetPerpMarkets = [
73
79
  oracle: new web3_js_1.PublicKey('4mRGHzjGerQNWKXyQAmr9kWqb9saPPHKqo1xziXGQ5Dh'),
74
80
  launchTs: 1679501812000,
75
81
  oracleSource: __1.OracleSource.PYTH,
82
+ pythFeedId: '0x3fa4252848f9f0a1480be62745a4629d9eb1322aebab8a791e344b3b9c1adcf5',
76
83
  },
77
84
  {
78
85
  fullName: 'Doge',
@@ -83,6 +90,7 @@ exports.DevnetPerpMarkets = [
83
90
  oracle: new web3_js_1.PublicKey('4L6YhY8VvUgmqG5MvJkUJATtzB2rFqdrJwQCmFLv4Jzy'),
84
91
  launchTs: 1680808053000,
85
92
  oracleSource: __1.OracleSource.PYTH,
93
+ pythFeedId: '0xdcef50dd0a4cd2dcc17e45df1676dcb336a11a61c69df7a0299b0150c672d25c',
86
94
  },
87
95
  {
88
96
  fullName: 'Binance Coin',
@@ -93,6 +101,7 @@ exports.DevnetPerpMarkets = [
93
101
  oracle: new web3_js_1.PublicKey('GwzBgrXb4PG59zjce24SF2b9JXbLEjJJTBkmytuEZj1b'),
94
102
  launchTs: 1680808053000,
95
103
  oracleSource: __1.OracleSource.PYTH,
104
+ pythFeedId: '0x2f95862b045670cd22bee3114c39763a4a08beeb663b145d283c31d7d1101c4f',
96
105
  },
97
106
  {
98
107
  fullName: 'Sui',
@@ -103,6 +112,7 @@ exports.DevnetPerpMarkets = [
103
112
  oracle: new web3_js_1.PublicKey('6SK9vS8eMSSj3LUX2dPku93CrNv8xLCp9ng39F39h7A5'),
104
113
  launchTs: 1683125906000,
105
114
  oracleSource: __1.OracleSource.PYTH,
115
+ pythFeedId: '0x23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744',
106
116
  },
107
117
  {
108
118
  fullName: 'Pepe',
@@ -113,6 +123,7 @@ exports.DevnetPerpMarkets = [
113
123
  oracle: new web3_js_1.PublicKey('Gz9RfgDeAFSsH7BHDGyNTgCik74rjNwsodJpsCizzmkj'),
114
124
  launchTs: 1683781239000,
115
125
  oracleSource: __1.OracleSource.PYTH_1M,
126
+ pythFeedId: '0xd69731a2e74ac1ce884fc3890f7ee324b6deb66147055249568869ed700882e4',
116
127
  },
117
128
  {
118
129
  fullName: 'OP',
@@ -123,6 +134,7 @@ exports.DevnetPerpMarkets = [
123
134
  oracle: new web3_js_1.PublicKey('8ctSiDhA7eJoii4TkKV8Rx4KFdz3ycsA1FXy9wq56quG'),
124
135
  launchTs: 1686091480000,
125
136
  oracleSource: __1.OracleSource.PYTH,
137
+ pythFeedId: '0x385f64d993f7b77d8182ed5003d97c60aa3361f3cecfe711544d2d59165e9bdf',
126
138
  },
127
139
  {
128
140
  fullName: 'RNDR',
@@ -133,6 +145,7 @@ exports.DevnetPerpMarkets = [
133
145
  oracle: new web3_js_1.PublicKey('C2QvUPBiU3fViSyqA4nZgGyYqLgYf9PRpd8B8oLoo48w'),
134
146
  launchTs: 1687201081000,
135
147
  oracleSource: __1.OracleSource.PYTH,
148
+ pythFeedId: '0xab7347771135fc733f8f38db462ba085ed3309955f42554a14fa13e855ac0e2f',
136
149
  },
137
150
  {
138
151
  fullName: 'XRP',
@@ -143,6 +156,7 @@ exports.DevnetPerpMarkets = [
143
156
  oracle: new web3_js_1.PublicKey('DuG45Td6dgJBe64Ebymb1WjBys16L1VTQdoAURdsviqN'),
144
157
  launchTs: 1689270550000,
145
158
  oracleSource: __1.OracleSource.PYTH,
159
+ pythFeedId: '0xec5d399846a9209f3fe5881d70aae9268c94339ff9817e8d18ff19fa05eea1c8',
146
160
  },
147
161
  {
148
162
  fullName: 'HNT',
@@ -153,6 +167,7 @@ exports.DevnetPerpMarkets = [
153
167
  oracle: new web3_js_1.PublicKey('6Eg8YdfFJQF2HHonzPUBSCCmyUEhrStg9VBLK957sBe6'),
154
168
  launchTs: 1692294955000,
155
169
  oracleSource: __1.OracleSource.PYTH,
170
+ pythFeedId: '0x649fdd7ec08e8e2a20f425729854e90293dcbe2376abc47197a14da6ff339756',
156
171
  },
157
172
  {
158
173
  fullName: 'INJ',
@@ -163,6 +178,7 @@ exports.DevnetPerpMarkets = [
163
178
  oracle: new web3_js_1.PublicKey('44uRsNnT35kjkscSu59MxRr9CfkLZWf6gny8bWqUbVxE'),
164
179
  launchTs: 1698074659000,
165
180
  oracleSource: __1.OracleSource.PYTH,
181
+ pythFeedId: '0x7a5bc1d2b56ad029048cd63964b3ad2776eadf812edc1a43a31406cb54bff592',
166
182
  },
167
183
  {
168
184
  fullName: 'LINK',
@@ -173,6 +189,7 @@ exports.DevnetPerpMarkets = [
173
189
  oracle: new web3_js_1.PublicKey('9sGidS4qUXS2WvHZFhzw4df1jNd5TvUGZXZVsSjXo7UF'),
174
190
  launchTs: 1698074659000,
175
191
  oracleSource: __1.OracleSource.PYTH,
192
+ pythFeedId: '0x8ac0c70fff57e9aefdf5edf44b51d62c2d433653cbb2cf5cc06bb115af04d221',
176
193
  },
177
194
  {
178
195
  fullName: 'Rollbit',
@@ -183,6 +200,7 @@ exports.DevnetPerpMarkets = [
183
200
  oracle: new web3_js_1.PublicKey('6BmJozusMugAySsfNfMFsU1YRWcGwyP3oycNX9Pv9oCz'),
184
201
  launchTs: 1699265968000,
185
202
  oracleSource: __1.OracleSource.PYTH,
203
+ pythFeedId: '0x2f2d17abbc1e781bd87b4a5d52c8b2856886f5c482fa3593cebf6795040ab0b6',
186
204
  },
187
205
  {
188
206
  fullName: 'Pyth',
@@ -193,6 +211,7 @@ exports.DevnetPerpMarkets = [
193
211
  oracle: new web3_js_1.PublicKey('ELF78ZhSr8u4SCixA7YSpjdZHZoSNrAhcyysbavpC2kA'),
194
212
  launchTs: 1700542800000,
195
213
  oracleSource: __1.OracleSource.PYTH,
214
+ pythFeedId: '0x0bbf28e9a841a1cc788f6a361b17ca072d0ea3098a1e5df1c3922d06719579ff',
196
215
  },
197
216
  {
198
217
  fullName: 'Celestia',
@@ -203,6 +222,7 @@ exports.DevnetPerpMarkets = [
203
222
  oracle: new web3_js_1.PublicKey('4GiL1Y6u6JkPb7ckakzJgc414h6P7qoYnEKFcd1YtSB9'),
204
223
  launchTs: 1701880540000,
205
224
  oracleSource: __1.OracleSource.PYTH,
225
+ pythFeedId: '0x09f7c1d7dfbb7df2b8fe3d3d87ee94a2259d212da4f30c1f0540d066dfa44723',
206
226
  },
207
227
  {
208
228
  fullName: 'Jito',
@@ -213,6 +233,7 @@ exports.DevnetPerpMarkets = [
213
233
  oracle: new web3_js_1.PublicKey('29xQnTzyyuRtgJ7RtSKEgBWwRzZqtrrKmyQQ5m3x629f'),
214
234
  launchTs: 1701967240000,
215
235
  oracleSource: __1.OracleSource.PYTH,
236
+ pythFeedId: '0xb43660a5f790c69354b0729a5ef9d50d68f1df92107540210b9cccba1f947cc2',
216
237
  },
217
238
  {
218
239
  fullName: 'SEI',
@@ -223,6 +244,7 @@ exports.DevnetPerpMarkets = [
223
244
  oracle: new web3_js_1.PublicKey('B6KVbgqTRY33yDgjAnc1mWw4ATS4W5544xghayQscdt7'),
224
245
  launchTs: 1703173331000,
225
246
  oracleSource: __1.OracleSource.PYTH,
247
+ pythFeedId: '0x53614f1cb0c031d4af66c04cb9c756234adad0e1cee85303795091499a4084eb',
226
248
  },
227
249
  {
228
250
  fullName: 'AVAX',
@@ -233,6 +255,7 @@ exports.DevnetPerpMarkets = [
233
255
  oracle: new web3_js_1.PublicKey('FVb5h1VmHPfVb1RfqZckchq18GxRv4iKt8T4eVTQAqdz'),
234
256
  launchTs: 1704209558000,
235
257
  oracleSource: __1.OracleSource.PYTH,
258
+ pythFeedId: '0x93da3352f9f1d105fdfe4971cfa80e9dd777bfc5d0f683ebb6e1294b92137bb7',
236
259
  },
237
260
  {
238
261
  fullName: 'Wormhole',
@@ -243,6 +266,7 @@ exports.DevnetPerpMarkets = [
243
266
  oracle: new web3_js_1.PublicKey('A9665pJk2GAm7m3gA4f5qu99cWX8kDisDZtoSA9J4a3F'),
244
267
  launchTs: 1709852537000,
245
268
  oracleSource: __1.OracleSource.PYTH,
269
+ pythFeedId: '0xeff7446475e218517566ea99e72a4abec2e1bd8498b43b7d8331e29dcb059389',
246
270
  },
247
271
  {
248
272
  fullName: 'Kamino',
@@ -253,6 +277,7 @@ exports.DevnetPerpMarkets = [
253
277
  oracle: new web3_js_1.PublicKey('FkAaa46aYdHn8QxxwmiUnJt3th8radB2GFXDMtyLALCY'),
254
278
  launchTs: 1711475936000,
255
279
  oracleSource: __1.OracleSource.Prelaunch,
280
+ pythFeedId: '0xb17e5bc5de742a8a378b54c9c75442b7d51e30ada63f28d9bd28d3c0e26511a0',
256
281
  },
257
282
  ];
258
283
  exports.MainnetPerpMarkets = [
@@ -265,6 +290,7 @@ exports.MainnetPerpMarkets = [
265
290
  oracle: new web3_js_1.PublicKey('H6ARHf6YXhGYeQfUzQNGk6rDNnLBQKrenN712K4AQJEG'),
266
291
  launchTs: 1667560505000,
267
292
  oracleSource: __1.OracleSource.PYTH,
293
+ pythFeedId: '0xef0d8b6fda2ceba41da15d4095d1da392a0d2f8ed0c6c7bc0f4cfac8c280b56d',
268
294
  },
269
295
  {
270
296
  fullName: 'Bitcoin',
@@ -275,6 +301,7 @@ exports.MainnetPerpMarkets = [
275
301
  oracle: new web3_js_1.PublicKey('GVXRSBjFk6e6J3NbVPXohDJetcTjaeeuykUpbQF8UoMU'),
276
302
  launchTs: 1670347281000,
277
303
  oracleSource: __1.OracleSource.PYTH,
304
+ pythFeedId: '0xe62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43',
278
305
  },
279
306
  {
280
307
  fullName: 'Ethereum',
@@ -285,6 +312,7 @@ exports.MainnetPerpMarkets = [
285
312
  oracle: new web3_js_1.PublicKey('JBu1AL4obBcCMqKBBxhpWCNUt136ijcuMZLFvTP7iWdB'),
286
313
  launchTs: 1670347281000,
287
314
  oracleSource: __1.OracleSource.PYTH,
315
+ pythFeedId: '0xff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace',
288
316
  },
289
317
  {
290
318
  fullName: 'Aptos',
@@ -295,6 +323,7 @@ exports.MainnetPerpMarkets = [
295
323
  oracle: new web3_js_1.PublicKey('FNNvb1AFDnDVPkocEri8mWbJ1952HQZtFLuwPiUjSJQ'),
296
324
  launchTs: 1675802661000,
297
325
  oracleSource: __1.OracleSource.PYTH,
326
+ pythFeedId: '0x03ae4db29ed4ae33d323568895aa00337e658e348b37509f5372ae51f0af00d5',
298
327
  },
299
328
  {
300
329
  fullName: 'Bonk',
@@ -305,6 +334,7 @@ exports.MainnetPerpMarkets = [
305
334
  oracle: new web3_js_1.PublicKey('8ihFLu5FimgTQ1Unh4dVyEHUGodJ5gJQCrQf4KUVB9bN'),
306
335
  launchTs: 1677690149000,
307
336
  oracleSource: __1.OracleSource.PYTH_1M,
337
+ pythFeedId: '0x72b021217ca3fe68922a19aaf990109cb9d84e9ad004b4d2025ad6f529314419',
308
338
  },
309
339
  {
310
340
  fullName: 'Polygon',
@@ -315,6 +345,7 @@ exports.MainnetPerpMarkets = [
315
345
  oracle: new web3_js_1.PublicKey('7KVswB9vkCgeM3SHP7aGDijvdRAHK8P5wi9JXViCrtYh'),
316
346
  launchTs: 1677690149000,
317
347
  oracleSource: __1.OracleSource.PYTH,
348
+ pythFeedId: '0x5de33a9112c2b700b8d30b8a3402c103578ccfa2765696471cc672bd5cf6ac52',
318
349
  },
319
350
  {
320
351
  fullName: 'Arbitrum',
@@ -325,6 +356,7 @@ exports.MainnetPerpMarkets = [
325
356
  oracle: new web3_js_1.PublicKey('5HRrdmghsnU3i2u5StaKaydS7eq3vnKVKwXMzCNKsc4C'),
326
357
  launchTs: 1679501812000,
327
358
  oracleSource: __1.OracleSource.PYTH,
359
+ pythFeedId: '0x3fa4252848f9f0a1480be62745a4629d9eb1322aebab8a791e344b3b9c1adcf5',
328
360
  },
329
361
  {
330
362
  fullName: 'Doge',
@@ -335,6 +367,7 @@ exports.MainnetPerpMarkets = [
335
367
  oracle: new web3_js_1.PublicKey('FsSM3s38PX9K7Dn6eGzuE29S2Dsk1Sss1baytTQdCaQj'),
336
368
  launchTs: 1680808053000,
337
369
  oracleSource: __1.OracleSource.PYTH,
370
+ pythFeedId: '0xdcef50dd0a4cd2dcc17e45df1676dcb336a11a61c69df7a0299b0150c672d25c',
338
371
  },
339
372
  {
340
373
  fullName: 'Binance Coin',
@@ -345,6 +378,7 @@ exports.MainnetPerpMarkets = [
345
378
  oracle: new web3_js_1.PublicKey('4CkQJBxhU8EZ2UjhigbtdaPbpTe6mqf811fipYBFbSYN'),
346
379
  launchTs: 1680808053000,
347
380
  oracleSource: __1.OracleSource.PYTH,
381
+ pythFeedId: '0x2f95862b045670cd22bee3114c39763a4a08beeb663b145d283c31d7d1101c4f',
348
382
  },
349
383
  {
350
384
  fullName: 'Sui',
@@ -355,6 +389,7 @@ exports.MainnetPerpMarkets = [
355
389
  oracle: new web3_js_1.PublicKey('3Qub3HaAJaa2xNY7SUqPKd3vVwTqDfDDkEUMPjXD2c1q'),
356
390
  launchTs: 1683125906000,
357
391
  oracleSource: __1.OracleSource.PYTH,
392
+ pythFeedId: '0x23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744',
358
393
  },
359
394
  {
360
395
  fullName: 'Pepe',
@@ -365,6 +400,7 @@ exports.MainnetPerpMarkets = [
365
400
  oracle: new web3_js_1.PublicKey('FSfxunDmjjbDV2QxpyxFCAPKmYJHSLnLuvQXDLkMzLBm'),
366
401
  launchTs: 1683781239000,
367
402
  oracleSource: __1.OracleSource.PYTH_1M,
403
+ pythFeedId: '0xd69731a2e74ac1ce884fc3890f7ee324b6deb66147055249568869ed700882e4',
368
404
  },
369
405
  {
370
406
  fullName: 'OP',
@@ -375,6 +411,7 @@ exports.MainnetPerpMarkets = [
375
411
  oracle: new web3_js_1.PublicKey('4o4CUwzFwLqCvmA5x1G4VzoZkAhAcbiuiYyjWX1CVbY2'),
376
412
  launchTs: 1686091480000,
377
413
  oracleSource: __1.OracleSource.PYTH,
414
+ pythFeedId: '0x385f64d993f7b77d8182ed5003d97c60aa3361f3cecfe711544d2d59165e9bdf',
378
415
  },
379
416
  {
380
417
  fullName: 'RNDR',
@@ -385,6 +422,7 @@ exports.MainnetPerpMarkets = [
385
422
  oracle: new web3_js_1.PublicKey('CYGfrBJB9HgLf9iZyN4aH5HvUAi2htQ4MjPxeXMf4Egn'),
386
423
  launchTs: 1687201081000,
387
424
  oracleSource: __1.OracleSource.PYTH,
425
+ pythFeedId: '0xab7347771135fc733f8f38db462ba085ed3309955f42554a14fa13e855ac0e2f',
388
426
  },
389
427
  {
390
428
  fullName: 'XRP',
@@ -395,6 +433,7 @@ exports.MainnetPerpMarkets = [
395
433
  oracle: new web3_js_1.PublicKey('Guffb8DAAxNH6kdoawYjPXTbwUhjmveh8R4LM6uEqRV1'),
396
434
  launchTs: 1689270550000,
397
435
  oracleSource: __1.OracleSource.PYTH,
436
+ pythFeedId: '0xec5d399846a9209f3fe5881d70aae9268c94339ff9817e8d18ff19fa05eea1c8',
398
437
  },
399
438
  {
400
439
  fullName: 'HNT',
@@ -405,6 +444,7 @@ exports.MainnetPerpMarkets = [
405
444
  oracle: new web3_js_1.PublicKey('7moA1i5vQUpfDwSpK6Pw9s56ahB7WFGidtbL2ujWrVvm'),
406
445
  launchTs: 1692294955000,
407
446
  oracleSource: __1.OracleSource.PYTH,
447
+ pythFeedId: '0x649fdd7ec08e8e2a20f425729854e90293dcbe2376abc47197a14da6ff339756',
408
448
  },
409
449
  {
410
450
  fullName: 'INJ',
@@ -415,6 +455,7 @@ exports.MainnetPerpMarkets = [
415
455
  oracle: new web3_js_1.PublicKey('9EdtbaivHQYA4Nh3XzGR6DwRaoorqXYnmpfsnFhvwuVj'),
416
456
  launchTs: 1698074659000,
417
457
  oracleSource: __1.OracleSource.PYTH,
458
+ pythFeedId: '0x7a5bc1d2b56ad029048cd63964b3ad2776eadf812edc1a43a31406cb54bff592',
418
459
  },
419
460
  {
420
461
  fullName: 'LINK',
@@ -425,6 +466,7 @@ exports.MainnetPerpMarkets = [
425
466
  oracle: new web3_js_1.PublicKey('ALdkqQDMfHNg77oCNskfX751kHys4KE7SFuZzuKaN536'),
426
467
  launchTs: 1698074659000,
427
468
  oracleSource: __1.OracleSource.PYTH,
469
+ pythFeedId: '0x8ac0c70fff57e9aefdf5edf44b51d62c2d433653cbb2cf5cc06bb115af04d221',
428
470
  },
429
471
  {
430
472
  fullName: 'Rollbit',
@@ -435,6 +477,7 @@ exports.MainnetPerpMarkets = [
435
477
  oracle: new web3_js_1.PublicKey('4BA3RcS4zE32WWgp49vvvre2t6nXY1W1kMyKZxeeuUey'),
436
478
  launchTs: 1699265968000,
437
479
  oracleSource: __1.OracleSource.PYTH,
480
+ pythFeedId: '0x2f2d17abbc1e781bd87b4a5d52c8b2856886f5c482fa3593cebf6795040ab0b6',
438
481
  },
439
482
  {
440
483
  fullName: 'Pyth',
@@ -445,6 +488,7 @@ exports.MainnetPerpMarkets = [
445
488
  oracle: new web3_js_1.PublicKey('nrYkQQQur7z8rYTST3G9GqATviK5SxTDkrqd21MW6Ue'),
446
489
  launchTs: 1700542800000,
447
490
  oracleSource: __1.OracleSource.PYTH,
491
+ pythFeedId: '0x0bbf28e9a841a1cc788f6a361b17ca072d0ea3098a1e5df1c3922d06719579ff',
448
492
  },
449
493
  {
450
494
  fullName: 'Celestia',
@@ -455,6 +499,7 @@ exports.MainnetPerpMarkets = [
455
499
  oracle: new web3_js_1.PublicKey('funeUsHgi2QKkLdUPASRLuYkaK8JaazCEz3HikbkhVt'),
456
500
  launchTs: 1701880540000,
457
501
  oracleSource: __1.OracleSource.PYTH,
502
+ pythFeedId: '0x09f7c1d7dfbb7df2b8fe3d3d87ee94a2259d212da4f30c1f0540d066dfa44723',
458
503
  },
459
504
  {
460
505
  fullName: 'Jito',
@@ -465,6 +510,7 @@ exports.MainnetPerpMarkets = [
465
510
  oracle: new web3_js_1.PublicKey('D8UUgr8a3aR3yUeHLu7v8FWK7E8Y5sSU7qrYBXUJXBQ5'),
466
511
  launchTs: 1701967240000,
467
512
  oracleSource: __1.OracleSource.PYTH,
513
+ pythFeedId: '0xb43660a5f790c69354b0729a5ef9d50d68f1df92107540210b9cccba1f947cc2',
468
514
  },
469
515
  {
470
516
  fullName: 'SEI',
@@ -475,6 +521,7 @@ exports.MainnetPerpMarkets = [
475
521
  oracle: new web3_js_1.PublicKey('6cUuAyAX3eXoiWkjFF77RQBEUF15AAMQ7d1hm4EPd3tv'),
476
522
  launchTs: 1703173331000,
477
523
  oracleSource: __1.OracleSource.PYTH,
524
+ pythFeedId: '0x53614f1cb0c031d4af66c04cb9c756234adad0e1cee85303795091499a4084eb',
478
525
  },
479
526
  {
480
527
  fullName: 'AVAX',
@@ -485,6 +532,7 @@ exports.MainnetPerpMarkets = [
485
532
  oracle: new web3_js_1.PublicKey('Ax9ujW5B9oqcv59N8m6f1BpTBq2rGeGaBcpKjC5UYsXU'),
486
533
  launchTs: 1704209558000,
487
534
  oracleSource: __1.OracleSource.PYTH,
535
+ pythFeedId: '0x93da3352f9f1d105fdfe4971cfa80e9dd777bfc5d0f683ebb6e1294b92137bb7',
488
536
  },
489
537
  {
490
538
  fullName: 'WIF',
@@ -495,6 +543,7 @@ exports.MainnetPerpMarkets = [
495
543
  oracle: new web3_js_1.PublicKey('6ABgrEZk8urs6kJ1JNdC1sspH5zKXRqxy8sg3ZG2cQps'),
496
544
  launchTs: 1706219971000,
497
545
  oracleSource: __1.OracleSource.PYTH,
546
+ pythFeedId: '0x4ca4beeca86f0d164160323817a4e42b10010a724c2217c6ee41b54cd4cc61fc',
498
547
  },
499
548
  {
500
549
  fullName: 'JUP',
@@ -505,6 +554,7 @@ exports.MainnetPerpMarkets = [
505
554
  oracle: new web3_js_1.PublicKey('g6eRCbboSwK4tSWngn773RCMexr1APQr4uA9bGZBYfo'),
506
555
  launchTs: 1706713201000,
507
556
  oracleSource: __1.OracleSource.PYTH,
557
+ pythFeedId: '0x0a0408d619e9380abad35060f9192039ed5042fa6f82301d0e48bb52be830996',
508
558
  },
509
559
  {
510
560
  fullName: 'Dymension',
@@ -515,6 +565,7 @@ exports.MainnetPerpMarkets = [
515
565
  oracle: new web3_js_1.PublicKey('CSRRrhXa6DYu1W5jf89A7unCATdug2Z33tYyV2NXZZxa'),
516
566
  launchTs: 1708448765000,
517
567
  oracleSource: __1.OracleSource.PYTH,
568
+ pythFeedId: '0xa9f3b2a89c6f85a6c20a9518abde39b944e839ca49a0c92307c65974d3f14a57',
518
569
  },
519
570
  {
520
571
  fullName: 'BITTENSOR',
@@ -525,6 +576,7 @@ exports.MainnetPerpMarkets = [
525
576
  oracle: new web3_js_1.PublicKey('5NxzemFgGDhimYE3S5qmb5zkjZUmiHXb4up5WGXe7NLn'),
526
577
  launchTs: 1709136669000,
527
578
  oracleSource: __1.OracleSource.PYTH,
579
+ pythFeedId: '0x410f41de235f2db824e562ea7ab2d3d3d4ff048316c61d629c0b93f58584e1af',
528
580
  },
529
581
  {
530
582
  fullName: 'Wormhole',
@@ -535,6 +587,7 @@ exports.MainnetPerpMarkets = [
535
587
  oracle: new web3_js_1.PublicKey('H9j8CT1bFiWHaZUPMooEaxMRHdWdJ5T9CzFn41z96JHW'),
536
588
  launchTs: 1710418343000,
537
589
  oracleSource: __1.OracleSource.PYTH,
590
+ pythFeedId: '0xeff7446475e218517566ea99e72a4abec2e1bd8498b43b7d8331e29dcb059389',
538
591
  },
539
592
  {
540
593
  fullName: 'Kamino',
@@ -545,6 +598,7 @@ exports.MainnetPerpMarkets = [
545
598
  oracle: new web3_js_1.PublicKey('6ynsvjkE2UoiRScbDx7ZxbBsyn7wyvg5P1vENvhtkG1C'),
546
599
  launchTs: 1712240681000,
547
600
  oracleSource: __1.OracleSource.SWITCHBOARD,
601
+ pythFeedId: '0xb17e5bc5de742a8a378b54c9c75442b7d51e30ada63f28d9bd28d3c0e26511a0',
548
602
  },
549
603
  {
550
604
  fullName: 'Tensor',
@@ -555,6 +609,7 @@ exports.MainnetPerpMarkets = [
555
609
  oracle: new web3_js_1.PublicKey('7Cfyymx49ipGsgEsCA2XygAB2DUsan4C6Cyb5c8oR5st'),
556
610
  launchTs: 1712593532000,
557
611
  oracleSource: __1.OracleSource.SWITCHBOARD,
612
+ pythFeedId: '0x05ecd4597cd48fe13d6cc3596c62af4f9675aee06e2e0b94c06d8bee2b659e05',
558
613
  },
559
614
  {
560
615
  fullName: 'Drift',
@@ -565,6 +620,7 @@ exports.MainnetPerpMarkets = [
565
620
  oracle: new web3_js_1.PublicKey('PeNpQeGEm9UEFJ6MBCMauY4WW4h3YxoESPWbsqVKucE'),
566
621
  launchTs: 1716595200000,
567
622
  oracleSource: __1.OracleSource.SWITCHBOARD,
623
+ pythFeedId: '0x5c1690b27bb02446db17cdda13ccc2c1d609ad6d2ef5bf4983a85ea8b6f19d07',
568
624
  },
569
625
  {
570
626
  fullName: 'Sanctum',
@@ -585,6 +641,7 @@ exports.MainnetPerpMarkets = [
585
641
  oracle: new web3_js_1.PublicKey('Gcm39uDrFyRCZko4hdrKMTBQsboPJHEd4RwnWhWFKr9a'),
586
642
  launchTs: 1718021389000,
587
643
  oracleSource: __1.OracleSource.SWITCHBOARD,
644
+ pythFeedId: '0x82595d1509b770fa52681e260af4dda9752b87316d7c048535d8ead3fa856eb1',
588
645
  },
589
646
  {
590
647
  fullName: 'ZEX',
@@ -12,6 +12,7 @@ export type SpotMarketConfig = {
12
12
  serumMarket?: PublicKey;
13
13
  phoenixMarket?: PublicKey;
14
14
  launchTs?: number;
15
+ pythFeedId?: string;
15
16
  };
16
17
  export declare const WRAPPED_SOL_MINT: PublicKey;
17
18
  export declare const DevnetSpotMarkets: SpotMarketConfig[];