import { ThreatClient, Chain, ValidationError, RateLimitError } from '@webacy-xyz/sdk';
const client = new ThreatClient({
apiKey: process.env.WEBACY_API_KEY,
defaultChain: Chain.ETH,
});
async function analyzeWallet(address: string) {
try {
// Get overall risk
const risk = await client.addresses.analyze(address);
if (risk.overallRisk > 70) {
console.warn(`High risk wallet: ${risk.overallRisk}`);
// Check sanctions
const sanctions = await client.addresses.checkSanctioned(address);
if (sanctions.is_sanctioned) {
throw new Error('Sanctioned address - cannot proceed');
}
// Check for address poisoning
const poisoning = await client.addresses.checkPoisoning(address);
if (poisoning.is_poisoned) {
console.warn('Address may be a poisoning attempt');
}
}
return { safe: risk.overallRisk < 50, risk };
} catch (error) {
if (error instanceof ValidationError) {
console.error('Invalid address:', error.message);
} else if (error instanceof RateLimitError) {
console.error(`Rate limited. Retry after ${error.retryAfter} seconds`);
}
throw error;
}
}