import { createSolanaRpc, createSolanaRpcSubscriptions, type Rpc, type RpcSubscriptions, type SolanaRpcApiMainnet, type SolanaRpcSubscriptionsApi, sendAndConfirmTransactionFactory, } from '@solana/kit'; import type { SolanaConfig } from '../../config.js'; export type SolanaClient = { privateKey: string; rpc: Rpc; rpcSubscriptions: RpcSubscriptions; sendAndConfirmTransaction: ReturnType; }; export function createSolanaClient(config: SolanaConfig): SolanaClient { const rpc = config.rpcProviderUrl ? createSolanaRpc(config.rpcProviderUrl) : getDefaultSolanaRPC(); const rpcSubscriptions = createSolanaRpcSubscriptions('wss://api.mainnet-beta.solana.com'); const sendAndConfirmTransaction = sendAndConfirmTransactionFactory({ rpc, rpcSubscriptions, }); return { privateKey: config.privateKey, rpc, rpcSubscriptions, sendAndConfirmTransaction, }; } export function getDefaultSolanaRPC(): Rpc { return createSolanaRpc('https://api.mainnet-beta.solana.com'); }