This commit is contained in:
2026-04-05 00:43:23 +05:30
commit 8be37d3e92
425 changed files with 101853 additions and 0 deletions

66
dmtp/client/lib/celo.ts Normal file
View File

@@ -0,0 +1,66 @@
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';
}