1.0.0 • Published 8 months ago
@yaring/coinscheck v1.0.0
Here’s a technical English translation of your provided README:
CoinsCheck
A multi-network library for checking cryptocurrency wallet balances with support for a wide range of blockchains.
Supported Networks
- EVM (Ethereum, BSC, Polygon, etc.)
- Bitcoin
- Litecoin
- Dogecoin
- Cardano
- Cosmos
- Monero
- Polkadot
- Solana
- TON
- TRON
Installation
npm install @yaring/coinscheck
Key Features
- Balance checks across various blockchain networks
- Provider caching for performance optimization
- Address validation for all supported networks
- Informative error handling
- TypeScript support
Usage Examples
Basic Usage
const { BalanceChecker } = require('@yaring/coinscheck');
const checker = new BalanceChecker({
timeout: 30000 // optional, timeout in ms
});
// Single network balance check
const chain = {
chainId: '1',
rpc: 'https://eth-mainnet.public.blastapi.io',
chainType: 'EVM',
};
const balance = await checker.checkSingleChainBalance(
'0x742d35Cc6634C0532925a3b844Bc454e4438f44e',
chain
);
console.log(balance);
// {
// chainId: '1',
// balance: '1000000000000000000',
// chainType: 'EVM'
// }
Multi-network Balance Check
const balances = await checker.checkBalances([
{
address: '0x742d35Cc6634C0532925a3b844Bc454e4438f44e',
chain: {
chainId: '1',
rpc: 'https://eth-mainnet.public.blastapi.io',
chainType: 'EVM',
},
},
{
address: 'DRpbCBMxVnDK7maPM5tGv6MvB3v1sRMC86PZ8okm21hy',
chain: {
chainId: 'solana-mainnet',
rpc: 'https://api.mainnet-beta.solana.com',
chainType: 'SOLANA',
},
},
]);
Address Validation
const { AddressValidator } = require('@yaring/coinscheck');
// EVM address validation
const isValidEvm = AddressValidator.validateAddress(
'0x742d35Cc6634C0532925a3b844Bc454e4438f44e',
'EVM'
);
// Solana address validation
const isValidSolana = AddressValidator.validateAddress(
'DRpbCBMxVnDK7maPM5tGv6MvB3v1sRMC86PZ8okm21hy',
'SOLANA'
);
API Reference
Class BalanceChecker
Constructor
new BalanceChecker(options?: {
timeout?: number; // timeout in milliseconds, default is 30000
});
Methods
checkSingleChainBalance(address: string, chain: Chain): Promise<Balance>
Checks the balance for a single address in a specified network.
interface Chain {
chainId: string;
rpc: string;
chainType: string;
name?: string;
nativeDenom?: string; // for Cosmos-based networks
}
interface Balance {
chainId: string;
balance: string;
chainType: string;
error?: string;
}
checkBalances(items: CheckItem[]): Promise<Balance[]>
Checks balances for an array of addresses across different networks.
interface CheckItem {
address: string;
chain: Chain;
}
dispose(): void
Releases resources and closes connections to providers.
Class AddressValidator
Static Methods
validateAddress(address: string, chainType: string): boolean
Validates the address format for a given network type.
validateAddressFormat(address: string, chainType: string): boolean
Checks if the address matches the regular expression for the specified network type.
getAddressExamples(): Record<string, string>
Returns examples of valid addresses for each network type.
getTestAddresses(): Record<string, { valid: string[], invalid: string[] }>
Provides sets of valid and invalid addresses for testing.
Supported Address Formats
- EVM:
0x[0-9a-fA-F]{40}
- Solana:
[1-9A-HJ-NP-Za-km-z]{32,44}
- Cosmos:
[chain-prefix]1[a-zA-Z0-9]{38}
- Bitcoin:
(1|3|bc1)[a-zA-HJ-NP-Z0-9]{25,62}
- Polkadot:
[1-9A-HJ-NP-Za-km-z]{47,48}
- TRON:
T[A-Za-z1-9]{33}
- TON:
(?:EQ|UQ)[a-zA-Z0-9_-]{48}
Error Handling
The library provides informative error messages for each network:
try {
const balance = await checker.checkSingleChainBalance(address, chain);
} catch (error) {
console.error(error.message);
// Example messages:
// "EVM balance check failed: invalid response from RPC"
// "Solana balance check failed: invalid address"
// "TRON balance check failed: network error"
}
License
MIT
Let me know if you need further adjustments!
1.0.0
8 months ago