export type BlockchainNetwork = | 'BITCOIN' | 'ETHEREUM' | 'TRON' | 'SOLANA' | 'MONERO' | 'CROSS_CHAIN'; export type ClusterEntityType = | 'SANCTIONED_SDN' | 'MIXER_POOL' | 'EXCHANGE_VASP' | 'UNHOSTED_WALLET' | 'SMART_CONTRACT' | 'BRIDGE_GATEWAY' | 'HAWALA_CRYPTO_OTC' | 'P2P_RAMP'; export interface AddressCluster { address: string; chain: BlockchainNetwork; label: string; clusterType: ClusterEntityType; balance: number; asset: string; balanceUsd: number; totalReceivedUsd: number; totalSentUsd: number; txCount: number; riskScore: number; // 0-100 riskCategory: 'OFAC_SANCTIONS' | 'TERRORIST_FINANCING' | 'MIXER_HEURISTIC' | 'STRUCTURING' | 'SUSPICIOUS_EXCHANGE' | 'VERIFIED_EXCHANGE'; taintScore: { fifoPercentage: number; poisonPercentage: number; haircutPercentage: number; }; tags: string[]; jurisdiction: string; firstSeen: string; lastSeen: string; isSanctioned: boolean; entityOwner?: string; associatedCaseId?: string; fincenSarRef?: string; } export interface OnChainTransaction { txHash: string; chain: BlockchainNetwork; blockHeight: number; timestamp: string; fromAddress: string; fromLabel?: string; toAddress: string; toLabel?: string; amount: number; asset: string; amountUsd: number; feeUsd: number; isStructuring: boolean; isPeelingChain: boolean; isMixerHop: boolean; isBridgeHop: boolean; riskScore: number; scriptType: 'P2WPKH' | 'P2TR_TAPROOT' | 'P2SH' | 'ERC20_TRANSFER' | 'TRC20_TRANSFER' | 'RING_CT_STEALTH' | 'SOLANA_SPL'; inputsCount: number; outputsCount: number; confirmations: number; methodSignature?: string; } export interface PeelingHop { step: number; txHash: string; fromAddress: string; peelAmountUsd: number; changeAmountUsd: number; peelDestination: string; peelDestinationLabel: string; isStructuringSmurf: boolean; } export interface MixerDeanonymization { mixerProtocol: 'Tornado.Cash' | 'Sinbad.io' | 'ChipMixer' | 'Wasabi CoinJoin' | 'Railgun zk'; poolAddress: string; poolAsset: string; poolSizeUsd: number; depositTxHash: string; depositTimestamp: string; depositAmount: number; entropyBits: number; theoreticalAnonymitySet: number; reducedAnonymitySet: number; heuristicBreakdowns: { temporalProximityScore: number; // 0-100 gasPriceFingerprintMatch: number; // 0-100 denominationMatch: number; // 0-100 noncePatternMatch: number; // 0-100 }; probableWithdrawalAddress: string; probableWithdrawalTx: string; unmaskingConfidence: number; // 0-100 } export interface CryptoTraceSession { targetAddress: string; chain: BlockchainNetwork; hopDepth: number; minAmountFilterUsd: number; sanctionedFilterOnly: boolean; selectedCluster: AddressCluster | null; selectedTx: OnChainTransaction | null; }