|
|
@@ -1,88 +1,40 @@
|
|
|
-import { PythCluster } from '@pythnetwork/client/lib/cluster'
|
|
|
+import {
|
|
|
+ PythCluster,
|
|
|
+ getPythClusterApiUrl,
|
|
|
+} from '@pythnetwork/client/lib/cluster'
|
|
|
|
|
|
-const CLUSTER_URLS: Record<PythCluster, any> = {
|
|
|
+const CLUSTER_URLS: Record<PythCluster, string[]> = {
|
|
|
'mainnet-beta': [
|
|
|
- {
|
|
|
- rpcUrl: 'http://mainnet.xyz.pyth.network',
|
|
|
- wsUrl: 'ws://mainnet.xyz.pyth.network',
|
|
|
- },
|
|
|
- {
|
|
|
- rpcUrl:
|
|
|
- 'https://pyth-network.rpcpool.com/' +
|
|
|
- (process.env.NEXT_PUBLIC_RPC_POOL_TOKEN || ''),
|
|
|
- wsUrl:
|
|
|
- 'wss://pyth-network.rpcpool.com/' +
|
|
|
- (process.env.NEXT_PUBLIC_RPC_POOL_TOKEN || ''),
|
|
|
- },
|
|
|
- {
|
|
|
- rpcUrl: 'http://pyth-rpc1.certus.one:8899/',
|
|
|
- wsUrl: 'ws://pyth-rpc1.certus.one:8900/',
|
|
|
- },
|
|
|
- {
|
|
|
- rpcUrl: 'http://pyth-rpc2.certus.one:8899/',
|
|
|
- wsUrl: 'ws://pyth-rpc2.certus.one:8900/',
|
|
|
- },
|
|
|
- {
|
|
|
- rpcUrl: 'https://api.mainnet-beta.solana.com/',
|
|
|
- wsUrl: 'wss://api.mainnet-beta.solana.com/',
|
|
|
- },
|
|
|
+ process.env.NEXT_PUBLIC_MAINNET_RPC || getPythClusterApiUrl('mainnet-beta'),
|
|
|
+ 'https://pyth-network.rpcpool.com/' +
|
|
|
+ (process.env.NEXT_PUBLIC_RPC_POOL_TOKEN || ''),
|
|
|
+ 'http://pyth-rpc1.certus.one:8899/',
|
|
|
+ 'http://pyth-rpc2.certus.one:8899/',
|
|
|
+ 'https://api.mainnet-beta.solana.com/',
|
|
|
],
|
|
|
devnet: [
|
|
|
- {
|
|
|
- rpcUrl: 'http://devnet.xyz.pyth.network',
|
|
|
- wsUrl: 'ws://devnet.xyz.pyth.network',
|
|
|
- },
|
|
|
- {
|
|
|
- rpcUrl: 'https://api.devnet.solana.com/',
|
|
|
- wsUrl: 'wss://api.devnet.solana.com/',
|
|
|
- },
|
|
|
+ process.env.NEXT_PUBLIC_DEVNET_RPC || getPythClusterApiUrl('devnet'),
|
|
|
+ 'https://api.devnet.solana.com/',
|
|
|
],
|
|
|
testnet: [
|
|
|
- {
|
|
|
- rpcUrl: 'http://testnet.xyz.pyth.network',
|
|
|
- wsUrl: 'ws://testnet.xyz.pyth.network',
|
|
|
- },
|
|
|
- {
|
|
|
- rpcUrl: 'https://api.testnet.solana.com/',
|
|
|
- wsUrl: 'wss://api.testnet.solana.com/',
|
|
|
- },
|
|
|
+ process.env.NEXT_PUBLIC_TESTNET_RPC || getPythClusterApiUrl('testnet'),
|
|
|
+ 'https://api.testnet.solana.com/',
|
|
|
],
|
|
|
'pythtest-conformance': [
|
|
|
- {
|
|
|
- rpcUrl: 'http://pythtest.xyz.pyth.network',
|
|
|
- wsUrl: 'ws://pythtest.xyz.pyth.network',
|
|
|
- },
|
|
|
- {
|
|
|
- rpcUrl: 'https://api.pythtest.pyth.network/',
|
|
|
- wsUrl: 'wss://api.pythtest.pyth.network/',
|
|
|
- },
|
|
|
+ process.env.NEXT_PUBLIC_PYTHTEST_RPC ||
|
|
|
+ getPythClusterApiUrl('pythtest-conformance'),
|
|
|
+ 'https://api.pythtest.pyth.network/',
|
|
|
],
|
|
|
'pythtest-crosschain': [
|
|
|
- {
|
|
|
- rpcUrl: 'http://pythtest.xyz.pyth.network',
|
|
|
- wsUrl: 'ws://pythtest.xyz.pyth.network',
|
|
|
- },
|
|
|
- {
|
|
|
- rpcUrl: 'https://api.pythtest.pyth.network/',
|
|
|
- wsUrl: 'wss://api.pythtest.pyth.network/',
|
|
|
- },
|
|
|
+ process.env.NEXT_PUBLIC_PYTHTEST_RPC ||
|
|
|
+ getPythClusterApiUrl('pythtest-crosschain'),
|
|
|
+ 'https://api.pythtest.pyth.network/',
|
|
|
],
|
|
|
pythnet: [
|
|
|
- {
|
|
|
- rpcUrl: 'http://pythnet.xyz.pyth.network',
|
|
|
- wsUrl: 'ws://pythnet.xyz.pyth.network',
|
|
|
- },
|
|
|
- {
|
|
|
- rpcUrl: 'https://pythnet.rpcpool.com/',
|
|
|
- wsUrl: 'wss://pythnet.rpcpool.com/',
|
|
|
- },
|
|
|
- ],
|
|
|
- localnet: [
|
|
|
- {
|
|
|
- rpcUrl: 'http://localhost:8899/',
|
|
|
- wsUrl: 'ws://localhost:8900/',
|
|
|
- },
|
|
|
+ process.env.NEXT_PUBLIC_PYTHNET_RPC || getPythClusterApiUrl('pythnet'),
|
|
|
+ 'https://pythnet.rpcpool.com/',
|
|
|
],
|
|
|
+ localnet: ['http://localhost:8899/'],
|
|
|
}
|
|
|
|
|
|
export function pythClusterApiUrls(cluster: PythCluster) {
|
|
|
@@ -92,3 +44,11 @@ export function pythClusterApiUrls(cluster: PythCluster) {
|
|
|
return []
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+export function deriveWsUrl(httpUrl: string) {
|
|
|
+ if (httpUrl.startsWith('https://')) {
|
|
|
+ return 'wss://' + httpUrl.slice(8)
|
|
|
+ } else {
|
|
|
+ return 'ws://' + httpUrl.slice(7)
|
|
|
+ }
|
|
|
+}
|