UNPKG

@iqai/mcp-near-agent

Version:
60 lines 1.99 kB
import { Account, KeyPairSigner } from "near-api-js"; import { JsonRpcProvider } from "near-api-js/lib/providers/json-rpc-provider.js"; import { env } from "../env.js"; export class AuthManager { static instance; account = null; isInitialized = false; constructor() { } static getInstance() { if (!AuthManager.instance) { AuthManager.instance = new AuthManager(); } return AuthManager.instance; } async initialize() { if (this.isInitialized && this.account) { return this.account; } console.log("🔑 Initializing NEAR account connection..."); try { const signer = KeyPairSigner.fromSecretKey(env.ACCOUNT_KEY); const provider = new JsonRpcProvider({ url: env.NEAR_NODE_URL, }); this.account = new Account(env.ACCOUNT_ID, provider, signer); this.isInitialized = true; console.log(`✅ NEAR account initialized: ${env.ACCOUNT_ID}`); return this.account; } catch (error) { console.error("❌ Failed to initialize NEAR account:", error); throw new Error(`NEAR account initialization failed: ${error instanceof Error ? error.message : "Unknown error"}`); } } getAccount() { return this.account; } isReady() { return this.isInitialized && this.account !== null; } async validateConnection() { if (!this.account) return false; return true; } reset() { this.account = null; this.isInitialized = false; console.log("🔄 AuthManager reset"); } getStatus() { return { isInitialized: this.isInitialized, hasAccount: this.account !== null, accountId: this.account ? env.ACCOUNT_ID : null, networkId: env.NEAR_NETWORK_ID, }; } } //# sourceMappingURL=auth-manager.js.map