import React, { useState, useEffect } from 'react'; import { History, Search, Building2, ShieldCheck, Loader2, ArrowDownLeft, ArrowUpRight, RefreshCw, Calendar } from 'lucide-react'; import { apiClient } from '../services/api'; import { CitiTransaction, InternalAccount } from '../types/index'; const Payments: React.FC = () => { const [activeTab, setActiveTab] = useState<'registry' | 'history'>('registry'); const [loading, setLoading] = useState(true); const [accounts, setAccounts] = useState([]); const [selectedAccountId, setSelectedAccountId] = useState(null); const [transactions, setTransactions] = useState([]); const [loadingTx, setLoadingTx] = useState(false); const fetchRegistry = async () => { setLoading(true); try { const data = await apiClient.getRegistryDetails(); const mapped: InternalAccount[] = data.accountGroupDetails.flatMap(group => { const list: InternalAccount[] = []; if (group.checkingAccountsDetails) { group.checkingAccountsDetails.forEach(acc => list.push({ id: acc.accountId, productName: acc.productName, displayAccountNumber: acc.displayAccountNumber, currency: acc.currencyCode, status: acc.accountStatus, currentBalance: acc.currentBalance, availableBalance: acc.availableBalance, institutionName: 'Citi US', connectionId: 'CITI-G-001' })); } return list; }); setAccounts(mapped); } catch (e) { console.error("Registry Node Sync Failure"); } finally { setLoading(false); } }; const fetchTransactions = async (accountId: string) => { setLoadingTx(true); try { const apiTx = await apiClient.getTransactions(accountId); setTransactions(apiTx); setSelectedAccountId(accountId); setActiveTab('history'); } catch (e) { console.error("Transaction Handshake Failed"); } finally { setLoadingTx(false); } }; useEffect(() => { fetchRegistry(); }, []); return (

Registry Settlement

Direct Node Handshake Active

Available Nodes

Select target registry for granular audit

{loading ? ( Array.from({ length: 3 }).map((_, i) =>
) ) : ( accounts.map(acc => ( )) )}

Ledger Audit Trace

{selectedAccountId ? `SYNCED_NODE: ${selectedAccountId}` : 'AWAITING_NODE_HANDSHAKE'}

{loadingTx ? (

Requesting Registry Payload...

) : !selectedAccountId ? (

Node Connection Idle

) : ( {transactions.map(tx => ( ))}
Handshake Detail Protocol/Type Status Value (USD)
{tx.transactionAmount < 0 ? : }

{tx.transactionDescription}

{tx.transactionDate} • {tx.transactionId}

{tx.transactionType}
{tx.transactionStatus}

{tx.transactionAmount < 0 ? '' : '+'}${tx.transactionAmount.toLocaleString(undefined, { minimumFractionDigits: 2 })}

)}
); }; export default Payments;