@cursedfaction3333/cursed-faction-vault-ecosystem
Version:
AI-powered NFT vault ecosystem with Magic Eden & Zora integration, cross-chain bridging, and advanced security features
199 lines (175 loc) • 6.42 kB
JavaScript
/**
* 🚀 NAVIGATE TO YOUR ECOSYSTEM
*
* Quick navigation to your deployed Cursed Faction Vault Ecosystem
*/
const { exec } = require('child_process');
const fs = require('fs');
class EcosystemNavigator {
constructor() {
this.contracts = {
VaultNFT: "0xa2a792a2667ab",
RarityNFT: "0xbc814097ec42d",
FeeRouter: "0xb3556b5ae76ca",
Subscription: "0x5b9b54a89ef14",
RewardsPool: "0x6cf14f087e091"
};
this.wallet = "0x4f8cf6b1397ef632Edf654C5E2d1c378F518F790";
this.network = "Base Sepolia";
this.explorer = "https://sepolia.basescan.org";
}
/**
* Show ecosystem overview
*/
showOverview() {
console.log("🚀 CURSED FACTION VAULT ECOSYSTEM");
console.log("==================================");
console.log(`📍 Network: ${this.network}`);
console.log(`🔗 Explorer: ${this.explorer}`);
console.log(`💼 Wallet: ${this.wallet}`);
console.log("");
console.log("🏗️ DEPLOYED CONTRACTS:");
console.log("======================");
Object.entries(this.contracts).forEach(([name, address]) => {
console.log(`${name}: ${address}`);
});
console.log("");
}
/**
* Open contract in browser
*/
openContract(contractName) {
const address = this.contracts[contractName];
if (!address) {
console.log(`❌ Contract ${contractName} not found`);
return;
}
const url = `${this.explorer}/address/${address}`;
console.log(`🌐 Opening ${contractName} in browser...`);
console.log(`🔗 URL: ${url}`);
// Open in default browser
const command = process.platform === 'win32' ? 'start' :
process.platform === 'darwin' ? 'open' : 'xdg-open';
exec(`${command} "${url}"`, (error) => {
if (error) {
console.log(`⚠️ Could not open browser automatically`);
console.log(`📋 Copy this URL: ${url}`);
} else {
console.log(`✅ Opened ${contractName} in browser`);
}
});
}
/**
* Open wallet in browser
*/
openWallet() {
const url = `${this.explorer}/address/${this.wallet}`;
console.log(`🌐 Opening wallet in browser...`);
console.log(`🔗 URL: ${url}`);
const command = process.platform === 'win32' ? 'start' :
process.platform === 'darwin' ? 'open' : 'xdg-open';
exec(`${command} "${url}"`, (error) => {
if (error) {
console.log(`⚠️ Could not open browser automatically`);
console.log(`📋 Copy this URL: ${url}`);
} else {
console.log(`✅ Opened wallet in browser`);
}
});
}
/**
* Show navigation menu
*/
showMenu() {
console.log("🎯 NAVIGATION OPTIONS:");
console.log("======================");
console.log("1. Open Wallet");
console.log("2. Open VaultNFT Contract");
console.log("3. Open RarityNFT Contract");
console.log("4. Open FeeRouter Contract");
console.log("5. Open Subscription Contract");
console.log("6. Open RewardsPool Contract");
console.log("7. Show All Contract URLs");
console.log("8. Exit");
console.log("");
}
/**
* Show all contract URLs
*/
showAllUrls() {
console.log("🔗 ALL CONTRACT URLs:");
console.log("====================");
console.log(`Wallet: ${this.explorer}/address/${this.wallet}`);
console.log("");
Object.entries(this.contracts).forEach(([name, address]) => {
console.log(`${name}: ${this.explorer}/address/${address}`);
});
console.log("");
}
/**
* Interactive navigation
*/
async navigate() {
this.showOverview();
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
const askQuestion = () => {
this.showMenu();
rl.question('Choose an option (1-8): ', (answer) => {
switch(answer.trim()) {
case '1':
this.openWallet();
askQuestion();
break;
case '2':
this.openContract('VaultNFT');
askQuestion();
break;
case '3':
this.openContract('RarityNFT');
askQuestion();
break;
case '4':
this.openContract('FeeRouter');
askQuestion();
break;
case '5':
this.openContract('Subscription');
askQuestion();
break;
case '6':
this.openContract('RewardsPool');
askQuestion();
break;
case '7':
this.showAllUrls();
askQuestion();
break;
case '8':
console.log("👋 Goodbye! Your ecosystem is ready for action!");
rl.close();
break;
default:
console.log("❌ Invalid option. Please choose 1-8.");
askQuestion();
break;
}
});
};
askQuestion();
}
}
// Main function
async function main() {
const navigator = new EcosystemNavigator();
await navigator.navigate();
}
// Run navigation
if (require.main === module) {
main().catch(console.error);
}
module.exports = EcosystemNavigator;