#!/usr/bin/env node // Test Drift SDK on devnet to avoid RPC restrictions import { DriftClient, initialize, Wallet } from '@drift-labs/sdk' import { Connection, Keypair } from '@solana/web3.js' async function testDriftDevnet() { try { console.log('๐Ÿงช Testing Drift SDK on devnet...') // Use devnet which is more permissive const connection = new Connection('https://api.devnet.solana.com', 'confirmed') // Create a random keypair for testing const keypair = Keypair.generate() const wallet = new Wallet(keypair) console.log('๐Ÿ” Test wallet:', keypair.publicKey.toString()) // Initialize for devnet const env = 'devnet' const sdkConfig = initialize({ env }) console.log('๐Ÿ“‹ Drift Program ID:', sdkConfig.DRIFT_PROGRAM_ID.toString()) const driftClient = new DriftClient({ connection, wallet, programID: sdkConfig.DRIFT_PROGRAM_ID, opts: { commitment: 'confirmed', }, }) console.log('โœ… DriftClient created successfully') // Try to get program account info (read-only operation) const programInfo = await connection.getAccountInfo(sdkConfig.DRIFT_PROGRAM_ID) console.log('๐Ÿ“Š Program account info:', programInfo ? 'Found' : 'Not found') // Try subscribing (this might fail without funds but should show what works) try { await driftClient.subscribe() console.log('โœ… Subscribed to Drift client') // Try to get state const state = await driftClient.getStateAccount() console.log('๐Ÿ“ˆ Drift state:', { admin: state.admin.toString(), numberOfAuthorities: state.numberOfAuthorities }) await driftClient.unsubscribe() } catch (subscribeError) { console.log('โ„น๏ธ Subscribe failed (expected for unfunded account):', subscribeError.message) } console.log('โœ… Basic Drift SDK functionality working on devnet') } catch (error) { console.error('โŒ Drift devnet test failed:', error) } } testDriftDevnet()