import path from "node:path";
import { fileURLToPath } from "node:url";
import dotenv from "dotenv";
import { Connection, Keypair, clusterApiUrl } from "@solana/web3.js";
import bs58 from "bs58";
import { solanaConfig } from "./config.js";
const __dirname = path.dirname(fileURLToPath(import.meta.url));
// Suppress dotenv logging (already loaded in index.ts, this is fallback)
const originalLog = console.log;
console.log = () => {};
dotenv.config({ path: path.resolve(__dirname, "../.env") });
console.log = originalLog;
export const currentEnvironment = process.env.ENVIRONMENT || "DEVNET";
export const isDevnet = currentEnvironment === "DEVNET";
export const agentSecretKey = process.env.AGENT_SECRET_KEY || "";
// Get RPC URL based on environment
export const rpcUrl = isDevnet
? solanaConfig.devnet.rpc
: solanaConfig.testnet.rpc;
// Create Solana connection
export const connection = new Connection(rpcUrl, "confirmed");
// Validate and create keypair from private key
if (!agentSecretKey) {
throw new Error(
"AGENT_SECRET_KEY is not set in environment variables. Please check your .env file.",
);
}
let keypair: Keypair;
try {
// Try to decode as base58 (standard Solana format)
const secretKeyBytes = bs58.decode(agentSecretKey);
if (secretKeyBytes.length !== 64) {
throw new Error(
`Invalid AGENT_SECRET_KEY length. Expected 64 bytes, got ${secretKeyBytes.length} bytes.`,
);
}
keypair = Keypair.fromSecretKey(secretKeyBytes);
} catch (error) {
throw new Error(
`Invalid AGENT_SECRET_KEY format. Expected base58-encoded Solana private key (64 bytes). Error: ${(error as Error).message}`,
);
}
export const wallet = keypair;
export const walletPublicKey = keypair.publicKey;
console.error(`Wallet loaded: ${walletPublicKey.toBase58()}`);
console.error(`Network: solanaChain${isDevnet ? "Devnet" : "Testnet"}`);
console.error(`RPC URL: ${rpcUrl}`);