mirror of
https://github.com/arkorty/B.Tech-Project-III.git
synced 2026-04-19 12:41:48 +00:00
67 lines
1.7 KiB
TypeScript
67 lines
1.7 KiB
TypeScript
import { ethers } from 'ethers';
|
|
|
|
// Network configurations
|
|
export const CELO_NETWORKS = {
|
|
mainnet: {
|
|
chainId: 42220,
|
|
name: 'Celo Mainnet',
|
|
rpcUrl: 'https://forno.celo.org',
|
|
blockExplorer: 'https://celoscan.io',
|
|
cUSDAddress: '0x765DE816845861e75A25fCA122bb6898B8B1282a',
|
|
},
|
|
sepolia: {
|
|
chainId: 11142220,
|
|
name: 'Celo Sepolia Testnet',
|
|
rpcUrl: 'https://forno.celo-sepolia.celo-testnet.org',
|
|
blockExplorer: 'https://sepolia.celoscan.io',
|
|
cUSDAddress: '0x874069fa1eb16d44d622f2e0ca25eea172369bc1',
|
|
},
|
|
};
|
|
|
|
// Get current network config
|
|
export function getCurrentNetwork() {
|
|
const chainId = parseInt(process.env.NEXT_PUBLIC_CHAIN_ID || '11142220');
|
|
|
|
switch (chainId) {
|
|
case 42220:
|
|
return CELO_NETWORKS.mainnet;
|
|
case 11142220:
|
|
return CELO_NETWORKS.sepolia;
|
|
default:
|
|
return CELO_NETWORKS.sepolia;
|
|
}
|
|
}
|
|
|
|
// Get cUSD token address
|
|
export function getCUSDAddress(): string {
|
|
return getCurrentNetwork().cUSDAddress;
|
|
}
|
|
|
|
// Get block explorer URL
|
|
export function getExplorerUrl(txHash: string): string {
|
|
return `${getCurrentNetwork().blockExplorer}/tx/${txHash}`;
|
|
}
|
|
|
|
// Format address
|
|
export function formatAddress(address: string): string {
|
|
if (!address) return '';
|
|
return `${address.slice(0, 6)}...${address.slice(-4)}`;
|
|
}
|
|
|
|
// Check if address is valid
|
|
export function isValidAddress(address: string): boolean {
|
|
try {
|
|
return ethers.isAddress(address);
|
|
} catch {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
// Parse error message
|
|
export function parseErrorMessage(error: any): string {
|
|
if (error.reason) return error.reason;
|
|
if (error.message) return error.message;
|
|
if (typeof error === 'string') return error;
|
|
return 'Transaction failed';
|
|
}
|