@iqai/mcp-near-agent
Version:
Mcp server for Near
60 lines • 1.99 kB
JavaScript
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