import { ethers } from 'ethers';
import { KAMI721C } from '../contracts/KAMI721C';
import dotenv from 'dotenv';

dotenv.config();

async function main() {
	try {
		// Get provider and wallet
		const provider = new ethers.JsonRpcProvider(process.env.RPC_URL);
		const wallet = new ethers.Wallet(process.env.PRIVATE_KEY!, provider);
		console.log(`Connected with wallet: ${wallet.address}`);

		// Get contract instance
		const contractAddress = process.env.CONTRACT_ADDRESS!;
		const nftContract = new KAMI721C(wallet, contractAddress);

		// Get USDC address
		const usdcAddress = await nftContract.getUsdcTokenAddress();
		console.log(`Contract's USDC address: ${usdcAddress}`);
		console.log(`Environment USDC address: ${process.env.USDC_ADDRESS}`);

		if (usdcAddress.toLowerCase() !== process.env.USDC_ADDRESS!.toLowerCase()) {
			console.log('WARNING: USDC addresses do not match!');
		} else {
			console.log('USDC addresses match ✓');
		}

		// Get platform commission and address
		const platformCommission = await nftContract.getPlatformCommissionPercentage();
		const platformAddress = await nftContract.getPlatformAddress();
		console.log(`\nPlatform commission: ${platformCommission} basis points (${Number(platformCommission) / 100}%)`);
		console.log(`Platform address: ${platformAddress}`);

		// Check if the platform address has the PLATFORM_ROLE
		const platformRole = await nftContract.PLATFORM_ROLE();
		const hasPlatformRole = await nftContract.hasRole(platformRole, platformAddress);
		console.log(`Platform address has PLATFORM_ROLE: ${hasPlatformRole}`);
	} catch (error) {
		console.error('Error:', error);
	}
}

main();
