@one_deploy/sdk 1.2.3 → 1.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/config/index.ts","../../src/providers/OneProvider.tsx","../../src/components/OneConnectButton.tsx","../../src/components/OnePayWidget.tsx","../../src/components/OneTransactionButton.tsx","../../src/components/OneSendWidget.tsx","../../src/components/OneOnrampWidget.tsx","../../src/components/OneOfframpWidget.tsx","../../src/components/OneSwapWidget.tsx","../../src/components/OneWalletBalance.tsx","../../src/components/OneNFTGallery.tsx","../../src/components/OneReceiveWidget.tsx","../../src/components/ai/OneChainSelector.tsx","../../src/components/ai/OneTierSelector.tsx","../../src/components/ai/OneCycleSelector.tsx","../../src/components/ai/OnePairSelector.tsx","../../src/components/ai/OneForexPoolCard.tsx","../../src/types/forex.ts","../../src/components/ai/OneForexCapitalSplit.tsx","../../src/types/console.ts","../../src/components/ai/OneForexConsoleView.tsx","../../src/components/ai/OneForexPairSelector.tsx","../../src/components/ai/OneForexTradeHistory.tsx","../../src/components/ai/console/OneMetricsDashboard.tsx","../../src/components/ai/console/OneRiskIndicator.tsx","../../src/components/ai/console/OneTradingConsole.tsx","../../src/components/ai/console/OneAgentCard.tsx","../../src/components/ai/console/OneAIQuantConsole.tsx","../../src/components/ai/console/OnePositionCard.tsx","../../src/components/ai/console/OneDecisionTimeline.tsx","../../src/components/ai/console/OneAgentConsole.tsx","../../src/components/ai/console/OnePositionDetail.tsx"],"names":["createContext","useContext","base","jsx","inAppWallet","ConnectButton","ethereum","polygon","arbitrum","PayEmbed","prepareTransaction","buttonStyle","TransactionButton","useActiveAccount","useSendTransaction","useState","useCallback","toWei","error","jsxs","containerStyle","inputStyle","useEffect","DEFAULT_FIATS","DEFAULT_CRYPTOS","DEFAULT_NETWORKS","NETWORK_DISPLAY_NAMES","CRYPTO_RATES","headerStyle","selectStyle","rowStyle","quoteBoxStyle","useWalletBalance","CHAIN_CONFIGS","optimism","bsc","avalanche","labelStyle","useMemo","chains","MediaRenderer","CHAIN_INFO","View","Text","TouchableOpacity","StyleSheet","styles","Platform","useRef","ScrollView","MONO","Fragment","Animated"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * ONE SDK Configuration\n *\n * Chain data is fetched from ONE Engine API - no duplicates needed here.\n * Engine is the single source of truth for 200+ EVM chains.\n */\n\nimport type { ChainConfig } from '../types';\n\n// ===== SDK Configuration =====\nexport interface OneConfig {\n // ONE Engine (required)\n oneEngineUrl: string;\n oneClientId: string;\n oneSecretKey?: string; // Only for backend usage\n\n // Optional: Direct Supabase access (for realtime subscriptions)\n supabaseUrl?: string;\n supabaseAnonKey?: string;\n\n // Deprecated: Use ONE Engine instead\n thirdwebClientId?: string;\n}\n\n// Default configuration values\nconst DEFAULT_ENGINE_URL = 'https://api.one23.io';\nconst DEFAULT_CLIENT_ID = 'one_pk_e8f647bfa643fdcfaa3a23f760488e49be09f929296eed4a6c399d437d907f60';\n\nlet config: OneConfig | null = null;\n\nexport function initOneSDK(options: Partial<OneConfig>): void {\n // Use defaults if not provided\n const engineUrl = options.oneEngineUrl || DEFAULT_ENGINE_URL;\n const clientId = options.oneClientId || DEFAULT_CLIENT_ID;\n\n config = {\n ...options,\n oneEngineUrl: engineUrl,\n oneClientId: clientId,\n } as OneConfig;\n}\n\nexport function getConfig(): OneConfig {\n if (!config) {\n throw new Error('ONE SDK not initialized. Call initOneSDK() first.');\n }\n return config;\n}\n\nexport function isInitialized(): boolean {\n return config !== null;\n}\n\nexport function getEngineUrl(): string {\n return config?.oneEngineUrl || process.env.NEXT_PUBLIC_ONE_ENGINE_URL || DEFAULT_ENGINE_URL;\n}\n\n// ===== Chain Data (Fetched from Engine) =====\n\n// Cache for chain data\nlet chainsCache: ChainConfig[] | null = null;\nlet chainsCacheTimestamp = 0;\nconst CACHE_TTL = 5 * 60 * 1000; // 5 minutes\n\n/**\n * Fetch chains from ONE Engine API\n * Engine is the source of truth for 200+ EVM chains\n */\nexport async function fetchChains(options?: {\n category?: 'mainnet' | 'l2' | 'testnet' | 'gaming' | 'recommended';\n smartWallet?: boolean;\n limit?: number;\n}): Promise<ChainConfig[]> {\n const engineUrl = getEngineUrl();\n const params = new URLSearchParams();\n\n if (options?.category) params.set('category', options.category);\n if (options?.smartWallet) params.set('smartWallet', 'true');\n if (options?.limit) params.set('limit', options.limit.toString());\n\n const response = await fetch(`${engineUrl}/v1/chains?${params}`);\n const data = await response.json();\n\n if (!data.success) {\n throw new Error(data.error?.message || 'Failed to fetch chains');\n }\n\n // Transform Engine response to SDK ChainConfig format\n return data.data.chains.map((chain: any) => ({\n id: chain.id,\n name: chain.name,\n shortName: chain.shortName || chain.slug || chain.name.toLowerCase(),\n icon: getChainIcon(chain.id),\n nativeCurrency: chain.nativeCurrency,\n rpcUrls: Array.isArray(chain.rpc) ? chain.rpc : [chain.rpc],\n blockExplorerUrls: chain.blockExplorer ? [chain.blockExplorer] : [],\n testnet: chain.testnet,\n }));\n}\n\n/**\n * Get all supported chains (cached)\n */\nexport async function getChains(): Promise<ChainConfig[]> {\n const now = Date.now();\n if (chainsCache && (now - chainsCacheTimestamp) < CACHE_TTL) {\n return chainsCache;\n }\n\n chainsCache = await fetchChains({ limit: 200 });\n chainsCacheTimestamp = now;\n return chainsCache;\n}\n\n/**\n * Get chain by ID\n */\nexport async function getChainById(chainId: number): Promise<ChainConfig | undefined> {\n const chains = await getChains();\n return chains.find(c => c.id === chainId);\n}\n\n/**\n * Get chain by name/shortName\n */\nexport async function getChainByName(name: string): Promise<ChainConfig | undefined> {\n const chains = await getChains();\n const lowerName = name.toLowerCase();\n return chains.find(\n c => c.name.toLowerCase() === lowerName || c.shortName.toLowerCase() === lowerName\n );\n}\n\n/**\n * Get recommended chains for UI display\n */\nexport async function getRecommendedChains(): Promise<ChainConfig[]> {\n return fetchChains({ category: 'recommended', limit: 10 });\n}\n\n/**\n * Get chains with smart wallet support\n */\nexport async function getSmartWalletChains(): Promise<ChainConfig[]> {\n return fetchChains({ smartWallet: true, limit: 50 });\n}\n\n// ===== Default Chain Constants =====\n// These are commonly used chain IDs, but full data should be fetched from Engine\n\nexport const CHAIN_IDS = {\n ETHEREUM: 1,\n POLYGON: 137,\n BSC: 56,\n ARBITRUM: 42161,\n OPTIMISM: 10,\n BASE: 8453,\n AVALANCHE: 43114,\n ZKSYNC: 324,\n LINEA: 59144,\n SCROLL: 534352,\n BLAST: 81457,\n // Testnets\n SEPOLIA: 11155111,\n BASE_SEPOLIA: 84532,\n ARBITRUM_SEPOLIA: 421614,\n} as const;\n\nexport const DEFAULT_CHAIN_ID = CHAIN_IDS.BASE;\n\n// ===== Chain Icons (Simple emoji fallback) =====\nconst CHAIN_ICONS: Record<number, string> = {\n 1: '\\u229F', // Ethereum\n 137: '\\uD83D\\uDFE3', // Polygon\n 56: '\\uD83D\\uDFE1', // BSC\n 42161: '\\uD83D\\uDD35', // Arbitrum\n 10: '\\uD83D\\uDD34', // Optimism\n 8453: '\\uD83D\\uDD37', // Base\n 43114: '\\uD83D\\uDD3A', // Avalanche\n 324: '\\u26A1', // zkSync\n 59144: '\\uD83D\\uDD39', // Linea\n 534352: '\\uD83D\\uDCDC', // Scroll\n};\n\nfunction getChainIcon(chainId: number): string {\n return CHAIN_ICONS[chainId] || '\\uD83D\\uDD17';\n}\n\n// ===== Token Names Mapping =====\n// Common token symbols to human-readable names\nexport const TOKEN_NAMES: Record<string, string> = {\n ETH: 'Ethereum',\n BTC: 'Bitcoin',\n BNB: 'BNB',\n MATIC: 'Polygon',\n POL: 'Polygon',\n AVAX: 'Avalanche',\n USDT: 'Tether',\n USDC: 'USD Coin',\n DAI: 'Dai',\n WBTC: 'Wrapped Bitcoin',\n WETH: 'Wrapped Ether',\n ARB: 'Arbitrum',\n OP: 'Optimism',\n LINK: 'Chainlink',\n UNI: 'Uniswap',\n AAVE: 'Aave',\n CRV: 'Curve',\n MKR: 'Maker',\n SNX: 'Synthetix',\n COMP: 'Compound',\n SUSHI: 'SushiSwap',\n YFI: 'Yearn Finance',\n SOL: 'Solana',\n DOT: 'Polkadot',\n ATOM: 'Cosmos',\n NEAR: 'Near Protocol',\n};\n\n// ===== CoinGecko ID Mapping =====\n// For price lookups via CoinGecko API\nexport const COINGECKO_IDS: Record<string, string> = {\n ETH: 'ethereum',\n BTC: 'bitcoin',\n BNB: 'binancecoin',\n MATIC: 'matic-network',\n POL: 'matic-network',\n AVAX: 'avalanche-2',\n USDT: 'tether',\n USDC: 'usd-coin',\n DAI: 'dai',\n WBTC: 'wrapped-bitcoin',\n WETH: 'weth',\n ARB: 'arbitrum',\n OP: 'optimism',\n LINK: 'chainlink',\n UNI: 'uniswap',\n AAVE: 'aave',\n SOL: 'solana',\n};\n\n// ===== Backwards Compatibility =====\n// @deprecated - Use getChains() or fetch from Engine API\n// These static configs are kept for backwards compatibility only\n\nexport const CHAIN_CONFIGS: Record<string, ChainConfig> = {\n ethereum: {\n id: 1,\n name: 'Ethereum',\n shortName: 'ETH',\n icon: '\\u229F',\n nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },\n rpcUrls: ['https://ethereum.rpc.thirdweb.com'],\n blockExplorerUrls: ['https://etherscan.io'],\n testnet: false,\n },\n polygon: {\n id: 137,\n name: 'Polygon',\n shortName: 'MATIC',\n icon: '\\uD83D\\uDFE3',\n nativeCurrency: { name: 'POL', symbol: 'POL', decimals: 18 },\n rpcUrls: ['https://polygon.rpc.thirdweb.com'],\n blockExplorerUrls: ['https://polygonscan.com'],\n testnet: false,\n },\n base: {\n id: 8453,\n name: 'Base',\n shortName: 'BASE',\n icon: '\\uD83D\\uDD37',\n nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },\n rpcUrls: ['https://base.rpc.thirdweb.com'],\n blockExplorerUrls: ['https://basescan.org'],\n testnet: false,\n },\n arbitrum: {\n id: 42161,\n name: 'Arbitrum One',\n shortName: 'ARB',\n icon: '\\uD83D\\uDD35',\n nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },\n rpcUrls: ['https://arbitrum.rpc.thirdweb.com'],\n blockExplorerUrls: ['https://arbiscan.io'],\n testnet: false,\n },\n optimism: {\n id: 10,\n name: 'Optimism',\n shortName: 'OP',\n icon: '\\uD83D\\uDD34',\n nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },\n rpcUrls: ['https://optimism.rpc.thirdweb.com'],\n blockExplorerUrls: ['https://optimistic.etherscan.io'],\n testnet: false,\n },\n};\n\n// @deprecated - Use getChains() to get all supported chains\nexport const SUPPORTED_CHAINS = Object.keys(CHAIN_CONFIGS);\n\n// @deprecated - Use getChainByName() instead\nexport function getChainConfig(chain: string): ChainConfig | undefined {\n return CHAIN_CONFIGS[chain.toLowerCase()];\n}\n","'use client';\n\nimport React, {\n createContext,\n useContext,\n useEffect,\n useState,\n useCallback,\n useMemo,\n type ReactNode,\n} from 'react';\nimport { createThirdwebClient, type ThirdwebClient } from 'thirdweb';\nimport { ThirdwebProvider as BaseThirdwebProvider } from 'thirdweb/react';\nimport { inAppWallet, smartWallet } from 'thirdweb/wallets';\nimport type { Chain } from 'thirdweb/chains';\nimport { base, ethereum, polygon, arbitrum, optimism } from 'thirdweb/chains';\n\nimport { initOneSDK, type OneConfig } from '../config';\nimport {\n OneEngineClient,\n createOneEngineClient,\n type EngineWalletBalance,\n type OnrampSessionRequest,\n type SwapQuote,\n type SwapQuoteRequest,\n} from '../services/engine';\nimport type { User, Token, AIStrategy, AIOrder } from '../types';\n\n// ===== Thirdweb Config Types =====\n\nexport interface ThirdwebAuthOptions {\n email?: boolean;\n phone?: boolean;\n google?: boolean;\n apple?: boolean;\n facebook?: boolean;\n discord?: boolean;\n passkey?: boolean;\n guest?: boolean;\n}\n\nexport interface ThirdwebWalletConfig {\n appName?: string;\n appIcon?: string;\n defaultChain?: Chain;\n supportedChains?: Chain[];\n sponsorGas?: boolean;\n authOptions?: ThirdwebAuthOptions;\n}\n\n// ===== Context Types =====\n\ninterface AuthContextValue {\n user: User | null;\n isAuthenticated: boolean;\n isLoading: boolean;\n accessToken: string | null;\n sendOtp: (email: string) => Promise<{ success: boolean; error?: string }>;\n verifyOtp: (email: string, otp: string) => Promise<{ success: boolean; error?: string }>;\n signOut: () => Promise<void>;\n refreshUser: () => Promise<void>;\n}\n\ninterface WalletContextValue {\n // Address management\n address: string | null;\n setAddress: (address: string | null) => void;\n // Balance from Engine API\n balance: EngineWalletBalance | null;\n tokens: Token[];\n totalUsd: number;\n isLoading: boolean;\n error: string | null;\n fetchBalance: (chains?: number[]) => Promise<void>;\n refreshBalance: () => Promise<void>;\n // Thirdweb client for wallet connection\n thirdwebClient: ThirdwebClient | null;\n isThirdwebReady: boolean;\n}\n\ninterface OnrampContextValue {\n isOpen: boolean;\n widgetUrl: string | null;\n sessionId: string | null;\n openOnramp: (options?: Partial<OnrampSessionRequest>) => Promise<void>;\n closeOnramp: () => void;\n getQuote: (fiatCurrency: string, fiatAmount: number, cryptoCurrency: string) => Promise<any>;\n}\n\ninterface SwapContextValue {\n getQuote: (request: SwapQuoteRequest) => Promise<SwapQuote | null>;\n executeSwap: (quoteId: string) => Promise<any>;\n getSupportedTokens: (chainId?: number) => Promise<Token[]>;\n getSupportedChains: () => Promise<{ id: number; name: string }[]>;\n}\n\ninterface TradingContextValue {\n strategies: AIStrategy[];\n orders: AIOrder[];\n portfolioStats: {\n totalInvested: number;\n totalValue: number;\n totalPnl: number;\n totalPnlPercent: number;\n activePositions: number;\n } | null;\n isLoading: boolean;\n fetchStrategies: () => Promise<void>;\n fetchOrders: () => Promise<void>;\n fetchPortfolio: () => Promise<void>;\n createOrder: (strategyId: string, amount: number, currency: string) => Promise<any>;\n}\n\ninterface OneContextValue {\n isInitialized: boolean;\n config: OneConfig | null;\n engine: OneEngineClient;\n auth: AuthContextValue;\n wallet: WalletContextValue;\n onramp: OnrampContextValue;\n swap: SwapContextValue;\n trading: TradingContextValue;\n // Direct thirdweb access\n thirdwebClient: ThirdwebClient | null;\n}\n\nconst OneContext = createContext<OneContextValue | null>(null);\n\n// ===== Default Thirdweb Configuration =====\n\nconst DEFAULT_CHAINS: Chain[] = [base, ethereum, polygon, arbitrum, optimism];\n\nconst DEFAULT_AUTH_OPTIONS: ThirdwebAuthOptions = {\n email: true,\n phone: false,\n google: true,\n apple: true,\n facebook: false,\n discord: false,\n passkey: true,\n guest: false,\n};\n\n// ===== Create Wallets Configuration =====\n\nfunction createWalletConfig(config: ThirdwebWalletConfig) {\n const authOptions = { ...DEFAULT_AUTH_OPTIONS, ...config.authOptions };\n\n // Build auth options array\n const authMethods: string[] = [];\n if (authOptions.google) authMethods.push('google');\n if (authOptions.apple) authMethods.push('apple');\n if (authOptions.facebook) authMethods.push('facebook');\n if (authOptions.discord) authMethods.push('discord');\n if (authOptions.passkey) authMethods.push('passkey');\n\n // Create in-app wallet with email and social logins\n const inApp = inAppWallet({\n auth: {\n options: authMethods as any[],\n },\n metadata: config.appName ? {\n name: config.appName,\n image: config.appIcon ? { src: config.appIcon, width: 100, height: 100 } : undefined,\n } : undefined,\n });\n\n // If gas sponsorship is enabled, wrap in smart wallet\n if (config.sponsorGas) {\n const chain = config.defaultChain || base;\n return [\n smartWallet({\n chain,\n sponsorGas: true,\n }),\n ];\n }\n\n return [inApp];\n}\n\n// ===== Provider Props =====\ninterface OneProviderProps {\n children: ReactNode;\n config: OneConfig;\n thirdweb?: ThirdwebWalletConfig;\n autoFetchBalance?: boolean;\n}\n\n// ===== Provider Component =====\nexport function OneProvider({\n children,\n config,\n thirdweb: thirdwebConfig = {},\n autoFetchBalance = true,\n}: OneProviderProps) {\n // Initialize SDK synchronously before creating engine client\n useMemo(() => {\n initOneSDK(config);\n }, [config]);\n\n const [isInitialized, setIsInitialized] = useState(true);\n const engine = useMemo(() => createOneEngineClient({\n baseUrl: config.oneEngineUrl,\n clientId: config.oneClientId,\n secretKey: config.oneSecretKey,\n }), [config]);\n\n // ===== Thirdweb State =====\n const [thirdwebClientId, setThirdwebClientId] = useState<string | null>(null);\n const [thirdwebLoading, setThirdwebLoading] = useState(true);\n const [thirdwebError, setThirdwebError] = useState<string | null>(null);\n\n // Fetch thirdweb clientId from Engine on mount\n useEffect(() => {\n const fetchClientConfig = async () => {\n try {\n const response = await fetch(`${config.oneEngineUrl}/v1/config/thirdweb`);\n\n if (response.ok) {\n const data = await response.json();\n if (data.success && data.data?.clientId) {\n setThirdwebClientId(data.data.clientId);\n } else {\n // Fallback to environment variable\n const envClientId = typeof window !== 'undefined'\n ? (window as any).__NEXT_PUBLIC_THIRDWEB_CLIENT_ID\n : process.env.NEXT_PUBLIC_THIRDWEB_CLIENT_ID;\n if (envClientId) {\n setThirdwebClientId(envClientId);\n } else {\n setThirdwebError('Failed to load wallet configuration');\n }\n }\n } else {\n // Fallback to environment variable\n const envClientId = process.env.NEXT_PUBLIC_THIRDWEB_CLIENT_ID;\n if (envClientId) {\n setThirdwebClientId(envClientId);\n } else {\n setThirdwebError('Wallet service unavailable');\n }\n }\n } catch (err) {\n // Fallback to environment variable on network error\n const envClientId = process.env.NEXT_PUBLIC_THIRDWEB_CLIENT_ID;\n if (envClientId) {\n setThirdwebClientId(envClientId);\n } else {\n console.warn('Failed to fetch thirdweb config:', err);\n // Don't set error - thirdweb is optional\n }\n } finally {\n setThirdwebLoading(false);\n }\n };\n\n fetchClientConfig();\n }, [config.oneEngineUrl]);\n\n // Create thirdweb client once we have clientId\n const thirdwebClient = useMemo(() => {\n if (!thirdwebClientId) return null;\n return createThirdwebClient({ clientId: thirdwebClientId });\n }, [thirdwebClientId]);\n\n // Create wallet configuration\n const wallets = useMemo(() => createWalletConfig(thirdwebConfig), [thirdwebConfig]);\n\n // ===== Auth State =====\n const [user, setUser] = useState<User | null>(null);\n const [accessToken, setAccessToken] = useState<string | null>(null);\n const [authLoading, setAuthLoading] = useState(true);\n\n const sendOtp = useCallback(async (email: string) => {\n const result = await engine.sendEmailOtp(email);\n if (!result.success) {\n return { success: false, error: result.error?.message };\n }\n return { success: true };\n }, [engine]);\n\n const verifyOtp = useCallback(async (email: string, otp: string) => {\n const result = await engine.verifyEmailOtp(email, otp);\n if (!result.success || !result.data) {\n return { success: false, error: result.error?.message };\n }\n\n const { user: authUser, accessToken: token } = result.data;\n setUser(authUser);\n setAccessToken(token);\n engine.setAccessToken(token);\n\n return { success: true };\n }, [engine]);\n\n const signOut = useCallback(async () => {\n await engine.signOut();\n setUser(null);\n setAccessToken(null);\n engine.clearAccessToken();\n }, [engine]);\n\n const refreshUser = useCallback(async () => {\n try {\n if (accessToken) {\n engine.setAccessToken(accessToken);\n const result = await engine.getCurrentUser();\n if (result.success && result.data) {\n setUser(result.data);\n }\n }\n } finally {\n setAuthLoading(false);\n }\n }, [engine, accessToken]);\n\n useEffect(() => {\n refreshUser();\n }, []);\n\n // ===== Wallet State =====\n const [walletAddress, setWalletAddress] = useState<string | null>(null);\n const [walletBalance, setWalletBalance] = useState<EngineWalletBalance | null>(null);\n const [walletLoading, setWalletLoading] = useState(false);\n const [walletError, setWalletError] = useState<string | null>(null);\n\n const fetchBalance = useCallback(async (chains?: number[]) => {\n if (!walletAddress) return;\n\n setWalletLoading(true);\n setWalletError(null);\n\n try {\n const result = await engine.getWalletBalance(walletAddress, chains);\n if (result.success && result.data) {\n setWalletBalance(result.data);\n } else {\n setWalletError(result.error?.message || 'Failed to fetch balance');\n }\n } catch (error) {\n setWalletError(error instanceof Error ? error.message : 'Failed to fetch balance');\n } finally {\n setWalletLoading(false);\n }\n }, [walletAddress, engine]);\n\n const refreshBalance = useCallback(async () => {\n await fetchBalance();\n }, [fetchBalance]);\n\n useEffect(() => {\n if (autoFetchBalance && walletAddress && isInitialized) {\n fetchBalance();\n }\n }, [walletAddress, autoFetchBalance, isInitialized, fetchBalance]);\n\n // ===== Onramp State =====\n const [onrampOpen, setOnrampOpen] = useState(false);\n const [onrampUrl, setOnrampUrl] = useState<string | null>(null);\n const [onrampSessionId, setOnrampSessionId] = useState<string | null>(null);\n\n const openOnramp = useCallback(async (options?: Partial<OnrampSessionRequest>) => {\n if (!walletAddress) return;\n\n const result = await engine.createOnrampSession({\n walletAddress,\n fiatCurrency: 'USD',\n cryptoCurrency: 'ETH',\n ...options,\n });\n\n if (result.success && result.data) {\n setOnrampUrl(result.data.widgetUrl);\n setOnrampSessionId(result.data.sessionId);\n setOnrampOpen(true);\n }\n }, [walletAddress, engine]);\n\n const closeOnramp = useCallback(() => {\n setOnrampOpen(false);\n setOnrampUrl(null);\n }, []);\n\n const getOnrampQuote = useCallback(async (\n fiatCurrency: string,\n fiatAmount: number,\n cryptoCurrency: string\n ) => {\n const result = await engine.getOnrampQuote(fiatCurrency, fiatAmount, cryptoCurrency);\n return result.success ? result.data : null;\n }, [engine]);\n\n // ===== Swap =====\n const getSwapQuote = useCallback(async (request: SwapQuoteRequest) => {\n const result = await engine.getSwapQuote(request);\n return result.success ? result.data || null : null;\n }, [engine]);\n\n const executeSwap = useCallback(async (quoteId: string) => {\n if (!walletAddress) return null;\n const result = await engine.executeSwap({ quoteId, walletAddress });\n return result.success ? result.data : null;\n }, [engine, walletAddress]);\n\n const getSupportedTokens = useCallback(async (chainId?: number) => {\n const result = await engine.getSupportedSwapTokens(chainId);\n return result.success && result.data ? result.data.tokens : [];\n }, [engine]);\n\n const getSupportedChains = useCallback(async () => {\n const result = await engine.getSupportedSwapChains();\n return result.success && result.data ? result.data.chains : [];\n }, [engine]);\n\n // ===== Trading State =====\n const [strategies, setStrategies] = useState<AIStrategy[]>([]);\n const [orders, setOrders] = useState<AIOrder[]>([]);\n const [portfolioStats, setPortfolioStats] = useState<TradingContextValue['portfolioStats']>(null);\n const [tradingLoading, setTradingLoading] = useState(false);\n\n const fetchStrategies = useCallback(async () => {\n setTradingLoading(true);\n try {\n const result = await engine.getStrategies();\n if (result.success && result.data) {\n setStrategies(result.data);\n }\n } finally {\n setTradingLoading(false);\n }\n }, [engine]);\n\n const fetchOrders = useCallback(async () => {\n const result = await engine.getUserOrders();\n if (result.success && result.data) {\n setOrders(result.data);\n }\n }, [engine]);\n\n const fetchPortfolio = useCallback(async () => {\n const result = await engine.getPortfolioStats();\n if (result.success && result.data) {\n setPortfolioStats(result.data);\n }\n }, [engine]);\n\n const createOrder = useCallback(async (\n strategyId: string,\n amount: number,\n currency: string\n ) => {\n const result = await engine.createOrder(strategyId, amount, currency);\n if (result.success) {\n await fetchOrders();\n await fetchPortfolio();\n }\n return result;\n }, [engine, fetchOrders, fetchPortfolio]);\n\n // ===== Context Value =====\n const contextValue: OneContextValue = useMemo(() => ({\n isInitialized,\n config: isInitialized ? config : null,\n engine,\n thirdwebClient,\n\n auth: {\n user,\n isAuthenticated: !!user,\n isLoading: authLoading,\n accessToken,\n sendOtp,\n verifyOtp,\n signOut,\n refreshUser,\n },\n\n wallet: {\n address: walletAddress,\n balance: walletBalance,\n tokens: walletBalance?.tokens || [],\n totalUsd: walletBalance?.totalUsd || 0,\n isLoading: walletLoading,\n error: walletError,\n setAddress: setWalletAddress,\n fetchBalance,\n refreshBalance,\n thirdwebClient,\n isThirdwebReady: !thirdwebLoading && !!thirdwebClient,\n },\n\n onramp: {\n isOpen: onrampOpen,\n widgetUrl: onrampUrl,\n sessionId: onrampSessionId,\n openOnramp,\n closeOnramp,\n getQuote: getOnrampQuote,\n },\n\n swap: {\n getQuote: getSwapQuote,\n executeSwap,\n getSupportedTokens,\n getSupportedChains,\n },\n\n trading: {\n strategies,\n orders,\n portfolioStats,\n isLoading: tradingLoading,\n fetchStrategies,\n fetchOrders,\n fetchPortfolio,\n createOrder,\n },\n }), [\n isInitialized,\n config,\n engine,\n thirdwebClient,\n thirdwebLoading,\n user,\n authLoading,\n accessToken,\n sendOtp,\n verifyOtp,\n signOut,\n refreshUser,\n walletAddress,\n walletBalance,\n walletLoading,\n walletError,\n fetchBalance,\n refreshBalance,\n onrampOpen,\n onrampUrl,\n onrampSessionId,\n openOnramp,\n closeOnramp,\n getOnrampQuote,\n getSwapQuote,\n executeSwap,\n getSupportedTokens,\n getSupportedChains,\n strategies,\n orders,\n portfolioStats,\n tradingLoading,\n fetchStrategies,\n fetchOrders,\n fetchPortfolio,\n createOrder,\n ]);\n\n // Wrap with ThirdwebProvider if client is available\n const content = (\n <OneContext.Provider value={contextValue}>\n {children}\n </OneContext.Provider>\n );\n\n // If thirdweb is ready, wrap with ThirdwebProvider\n if (thirdwebClient) {\n return (\n <BaseThirdwebProvider>\n {content}\n </BaseThirdwebProvider>\n );\n }\n\n return content;\n}\n\n// ===== Hooks =====\nexport function useOne(): OneContextValue {\n const context = useContext(OneContext);\n if (!context) {\n throw new Error('useOne must be used within a OneProvider');\n }\n return context;\n}\n\nexport function useOneAuth() {\n const { auth } = useOne();\n return auth;\n}\n\nexport function useOneWallet() {\n const { wallet } = useOne();\n return wallet;\n}\n\nexport function useOneOnramp() {\n const { onramp } = useOne();\n return onramp;\n}\n\nexport function useOneSwap() {\n const { swap } = useOne();\n return swap;\n}\n\nexport function useOneTrading() {\n const { trading } = useOne();\n return trading;\n}\n\nexport function useOneEngine() {\n const { engine } = useOne();\n return engine;\n}\n\nexport function useThirdwebClient(): ThirdwebClient | null {\n const { thirdwebClient } = useOne();\n return thirdwebClient;\n}\n\n// Export context for advanced usage\nexport { OneContext };\n\n// Export thirdweb utilities for convenience\nexport { inAppWallet, smartWallet } from 'thirdweb/wallets';\nexport { base, ethereum, polygon, arbitrum, optimism } from 'thirdweb/chains';\nexport type { Chain } from 'thirdweb/chains';\nexport type { ThirdwebClient } from 'thirdweb';\n","'use client';\n\nimport React from 'react';\nimport { ConnectButton, type ConnectButtonProps } from 'thirdweb/react';\nimport { inAppWallet, smartWallet } from 'thirdweb/wallets';\nimport { base } from 'thirdweb/chains';\nimport { useThirdwebClient } from '../providers';\n\n// ===== Types =====\n\nexport interface OneConnectButtonProps {\n // Appearance\n label?: string;\n theme?: 'light' | 'dark';\n className?: string;\n style?: React.CSSProperties;\n\n // Chain config\n chain?: Parameters<typeof smartWallet>[0]['chain'];\n sponsorGas?: boolean;\n\n // Auth options\n authOptions?: {\n email?: boolean;\n google?: boolean;\n apple?: boolean;\n discord?: boolean;\n passkey?: boolean;\n };\n\n // Callbacks\n onConnect?: (address: string) => void;\n onDisconnect?: () => void;\n\n // Account abstraction\n accountAbstraction?: {\n chain: Parameters<typeof smartWallet>[0]['chain'];\n sponsorGas?: boolean;\n };\n}\n\n// ===== Default Theme =====\n\nconst ONE_THEME = {\n colors: {\n primaryButtonBg: '#10b981', // emerald-500\n primaryButtonText: '#ffffff',\n accentButtonBg: '#059669', // emerald-600\n modalBg: '#1f2937', // gray-800\n borderColor: '#374151', // gray-700\n separatorLine: '#374151',\n secondaryText: '#9ca3af', // gray-400\n primaryText: '#ffffff',\n },\n fontFamily: 'Inter, system-ui, sans-serif',\n};\n\n// ===== Component =====\n\nexport function OneConnectButton({\n label = 'Connect Wallet',\n theme = 'dark',\n className,\n style,\n chain = base,\n sponsorGas = true,\n authOptions = {\n email: true,\n google: true,\n apple: true,\n discord: false,\n passkey: true,\n },\n onConnect,\n onDisconnect,\n accountAbstraction,\n}: OneConnectButtonProps) {\n const client = useThirdwebClient();\n\n // Show loading state if client is not ready\n if (!client) {\n return (\n <button\n disabled\n className={className}\n style={{\n backgroundColor: ONE_THEME.colors.primaryButtonBg,\n color: ONE_THEME.colors.primaryButtonText,\n fontFamily: ONE_THEME.fontFamily,\n fontWeight: 600,\n borderRadius: '12px',\n padding: '12px 24px',\n opacity: 0.5,\n cursor: 'not-allowed',\n ...style,\n }}\n >\n Initializing...\n </button>\n );\n }\n\n // Build auth methods\n const authMethods: string[] = ['email'];\n if (authOptions.google) authMethods.push('google');\n if (authOptions.apple) authMethods.push('apple');\n if (authOptions.discord) authMethods.push('discord');\n if (authOptions.passkey) authMethods.push('passkey');\n\n // Create in-app wallet\n const wallet = inAppWallet({\n auth: {\n options: authMethods as any[],\n },\n });\n\n // Build connect button props\n const connectProps: Partial<ConnectButtonProps> = {\n client,\n wallets: [wallet],\n connectButton: {\n label,\n style: {\n backgroundColor: ONE_THEME.colors.primaryButtonBg,\n color: ONE_THEME.colors.primaryButtonText,\n fontFamily: ONE_THEME.fontFamily,\n fontWeight: 600,\n borderRadius: '12px',\n padding: '12px 24px',\n ...style,\n },\n className,\n },\n theme: theme === 'dark' ? 'dark' : 'light',\n };\n\n // Add account abstraction if sponsoring gas\n if (sponsorGas || accountAbstraction) {\n connectProps.accountAbstraction = {\n chain: accountAbstraction?.chain || chain,\n sponsorGas: accountAbstraction?.sponsorGas ?? sponsorGas,\n };\n }\n\n return <ConnectButton {...(connectProps as ConnectButtonProps)} />;\n}\n\n// ===== Presets =====\n\nexport function OneConnectButtonSimple(props: Omit<OneConnectButtonProps, 'authOptions'>) {\n return (\n <OneConnectButton\n {...props}\n authOptions={{ email: true, google: true, apple: false, passkey: false }}\n />\n );\n}\n\nexport function OneConnectButtonFull(props: Omit<OneConnectButtonProps, 'authOptions'>) {\n return (\n <OneConnectButton\n {...props}\n authOptions={{ email: true, google: true, apple: true, discord: true, passkey: true }}\n />\n );\n}\n","'use client';\n\nimport React from 'react';\nimport { PayEmbed, type PayEmbedProps } from 'thirdweb/react';\nimport { base, ethereum, polygon, arbitrum } from 'thirdweb/chains';\nimport { useThirdwebClient } from '../providers';\n\n// ===== Types =====\n\nexport type PayMode = 'fund_wallet' | 'direct_payment' | 'transaction';\n\nexport interface OnePayWidgetProps {\n // Mode configuration\n mode?: PayMode;\n\n // For direct_payment mode\n recipientAddress?: string;\n amount?: string;\n tokenAddress?: string;\n chainId?: number;\n\n // For transaction mode\n transaction?: any; // PreparedTransaction from thirdweb\n\n // Appearance\n theme?: 'light' | 'dark';\n className?: string;\n style?: React.CSSProperties;\n\n // Payment options\n buyWithCrypto?: boolean;\n buyWithFiat?: boolean;\n\n // Supported tokens (token addresses per chain)\n supportedTokens?: {\n [chainId: number]: string[];\n };\n\n // Callbacks\n onSuccess?: (result: any) => void;\n onError?: (error: Error) => void;\n onCancel?: () => void;\n}\n\n// ===== Default Configuration =====\n\nconst DEFAULT_SUPPORTED_TOKENS = {\n [base.id]: [\n '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913', // USDC on Base\n ],\n [ethereum.id]: [\n '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', // USDC on Ethereum\n '0xdAC17F958D2ee523a2206206994597C13D831ec7', // USDT on Ethereum\n ],\n [polygon.id]: [\n '0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359', // USDC on Polygon\n ],\n [arbitrum.id]: [\n '0xaf88d065e77c8cC2239327C5EDb3A432268e5831', // USDC on Arbitrum\n ],\n};\n\n// ===== Component =====\n\nexport function OnePayWidget({\n mode = 'fund_wallet',\n recipientAddress,\n amount,\n tokenAddress,\n chainId,\n transaction,\n theme = 'dark',\n className,\n style,\n buyWithCrypto = true,\n buyWithFiat = true,\n supportedTokens = DEFAULT_SUPPORTED_TOKENS,\n onSuccess,\n onError,\n onCancel,\n}: OnePayWidgetProps) {\n const client = useThirdwebClient();\n\n // Show loading state if client is not ready\n if (!client) {\n return (\n <div className={className} style={{ ...style, padding: '20px', textAlign: 'center', color: '#9ca3af' }}>\n Initializing payment...\n </div>\n );\n }\n\n // Build pay options based on mode\n let payOptions: PayEmbedProps['payOptions'];\n\n switch (mode) {\n case 'direct_payment':\n if (!recipientAddress) {\n console.warn('OnePayWidget: recipientAddress required for direct_payment mode');\n }\n payOptions = {\n mode: 'direct_payment',\n paymentInfo: {\n sellerAddress: recipientAddress || '',\n amount: amount || '0',\n chain: chainId ? { id: chainId } as any : base,\n token: tokenAddress ? { address: tokenAddress } as any : undefined,\n },\n buyWithCrypto: buyWithCrypto ? {} : false,\n buyWithFiat: buyWithFiat ? {} : false,\n };\n break;\n\n case 'transaction':\n if (!transaction) {\n console.warn('OnePayWidget: transaction required for transaction mode');\n }\n payOptions = {\n mode: 'transaction',\n transaction,\n buyWithCrypto: buyWithCrypto ? {} : false,\n buyWithFiat: buyWithFiat ? {} : false,\n };\n break;\n\n case 'fund_wallet':\n default:\n payOptions = {\n mode: 'fund_wallet',\n buyWithCrypto: buyWithCrypto ? {} : false,\n buyWithFiat: buyWithFiat ? {} : false,\n };\n break;\n }\n\n return (\n <div className={className} style={style}>\n <PayEmbed\n client={client}\n payOptions={payOptions}\n theme={theme}\n supportedTokens={supportedTokens as any}\n />\n </div>\n );\n}\n\n// ===== Presets =====\n\nexport function OneFundWalletWidget(props: Omit<OnePayWidgetProps, 'mode'>) {\n return <OnePayWidget {...props} mode=\"fund_wallet\" />;\n}\n\nexport function OneDirectPayWidget(\n props: Omit<OnePayWidgetProps, 'mode'> & {\n recipientAddress: string;\n amount: string;\n }\n) {\n return <OnePayWidget {...props} mode=\"direct_payment\" />;\n}\n\nexport function OneCryptoOnlyPayWidget(props: Omit<OnePayWidgetProps, 'buyWithFiat'>) {\n return <OnePayWidget {...props} buyWithFiat={false} />;\n}\n\nexport function OneFiatOnlyPayWidget(props: Omit<OnePayWidgetProps, 'buyWithCrypto'>) {\n return <OnePayWidget {...props} buyWithCrypto={false} />;\n}\n","'use client';\n\nimport React from 'react';\nimport { TransactionButton, type TransactionButtonProps } from 'thirdweb/react';\nimport { prepareTransaction, type PreparedTransaction } from 'thirdweb';\nimport type { Chain } from 'thirdweb/chains';\nimport { useThirdwebClient } from '../providers';\n\n// ===== Types =====\n\nexport interface OneTransactionButtonProps {\n // Transaction config\n to: string;\n value?: bigint;\n data?: `0x${string}`;\n chain: Chain;\n\n // Or use prepared transaction directly\n transaction?: PreparedTransaction;\n\n // Appearance\n label?: string;\n loadingLabel?: string;\n theme?: 'light' | 'dark';\n className?: string;\n style?: React.CSSProperties;\n disabled?: boolean;\n\n // Callbacks\n onSuccess?: (result: { transactionHash: string }) => void;\n onError?: (error: Error) => void;\n onSubmitted?: (txHash: string) => void;\n}\n\n// ===== ONE Theme Styles =====\n\nconst ONE_BUTTON_STYLE: React.CSSProperties = {\n backgroundColor: '#10b981',\n color: '#ffffff',\n fontFamily: 'Inter, system-ui, sans-serif',\n fontWeight: 600,\n borderRadius: '12px',\n padding: '12px 24px',\n border: 'none',\n cursor: 'pointer',\n transition: 'background-color 0.2s',\n};\n\nconst ONE_BUTTON_DISABLED_STYLE: React.CSSProperties = {\n ...ONE_BUTTON_STYLE,\n backgroundColor: '#6b7280',\n cursor: 'not-allowed',\n};\n\n// ===== Component =====\n\nexport function OneTransactionButton({\n to,\n value,\n data,\n chain,\n transaction: preparedTx,\n label = 'Send Transaction',\n loadingLabel = 'Processing...',\n theme = 'dark',\n className,\n style,\n disabled = false,\n onSuccess,\n onError,\n onSubmitted,\n}: OneTransactionButtonProps) {\n const client = useThirdwebClient();\n\n // Show loading state if client is not ready\n if (!client && !preparedTx) {\n return (\n <button\n disabled\n className={className}\n style={{ ...ONE_BUTTON_DISABLED_STYLE, ...style, opacity: 0.5 }}\n >\n Initializing...\n </button>\n );\n }\n\n // Prepare transaction if not already provided\n const transaction = preparedTx || (client ? prepareTransaction({\n to,\n value,\n data,\n chain,\n client,\n }) : null);\n\n if (!transaction) {\n return (\n <button\n disabled\n className={className}\n style={{ ...ONE_BUTTON_DISABLED_STYLE, ...style, opacity: 0.5 }}\n >\n Initializing...\n </button>\n );\n }\n\n const buttonStyle = disabled\n ? { ...ONE_BUTTON_DISABLED_STYLE, ...style }\n : { ...ONE_BUTTON_STYLE, ...style };\n\n return (\n <TransactionButton\n transaction={() => transaction}\n onTransactionSent={(result) => onSubmitted?.(result.transactionHash)}\n onTransactionConfirmed={(result) => onSuccess?.({ transactionHash: result.transactionHash })}\n onError={onError}\n disabled={disabled}\n style={buttonStyle}\n className={className}\n theme={theme}\n >\n {label}\n </TransactionButton>\n );\n}\n\n// ===== Presets =====\n\nexport interface OneSendETHButtonProps extends Omit<OneTransactionButtonProps, 'data'> {\n amount: string; // in ETH\n}\n\nexport function OneSendETHButton({\n amount,\n ...props\n}: OneSendETHButtonProps) {\n const valueInWei = BigInt(Math.floor(parseFloat(amount) * 1e18));\n\n return (\n <OneTransactionButton\n {...props}\n value={valueInWei}\n label={props.label || `Send ${amount} ETH`}\n />\n );\n}\n\nexport interface OneApproveButtonProps extends Omit<OneTransactionButtonProps, 'to' | 'data' | 'value'> {\n tokenAddress: string;\n spenderAddress: string;\n amount?: bigint; // Max uint256 by default\n}\n\nexport function OneApproveButton({\n tokenAddress,\n spenderAddress,\n amount = BigInt('0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff'),\n chain,\n ...props\n}: OneApproveButtonProps) {\n // ERC20 approve function selector + encoded params\n const approveData = `0x095ea7b3${spenderAddress.slice(2).padStart(64, '0')}${amount.toString(16).padStart(64, '0')}` as `0x${string}`;\n\n return (\n <OneTransactionButton\n {...props}\n to={tokenAddress}\n data={approveData}\n chain={chain}\n label={props.label || 'Approve Token'}\n />\n );\n}\n","'use client';\n\nimport React, { useState, useCallback } from 'react';\nimport { useSendTransaction, useActiveAccount } from 'thirdweb/react';\nimport { prepareTransaction, toWei } from 'thirdweb';\nimport type { Chain } from 'thirdweb/chains';\nimport { base } from 'thirdweb/chains';\nimport { useThirdwebClient } from '../providers';\n\n// ===== Types =====\n\nexport interface OneSendWidgetProps {\n // Default values\n defaultRecipient?: string;\n defaultAmount?: string;\n defaultChain?: Chain;\n\n // Token config (if sending ERC20)\n tokenAddress?: string;\n tokenSymbol?: string;\n tokenDecimals?: number;\n\n // Appearance\n theme?: 'light' | 'dark';\n className?: string;\n style?: React.CSSProperties;\n\n // Callbacks\n onSuccess?: (txHash: string) => void;\n onError?: (error: Error) => void;\n onCancel?: () => void;\n}\n\n// ===== Styles =====\n\nconst containerStyle: React.CSSProperties = {\n display: 'flex',\n flexDirection: 'column',\n gap: '16px',\n padding: '24px',\n backgroundColor: '#1f2937',\n borderRadius: '16px',\n border: '1px solid #374151',\n};\n\nconst inputStyle: React.CSSProperties = {\n width: '100%',\n padding: '12px 16px',\n backgroundColor: '#374151',\n border: '1px solid #4b5563',\n borderRadius: '12px',\n color: '#ffffff',\n fontSize: '16px',\n outline: 'none',\n};\n\nconst labelStyle: React.CSSProperties = {\n color: '#9ca3af',\n fontSize: '14px',\n marginBottom: '4px',\n};\n\nconst buttonStyle: React.CSSProperties = {\n width: '100%',\n padding: '14px',\n backgroundColor: '#10b981',\n color: '#ffffff',\n border: 'none',\n borderRadius: '12px',\n fontSize: '16px',\n fontWeight: 600,\n cursor: 'pointer',\n};\n\nconst buttonDisabledStyle: React.CSSProperties = {\n ...buttonStyle,\n backgroundColor: '#6b7280',\n cursor: 'not-allowed',\n};\n\n// ===== Component =====\n\nexport function OneSendWidget({\n defaultRecipient = '',\n defaultAmount = '',\n defaultChain = base,\n tokenAddress,\n tokenSymbol = 'ETH',\n tokenDecimals = 18,\n theme = 'dark',\n className,\n style,\n onSuccess,\n onError,\n onCancel,\n}: OneSendWidgetProps) {\n const client = useThirdwebClient();\n const account = useActiveAccount();\n const { mutate: sendTransaction, isPending } = useSendTransaction();\n\n const [recipient, setRecipient] = useState(defaultRecipient);\n const [amount, setAmount] = useState(defaultAmount);\n const [error, setError] = useState<string | null>(null);\n\n const isValidAddress = (address: string) => /^0x[a-fA-F0-9]{40}$/.test(address);\n const isValidAmount = (amt: string) => !isNaN(parseFloat(amt)) && parseFloat(amt) > 0;\n\n const canSend = !!client && isValidAddress(recipient) && isValidAmount(amount) && !isPending;\n\n const handleSend = useCallback(async () => {\n if (!account || !canSend || !client) return;\n\n setError(null);\n\n try {\n let tx;\n\n if (tokenAddress) {\n // ERC20 transfer\n const amountInWei = BigInt(Math.floor(parseFloat(amount) * Math.pow(10, tokenDecimals)));\n const transferData = `0xa9059cbb${recipient.slice(2).padStart(64, '0')}${amountInWei.toString(16).padStart(64, '0')}` as `0x${string}`;\n\n tx = prepareTransaction({\n to: tokenAddress,\n data: transferData,\n chain: defaultChain,\n client,\n });\n } else {\n // Native token transfer\n tx = prepareTransaction({\n to: recipient as `0x${string}`,\n value: toWei(amount),\n chain: defaultChain,\n client,\n });\n }\n\n sendTransaction(tx, {\n onSuccess: (result) => {\n onSuccess?.(result.transactionHash);\n setRecipient('');\n setAmount('');\n },\n onError: (err) => {\n setError(err.message);\n onError?.(err);\n },\n });\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Transaction failed');\n setError(error.message);\n onError?.(error);\n }\n }, [account, canSend, recipient, amount, tokenAddress, tokenDecimals, defaultChain, client, sendTransaction, onSuccess, onError]);\n\n const isDark = theme === 'dark';\n\n return (\n <div\n className={className}\n style={{\n ...containerStyle,\n backgroundColor: isDark ? '#1f2937' : '#ffffff',\n border: `1px solid ${isDark ? '#374151' : '#e5e7eb'}`,\n ...style,\n }}\n >\n <h3 style={{ color: isDark ? '#ffffff' : '#111827', margin: 0, fontSize: '18px', fontWeight: 600 }}>\n Send {tokenSymbol}\n </h3>\n\n <div>\n <label style={{ ...labelStyle, color: isDark ? '#9ca3af' : '#6b7280' }}>Recipient Address</label>\n <input\n type=\"text\"\n value={recipient}\n onChange={(e) => setRecipient(e.target.value)}\n placeholder=\"0x...\"\n style={{\n ...inputStyle,\n backgroundColor: isDark ? '#374151' : '#f3f4f6',\n color: isDark ? '#ffffff' : '#111827',\n border: `1px solid ${isDark ? '#4b5563' : '#d1d5db'}`,\n }}\n />\n </div>\n\n <div>\n <label style={{ ...labelStyle, color: isDark ? '#9ca3af' : '#6b7280' }}>Amount ({tokenSymbol})</label>\n <input\n type=\"number\"\n value={amount}\n onChange={(e) => setAmount(e.target.value)}\n placeholder=\"0.0\"\n min=\"0\"\n step=\"any\"\n style={{\n ...inputStyle,\n backgroundColor: isDark ? '#374151' : '#f3f4f6',\n color: isDark ? '#ffffff' : '#111827',\n border: `1px solid ${isDark ? '#4b5563' : '#d1d5db'}`,\n }}\n />\n </div>\n\n {error && (\n <div style={{ color: '#ef4444', fontSize: '14px', padding: '8px 12px', backgroundColor: 'rgba(239, 68, 68, 0.1)', borderRadius: '8px' }}>\n {error}\n </div>\n )}\n\n <div style={{ display: 'flex', gap: '12px' }}>\n {onCancel && (\n <button\n onClick={onCancel}\n style={{\n ...buttonStyle,\n flex: 1,\n backgroundColor: 'transparent',\n border: `1px solid ${isDark ? '#4b5563' : '#d1d5db'}`,\n color: isDark ? '#9ca3af' : '#6b7280',\n }}\n >\n Cancel\n </button>\n )}\n <button\n onClick={handleSend}\n disabled={!canSend}\n style={canSend ? { ...buttonStyle, flex: 1 } : { ...buttonDisabledStyle, flex: 1 }}\n >\n {isPending ? 'Sending...' : `Send ${tokenSymbol}`}\n </button>\n </div>\n </div>\n );\n}\n\n// ===== Presets =====\n\nexport function OneSendETHWidget(props: Omit<OneSendWidgetProps, 'tokenAddress' | 'tokenSymbol' | 'tokenDecimals'>) {\n return <OneSendWidget {...props} tokenSymbol=\"ETH\" tokenDecimals={18} />;\n}\n\nexport function OneSendUSDCWidget(props: Omit<OneSendWidgetProps, 'tokenSymbol' | 'tokenDecimals'> & { tokenAddress: string }) {\n return <OneSendWidget {...props} tokenSymbol=\"USDC\" tokenDecimals={6} />;\n}\n","'use client';\n\nimport React, { useState, useEffect, useCallback } from 'react';\nimport { useActiveAccount } from 'thirdweb/react';\nimport { getEngineUrl } from '../config';\n\n// ===== Types =====\n\nexport interface OneOnrampWidgetProps {\n // Configuration\n defaultFiat?: string;\n defaultCrypto?: string;\n defaultAmount?: number;\n defaultNetwork?: string;\n\n // Currency options\n supportedFiats?: string[];\n supportedCryptos?: string[];\n supportedNetworks?: string[];\n\n // User info (pre-fill)\n email?: string;\n country?: string;\n\n // Appearance\n theme?: 'light' | 'dark';\n accentColor?: string;\n className?: string;\n style?: React.CSSProperties;\n\n // Display mode\n mode?: 'form' | 'embed' | 'popup';\n embedHeight?: number;\n\n // Callbacks\n onSuccess?: (transaction: OnrampTransaction) => void;\n onError?: (error: Error) => void;\n onClose?: () => void;\n onQuoteUpdate?: (quote: OnrampQuote) => void;\n}\n\nexport interface OnrampQuote {\n fiatCurrency: string;\n fiatAmount: number;\n cryptoCurrency: string;\n cryptoAmount: number;\n network: string;\n rate: number;\n fees: {\n network: number;\n provider: number;\n total: number;\n };\n estimatedTime: string;\n}\n\nexport interface OnrampTransaction {\n id: string;\n status: 'pending' | 'processing' | 'completed' | 'failed';\n fiatCurrency: string;\n fiatAmount: number;\n cryptoCurrency: string;\n cryptoAmount?: number;\n walletAddress: string;\n txHash?: string;\n provider: string;\n}\n\n// ===== Default Values =====\n\nconst DEFAULT_FIATS = ['USD', 'EUR', 'GBP', 'CNY', 'JPY', 'KRW', 'CAD', 'AUD'];\nconst DEFAULT_CRYPTOS = ['USDT', 'USDC', 'ETH', 'BTC', 'MATIC', 'BNB', 'AVAX', 'SOL'];\nconst DEFAULT_NETWORKS = ['ethereum', 'polygon', 'arbitrum', 'optimism', 'base', 'bsc', 'avalanche'];\n\nconst NETWORK_DISPLAY_NAMES: Record<string, string> = {\n ethereum: 'Ethereum',\n polygon: 'Polygon',\n arbitrum: 'Arbitrum',\n optimism: 'Optimism',\n base: 'Base',\n bsc: 'BNB Chain',\n avalanche: 'Avalanche',\n solana: 'Solana',\n};\n\n// Approximate rates for quote estimation\nconst CRYPTO_RATES: Record<string, number> = {\n ETH: 3500,\n BTC: 95000,\n USDT: 1,\n USDC: 1,\n MATIC: 0.85,\n BNB: 650,\n AVAX: 42,\n SOL: 200,\n DAI: 1,\n ARB: 1.2,\n OP: 2.5,\n};\n\n// ===== Styles =====\n\nconst containerStyle: React.CSSProperties = {\n display: 'flex',\n flexDirection: 'column',\n gap: '16px',\n padding: '24px',\n borderRadius: '16px',\n border: '1px solid',\n maxWidth: '420px',\n};\n\nconst headerStyle: React.CSSProperties = {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n marginBottom: '8px',\n};\n\nconst selectStyle: React.CSSProperties = {\n padding: '12px 16px',\n borderRadius: '12px',\n fontSize: '16px',\n outline: 'none',\n cursor: 'pointer',\n appearance: 'none',\n backgroundRepeat: 'no-repeat',\n backgroundPosition: 'right 12px center',\n paddingRight: '40px',\n};\n\nconst inputStyle: React.CSSProperties = {\n padding: '12px 16px',\n borderRadius: '12px',\n fontSize: '18px',\n fontWeight: 500,\n outline: 'none',\n width: '100%',\n boxSizing: 'border-box',\n};\n\nconst buttonStyle: React.CSSProperties = {\n width: '100%',\n padding: '16px',\n border: 'none',\n borderRadius: '12px',\n fontSize: '16px',\n fontWeight: 600,\n cursor: 'pointer',\n transition: 'background-color 0.2s',\n};\n\nconst rowStyle: React.CSSProperties = {\n display: 'flex',\n gap: '12px',\n alignItems: 'center',\n};\n\nconst quoteBoxStyle: React.CSSProperties = {\n padding: '16px',\n borderRadius: '12px',\n fontSize: '14px',\n};\n\n// ===== Component =====\n\nexport function OneOnrampWidget({\n defaultFiat = 'USD',\n defaultCrypto = 'USDT',\n defaultAmount = 100,\n defaultNetwork = 'base',\n supportedFiats = DEFAULT_FIATS,\n supportedCryptos = DEFAULT_CRYPTOS,\n supportedNetworks = DEFAULT_NETWORKS,\n email,\n country,\n theme = 'dark',\n accentColor = '#10b981',\n className,\n style,\n mode = 'form',\n embedHeight = 600,\n onSuccess,\n onError,\n onClose,\n onQuoteUpdate,\n}: OneOnrampWidgetProps) {\n const account = useActiveAccount();\n const walletAddress = account?.address;\n\n // Form state\n const [fiatCurrency, setFiatCurrency] = useState(defaultFiat);\n const [fiatAmount, setFiatAmount] = useState(defaultAmount.toString());\n const [cryptoCurrency, setCryptoCurrency] = useState(defaultCrypto);\n const [network, setNetwork] = useState(defaultNetwork);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const [quote, setQuote] = useState<OnrampQuote | null>(null);\n const [widgetUrl, setWidgetUrl] = useState<string | null>(null);\n\n const isDark = theme === 'dark';\n\n // Calculate estimated quote\n const calculateQuote = useCallback((): OnrampQuote | null => {\n const amount = parseFloat(fiatAmount);\n if (isNaN(amount) || amount <= 0) return null;\n\n const cryptoRate = CRYPTO_RATES[cryptoCurrency.toUpperCase()] || 1;\n const providerFee = amount * 0.035; // ~3.5% provider fee\n const networkFee = cryptoCurrency === 'ETH' ? 5 : 1;\n const totalFee = providerFee + networkFee;\n const netAmount = amount - totalFee;\n const cryptoAmount = netAmount / cryptoRate;\n\n return {\n fiatCurrency,\n fiatAmount: amount,\n cryptoCurrency,\n cryptoAmount: parseFloat(cryptoAmount.toFixed(8)),\n network,\n rate: cryptoRate,\n fees: {\n network: networkFee,\n provider: providerFee,\n total: totalFee,\n },\n estimatedTime: '5-15 minutes',\n };\n }, [fiatAmount, fiatCurrency, cryptoCurrency, network]);\n\n // Update quote when inputs change\n useEffect(() => {\n const newQuote = calculateQuote();\n setQuote(newQuote);\n if (newQuote) {\n onQuoteUpdate?.(newQuote);\n }\n }, [calculateQuote, onQuoteUpdate]);\n\n // Build Onramper widget URL\n const buildWidgetUrl = useCallback(() => {\n if (!walletAddress) return null;\n\n const baseUrl = 'https://buy.onramper.com';\n const params = new URLSearchParams();\n\n // API key from engine or env\n const apiKey = process.env.NEXT_PUBLIC_ONRAMPER_API_KEY || '';\n if (apiKey) {\n params.append('apiKey', apiKey);\n }\n\n // Wallet addresses (same address for all EVM chains - Smart Account)\n params.append('wallets', `ETH:${walletAddress},MATIC:${walletAddress},BNB:${walletAddress},AVAX:${walletAddress}`);\n params.append('networkWallets',\n `ethereum:${walletAddress},polygon:${walletAddress},arbitrum:${walletAddress},` +\n `optimism:${walletAddress},base:${walletAddress},bsc:${walletAddress},avalanche:${walletAddress}`\n );\n\n // Default selections\n params.append('defaultCrypto', cryptoCurrency);\n params.append('defaultFiat', fiatCurrency);\n params.append('defaultAmount', fiatAmount);\n params.append('mode', 'buy');\n\n // Network filter\n if (network) {\n params.append('onlyCryptoNetworks', network);\n }\n\n // User info\n if (email) params.append('email', email);\n if (country) params.append('country', country);\n\n // UI customization\n params.append('color', accentColor.replace('#', ''));\n params.append('darkMode', isDark ? 'true' : 'false');\n params.append('hideTopBar', 'false');\n params.append('isInAppBrowser', 'true');\n\n // Tracking\n params.append('partnerContext', `onesdk_${Date.now()}`);\n params.append('popularCryptos', 'USDT,USDC,ETH,BTC');\n\n return `${baseUrl}?${params.toString()}`;\n }, [walletAddress, cryptoCurrency, fiatCurrency, fiatAmount, network, email, country, accentColor, isDark]);\n\n // Handle buy button click\n const handleBuy = async () => {\n if (!walletAddress) {\n setError('Please connect your wallet first');\n return;\n }\n\n const amount = parseFloat(fiatAmount);\n if (isNaN(amount) || amount < 10) {\n setError('Minimum amount is $10');\n return;\n }\n\n setIsLoading(true);\n setError(null);\n\n try {\n // Try to create session via Engine API first\n const engineUrl = getEngineUrl();\n const response = await fetch(`${engineUrl}/v1/fiat/onramp`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n walletAddress,\n fiatCurrency,\n fiatAmount: amount,\n cryptoCurrency,\n network,\n email,\n }),\n });\n\n if (response.ok) {\n const data = await response.json();\n if (data.success && data.data?.widgetUrl) {\n setWidgetUrl(data.data.widgetUrl);\n if (mode === 'popup') {\n window.open(data.data.widgetUrl, '_blank', 'width=450,height=700');\n }\n return;\n }\n }\n\n // Fallback to direct Onramper URL\n const directUrl = buildWidgetUrl();\n if (directUrl) {\n setWidgetUrl(directUrl);\n if (mode === 'popup') {\n window.open(directUrl, '_blank', 'width=450,height=700');\n }\n } else {\n throw new Error('Failed to generate widget URL');\n }\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to start purchase');\n setError(error.message);\n onError?.(error);\n } finally {\n setIsLoading(false);\n }\n };\n\n // Handle closing embed\n const handleCloseEmbed = () => {\n setWidgetUrl(null);\n onClose?.();\n };\n\n // Theme colors\n const bgColor = isDark ? '#1f2937' : '#ffffff';\n const borderColor = isDark ? '#374151' : '#e5e7eb';\n const textColor = isDark ? '#ffffff' : '#111827';\n const mutedColor = isDark ? '#9ca3af' : '#6b7280';\n const inputBg = isDark ? '#374151' : '#f3f4f6';\n const quoteBg = isDark ? '#374151' : '#f3f4f6';\n\n // Embed mode - show iframe\n if (mode === 'embed' && widgetUrl) {\n return (\n <div className={className} style={{ ...style }}>\n <div style={{ display: 'flex', justifyContent: 'flex-end', marginBottom: '8px' }}>\n <button\n onClick={handleCloseEmbed}\n style={{\n background: 'none',\n border: 'none',\n color: mutedColor,\n cursor: 'pointer',\n fontSize: '14px',\n }}\n >\n Close\n </button>\n </div>\n <iframe\n src={widgetUrl}\n width=\"100%\"\n height={embedHeight}\n style={{ border: 'none', borderRadius: '16px' }}\n allow=\"payment; clipboard-read; clipboard-write\"\n />\n </div>\n );\n }\n\n // Form mode\n return (\n <div\n className={className}\n style={{\n ...containerStyle,\n backgroundColor: bgColor,\n borderColor,\n ...style,\n }}\n >\n {/* Header */}\n <div style={headerStyle}>\n <h3 style={{ color: textColor, margin: 0, fontSize: '18px', fontWeight: 600 }}>\n Buy Crypto\n </h3>\n <span style={{ color: mutedColor, fontSize: '12px' }}>\n Powered by Onramper\n </span>\n </div>\n\n {/* Fiat Input */}\n <div>\n <label style={{ color: mutedColor, fontSize: '14px', marginBottom: '8px', display: 'block' }}>\n You Pay\n </label>\n <div style={rowStyle}>\n <input\n type=\"number\"\n value={fiatAmount}\n onChange={(e) => setFiatAmount(e.target.value)}\n placeholder=\"0\"\n min=\"10\"\n style={{\n ...inputStyle,\n flex: 1,\n backgroundColor: inputBg,\n border: `1px solid ${borderColor}`,\n color: textColor,\n }}\n />\n <select\n value={fiatCurrency}\n onChange={(e) => setFiatCurrency(e.target.value)}\n style={{\n ...selectStyle,\n backgroundColor: inputBg,\n border: `1px solid ${borderColor}`,\n color: textColor,\n minWidth: '100px',\n backgroundImage: `url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='${isDark ? '%239ca3af' : '%236b7280'}'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M19 9l-7 7-7-7'%3E%3C/path%3E%3C/svg%3E\")`,\n backgroundSize: '16px',\n }}\n >\n {supportedFiats.map((fiat) => (\n <option key={fiat} value={fiat}>{fiat}</option>\n ))}\n </select>\n </div>\n </div>\n\n {/* Crypto Output */}\n <div>\n <label style={{ color: mutedColor, fontSize: '14px', marginBottom: '8px', display: 'block' }}>\n You Receive\n </label>\n <div style={rowStyle}>\n <div\n style={{\n ...inputStyle,\n flex: 1,\n backgroundColor: inputBg,\n border: `1px solid ${borderColor}`,\n color: textColor,\n display: 'flex',\n alignItems: 'center',\n }}\n >\n <span style={{ color: quote ? textColor : mutedColor }}>\n {quote ? `~${quote.cryptoAmount.toFixed(6)}` : '0.00'}\n </span>\n </div>\n <select\n value={cryptoCurrency}\n onChange={(e) => setCryptoCurrency(e.target.value)}\n style={{\n ...selectStyle,\n backgroundColor: inputBg,\n border: `1px solid ${borderColor}`,\n color: textColor,\n minWidth: '100px',\n backgroundImage: `url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='${isDark ? '%239ca3af' : '%236b7280'}'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M19 9l-7 7-7-7'%3E%3C/path%3E%3C/svg%3E\")`,\n backgroundSize: '16px',\n }}\n >\n {supportedCryptos.map((crypto) => (\n <option key={crypto} value={crypto}>{crypto}</option>\n ))}\n </select>\n </div>\n </div>\n\n {/* Network Selection */}\n <div>\n <label style={{ color: mutedColor, fontSize: '14px', marginBottom: '8px', display: 'block' }}>\n Network\n </label>\n <select\n value={network}\n onChange={(e) => setNetwork(e.target.value)}\n style={{\n ...selectStyle,\n width: '100%',\n backgroundColor: inputBg,\n border: `1px solid ${borderColor}`,\n color: textColor,\n backgroundImage: `url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='${isDark ? '%239ca3af' : '%236b7280'}'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M19 9l-7 7-7-7'%3E%3C/path%3E%3C/svg%3E\")`,\n backgroundSize: '16px',\n }}\n >\n {supportedNetworks.map((net) => (\n <option key={net} value={net}>\n {NETWORK_DISPLAY_NAMES[net] || net}\n </option>\n ))}\n </select>\n </div>\n\n {/* Quote Summary */}\n {quote && (\n <div style={{ ...quoteBoxStyle, backgroundColor: quoteBg }}>\n <div style={{ display: 'flex', justifyContent: 'space-between', marginBottom: '8px' }}>\n <span style={{ color: mutedColor }}>Rate</span>\n <span style={{ color: textColor }}>\n 1 {cryptoCurrency} = ${quote.rate.toLocaleString()}\n </span>\n </div>\n <div style={{ display: 'flex', justifyContent: 'space-between', marginBottom: '8px' }}>\n <span style={{ color: mutedColor }}>Fees</span>\n <span style={{ color: textColor }}>\n ~${quote.fees.total.toFixed(2)}\n </span>\n </div>\n <div style={{ display: 'flex', justifyContent: 'space-between' }}>\n <span style={{ color: mutedColor }}>Est. Time</span>\n <span style={{ color: textColor }}>{quote.estimatedTime}</span>\n </div>\n </div>\n )}\n\n {/* Error Message */}\n {error && (\n <div style={{\n color: '#ef4444',\n fontSize: '14px',\n padding: '12px',\n backgroundColor: 'rgba(239, 68, 68, 0.1)',\n borderRadius: '8px',\n }}>\n {error}\n </div>\n )}\n\n {/* Buy Button */}\n <button\n onClick={handleBuy}\n disabled={isLoading || !walletAddress}\n style={{\n ...buttonStyle,\n backgroundColor: isLoading || !walletAddress ? '#6b7280' : accentColor,\n color: '#ffffff',\n cursor: isLoading || !walletAddress ? 'not-allowed' : 'pointer',\n }}\n >\n {isLoading ? 'Loading...' : !walletAddress ? 'Connect Wallet' : `Buy ${cryptoCurrency}`}\n </button>\n\n {/* Wallet Address Display */}\n {walletAddress && (\n <div style={{ textAlign: 'center', color: mutedColor, fontSize: '12px' }}>\n Receiving to: {walletAddress.slice(0, 6)}...{walletAddress.slice(-4)}\n </div>\n )}\n </div>\n );\n}\n\n// ===== Presets =====\n\nexport function OneBuyUSDTWidget(props: Omit<OneOnrampWidgetProps, 'defaultCrypto'>) {\n return <OneOnrampWidget {...props} defaultCrypto=\"USDT\" />;\n}\n\nexport function OneBuyUSDCWidget(props: Omit<OneOnrampWidgetProps, 'defaultCrypto'>) {\n return <OneOnrampWidget {...props} defaultCrypto=\"USDC\" />;\n}\n\nexport function OneBuyETHWidget(props: Omit<OneOnrampWidgetProps, 'defaultCrypto'>) {\n return <OneOnrampWidget {...props} defaultCrypto=\"ETH\" />;\n}\n\nexport function OneBuyBTCWidget(props: Omit<OneOnrampWidgetProps, 'defaultCrypto'>) {\n return <OneOnrampWidget {...props} defaultCrypto=\"BTC\" />;\n}\n","'use client';\n\nimport React, { useState, useEffect, useCallback } from 'react';\nimport { useActiveAccount, useWalletBalance } from 'thirdweb/react';\nimport { base } from 'thirdweb/chains';\nimport { useThirdwebClient } from '../providers';\nimport { getEngineUrl } from '../config';\n\n// ===== Types =====\n\nexport interface OneOfframpWidgetProps {\n // Configuration\n defaultFiat?: string;\n defaultCrypto?: string;\n defaultAmount?: string;\n defaultNetwork?: string;\n\n // Currency options\n supportedFiats?: string[];\n supportedCryptos?: string[];\n supportedNetworks?: string[];\n\n // User info (pre-fill)\n email?: string;\n country?: string;\n\n // Appearance\n theme?: 'light' | 'dark';\n accentColor?: string;\n className?: string;\n style?: React.CSSProperties;\n\n // Display mode\n mode?: 'form' | 'embed' | 'popup';\n embedHeight?: number;\n\n // Callbacks\n onSuccess?: (transaction: OfframpTransaction) => void;\n onError?: (error: Error) => void;\n onClose?: () => void;\n onQuoteUpdate?: (quote: OfframpQuote) => void;\n}\n\nexport interface OfframpQuote {\n cryptoCurrency: string;\n cryptoAmount: number;\n fiatCurrency: string;\n fiatAmount: number;\n network: string;\n rate: number;\n fees: {\n network: number;\n provider: number;\n total: number;\n };\n estimatedTime: string;\n}\n\nexport interface OfframpTransaction {\n id: string;\n status: 'pending' | 'processing' | 'completed' | 'failed';\n cryptoCurrency: string;\n cryptoAmount: number;\n fiatCurrency: string;\n fiatAmount?: number;\n walletAddress: string;\n txHash?: string;\n provider: string;\n}\n\n// ===== Default Values =====\n\nconst DEFAULT_FIATS = ['USD', 'EUR', 'GBP', 'CNY', 'JPY', 'KRW', 'CAD', 'AUD'];\nconst DEFAULT_CRYPTOS = ['USDT', 'USDC', 'ETH', 'BTC', 'MATIC', 'BNB'];\nconst DEFAULT_NETWORKS = ['ethereum', 'polygon', 'arbitrum', 'optimism', 'base', 'bsc', 'avalanche'];\n\nconst NETWORK_DISPLAY_NAMES: Record<string, string> = {\n ethereum: 'Ethereum',\n polygon: 'Polygon',\n arbitrum: 'Arbitrum',\n optimism: 'Optimism',\n base: 'Base',\n bsc: 'BNB Chain',\n avalanche: 'Avalanche',\n solana: 'Solana',\n};\n\n// Approximate rates for quote estimation\nconst CRYPTO_RATES: Record<string, number> = {\n ETH: 3500,\n BTC: 95000,\n USDT: 1,\n USDC: 1,\n MATIC: 0.85,\n BNB: 650,\n AVAX: 42,\n SOL: 200,\n DAI: 1,\n};\n\n// ===== Styles =====\n\nconst containerStyle: React.CSSProperties = {\n display: 'flex',\n flexDirection: 'column',\n gap: '16px',\n padding: '24px',\n borderRadius: '16px',\n border: '1px solid',\n maxWidth: '420px',\n};\n\nconst headerStyle: React.CSSProperties = {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n marginBottom: '8px',\n};\n\nconst selectStyle: React.CSSProperties = {\n padding: '12px 16px',\n borderRadius: '12px',\n fontSize: '16px',\n outline: 'none',\n cursor: 'pointer',\n appearance: 'none',\n backgroundRepeat: 'no-repeat',\n backgroundPosition: 'right 12px center',\n paddingRight: '40px',\n};\n\nconst inputStyle: React.CSSProperties = {\n padding: '12px 16px',\n borderRadius: '12px',\n fontSize: '18px',\n fontWeight: 500,\n outline: 'none',\n width: '100%',\n boxSizing: 'border-box',\n};\n\nconst buttonStyle: React.CSSProperties = {\n width: '100%',\n padding: '16px',\n border: 'none',\n borderRadius: '12px',\n fontSize: '16px',\n fontWeight: 600,\n cursor: 'pointer',\n transition: 'background-color 0.2s',\n};\n\nconst rowStyle: React.CSSProperties = {\n display: 'flex',\n gap: '12px',\n alignItems: 'center',\n};\n\nconst quoteBoxStyle: React.CSSProperties = {\n padding: '16px',\n borderRadius: '12px',\n fontSize: '14px',\n};\n\nconst balanceStyle: React.CSSProperties = {\n display: 'flex',\n justifyContent: 'space-between',\n fontSize: '12px',\n marginTop: '4px',\n};\n\n// ===== Component =====\n\nexport function OneOfframpWidget({\n defaultFiat = 'USD',\n defaultCrypto = 'USDT',\n defaultAmount = '',\n defaultNetwork = 'base',\n supportedFiats = DEFAULT_FIATS,\n supportedCryptos = DEFAULT_CRYPTOS,\n supportedNetworks = DEFAULT_NETWORKS,\n email,\n country,\n theme = 'dark',\n accentColor = '#ef4444', // Red for sell\n className,\n style,\n mode = 'form',\n embedHeight = 600,\n onSuccess,\n onError,\n onClose,\n onQuoteUpdate,\n}: OneOfframpWidgetProps) {\n const client = useThirdwebClient();\n const account = useActiveAccount();\n const walletAddress = account?.address;\n\n // Get balance for selected crypto\n const { data: balanceData } = useWalletBalance({\n client: client as any,\n chain: base,\n address: walletAddress,\n enabled: !!client,\n } as any);\n\n // Form state\n const [cryptoCurrency, setCryptoCurrency] = useState(defaultCrypto);\n const [cryptoAmount, setCryptoAmount] = useState(defaultAmount);\n const [fiatCurrency, setFiatCurrency] = useState(defaultFiat);\n const [network, setNetwork] = useState(defaultNetwork);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const [quote, setQuote] = useState<OfframpQuote | null>(null);\n const [widgetUrl, setWidgetUrl] = useState<string | null>(null);\n\n const isDark = theme === 'dark';\n\n // Calculate estimated quote\n const calculateQuote = useCallback((): OfframpQuote | null => {\n const amount = parseFloat(cryptoAmount);\n if (isNaN(amount) || amount <= 0) return null;\n\n const cryptoRate = CRYPTO_RATES[cryptoCurrency.toUpperCase()] || 1;\n const grossAmount = amount * cryptoRate;\n const providerFee = grossAmount * 0.025; // ~2.5% provider fee for offramp\n const networkFee = cryptoCurrency === 'ETH' ? 5 : 1;\n const totalFee = providerFee + networkFee;\n const netAmount = grossAmount - totalFee;\n\n return {\n cryptoCurrency,\n cryptoAmount: amount,\n fiatCurrency,\n fiatAmount: parseFloat(netAmount.toFixed(2)),\n network,\n rate: cryptoRate,\n fees: {\n network: networkFee,\n provider: providerFee,\n total: totalFee,\n },\n estimatedTime: '1-3 business days',\n };\n }, [cryptoAmount, cryptoCurrency, fiatCurrency, network]);\n\n // Update quote when inputs change\n useEffect(() => {\n const newQuote = calculateQuote();\n setQuote(newQuote);\n if (newQuote) {\n onQuoteUpdate?.(newQuote);\n }\n }, [calculateQuote, onQuoteUpdate]);\n\n // Build Onramper widget URL (sell mode)\n const buildWidgetUrl = useCallback(() => {\n if (!walletAddress) return null;\n\n const baseUrl = 'https://buy.onramper.com';\n const params = new URLSearchParams();\n\n // API key from engine or env\n const apiKey = process.env.NEXT_PUBLIC_ONRAMPER_API_KEY || '';\n if (apiKey) {\n params.append('apiKey', apiKey);\n }\n\n // Wallet addresses\n params.append('wallets', `ETH:${walletAddress},MATIC:${walletAddress},BNB:${walletAddress}`);\n params.append('networkWallets',\n `ethereum:${walletAddress},polygon:${walletAddress},arbitrum:${walletAddress},` +\n `optimism:${walletAddress},base:${walletAddress},bsc:${walletAddress}`\n );\n\n // SELL MODE\n params.append('mode', 'sell');\n params.append('defaultCrypto', cryptoCurrency);\n params.append('defaultFiat', fiatCurrency);\n if (cryptoAmount) {\n params.append('sellDefaultAmount', cryptoAmount);\n }\n\n // Network filter\n if (network) {\n params.append('onlyCryptoNetworks', network);\n }\n\n // User info\n if (email) params.append('email', email);\n if (country) params.append('country', country);\n\n // UI customization\n params.append('color', accentColor.replace('#', ''));\n params.append('darkMode', isDark ? 'true' : 'false');\n params.append('hideTopBar', 'false');\n params.append('isInAppBrowser', 'true');\n\n // Tracking\n params.append('partnerContext', `onesdk_sell_${Date.now()}`);\n\n return `${baseUrl}?${params.toString()}`;\n }, [walletAddress, cryptoCurrency, fiatCurrency, cryptoAmount, network, email, country, accentColor, isDark]);\n\n // Handle sell button click\n const handleSell = async () => {\n if (!walletAddress) {\n setError('Please connect your wallet first');\n return;\n }\n\n const amount = parseFloat(cryptoAmount);\n if (isNaN(amount) || amount <= 0) {\n setError('Please enter a valid amount');\n return;\n }\n\n // Check balance\n if (balanceData && cryptoCurrency === 'ETH') {\n const balance = parseFloat(balanceData.displayValue);\n if (amount > balance) {\n setError(`Insufficient balance. You have ${balance.toFixed(4)} ${cryptoCurrency}`);\n return;\n }\n }\n\n setIsLoading(true);\n setError(null);\n\n try {\n // Try Engine API first\n const engineUrl = getEngineUrl();\n const response = await fetch(`${engineUrl}/v1/fiat/offramp`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n walletAddress,\n cryptoCurrency,\n cryptoAmount: amount,\n fiatCurrency,\n network,\n email,\n }),\n });\n\n if (response.ok) {\n const data = await response.json();\n if (data.success && data.data?.widgetUrl) {\n setWidgetUrl(data.data.widgetUrl);\n if (mode === 'popup') {\n window.open(data.data.widgetUrl, '_blank', 'width=450,height=700');\n }\n return;\n }\n }\n\n // Fallback to direct URL\n const directUrl = buildWidgetUrl();\n if (directUrl) {\n setWidgetUrl(directUrl);\n if (mode === 'popup') {\n window.open(directUrl, '_blank', 'width=450,height=700');\n }\n } else {\n throw new Error('Failed to generate widget URL');\n }\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to start sale');\n setError(error.message);\n onError?.(error);\n } finally {\n setIsLoading(false);\n }\n };\n\n // Use max balance\n const handleUseMax = () => {\n if (balanceData && cryptoCurrency === 'ETH') {\n const balance = parseFloat(balanceData.displayValue);\n // Leave some for gas\n const maxAmount = Math.max(0, balance - 0.005);\n setCryptoAmount(maxAmount.toFixed(6));\n }\n };\n\n // Handle closing embed\n const handleCloseEmbed = () => {\n setWidgetUrl(null);\n onClose?.();\n };\n\n // Theme colors\n const bgColor = isDark ? '#1f2937' : '#ffffff';\n const borderColor = isDark ? '#374151' : '#e5e7eb';\n const textColor = isDark ? '#ffffff' : '#111827';\n const mutedColor = isDark ? '#9ca3af' : '#6b7280';\n const inputBg = isDark ? '#374151' : '#f3f4f6';\n const quoteBg = isDark ? '#374151' : '#f3f4f6';\n\n // Embed mode - show iframe\n if (mode === 'embed' && widgetUrl) {\n return (\n <div className={className} style={{ ...style }}>\n <div style={{ display: 'flex', justifyContent: 'flex-end', marginBottom: '8px' }}>\n <button\n onClick={handleCloseEmbed}\n style={{\n background: 'none',\n border: 'none',\n color: mutedColor,\n cursor: 'pointer',\n fontSize: '14px',\n }}\n >\n Close\n </button>\n </div>\n <iframe\n src={widgetUrl}\n width=\"100%\"\n height={embedHeight}\n style={{ border: 'none', borderRadius: '16px' }}\n allow=\"payment; clipboard-read; clipboard-write\"\n />\n </div>\n );\n }\n\n // Form mode\n return (\n <div\n className={className}\n style={{\n ...containerStyle,\n backgroundColor: bgColor,\n borderColor,\n ...style,\n }}\n >\n {/* Header */}\n <div style={headerStyle}>\n <h3 style={{ color: textColor, margin: 0, fontSize: '18px', fontWeight: 600 }}>\n Sell Crypto\n </h3>\n <span style={{ color: mutedColor, fontSize: '12px' }}>\n Cash out to bank\n </span>\n </div>\n\n {/* Crypto Input */}\n <div>\n <label style={{ color: mutedColor, fontSize: '14px', marginBottom: '8px', display: 'block' }}>\n You Sell\n </label>\n <div style={rowStyle}>\n <input\n type=\"number\"\n value={cryptoAmount}\n onChange={(e) => setCryptoAmount(e.target.value)}\n placeholder=\"0.0\"\n min=\"0\"\n step=\"any\"\n style={{\n ...inputStyle,\n flex: 1,\n backgroundColor: inputBg,\n border: `1px solid ${borderColor}`,\n color: textColor,\n }}\n />\n <select\n value={cryptoCurrency}\n onChange={(e) => setCryptoCurrency(e.target.value)}\n style={{\n ...selectStyle,\n backgroundColor: inputBg,\n border: `1px solid ${borderColor}`,\n color: textColor,\n minWidth: '100px',\n backgroundImage: `url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='${isDark ? '%239ca3af' : '%236b7280'}'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M19 9l-7 7-7-7'%3E%3C/path%3E%3C/svg%3E\")`,\n backgroundSize: '16px',\n }}\n >\n {supportedCryptos.map((crypto) => (\n <option key={crypto} value={crypto}>{crypto}</option>\n ))}\n </select>\n </div>\n {/* Balance row */}\n {balanceData && cryptoCurrency === 'ETH' && (\n <div style={balanceStyle}>\n <span style={{ color: mutedColor }}>\n Balance: {parseFloat(balanceData.displayValue).toFixed(4)} ETH\n </span>\n <button\n onClick={handleUseMax}\n style={{\n background: 'none',\n border: 'none',\n color: accentColor,\n cursor: 'pointer',\n fontSize: '12px',\n padding: 0,\n }}\n >\n Use Max\n </button>\n </div>\n )}\n </div>\n\n {/* Network Selection */}\n <div>\n <label style={{ color: mutedColor, fontSize: '14px', marginBottom: '8px', display: 'block' }}>\n Network\n </label>\n <select\n value={network}\n onChange={(e) => setNetwork(e.target.value)}\n style={{\n ...selectStyle,\n width: '100%',\n backgroundColor: inputBg,\n border: `1px solid ${borderColor}`,\n color: textColor,\n backgroundImage: `url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='${isDark ? '%239ca3af' : '%236b7280'}'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M19 9l-7 7-7-7'%3E%3C/path%3E%3C/svg%3E\")`,\n backgroundSize: '16px',\n }}\n >\n {supportedNetworks.map((net) => (\n <option key={net} value={net}>\n {NETWORK_DISPLAY_NAMES[net] || net}\n </option>\n ))}\n </select>\n </div>\n\n {/* Fiat Output */}\n <div>\n <label style={{ color: mutedColor, fontSize: '14px', marginBottom: '8px', display: 'block' }}>\n You Receive\n </label>\n <div style={rowStyle}>\n <div\n style={{\n ...inputStyle,\n flex: 1,\n backgroundColor: inputBg,\n border: `1px solid ${borderColor}`,\n color: textColor,\n display: 'flex',\n alignItems: 'center',\n }}\n >\n <span style={{ color: quote ? textColor : mutedColor }}>\n {quote ? `~$${quote.fiatAmount.toLocaleString()}` : '$0.00'}\n </span>\n </div>\n <select\n value={fiatCurrency}\n onChange={(e) => setFiatCurrency(e.target.value)}\n style={{\n ...selectStyle,\n backgroundColor: inputBg,\n border: `1px solid ${borderColor}`,\n color: textColor,\n minWidth: '100px',\n backgroundImage: `url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='${isDark ? '%239ca3af' : '%236b7280'}'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M19 9l-7 7-7-7'%3E%3C/path%3E%3C/svg%3E\")`,\n backgroundSize: '16px',\n }}\n >\n {supportedFiats.map((fiat) => (\n <option key={fiat} value={fiat}>{fiat}</option>\n ))}\n </select>\n </div>\n </div>\n\n {/* Quote Summary */}\n {quote && (\n <div style={{ ...quoteBoxStyle, backgroundColor: quoteBg }}>\n <div style={{ display: 'flex', justifyContent: 'space-between', marginBottom: '8px' }}>\n <span style={{ color: mutedColor }}>Rate</span>\n <span style={{ color: textColor }}>\n 1 {cryptoCurrency} = ${quote.rate.toLocaleString()}\n </span>\n </div>\n <div style={{ display: 'flex', justifyContent: 'space-between', marginBottom: '8px' }}>\n <span style={{ color: mutedColor }}>Fees</span>\n <span style={{ color: textColor }}>\n ~${quote.fees.total.toFixed(2)}\n </span>\n </div>\n <div style={{ display: 'flex', justifyContent: 'space-between' }}>\n <span style={{ color: mutedColor }}>Est. Arrival</span>\n <span style={{ color: textColor }}>{quote.estimatedTime}</span>\n </div>\n </div>\n )}\n\n {/* Warning */}\n <div style={{\n padding: '12px',\n backgroundColor: isDark ? 'rgba(251, 191, 36, 0.1)' : 'rgba(251, 191, 36, 0.15)',\n borderRadius: '8px',\n fontSize: '12px',\n color: '#fbbf24',\n }}>\n Bank transfers typically take 1-3 business days. KYC verification may be required.\n </div>\n\n {/* Error Message */}\n {error && (\n <div style={{\n color: '#ef4444',\n fontSize: '14px',\n padding: '12px',\n backgroundColor: 'rgba(239, 68, 68, 0.1)',\n borderRadius: '8px',\n }}>\n {error}\n </div>\n )}\n\n {/* Sell Button */}\n <button\n onClick={handleSell}\n disabled={isLoading || !walletAddress}\n style={{\n ...buttonStyle,\n backgroundColor: isLoading || !walletAddress ? '#6b7280' : accentColor,\n color: '#ffffff',\n cursor: isLoading || !walletAddress ? 'not-allowed' : 'pointer',\n }}\n >\n {isLoading ? 'Loading...' : !walletAddress ? 'Connect Wallet' : `Sell ${cryptoCurrency}`}\n </button>\n\n {/* Wallet Address Display */}\n {walletAddress && (\n <div style={{ textAlign: 'center', color: mutedColor, fontSize: '12px' }}>\n Selling from: {walletAddress.slice(0, 6)}...{walletAddress.slice(-4)}\n </div>\n )}\n </div>\n );\n}\n\n// ===== Presets =====\n\nexport function OneSellUSDTWidget(props: Omit<OneOfframpWidgetProps, 'defaultCrypto'>) {\n return <OneOfframpWidget {...props} defaultCrypto=\"USDT\" />;\n}\n\nexport function OneSellUSDCWidget(props: Omit<OneOfframpWidgetProps, 'defaultCrypto'>) {\n return <OneOfframpWidget {...props} defaultCrypto=\"USDC\" />;\n}\n\nexport function OneSellETHWidget(props: Omit<OneOfframpWidgetProps, 'defaultCrypto'>) {\n return <OneOfframpWidget {...props} defaultCrypto=\"ETH\" />;\n}\n","'use client';\n\nimport React, { useState, useCallback, useEffect, useMemo } from 'react';\nimport { useActiveAccount, useSendTransaction } from 'thirdweb/react';\nimport { prepareTransaction } from 'thirdweb';\nimport type { Chain } from 'thirdweb/chains';\nimport { base, ethereum, polygon, arbitrum, optimism, bsc, avalanche } from 'thirdweb/chains';\nimport { useThirdwebClient } from '../providers';\nimport { getEngineUrl } from '../config';\n\n// ===== Types =====\n\nexport interface SwapToken {\n address: string;\n symbol: string;\n name: string;\n decimals: number;\n logoURI?: string;\n chainId: number;\n}\n\nexport interface SwapRoute {\n provider: string;\n fromChain: number;\n toChain: number;\n fromToken: SwapToken;\n toToken: SwapToken;\n fromAmount: string;\n toAmount: string;\n estimatedGas: string;\n priceImpact: string;\n executionTime: string;\n steps: SwapStep[];\n}\n\nexport interface SwapStep {\n type: 'swap' | 'bridge' | 'approve';\n protocol: string;\n fromToken: string;\n toToken: string;\n fromChain: number;\n toChain: number;\n}\n\nexport interface OneSwapWidgetProps {\n // Default values\n defaultFromToken?: SwapToken;\n defaultToToken?: SwapToken;\n defaultFromChain?: Chain;\n defaultToChain?: Chain;\n\n // Supported chains for cross-chain\n supportedChains?: Chain[];\n\n // Supported tokens per chain\n tokens?: SwapToken[];\n\n // Mode\n mode?: 'same-chain' | 'cross-chain' | 'auto';\n\n // Appearance\n theme?: 'light' | 'dark';\n accentColor?: string;\n className?: string;\n style?: React.CSSProperties;\n\n // API endpoints\n quoteEndpoint?: string;\n executeEndpoint?: string;\n\n // Callbacks\n onSwapSuccess?: (txHash: string, route?: SwapRoute) => void;\n onSwapError?: (error: Error) => void;\n onQuoteReceived?: (route: SwapRoute) => void;\n onChainChange?: (fromChain: number, toChain: number) => void;\n}\n\n// ===== Chain Configuration =====\n\ninterface ChainConfig {\n chain: Chain;\n name: string;\n shortName: string;\n nativeToken: string;\n}\n\nconst CHAIN_CONFIGS: ChainConfig[] = [\n { chain: ethereum, name: 'Ethereum', shortName: 'ETH', nativeToken: 'ETH' },\n { chain: base, name: 'Base', shortName: 'BASE', nativeToken: 'ETH' },\n { chain: arbitrum, name: 'Arbitrum', shortName: 'ARB', nativeToken: 'ETH' },\n { chain: optimism, name: 'Optimism', shortName: 'OP', nativeToken: 'ETH' },\n { chain: polygon, name: 'Polygon', shortName: 'MATIC', nativeToken: 'POL' },\n { chain: bsc, name: 'BNB Chain', shortName: 'BSC', nativeToken: 'BNB' },\n { chain: avalanche, name: 'Avalanche', shortName: 'AVAX', nativeToken: 'AVAX' },\n];\n\n// ===== Default Tokens Per Chain =====\n\nconst TOKENS_BY_CHAIN: Record<number, SwapToken[]> = {\n // Ethereum\n 1: [\n { address: '0x0000000000000000000000000000000000000000', symbol: 'ETH', name: 'Ethereum', decimals: 18, chainId: 1 },\n { address: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', symbol: 'USDC', name: 'USD Coin', decimals: 6, chainId: 1 },\n { address: '0xdAC17F958D2ee523a2206206994597C13D831ec7', symbol: 'USDT', name: 'Tether', decimals: 6, chainId: 1 },\n { address: '0x6B175474E89094C44Da98b954EedeAC495271d0F', symbol: 'DAI', name: 'Dai', decimals: 18, chainId: 1 },\n { address: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', symbol: 'WETH', name: 'Wrapped Ether', decimals: 18, chainId: 1 },\n ],\n // Base\n 8453: [\n { address: '0x0000000000000000000000000000000000000000', symbol: 'ETH', name: 'Ethereum', decimals: 18, chainId: 8453 },\n { address: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913', symbol: 'USDC', name: 'USD Coin', decimals: 6, chainId: 8453 },\n { address: '0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb', symbol: 'DAI', name: 'Dai', decimals: 18, chainId: 8453 },\n { address: '0x4200000000000000000000000000000000000006', symbol: 'WETH', name: 'Wrapped Ether', decimals: 18, chainId: 8453 },\n ],\n // Arbitrum\n 42161: [\n { address: '0x0000000000000000000000000000000000000000', symbol: 'ETH', name: 'Ethereum', decimals: 18, chainId: 42161 },\n { address: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831', symbol: 'USDC', name: 'USD Coin', decimals: 6, chainId: 42161 },\n { address: '0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9', symbol: 'USDT', name: 'Tether', decimals: 6, chainId: 42161 },\n { address: '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1', symbol: 'WETH', name: 'Wrapped Ether', decimals: 18, chainId: 42161 },\n ],\n // Optimism\n 10: [\n { address: '0x0000000000000000000000000000000000000000', symbol: 'ETH', name: 'Ethereum', decimals: 18, chainId: 10 },\n { address: '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85', symbol: 'USDC', name: 'USD Coin', decimals: 6, chainId: 10 },\n { address: '0x94b008aA00579c1307B0EF2c499aD98a8ce58e58', symbol: 'USDT', name: 'Tether', decimals: 6, chainId: 10 },\n { address: '0x4200000000000000000000000000000000000006', symbol: 'WETH', name: 'Wrapped Ether', decimals: 18, chainId: 10 },\n ],\n // Polygon\n 137: [\n { address: '0x0000000000000000000000000000000000000000', symbol: 'POL', name: 'Polygon', decimals: 18, chainId: 137 },\n { address: '0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359', symbol: 'USDC', name: 'USD Coin', decimals: 6, chainId: 137 },\n { address: '0xc2132D05D31c914a87C6611C10748AEb04B58e8F', symbol: 'USDT', name: 'Tether', decimals: 6, chainId: 137 },\n { address: '0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619', symbol: 'WETH', name: 'Wrapped Ether', decimals: 18, chainId: 137 },\n ],\n // BSC\n 56: [\n { address: '0x0000000000000000000000000000000000000000', symbol: 'BNB', name: 'BNB', decimals: 18, chainId: 56 },\n { address: '0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d', symbol: 'USDC', name: 'USD Coin', decimals: 18, chainId: 56 },\n { address: '0x55d398326f99059fF775485246999027B3197955', symbol: 'USDT', name: 'Tether', decimals: 18, chainId: 56 },\n { address: '0x2170Ed0880ac9A755fd29B2688956BD959F933F8', symbol: 'ETH', name: 'Ethereum', decimals: 18, chainId: 56 },\n ],\n // Avalanche\n 43114: [\n { address: '0x0000000000000000000000000000000000000000', symbol: 'AVAX', name: 'Avalanche', decimals: 18, chainId: 43114 },\n { address: '0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E', symbol: 'USDC', name: 'USD Coin', decimals: 6, chainId: 43114 },\n { address: '0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7', symbol: 'USDT', name: 'Tether', decimals: 6, chainId: 43114 },\n { address: '0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB', symbol: 'WETH', name: 'Wrapped Ether', decimals: 18, chainId: 43114 },\n ],\n};\n\n// ===== Styles =====\n\nconst containerStyle: React.CSSProperties = {\n display: 'flex',\n flexDirection: 'column',\n gap: '16px',\n padding: '24px',\n borderRadius: '16px',\n border: '1px solid',\n maxWidth: '420px',\n};\n\nconst chainSelectorStyle: React.CSSProperties = {\n display: 'flex',\n gap: '8px',\n alignItems: 'center',\n};\n\nconst tokenInputStyle: React.CSSProperties = {\n display: 'flex',\n flexDirection: 'column',\n gap: '8px',\n padding: '16px',\n borderRadius: '12px',\n};\n\nconst inputStyle: React.CSSProperties = {\n width: '100%',\n padding: '8px 0',\n backgroundColor: 'transparent',\n border: 'none',\n fontSize: '24px',\n fontWeight: 600,\n outline: 'none',\n};\n\nconst selectStyle: React.CSSProperties = {\n padding: '8px 12px',\n border: 'none',\n borderRadius: '8px',\n fontSize: '14px',\n fontWeight: 500,\n cursor: 'pointer',\n appearance: 'none',\n backgroundRepeat: 'no-repeat',\n backgroundPosition: 'right 8px center',\n paddingRight: '28px',\n};\n\nconst buttonStyle: React.CSSProperties = {\n width: '100%',\n padding: '16px',\n border: 'none',\n borderRadius: '12px',\n fontSize: '16px',\n fontWeight: 600,\n cursor: 'pointer',\n transition: 'background-color 0.2s',\n};\n\nconst routeBoxStyle: React.CSSProperties = {\n padding: '12px',\n borderRadius: '8px',\n fontSize: '13px',\n};\n\nconst labelStyle: React.CSSProperties = {\n fontSize: '12px',\n marginBottom: '4px',\n};\n\n// ===== Component =====\n\nexport function OneSwapWidget({\n defaultFromToken,\n defaultToToken,\n defaultFromChain = base,\n defaultToChain,\n supportedChains,\n tokens,\n mode = 'auto',\n theme = 'dark',\n accentColor = '#10b981',\n className,\n style,\n quoteEndpoint,\n executeEndpoint,\n onSwapSuccess,\n onSwapError,\n onQuoteReceived,\n onChainChange,\n}: OneSwapWidgetProps) {\n const client = useThirdwebClient();\n const account = useActiveAccount();\n const { mutate: sendTransaction, isPending } = useSendTransaction();\n\n // Available chains\n const availableChains = useMemo(() => {\n if (supportedChains) {\n return CHAIN_CONFIGS.filter(c => supportedChains.some(sc => sc.id === c.chain.id));\n }\n return CHAIN_CONFIGS;\n }, [supportedChains]);\n\n // State\n const [fromChain, setFromChain] = useState<ChainConfig>(\n availableChains.find(c => c.chain.id === defaultFromChain.id) || availableChains[0]\n );\n const [toChain, setToChain] = useState<ChainConfig>(\n defaultToChain\n ? availableChains.find(c => c.chain.id === defaultToChain.id) || availableChains[0]\n : fromChain\n );\n\n // Get tokens for selected chains\n const fromTokens = useMemo(() => {\n if (tokens) {\n return tokens.filter(t => t.chainId === fromChain.chain.id);\n }\n return TOKENS_BY_CHAIN[fromChain.chain.id] || [];\n }, [tokens, fromChain]);\n\n const toTokens = useMemo(() => {\n if (tokens) {\n return tokens.filter(t => t.chainId === toChain.chain.id);\n }\n return TOKENS_BY_CHAIN[toChain.chain.id] || [];\n }, [tokens, toChain]);\n\n const [fromToken, setFromToken] = useState<SwapToken>(defaultFromToken || fromTokens[0]);\n const [toToken, setToToken] = useState<SwapToken>(defaultToToken || toTokens[1] || toTokens[0]);\n const [fromAmount, setFromAmount] = useState('');\n const [toAmount, setToAmount] = useState('');\n const [route, setRoute] = useState<SwapRoute | null>(null);\n const [isLoadingQuote, setIsLoadingQuote] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n const isDark = theme === 'dark';\n const isCrossChain = fromChain.chain.id !== toChain.chain.id;\n\n // Update tokens when chain changes\n useEffect(() => {\n const newFromTokens = TOKENS_BY_CHAIN[fromChain.chain.id] || [];\n if (newFromTokens.length > 0 && !newFromTokens.some(t => t.address === fromToken?.address)) {\n setFromToken(newFromTokens[0]);\n }\n }, [fromChain, fromToken?.address]);\n\n useEffect(() => {\n const newToTokens = TOKENS_BY_CHAIN[toChain.chain.id] || [];\n if (newToTokens.length > 0 && !newToTokens.some(t => t.address === toToken?.address)) {\n // Try to find same symbol token on destination chain, otherwise use first\n const sameSymbol = newToTokens.find(t => t.symbol === fromToken?.symbol);\n setToToken(sameSymbol || newToTokens[0]);\n }\n }, [toChain, toToken?.address, fromToken?.symbol]);\n\n // Notify chain change\n useEffect(() => {\n onChainChange?.(fromChain.chain.id, toChain.chain.id);\n }, [fromChain, toChain, onChainChange]);\n\n // Fetch quote\n const fetchQuote = useCallback(async () => {\n if (!fromAmount || parseFloat(fromAmount) <= 0 || !fromToken || !toToken) {\n setToAmount('');\n setRoute(null);\n return;\n }\n\n setIsLoadingQuote(true);\n setError(null);\n\n try {\n const engineUrl = getEngineUrl();\n const endpoint = quoteEndpoint || `${engineUrl}/v1/swap/quote`;\n\n const response = await fetch(endpoint, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n fromChainId: fromChain.chain.id,\n toChainId: toChain.chain.id,\n fromToken: fromToken.address,\n toToken: toToken.address,\n fromAmount: fromAmount,\n fromDecimals: fromToken.decimals,\n walletAddress: account?.address,\n slippage: 0.5, // 0.5% default slippage\n }),\n });\n\n const data = await response.json();\n\n if (data.success && data.data) {\n const routeData: SwapRoute = {\n provider: data.data.provider || 'aggregator',\n fromChain: fromChain.chain.id,\n toChain: toChain.chain.id,\n fromToken,\n toToken,\n fromAmount,\n toAmount: data.data.toAmount || '0',\n estimatedGas: data.data.estimatedGas || '0',\n priceImpact: data.data.priceImpact || '0',\n executionTime: isCrossChain ? '2-5 min' : '~30 sec',\n steps: data.data.steps || [],\n };\n\n setRoute(routeData);\n setToAmount(routeData.toAmount);\n onQuoteReceived?.(routeData);\n } else {\n // Fallback: simple estimate\n const estimatedOutput = estimateSwapOutput(fromAmount, fromToken, toToken);\n setToAmount(estimatedOutput.toFixed(6));\n setError(data.error?.message || null);\n }\n } catch (err) {\n // Fallback estimate on error\n const estimatedOutput = estimateSwapOutput(fromAmount, fromToken, toToken);\n setToAmount(estimatedOutput.toFixed(6));\n console.error('Quote fetch error:', err);\n } finally {\n setIsLoadingQuote(false);\n }\n }, [fromAmount, fromToken, toToken, fromChain, toChain, account?.address, quoteEndpoint, isCrossChain, onQuoteReceived]);\n\n // Simple estimate fallback\n const estimateSwapOutput = (amount: string, from: SwapToken, to: SwapToken): number => {\n const prices: Record<string, number> = {\n ETH: 3500, WETH: 3500, BNB: 650, AVAX: 42, POL: 0.85,\n USDC: 1, USDT: 1, DAI: 1,\n };\n const fromPrice = prices[from.symbol] || 1;\n const toPrice = prices[to.symbol] || 1;\n return (parseFloat(amount) * fromPrice) / toPrice;\n };\n\n useEffect(() => {\n const debounce = setTimeout(fetchQuote, 500);\n return () => clearTimeout(debounce);\n }, [fetchQuote]);\n\n // Swap tokens/chains\n const handleSwapDirection = () => {\n const tempChain = fromChain;\n const tempToken = fromToken;\n setFromChain(toChain);\n setToChain(tempChain);\n setFromToken(toToken);\n setToToken(tempToken);\n setFromAmount(toAmount);\n setToAmount(fromAmount);\n };\n\n // Execute swap\n const handleSwap = async () => {\n if (!client || !account || !fromToken || !toToken) return;\n\n setError(null);\n\n try {\n const engineUrl = getEngineUrl();\n const endpoint = executeEndpoint || `${engineUrl}/v1/swap/execute`;\n\n const response = await fetch(endpoint, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n fromChainId: fromChain.chain.id,\n toChainId: toChain.chain.id,\n fromToken: fromToken.address,\n toToken: toToken.address,\n fromAmount,\n walletAddress: account.address,\n slippage: 0.5,\n }),\n });\n\n const data = await response.json();\n\n if (data.success && data.data?.transaction) {\n const tx = prepareTransaction({\n to: data.data.transaction.to,\n data: data.data.transaction.data,\n value: BigInt(data.data.transaction.value || 0),\n chain: fromChain.chain,\n client: client,\n });\n\n sendTransaction(tx, {\n onSuccess: (result) => {\n onSwapSuccess?.(result.transactionHash, route || undefined);\n setFromAmount('');\n setToAmount('');\n setRoute(null);\n },\n onError: (err) => {\n setError(err.message);\n onSwapError?.(err);\n },\n });\n } else {\n throw new Error(data.error?.message || 'Swap execution failed');\n }\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Swap failed');\n setError(error.message);\n onSwapError?.(error);\n }\n };\n\n const canSwap = client && account && fromAmount && parseFloat(fromAmount) > 0 && !isPending && !isLoadingQuote;\n\n // Theme colors\n const bgColor = isDark ? '#1f2937' : '#ffffff';\n const borderColor = isDark ? '#374151' : '#e5e7eb';\n const textColor = isDark ? '#ffffff' : '#111827';\n const mutedColor = isDark ? '#9ca3af' : '#6b7280';\n const inputBg = isDark ? '#374151' : '#f3f4f6';\n\n return (\n <div\n className={className}\n style={{\n ...containerStyle,\n backgroundColor: bgColor,\n borderColor,\n ...style,\n }}\n >\n {/* Header */}\n <div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center' }}>\n <h3 style={{ color: textColor, margin: 0, fontSize: '18px', fontWeight: 600 }}>\n Swap\n </h3>\n {isCrossChain && (\n <span style={{\n fontSize: '11px',\n padding: '4px 8px',\n backgroundColor: accentColor,\n color: '#fff',\n borderRadius: '4px',\n }}>\n Cross-Chain\n </span>\n )}\n </div>\n\n {/* From Section */}\n <div style={{ ...tokenInputStyle, backgroundColor: inputBg }}>\n <div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center' }}>\n <span style={{ ...labelStyle, color: mutedColor }}>From</span>\n {mode !== 'same-chain' && (\n <div style={chainSelectorStyle}>\n <select\n value={fromChain.chain.id}\n onChange={(e) => {\n const chain = availableChains.find(c => c.chain.id === parseInt(e.target.value));\n if (chain) setFromChain(chain);\n }}\n style={{\n ...selectStyle,\n backgroundColor: isDark ? '#4b5563' : '#e5e7eb',\n color: textColor,\n backgroundImage: `url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='${isDark ? '%239ca3af' : '%236b7280'}'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M19 9l-7 7-7-7'%3E%3C/path%3E%3C/svg%3E\")`,\n backgroundSize: '12px',\n fontSize: '12px',\n padding: '6px 24px 6px 8px',\n }}\n >\n {availableChains.map(c => (\n <option key={c.chain.id} value={c.chain.id}>{c.shortName}</option>\n ))}\n </select>\n </div>\n )}\n </div>\n\n <div style={{ display: 'flex', gap: '12px', alignItems: 'center' }}>\n <input\n type=\"number\"\n value={fromAmount}\n onChange={(e) => setFromAmount(e.target.value)}\n placeholder=\"0.0\"\n style={{ ...inputStyle, flex: 1, color: textColor }}\n />\n <select\n value={fromToken?.address || ''}\n onChange={(e) => {\n const token = fromTokens.find(t => t.address === e.target.value);\n if (token) setFromToken(token);\n }}\n style={{\n ...selectStyle,\n backgroundColor: isDark ? '#4b5563' : '#e5e7eb',\n color: textColor,\n backgroundImage: `url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='${isDark ? '%239ca3af' : '%236b7280'}'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M19 9l-7 7-7-7'%3E%3C/path%3E%3C/svg%3E\")`,\n backgroundSize: '12px',\n }}\n >\n {fromTokens.map(token => (\n <option key={token.address} value={token.address}>{token.symbol}</option>\n ))}\n </select>\n </div>\n </div>\n\n {/* Swap Direction Button */}\n <div style={{ display: 'flex', justifyContent: 'center', margin: '-8px 0' }}>\n <button\n onClick={handleSwapDirection}\n style={{\n width: '36px',\n height: '36px',\n borderRadius: '50%',\n backgroundColor: inputBg,\n border: `2px solid ${bgColor}`,\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: '16px',\n color: mutedColor,\n zIndex: 1,\n }}\n >\n ↕\n </button>\n </div>\n\n {/* To Section */}\n <div style={{ ...tokenInputStyle, backgroundColor: inputBg }}>\n <div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center' }}>\n <span style={{ ...labelStyle, color: mutedColor }}>To</span>\n {mode !== 'same-chain' && (\n <div style={chainSelectorStyle}>\n <select\n value={toChain.chain.id}\n onChange={(e) => {\n const chain = availableChains.find(c => c.chain.id === parseInt(e.target.value));\n if (chain) setToChain(chain);\n }}\n style={{\n ...selectStyle,\n backgroundColor: isDark ? '#4b5563' : '#e5e7eb',\n color: textColor,\n backgroundImage: `url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='${isDark ? '%239ca3af' : '%236b7280'}'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M19 9l-7 7-7-7'%3E%3C/path%3E%3C/svg%3E\")`,\n backgroundSize: '12px',\n fontSize: '12px',\n padding: '6px 24px 6px 8px',\n }}\n >\n {availableChains.map(c => (\n <option key={c.chain.id} value={c.chain.id}>{c.shortName}</option>\n ))}\n </select>\n </div>\n )}\n </div>\n\n <div style={{ display: 'flex', gap: '12px', alignItems: 'center' }}>\n <input\n type=\"number\"\n value={toAmount}\n placeholder=\"0.0\"\n readOnly\n style={{ ...inputStyle, flex: 1, color: mutedColor }}\n />\n <select\n value={toToken?.address || ''}\n onChange={(e) => {\n const token = toTokens.find(t => t.address === e.target.value);\n if (token) setToToken(token);\n }}\n style={{\n ...selectStyle,\n backgroundColor: isDark ? '#4b5563' : '#e5e7eb',\n color: textColor,\n backgroundImage: `url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='${isDark ? '%239ca3af' : '%236b7280'}'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M19 9l-7 7-7-7'%3E%3C/path%3E%3C/svg%3E\")`,\n backgroundSize: '12px',\n }}\n >\n {toTokens.map(token => (\n <option key={token.address} value={token.address}>{token.symbol}</option>\n ))}\n </select>\n </div>\n </div>\n\n {/* Route Info */}\n {(route || (fromAmount && toAmount)) && (\n <div style={{ ...routeBoxStyle, backgroundColor: inputBg }}>\n <div style={{ display: 'flex', justifyContent: 'space-between', marginBottom: '6px' }}>\n <span style={{ color: mutedColor }}>Rate</span>\n <span style={{ color: textColor }}>\n 1 {fromToken?.symbol} = {toAmount && fromAmount ? (parseFloat(toAmount) / parseFloat(fromAmount)).toFixed(6) : '0'} {toToken?.symbol}\n </span>\n </div>\n {route?.priceImpact && parseFloat(route.priceImpact) > 0 && (\n <div style={{ display: 'flex', justifyContent: 'space-between', marginBottom: '6px' }}>\n <span style={{ color: mutedColor }}>Price Impact</span>\n <span style={{ color: parseFloat(route.priceImpact) > 3 ? '#ef4444' : textColor }}>\n {route.priceImpact}%\n </span>\n </div>\n )}\n {isCrossChain && (\n <div style={{ display: 'flex', justifyContent: 'space-between' }}>\n <span style={{ color: mutedColor }}>Est. Time</span>\n <span style={{ color: textColor }}>{route?.executionTime || '2-5 min'}</span>\n </div>\n )}\n </div>\n )}\n\n {/* Error */}\n {error && (\n <div style={{\n color: '#ef4444',\n fontSize: '14px',\n padding: '10px 12px',\n backgroundColor: 'rgba(239, 68, 68, 0.1)',\n borderRadius: '8px',\n }}>\n {error}\n </div>\n )}\n\n {/* Swap Button */}\n <button\n onClick={handleSwap}\n disabled={!canSwap}\n style={{\n ...buttonStyle,\n backgroundColor: canSwap ? accentColor : '#6b7280',\n color: '#ffffff',\n cursor: canSwap ? 'pointer' : 'not-allowed',\n }}\n >\n {isPending\n ? 'Swapping...'\n : isLoadingQuote\n ? 'Getting Quote...'\n : !account\n ? 'Connect Wallet'\n : isCrossChain\n ? `Bridge & Swap`\n : 'Swap'}\n </button>\n </div>\n );\n}\n\n// ===== Presets =====\n\nexport function OneSameChainSwap(props: Omit<OneSwapWidgetProps, 'mode'>) {\n return <OneSwapWidget {...props} mode=\"same-chain\" />;\n}\n\nexport function OneCrossChainSwap(props: Omit<OneSwapWidgetProps, 'mode'>) {\n return <OneSwapWidget {...props} mode=\"cross-chain\" />;\n}\n","'use client';\n\nimport React, { useState, useEffect, useCallback } from 'react';\nimport { useActiveAccount, useWalletBalance as useThirdwebBalance } from 'thirdweb/react';\nimport type { Chain } from 'thirdweb/chains';\nimport { base, ethereum, polygon, arbitrum, optimism } from 'thirdweb/chains';\nimport { useThirdwebClient } from '../providers';\n\n// ===== Types =====\n\nexport interface TokenBalance {\n symbol: string;\n name: string;\n balance: string;\n balanceFormatted: string;\n balanceUsd: number;\n price: number;\n priceChange24h: number;\n chainId: number;\n chain: string;\n contractAddress?: string;\n logoURI?: string;\n}\n\nexport interface OneWalletBalanceProps {\n // Display options\n showTotalBalance?: boolean;\n showTokenList?: boolean;\n showChainFilter?: boolean;\n showPriceChange?: boolean;\n\n // Chains to show\n chains?: Chain[];\n\n // API endpoint for fetching balances\n balanceEndpoint?: string;\n\n // Appearance\n theme?: 'light' | 'dark';\n className?: string;\n style?: React.CSSProperties;\n compact?: boolean;\n\n // Callbacks\n onTokenClick?: (token: TokenBalance) => void;\n onRefresh?: () => void;\n}\n\n// ===== Styles =====\n\nconst containerStyle: React.CSSProperties = {\n display: 'flex',\n flexDirection: 'column',\n gap: '16px',\n};\n\nconst balanceCardStyle: React.CSSProperties = {\n padding: '24px',\n backgroundColor: '#1f2937',\n borderRadius: '16px',\n border: '1px solid #374151',\n};\n\nconst tokenRowStyle: React.CSSProperties = {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: '12px 16px',\n borderRadius: '12px',\n cursor: 'pointer',\n transition: 'background-color 0.2s',\n};\n\n// ===== Utilities =====\n\nconst formatUSD = (value: number): string => {\n return new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: 'USD',\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n }).format(value);\n};\n\nconst formatBalance = (value: string, decimals: number = 4): string => {\n const num = parseFloat(value);\n if (num === 0) return '0';\n if (num < 0.0001) return '<0.0001';\n return num.toFixed(decimals);\n};\n\nconst CHAIN_INFO: Record<number, { name: string; icon: string }> = {\n 1: { name: 'Ethereum', icon: '⟠' },\n 8453: { name: 'Base', icon: '🔵' },\n 137: { name: 'Polygon', icon: '🟣' },\n 42161: { name: 'Arbitrum', icon: '🔷' },\n 10: { name: 'Optimism', icon: '🔴' },\n};\n\n// ===== Component =====\n\nexport function OneWalletBalance({\n showTotalBalance = true,\n showTokenList = true,\n showChainFilter = true,\n showPriceChange = true,\n chains = [base, ethereum, polygon, arbitrum, optimism],\n balanceEndpoint = '/api/v1/assets',\n theme = 'dark',\n className,\n style,\n compact = false,\n onTokenClick,\n onRefresh,\n}: OneWalletBalanceProps) {\n const client = useThirdwebClient();\n const account = useActiveAccount();\n\n const [tokens, setTokens] = useState<TokenBalance[]>([]);\n const [totalBalance, setTotalBalance] = useState(0);\n const [totalChange24h, setTotalChange24h] = useState(0);\n const [isLoading, setIsLoading] = useState(true);\n const [selectedChain, setSelectedChain] = useState<number | null>(null);\n const [error, setError] = useState<string | null>(null);\n\n // Fetch balances from ONE Engine\n const fetchBalances = useCallback(async () => {\n if (!account?.address) return;\n\n setIsLoading(true);\n setError(null);\n\n try {\n const chainIds = chains.map(c => c.id).join(',');\n const response = await fetch(`${balanceEndpoint}?address=${account.address}&chains=${chainIds}`);\n const data = await response.json();\n\n if (data.success && data.data) {\n const balanceData = data.data;\n setTokens(balanceData.tokens || []);\n setTotalBalance(balanceData.totalUsd || 0);\n setTotalChange24h(balanceData.change24hPercent || 0);\n } else {\n setError(data.error?.message || 'Failed to fetch balances');\n }\n } catch (err) {\n setError('Failed to load balances');\n } finally {\n setIsLoading(false);\n }\n }, [account?.address, balanceEndpoint, chains]);\n\n useEffect(() => {\n fetchBalances();\n }, [fetchBalances]);\n\n const handleRefresh = () => {\n fetchBalances();\n onRefresh?.();\n };\n\n const filteredTokens = selectedChain\n ? tokens.filter(t => t.chainId === selectedChain)\n : tokens;\n\n const isDark = theme === 'dark';\n\n if (!account) {\n return (\n <div className={className} style={{ ...style, textAlign: 'center', padding: '24px', color: isDark ? '#9ca3af' : '#6b7280' }}>\n Connect your wallet to view balances\n </div>\n );\n }\n\n return (\n <div className={className} style={{ ...containerStyle, ...style }}>\n {/* Total Balance Card */}\n {showTotalBalance && (\n <div style={{ ...balanceCardStyle, backgroundColor: isDark ? '#1f2937' : '#ffffff', border: `1px solid ${isDark ? '#374151' : '#e5e7eb'}` }}>\n <div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'flex-start' }}>\n <div>\n <p style={{ margin: '0 0 4px 0', color: isDark ? '#9ca3af' : '#6b7280', fontSize: '14px' }}>Total Balance</p>\n {isLoading ? (\n <div style={{ height: '36px', width: '120px', backgroundColor: isDark ? '#374151' : '#e5e7eb', borderRadius: '8px', animation: 'pulse 2s infinite' }} />\n ) : (\n <h2 style={{ margin: 0, color: isDark ? '#ffffff' : '#111827', fontSize: compact ? '24px' : '32px', fontWeight: 700 }}>\n {formatUSD(totalBalance)}\n </h2>\n )}\n {showPriceChange && !isLoading && (\n <p style={{ margin: '4px 0 0 0', fontSize: '14px', color: totalChange24h >= 0 ? '#10b981' : '#ef4444' }}>\n {totalChange24h >= 0 ? '+' : ''}{totalChange24h.toFixed(2)}% (24h)\n </p>\n )}\n </div>\n <button\n onClick={handleRefresh}\n disabled={isLoading}\n style={{\n padding: '8px 12px',\n backgroundColor: isDark ? '#374151' : '#e5e7eb',\n border: 'none',\n borderRadius: '8px',\n color: isDark ? '#ffffff' : '#111827',\n cursor: isLoading ? 'not-allowed' : 'pointer',\n fontSize: '14px',\n }}\n >\n {isLoading ? '...' : '↻'}\n </button>\n </div>\n </div>\n )}\n\n {/* Chain Filter */}\n {showChainFilter && chains.length > 1 && (\n <div style={{ display: 'flex', gap: '8px', flexWrap: 'wrap' }}>\n <button\n onClick={() => setSelectedChain(null)}\n style={{\n padding: '8px 16px',\n backgroundColor: selectedChain === null ? '#10b981' : (isDark ? '#374151' : '#e5e7eb'),\n border: 'none',\n borderRadius: '20px',\n color: selectedChain === null ? '#ffffff' : (isDark ? '#9ca3af' : '#6b7280'),\n cursor: 'pointer',\n fontSize: '14px',\n }}\n >\n All\n </button>\n {chains.map(chain => (\n <button\n key={chain.id}\n onClick={() => setSelectedChain(chain.id)}\n style={{\n padding: '8px 16px',\n backgroundColor: selectedChain === chain.id ? '#10b981' : (isDark ? '#374151' : '#e5e7eb'),\n border: 'none',\n borderRadius: '20px',\n color: selectedChain === chain.id ? '#ffffff' : (isDark ? '#9ca3af' : '#6b7280'),\n cursor: 'pointer',\n fontSize: '14px',\n }}\n >\n {CHAIN_INFO[chain.id]?.icon} {CHAIN_INFO[chain.id]?.name || `Chain ${chain.id}`}\n </button>\n ))}\n </div>\n )}\n\n {/* Token List */}\n {showTokenList && (\n <div style={{ display: 'flex', flexDirection: 'column', gap: '4px' }}>\n {isLoading ? (\n Array(3).fill(0).map((_, i) => (\n <div key={i} style={{ ...tokenRowStyle, backgroundColor: isDark ? '#374151' : '#f3f4f6', height: '60px', animation: 'pulse 2s infinite' }} />\n ))\n ) : error ? (\n <div style={{ textAlign: 'center', padding: '24px', color: '#ef4444' }}>{error}</div>\n ) : filteredTokens.length === 0 ? (\n <div style={{ textAlign: 'center', padding: '24px', color: isDark ? '#9ca3af' : '#6b7280' }}>No tokens found</div>\n ) : (\n filteredTokens.map((token, index) => (\n <div\n key={`${token.chainId}-${token.symbol}-${index}`}\n style={{\n ...tokenRowStyle,\n backgroundColor: 'transparent',\n }}\n onClick={() => onTokenClick?.(token)}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = isDark ? '#374151' : '#f3f4f6';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = 'transparent';\n }}\n >\n <div style={{ display: 'flex', alignItems: 'center', gap: '12px' }}>\n <div style={{\n width: '40px',\n height: '40px',\n borderRadius: '50%',\n backgroundColor: isDark ? '#374151' : '#e5e7eb',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: '16px',\n fontWeight: 600,\n color: isDark ? '#ffffff' : '#111827',\n }}>\n {token.logoURI ? (\n <img src={token.logoURI} alt={token.symbol} style={{ width: '100%', height: '100%', borderRadius: '50%' }} />\n ) : (\n token.symbol.slice(0, 2)\n )}\n </div>\n <div>\n <div style={{ display: 'flex', alignItems: 'center', gap: '8px' }}>\n <span style={{ color: isDark ? '#ffffff' : '#111827', fontWeight: 600 }}>{token.symbol}</span>\n <span style={{\n fontSize: '10px',\n padding: '2px 6px',\n backgroundColor: isDark ? '#374151' : '#e5e7eb',\n borderRadius: '4px',\n color: isDark ? '#9ca3af' : '#6b7280',\n }}>\n {CHAIN_INFO[token.chainId]?.name || token.chain}\n </span>\n </div>\n <span style={{ color: isDark ? '#9ca3af' : '#6b7280', fontSize: '14px' }}>\n {formatBalance(token.balanceFormatted)} {token.symbol}\n </span>\n </div>\n </div>\n <div style={{ textAlign: 'right' }}>\n <div style={{ color: isDark ? '#ffffff' : '#111827', fontWeight: 600 }}>\n {formatUSD(token.balanceUsd)}\n </div>\n {showPriceChange && (\n <div style={{ fontSize: '14px', color: token.priceChange24h >= 0 ? '#10b981' : '#ef4444' }}>\n {token.priceChange24h >= 0 ? '+' : ''}{token.priceChange24h.toFixed(2)}%\n </div>\n )}\n </div>\n </div>\n ))\n )}\n </div>\n )}\n </div>\n );\n}\n\n// ===== Compact Balance Display =====\n\nexport function OneBalanceDisplay({\n theme = 'dark',\n className,\n style,\n}: Pick<OneWalletBalanceProps, 'theme' | 'className' | 'style'>) {\n return (\n <OneWalletBalance\n theme={theme}\n className={className}\n style={style}\n showTotalBalance={true}\n showTokenList={false}\n showChainFilter={false}\n compact={true}\n />\n );\n}\n","'use client';\n\nimport React, { useState, useEffect, useCallback } from 'react';\nimport { useActiveAccount } from 'thirdweb/react';\nimport { MediaRenderer } from 'thirdweb/react';\nimport { useThirdwebClient } from '../providers';\n\n// ===== Types =====\n\nexport interface NFTItem {\n id: string;\n tokenId: string;\n contractAddress: string;\n name: string;\n description?: string;\n image?: string;\n animationUrl?: string;\n attributes?: Array<{ trait_type: string; value: string | number }>;\n chain: string;\n chainId: number;\n collection?: {\n name: string;\n image?: string;\n };\n}\n\nexport interface OneNFTGalleryProps {\n // Data source\n nfts?: NFTItem[];\n fetchEndpoint?: string;\n\n // Display options\n columns?: 2 | 3 | 4;\n showCollection?: boolean;\n showChain?: boolean;\n\n // Appearance\n theme?: 'light' | 'dark';\n className?: string;\n style?: React.CSSProperties;\n\n // Callbacks\n onNFTClick?: (nft: NFTItem) => void;\n onTransfer?: (nft: NFTItem) => void;\n}\n\n// ===== Styles =====\n\nconst galleryStyle: React.CSSProperties = {\n display: 'grid',\n gap: '16px',\n};\n\nconst cardStyle: React.CSSProperties = {\n backgroundColor: '#1f2937',\n borderRadius: '16px',\n overflow: 'hidden',\n border: '1px solid #374151',\n cursor: 'pointer',\n transition: 'transform 0.2s, box-shadow 0.2s',\n};\n\nconst imageContainerStyle: React.CSSProperties = {\n aspectRatio: '1',\n backgroundColor: '#374151',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n overflow: 'hidden',\n};\n\nconst infoStyle: React.CSSProperties = {\n padding: '12px',\n};\n\n// ===== Component =====\n\nexport function OneNFTGallery({\n nfts: propNfts,\n fetchEndpoint = '/api/v1/assets/nft',\n columns = 3,\n showCollection = true,\n showChain = true,\n theme = 'dark',\n className,\n style,\n onNFTClick,\n onTransfer,\n}: OneNFTGalleryProps) {\n const client = useThirdwebClient();\n const account = useActiveAccount();\n\n const [nfts, setNfts] = useState<NFTItem[]>(propNfts || []);\n const [isLoading, setIsLoading] = useState(!propNfts);\n const [error, setError] = useState<string | null>(null);\n const [selectedNFT, setSelectedNFT] = useState<NFTItem | null>(null);\n\n // Fetch NFTs\n const fetchNFTs = useCallback(async () => {\n if (!account?.address || propNfts) return;\n\n setIsLoading(true);\n setError(null);\n\n try {\n const response = await fetch(`${fetchEndpoint}?address=${account.address}`);\n const data = await response.json();\n\n if (data.success && data.data) {\n setNfts(data.data.nfts || []);\n } else {\n setError(data.error?.message || 'Failed to fetch NFTs');\n }\n } catch (err) {\n setError('Failed to load NFTs');\n } finally {\n setIsLoading(false);\n }\n }, [account?.address, fetchEndpoint, propNfts]);\n\n useEffect(() => {\n fetchNFTs();\n }, [fetchNFTs]);\n\n useEffect(() => {\n if (propNfts) {\n setNfts(propNfts);\n }\n }, [propNfts]);\n\n const isDark = theme === 'dark';\n\n const gridColumns = {\n 2: 'repeat(2, 1fr)',\n 3: 'repeat(3, 1fr)',\n 4: 'repeat(4, 1fr)',\n };\n\n if (isLoading) {\n return (\n <div className={className} style={{ ...style, textAlign: 'center', padding: '40px', color: isDark ? '#9ca3af' : '#6b7280' }}>\n Loading NFTs...\n </div>\n );\n }\n\n if (error) {\n return (\n <div className={className} style={{ ...style, textAlign: 'center', padding: '40px', color: '#ef4444' }}>\n {error}\n </div>\n );\n }\n\n if (nfts.length === 0) {\n return (\n <div className={className} style={{ ...style, textAlign: 'center', padding: '40px', color: isDark ? '#9ca3af' : '#6b7280' }}>\n No NFTs found\n </div>\n );\n }\n\n return (\n <div className={className} style={style}>\n <div style={{ ...galleryStyle, gridTemplateColumns: gridColumns[columns] }}>\n {nfts.map((nft) => (\n <div\n key={`${nft.contractAddress}-${nft.tokenId}`}\n style={{\n ...cardStyle,\n backgroundColor: isDark ? '#1f2937' : '#ffffff',\n border: `1px solid ${isDark ? '#374151' : '#e5e7eb'}`,\n }}\n onClick={() => {\n setSelectedNFT(nft);\n onNFTClick?.(nft);\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.transform = 'translateY(-4px)';\n e.currentTarget.style.boxShadow = '0 10px 40px rgba(0,0,0,0.3)';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.transform = 'translateY(0)';\n e.currentTarget.style.boxShadow = 'none';\n }}\n >\n <div style={{ ...imageContainerStyle, backgroundColor: isDark ? '#374151' : '#f3f4f6' }}>\n {nft.image && client ? (\n <MediaRenderer\n client={client}\n src={nft.image}\n style={{ width: '100%', height: '100%', objectFit: 'cover' }}\n />\n ) : nft.image ? (\n <img src={nft.image} alt={nft.name} style={{ width: '100%', height: '100%', objectFit: 'cover' }} />\n ) : (\n <span style={{ color: isDark ? '#6b7280' : '#9ca3af', fontSize: '14px' }}>No Image</span>\n )}\n </div>\n <div style={infoStyle}>\n <h4 style={{ margin: '0 0 4px 0', color: isDark ? '#ffffff' : '#111827', fontSize: '14px', fontWeight: 600 }}>\n {nft.name || `#${nft.tokenId}`}\n </h4>\n {showCollection && nft.collection && (\n <p style={{ margin: 0, color: isDark ? '#9ca3af' : '#6b7280', fontSize: '12px' }}>\n {nft.collection.name}\n </p>\n )}\n {showChain && (\n <span style={{\n display: 'inline-block',\n marginTop: '8px',\n padding: '2px 8px',\n backgroundColor: isDark ? '#374151' : '#e5e7eb',\n borderRadius: '4px',\n fontSize: '10px',\n color: isDark ? '#9ca3af' : '#6b7280',\n }}>\n {nft.chain}\n </span>\n )}\n </div>\n </div>\n ))}\n </div>\n\n {/* NFT Detail Modal */}\n {selectedNFT && (\n <div\n style={{\n position: 'fixed',\n inset: 0,\n backgroundColor: 'rgba(0,0,0,0.8)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n zIndex: 1000,\n }}\n onClick={() => setSelectedNFT(null)}\n >\n <div\n style={{\n backgroundColor: isDark ? '#1f2937' : '#ffffff',\n borderRadius: '16px',\n padding: '24px',\n maxWidth: '500px',\n width: '90%',\n maxHeight: '90vh',\n overflow: 'auto',\n }}\n onClick={(e) => e.stopPropagation()}\n >\n {selectedNFT.image && (\n client ? (\n <MediaRenderer\n client={client}\n src={selectedNFT.image}\n style={{ width: '100%', borderRadius: '12px', marginBottom: '16px' }}\n />\n ) : (\n <img src={selectedNFT.image} alt={selectedNFT.name} style={{ width: '100%', borderRadius: '12px', marginBottom: '16px' }} />\n )\n )}\n <h3 style={{ margin: '0 0 8px 0', color: isDark ? '#ffffff' : '#111827' }}>\n {selectedNFT.name || `#${selectedNFT.tokenId}`}\n </h3>\n {selectedNFT.description && (\n <p style={{ margin: '0 0 16px 0', color: isDark ? '#9ca3af' : '#6b7280', fontSize: '14px' }}>\n {selectedNFT.description}\n </p>\n )}\n {selectedNFT.attributes && selectedNFT.attributes.length > 0 && (\n <div style={{ display: 'flex', flexWrap: 'wrap', gap: '8px', marginBottom: '16px' }}>\n {selectedNFT.attributes.map((attr, i) => (\n <div\n key={i}\n style={{\n padding: '8px 12px',\n backgroundColor: isDark ? '#374151' : '#f3f4f6',\n borderRadius: '8px',\n }}\n >\n <div style={{ fontSize: '10px', color: isDark ? '#9ca3af' : '#6b7280' }}>{attr.trait_type}</div>\n <div style={{ fontSize: '14px', color: isDark ? '#ffffff' : '#111827', fontWeight: 500 }}>{attr.value}</div>\n </div>\n ))}\n </div>\n )}\n <div style={{ display: 'flex', gap: '12px' }}>\n <button\n onClick={() => setSelectedNFT(null)}\n style={{\n flex: 1,\n padding: '12px',\n backgroundColor: 'transparent',\n border: `1px solid ${isDark ? '#374151' : '#e5e7eb'}`,\n borderRadius: '8px',\n color: isDark ? '#9ca3af' : '#6b7280',\n cursor: 'pointer',\n }}\n >\n Close\n </button>\n {onTransfer && (\n <button\n onClick={() => {\n onTransfer(selectedNFT);\n setSelectedNFT(null);\n }}\n style={{\n flex: 1,\n padding: '12px',\n backgroundColor: '#10b981',\n border: 'none',\n borderRadius: '8px',\n color: '#ffffff',\n fontWeight: 600,\n cursor: 'pointer',\n }}\n >\n Transfer\n </button>\n )}\n </div>\n </div>\n </div>\n )}\n </div>\n );\n}\n","'use client';\n\nimport React, { useState, useEffect } from 'react';\nimport { useActiveAccount } from 'thirdweb/react';\nimport type { Chain } from 'thirdweb/chains';\nimport { base, ethereum, polygon, arbitrum } from 'thirdweb/chains';\n\n// ===== Types =====\n\nexport interface OneReceiveWidgetProps {\n // Display options\n chains?: Chain[];\n defaultChain?: Chain;\n showChainSelector?: boolean;\n showCopyButton?: boolean;\n showQRCode?: boolean;\n\n // Appearance\n theme?: 'light' | 'dark';\n className?: string;\n style?: React.CSSProperties;\n qrSize?: number;\n\n // Callbacks\n onCopy?: (address: string) => void;\n onChainChange?: (chain: Chain) => void;\n}\n\n// ===== QR Code Generator (Simple SVG-based) =====\n\nfunction generateQRMatrix(data: string): boolean[][] {\n // Simple QR-like pattern generator (for demo - in production use a proper QR library)\n const size = 21;\n const matrix: boolean[][] = Array(size).fill(null).map(() => Array(size).fill(false));\n\n // Add finder patterns\n const addFinderPattern = (x: number, y: number) => {\n for (let i = 0; i < 7; i++) {\n for (let j = 0; j < 7; j++) {\n if (i === 0 || i === 6 || j === 0 || j === 6 || (i >= 2 && i <= 4 && j >= 2 && j <= 4)) {\n matrix[y + i][x + j] = true;\n }\n }\n }\n };\n\n addFinderPattern(0, 0);\n addFinderPattern(14, 0);\n addFinderPattern(0, 14);\n\n // Add data pattern based on address hash\n let hash = 0;\n for (let i = 0; i < data.length; i++) {\n hash = ((hash << 5) - hash) + data.charCodeAt(i);\n hash = hash & hash;\n }\n\n for (let i = 8; i < 13; i++) {\n for (let j = 8; j < 13; j++) {\n matrix[i][j] = ((hash >> ((i * 21 + j) % 32)) & 1) === 1;\n }\n }\n\n return matrix;\n}\n\nfunction QRCode({ data, size = 200, isDark = true }: { data: string; size?: number; isDark?: boolean }) {\n const matrix = generateQRMatrix(data);\n const cellSize = size / matrix.length;\n\n return (\n <svg width={size} height={size} viewBox={`0 0 ${size} ${size}`}>\n <rect width={size} height={size} fill={isDark ? '#ffffff' : '#ffffff'} rx=\"8\" />\n {matrix.map((row, y) =>\n row.map((cell, x) =>\n cell ? (\n <rect\n key={`${x}-${y}`}\n x={x * cellSize}\n y={y * cellSize}\n width={cellSize}\n height={cellSize}\n fill={isDark ? '#111827' : '#111827'}\n />\n ) : null\n )\n )}\n </svg>\n );\n}\n\n// ===== Styles =====\n\nconst containerStyle: React.CSSProperties = {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n gap: '20px',\n padding: '24px',\n backgroundColor: '#1f2937',\n borderRadius: '16px',\n border: '1px solid #374151',\n};\n\nconst addressStyle: React.CSSProperties = {\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n padding: '12px 16px',\n backgroundColor: '#374151',\n borderRadius: '12px',\n maxWidth: '100%',\n};\n\nconst buttonStyle: React.CSSProperties = {\n padding: '8px 16px',\n backgroundColor: '#10b981',\n color: '#ffffff',\n border: 'none',\n borderRadius: '8px',\n cursor: 'pointer',\n fontSize: '14px',\n fontWeight: 500,\n};\n\n// ===== Chain Info =====\n\nconst CHAIN_INFO: Record<number, { name: string; icon: string }> = {\n 1: { name: 'Ethereum', icon: '⟠' },\n 8453: { name: 'Base', icon: '🔵' },\n 137: { name: 'Polygon', icon: '🟣' },\n 42161: { name: 'Arbitrum', icon: '🔷' },\n 10: { name: 'Optimism', icon: '🔴' },\n};\n\n// ===== Component =====\n\nexport function OneReceiveWidget({\n chains = [base, ethereum, polygon, arbitrum],\n defaultChain = base,\n showChainSelector = true,\n showCopyButton = true,\n showQRCode = true,\n theme = 'dark',\n className,\n style,\n qrSize = 200,\n onCopy,\n onChainChange,\n}: OneReceiveWidgetProps) {\n const account = useActiveAccount();\n const [selectedChain, setSelectedChain] = useState<Chain>(defaultChain);\n const [copied, setCopied] = useState(false);\n\n const address = account?.address || '';\n const isDark = theme === 'dark';\n\n const handleCopy = async () => {\n if (!address) return;\n\n try {\n await navigator.clipboard.writeText(address);\n setCopied(true);\n onCopy?.(address);\n setTimeout(() => setCopied(false), 2000);\n } catch (err) {\n console.error('Failed to copy:', err);\n }\n };\n\n const handleChainChange = (chain: Chain) => {\n setSelectedChain(chain);\n onChainChange?.(chain);\n };\n\n const shortenAddress = (addr: string) => {\n if (!addr) return '';\n return `${addr.slice(0, 6)}...${addr.slice(-4)}`;\n };\n\n if (!account) {\n return (\n <div className={className} style={{ ...style, textAlign: 'center', padding: '24px', color: isDark ? '#9ca3af' : '#6b7280' }}>\n Connect your wallet to receive funds\n </div>\n );\n }\n\n return (\n <div\n className={className}\n style={{\n ...containerStyle,\n backgroundColor: isDark ? '#1f2937' : '#ffffff',\n border: `1px solid ${isDark ? '#374151' : '#e5e7eb'}`,\n ...style,\n }}\n >\n <h3 style={{ margin: 0, color: isDark ? '#ffffff' : '#111827', fontSize: '18px', fontWeight: 600 }}>\n Receive\n </h3>\n\n {/* Chain Selector */}\n {showChainSelector && chains.length > 1 && (\n <div style={{ display: 'flex', gap: '8px', flexWrap: 'wrap', justifyContent: 'center' }}>\n {chains.map(chain => (\n <button\n key={chain.id}\n onClick={() => handleChainChange(chain)}\n style={{\n padding: '8px 12px',\n backgroundColor: selectedChain.id === chain.id ? '#10b981' : (isDark ? '#374151' : '#e5e7eb'),\n border: 'none',\n borderRadius: '8px',\n color: selectedChain.id === chain.id ? '#ffffff' : (isDark ? '#9ca3af' : '#6b7280'),\n cursor: 'pointer',\n fontSize: '12px',\n }}\n >\n {CHAIN_INFO[chain.id]?.icon} {CHAIN_INFO[chain.id]?.name}\n </button>\n ))}\n </div>\n )}\n\n {/* QR Code */}\n {showQRCode && (\n <div style={{ padding: '16px', backgroundColor: '#ffffff', borderRadius: '12px' }}>\n <QRCode data={address} size={qrSize} isDark={isDark} />\n </div>\n )}\n\n {/* Address Display */}\n <div style={{ ...addressStyle, backgroundColor: isDark ? '#374151' : '#f3f4f6', width: '100%' }}>\n <span style={{\n color: isDark ? '#ffffff' : '#111827',\n fontSize: '14px',\n fontFamily: 'monospace',\n flex: 1,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n }}>\n {address}\n </span>\n </div>\n\n {/* Copy Button */}\n {showCopyButton && (\n <button\n onClick={handleCopy}\n style={{\n ...buttonStyle,\n backgroundColor: copied ? '#059669' : '#10b981',\n width: '100%',\n }}\n >\n {copied ? '✓ Copied!' : 'Copy Address'}\n </button>\n )}\n\n {/* Warning */}\n <p style={{\n margin: 0,\n color: isDark ? '#9ca3af' : '#6b7280',\n fontSize: '12px',\n textAlign: 'center',\n }}>\n Only send {CHAIN_INFO[selectedChain.id]?.name || 'compatible'} assets to this address\n </p>\n </div>\n );\n}\n","/**\n * OneChainSelector - Multi-chain selection component for AI trading\n * Part of ONE Ecosystem SDK - can be used by any ecosystem partner\n */\n\nimport React from 'react';\nimport { View, Text, StyleSheet, TouchableOpacity, ViewStyle, TextStyle } from 'react-native';\n\n// Chain configuration with branding\nexport const CHAIN_CONFIG: Record<string, { name: string; icon: string; color: string }> = {\n ethereum: { name: 'Ethereum', icon: 'Ξ', color: '#627EEA' },\n arbitrum: { name: 'Arbitrum', icon: '◆', color: '#28A0F0' },\n bsc: { name: 'BSC', icon: '◆', color: '#F3BA2F' },\n base: { name: 'Base', icon: '●', color: '#0052FF' },\n polygon: { name: 'Polygon', icon: '⬡', color: '#8247E5' },\n optimism: { name: 'Optimism', icon: '◉', color: '#FF0420' },\n avalanche: { name: 'Avalanche', icon: '▲', color: '#E84142' },\n linea: { name: 'Linea', icon: '═', color: '#121212' },\n zksync: { name: 'zkSync', icon: '⬢', color: '#8C8DFC' },\n scroll: { name: 'Scroll', icon: '◎', color: '#FFEEDA' },\n};\n\nexport interface OneChainSelectorProps {\n /** List of supported chain IDs */\n supportedChains: string[];\n /** Currently selected chains */\n selectedChains: string[];\n /** Callback when chain selection changes */\n onSelectChain: (chain: string) => void;\n /** Enable multi-select (default: true) */\n multiSelect?: boolean;\n /** Accent color for selected state */\n accentColor?: string;\n /** Section title */\n title?: string;\n /** Section subtitle */\n subtitle?: string;\n /** Minimum required selections (for multi-select) */\n minSelections?: number;\n /** Custom styles */\n style?: ViewStyle;\n /** Custom title style */\n titleStyle?: TextStyle;\n}\n\nexport const OneChainSelector: React.FC<OneChainSelectorProps> = ({\n supportedChains,\n selectedChains,\n onSelectChain,\n multiSelect = true,\n accentColor = '#188775',\n title,\n subtitle,\n minSelections = 1,\n style,\n titleStyle,\n}) => {\n const handleSelect = (chain: string) => {\n if (multiSelect) {\n // In multi-select, prevent deselecting if at minimum\n if (selectedChains.includes(chain) && selectedChains.length <= minSelections) {\n return;\n }\n onSelectChain(chain);\n } else {\n // Single select - always allow selection\n if (!selectedChains.includes(chain)) {\n onSelectChain(chain);\n }\n }\n };\n\n return (\n <View style={[styles.container, style]}>\n {title && <Text style={[styles.title, titleStyle]}>{title}</Text>}\n {subtitle && <Text style={styles.subtitle}>{subtitle}</Text>}\n\n <View style={styles.chainsContainer}>\n {supportedChains.map((chain) => {\n const chainInfo = CHAIN_CONFIG[chain] || { name: chain, icon: '●', color: '#888' };\n const isSelected = selectedChains.includes(chain);\n\n return (\n <TouchableOpacity\n key={chain}\n style={[\n styles.chainChip,\n isSelected && styles.chainChipSelected,\n isSelected && { borderColor: accentColor, backgroundColor: accentColor + '15' }\n ]}\n onPress={() => handleSelect(chain)}\n activeOpacity={0.7}\n >\n <View style={[styles.chainIconBg, { backgroundColor: chainInfo.color + '20' }]}>\n <Text style={[styles.chainIcon, { color: chainInfo.color }]}>{chainInfo.icon}</Text>\n </View>\n <Text style={[\n styles.chainText,\n isSelected && { color: accentColor, fontWeight: '600' }\n ]}>\n {chainInfo.name}\n </Text>\n {isSelected && (\n <Text style={[styles.checkmark, { color: accentColor }]}>✓</Text>\n )}\n </TouchableOpacity>\n );\n })}\n </View>\n\n {multiSelect && selectedChains.length > 0 && (\n <View style={styles.selectedInfo}>\n <Text style={styles.selectedText}>\n {selectedChains.length} chain{selectedChains.length > 1 ? 's' : ''} selected\n </Text>\n </View>\n )}\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n marginBottom: 16,\n },\n title: {\n fontSize: 16,\n fontWeight: '600',\n color: '#1a1a1a',\n marginBottom: 4,\n },\n subtitle: {\n fontSize: 12,\n color: '#666',\n marginBottom: 12,\n },\n chainsContainer: {\n flexDirection: 'row',\n flexWrap: 'wrap',\n gap: 8,\n },\n chainChip: {\n flexDirection: 'row',\n alignItems: 'center',\n paddingHorizontal: 12,\n paddingVertical: 8,\n backgroundColor: '#fff',\n borderRadius: 12,\n borderWidth: 2,\n borderColor: '#e5e5e5',\n gap: 8,\n },\n chainChipSelected: {\n borderWidth: 2,\n },\n chainIconBg: {\n width: 28,\n height: 28,\n borderRadius: 14,\n alignItems: 'center',\n justifyContent: 'center',\n },\n chainIcon: {\n fontSize: 14,\n fontWeight: '700',\n },\n chainText: {\n fontSize: 14,\n color: '#666',\n },\n checkmark: {\n fontSize: 16,\n fontWeight: '700',\n },\n selectedInfo: {\n marginTop: 8,\n paddingVertical: 4,\n },\n selectedText: {\n fontSize: 12,\n color: '#888',\n },\n});\n","/**\n * OneTierSelector - Investment tier selection component for AI trading\n * Part of ONE Ecosystem SDK - can be used by any ecosystem partner\n */\n\nimport React from 'react';\nimport { View, Text, StyleSheet, TouchableOpacity, ViewStyle, TextStyle } from 'react-native';\n\nexport interface Tier {\n tier: number;\n amount: number;\n label: string;\n label_zh?: string;\n}\n\nexport interface OneTierSelectorProps {\n /** Available investment tiers */\n tiers: Tier[];\n /** Currently selected tier */\n selectedTier: Tier | null;\n /** Callback when tier selection changes */\n onSelectTier: (tier: Tier) => void;\n /** Accent color for selected state */\n accentColor?: string;\n /** Section title */\n title?: string;\n /** Section subtitle */\n subtitle?: string;\n /** Show recommended badge on middle tier */\n showRecommended?: boolean;\n /** Recommended label text */\n recommendedLabel?: string;\n /** Use Chinese labels */\n useZhLabels?: boolean;\n /** Custom styles */\n style?: ViewStyle;\n /** Custom title style */\n titleStyle?: TextStyle;\n}\n\nexport const OneTierSelector: React.FC<OneTierSelectorProps> = ({\n tiers,\n selectedTier,\n onSelectTier,\n accentColor = '#188775',\n title,\n subtitle,\n showRecommended = true,\n recommendedLabel = 'Recommended',\n useZhLabels = false,\n style,\n titleStyle,\n}) => {\n // Middle tier is usually recommended\n const recommendedTierIndex = Math.floor(tiers.length / 2);\n\n return (\n <View style={[styles.container, style]}>\n {title && <Text style={[styles.title, titleStyle]}>{title}</Text>}\n {subtitle && <Text style={styles.subtitle}>{subtitle}</Text>}\n\n <View style={styles.tiersContainer}>\n {tiers.map((tier, index) => {\n const isSelected = selectedTier?.tier === tier.tier;\n const isRecommended = showRecommended && index === recommendedTierIndex;\n\n return (\n <TouchableOpacity\n key={tier.tier}\n style={[\n styles.tierCard,\n isSelected && styles.tierCardSelected,\n isSelected && { borderColor: accentColor }\n ]}\n onPress={() => onSelectTier(tier)}\n activeOpacity={0.7}\n >\n {isRecommended && (\n <View style={[styles.recommendedBadge, { backgroundColor: accentColor }]}>\n <Text style={styles.recommendedText}>{recommendedLabel}</Text>\n </View>\n )}\n\n <Text style={[\n styles.tierLabel,\n isSelected && { color: accentColor },\n isRecommended && styles.tierLabelWithBadge\n ]}>\n {useZhLabels && tier.label_zh ? tier.label_zh : tier.label}\n </Text>\n\n <Text style={[\n styles.tierAmount,\n isSelected && { color: accentColor }\n ]}>\n ${tier.amount.toLocaleString()}\n </Text>\n\n {isSelected && (\n <View style={[styles.checkCircle, { backgroundColor: accentColor }]}>\n <Text style={styles.checkmark}>✓</Text>\n </View>\n )}\n </TouchableOpacity>\n );\n })}\n </View>\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n marginBottom: 16,\n },\n title: {\n fontSize: 16,\n fontWeight: '600',\n color: '#1a1a1a',\n marginBottom: 4,\n },\n subtitle: {\n fontSize: 12,\n color: '#666',\n marginBottom: 12,\n },\n tiersContainer: {\n flexDirection: 'row',\n gap: 8,\n },\n tierCard: {\n flex: 1,\n padding: 16,\n backgroundColor: '#fff',\n borderRadius: 12,\n borderWidth: 2,\n borderColor: '#e5e5e5',\n alignItems: 'center',\n position: 'relative',\n overflow: 'hidden',\n },\n tierCardSelected: {\n backgroundColor: '#fff',\n },\n tierLabel: {\n fontSize: 12,\n color: '#666',\n marginBottom: 4,\n },\n tierLabelWithBadge: {\n marginTop: 16,\n },\n tierAmount: {\n fontSize: 20,\n fontWeight: '700',\n color: '#1a1a1a',\n },\n checkCircle: {\n position: 'absolute',\n top: -8,\n right: -8,\n width: 28,\n height: 28,\n borderRadius: 14,\n alignItems: 'center',\n justifyContent: 'center',\n },\n checkmark: {\n fontSize: 14,\n fontWeight: '700',\n color: '#fff',\n },\n recommendedBadge: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n paddingVertical: 4,\n alignItems: 'center',\n },\n recommendedText: {\n fontSize: 10,\n fontWeight: '700',\n color: '#fff',\n textTransform: 'uppercase',\n },\n});\n","/**\n * OneCycleSelector - Investment cycle selection component for AI trading\n * Part of ONE Ecosystem SDK - can be used by any ecosystem partner\n */\n\nimport React from 'react';\nimport { View, Text, StyleSheet, TouchableOpacity, ViewStyle, TextStyle } from 'react-native';\n\n// Default share rates by cycle (platform takes this percentage)\nexport const DEFAULT_SHARE_RATES: Record<number, number> = {\n 7: 25,\n 14: 22,\n 30: 18,\n 60: 15,\n 90: 12,\n};\n\nexport interface OneCycleSelectorProps {\n /** List of supported cycle days */\n supportedCycles: number[];\n /** Currently selected cycle */\n selectedCycle: number;\n /** Callback when cycle selection changes */\n onSelectCycle: (cycle: number) => void;\n /** Accent color for selected state */\n accentColor?: string;\n /** Section title */\n title?: string;\n /** Section subtitle */\n subtitle?: string;\n /** Custom share rates by cycle (overrides defaults) */\n shareRates?: Record<number, number>;\n /** Days label */\n daysLabel?: string;\n /** Your share label */\n yourShareLabel?: string;\n /** Platform fee label */\n platformFeeLabel?: string;\n /** Custom styles */\n style?: ViewStyle;\n /** Custom title style */\n titleStyle?: TextStyle;\n}\n\nexport const OneCycleSelector: React.FC<OneCycleSelectorProps> = ({\n supportedCycles,\n selectedCycle,\n onSelectCycle,\n accentColor = '#188775',\n title,\n subtitle,\n shareRates = DEFAULT_SHARE_RATES,\n daysLabel = 'days',\n yourShareLabel = 'Your share',\n platformFeeLabel = 'Platform fee',\n style,\n titleStyle,\n}) => {\n return (\n <View style={[styles.container, style]}>\n {title && <Text style={[styles.title, titleStyle]}>{title}</Text>}\n {subtitle && <Text style={styles.subtitle}>{subtitle}</Text>}\n\n <View style={styles.cyclesContainer}>\n {supportedCycles.map((cycle) => {\n const isSelected = selectedCycle === cycle;\n const shareRate = shareRates[cycle] || 20;\n const userRate = 100 - shareRate;\n\n return (\n <TouchableOpacity\n key={cycle}\n style={[\n styles.cycleOption,\n isSelected && styles.cycleOptionSelected,\n isSelected && { borderColor: accentColor, backgroundColor: accentColor + '10' }\n ]}\n onPress={() => onSelectCycle(cycle)}\n activeOpacity={0.7}\n >\n <Text style={[\n styles.cycleDays,\n isSelected && { color: accentColor }\n ]}>\n {cycle}\n </Text>\n <Text style={styles.cycleDaysLabel}>{daysLabel}</Text>\n\n <View style={styles.cycleEarnings}>\n <Text style={[\n styles.cycleEarningsValue,\n isSelected && { color: accentColor }\n ]}>\n {userRate}%\n </Text>\n <Text style={styles.cycleEarningsLabel}>{yourShareLabel}</Text>\n </View>\n\n <Text style={styles.cycleFee}>\n {shareRate}% {platformFeeLabel}\n </Text>\n </TouchableOpacity>\n );\n })}\n </View>\n\n <View style={styles.infoBox}>\n <Text style={styles.infoText}>\n Longer cycles = higher user share\n </Text>\n </View>\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n marginBottom: 16,\n },\n title: {\n fontSize: 16,\n fontWeight: '600',\n color: '#1a1a1a',\n marginBottom: 4,\n },\n subtitle: {\n fontSize: 12,\n color: '#666',\n marginBottom: 12,\n },\n cyclesContainer: {\n flexDirection: 'row',\n flexWrap: 'wrap',\n gap: 8,\n },\n cycleOption: {\n flex: 1,\n minWidth: '45%',\n padding: 16,\n borderRadius: 12,\n borderWidth: 2,\n borderColor: '#e5e5e5',\n backgroundColor: '#fff',\n alignItems: 'center',\n },\n cycleOptionSelected: {\n borderWidth: 2,\n },\n cycleDays: {\n fontSize: 28,\n fontWeight: '700',\n color: '#1a1a1a',\n },\n cycleDaysLabel: {\n fontSize: 12,\n color: '#666',\n marginBottom: 8,\n },\n cycleEarnings: {\n alignItems: 'center',\n },\n cycleEarningsValue: {\n fontSize: 18,\n fontWeight: '700',\n color: '#10B981',\n },\n cycleEarningsLabel: {\n fontSize: 11,\n color: '#666',\n },\n cycleFee: {\n fontSize: 11,\n color: '#888',\n marginTop: 4,\n },\n infoBox: {\n marginTop: 12,\n padding: 8,\n backgroundColor: '#f5f5f5',\n borderRadius: 8,\n },\n infoText: {\n fontSize: 12,\n color: '#666',\n textAlign: 'center',\n },\n});\n","/**\n * OnePairSelector - Trading pair selection component for AI trading\n * Part of ONE Ecosystem SDK - can be used by any ecosystem partner\n */\n\nimport React from 'react';\nimport { View, Text, StyleSheet, TouchableOpacity, ViewStyle, TextStyle } from 'react-native';\n\n// Common trading pairs with icons\nexport const PAIR_ICONS: Record<string, string> = {\n 'BTC/USDT': '₿',\n 'ETH/USDT': 'Ξ',\n 'SOL/USDT': '◎',\n 'BNB/USDT': '◆',\n 'XRP/USDT': '✕',\n 'DOGE/USDT': 'Ð',\n 'ADA/USDT': '◈',\n 'AVAX/USDT': '▲',\n 'DOT/USDT': '●',\n 'MATIC/USDT': '⬡',\n 'LINK/USDT': '◇',\n 'UNI/USDT': '🦄',\n 'ATOM/USDT': '⚛',\n 'LTC/USDT': 'Ł',\n 'ARB/USDT': '◆',\n 'OP/USDT': '◉',\n};\n\nexport interface OnePairSelectorProps {\n /** List of supported trading pairs */\n supportedPairs: string[];\n /** Currently selected pairs */\n selectedPairs: string[];\n /** Callback when pair selection changes */\n onTogglePair: (pair: string) => void;\n /** Accent color for selected state */\n accentColor?: string;\n /** Section title */\n title?: string;\n /** Section subtitle */\n subtitle?: string;\n /** Minimum required selections */\n minSelections?: number;\n /** Maximum allowed selections (0 = unlimited) */\n maxSelections?: number;\n /** Custom styles */\n style?: ViewStyle;\n /** Custom title style */\n titleStyle?: TextStyle;\n}\n\nexport const OnePairSelector: React.FC<OnePairSelectorProps> = ({\n supportedPairs,\n selectedPairs,\n onTogglePair,\n accentColor = '#188775',\n title,\n subtitle,\n minSelections = 1,\n maxSelections = 0,\n style,\n titleStyle,\n}) => {\n const handleToggle = (pair: string) => {\n const isSelected = selectedPairs.includes(pair);\n\n // Prevent deselecting below minimum\n if (isSelected && selectedPairs.length <= minSelections) {\n return;\n }\n\n // Prevent selecting above maximum\n if (!isSelected && maxSelections > 0 && selectedPairs.length >= maxSelections) {\n return;\n }\n\n onTogglePair(pair);\n };\n\n return (\n <View style={[styles.container, style]}>\n {title && <Text style={[styles.title, titleStyle]}>{title}</Text>}\n {subtitle && <Text style={styles.subtitle}>{subtitle}</Text>}\n\n <View style={styles.pairsContainer}>\n {supportedPairs.map((pair) => {\n const isSelected = selectedPairs.includes(pair);\n const icon = PAIR_ICONS[pair] || '●';\n const baseSymbol = pair.split('/')[0];\n\n return (\n <TouchableOpacity\n key={pair}\n style={[\n styles.pairChip,\n isSelected && styles.pairChipSelected,\n isSelected && { backgroundColor: accentColor + '15', borderColor: accentColor }\n ]}\n onPress={() => handleToggle(pair)}\n activeOpacity={0.7}\n >\n <Text style={styles.pairIcon}>{icon}</Text>\n <Text style={[\n styles.pairText,\n isSelected && { color: accentColor, fontWeight: '600' }\n ]}>\n {baseSymbol}\n </Text>\n {isSelected && (\n <Text style={[styles.checkmark, { color: accentColor }]}>✓</Text>\n )}\n </TouchableOpacity>\n );\n })}\n </View>\n\n <View style={styles.selectedInfo}>\n <Text style={styles.selectedText}>\n {selectedPairs.length} pair{selectedPairs.length !== 1 ? 's' : ''} selected\n {minSelections > 0 && ` (min: ${minSelections})`}\n {maxSelections > 0 && ` (max: ${maxSelections})`}\n </Text>\n </View>\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n marginBottom: 16,\n },\n title: {\n fontSize: 16,\n fontWeight: '600',\n color: '#1a1a1a',\n marginBottom: 4,\n },\n subtitle: {\n fontSize: 12,\n color: '#666',\n marginBottom: 12,\n },\n pairsContainer: {\n flexDirection: 'row',\n flexWrap: 'wrap',\n gap: 8,\n },\n pairChip: {\n flexDirection: 'row',\n alignItems: 'center',\n paddingHorizontal: 12,\n paddingVertical: 8,\n backgroundColor: '#fff',\n borderRadius: 8,\n borderWidth: 1,\n borderColor: '#e5e5e5',\n gap: 6,\n },\n pairChipSelected: {\n borderWidth: 2,\n },\n pairIcon: {\n fontSize: 14,\n },\n pairText: {\n fontSize: 14,\n color: '#666',\n },\n checkmark: {\n fontSize: 14,\n fontWeight: '700',\n },\n selectedInfo: {\n marginTop: 8,\n paddingVertical: 4,\n },\n selectedText: {\n fontSize: 12,\n color: '#888',\n },\n});\n","/**\n * OneForexPoolCard - Displays a forex liquidity pool with metrics\n * Part of ONE Ecosystem SDK\n */\n\nimport React from 'react';\nimport { View, Text, StyleSheet, ViewStyle } from 'react-native';\nimport type { ForexPool } from '../../types/forex';\n\nexport interface OneForexPoolCardProps {\n /** Pool data object */\n pool: ForexPool;\n /** Pool display name (provide translated string) */\n poolName?: string;\n /** Whether to show enhanced metrics (APY, flow, tx count) */\n showMetrics?: boolean;\n /** Custom accent color override */\n accentColor?: string;\n /** Custom container style */\n style?: ViewStyle;\n /** Dark mode */\n dark?: boolean;\n}\n\nexport const OneForexPoolCard: React.FC<OneForexPoolCardProps> = ({\n pool,\n poolName,\n showMetrics = true,\n accentColor,\n style,\n dark = true,\n}) => {\n const color = accentColor || pool.color;\n const bg = dark ? '#111111' : '#ffffff';\n const border = dark ? '#1a1a1a' : '#e5e5e5';\n const textPrimary = dark ? '#ffffff' : '#1a1a1a';\n const textSecondary = dark ? '#9ca3af' : '#666666';\n const textMuted = dark ? '#666666' : '#999999';\n const barBg = dark ? '#1a1a1a' : '#e5e5e5';\n\n return (\n <View style={[styles.container, { backgroundColor: bg, borderColor: border }, style]}>\n <View style={styles.header}>\n <View style={[styles.dot, { backgroundColor: color }]} />\n <Text style={[styles.name, { color: textPrimary }]}>\n {poolName || pool.nameKey}\n </Text>\n <Text style={[styles.alloc, { color: textSecondary }]}>\n {(pool.allocation * 100).toFixed(0)}%\n </Text>\n </View>\n\n <View style={[styles.barOuter, { backgroundColor: barBg }]}>\n <View style={[styles.barFill, { width: `${pool.utilization * 100}%`, backgroundColor: color }]} />\n </View>\n\n <View style={styles.statsRow}>\n <Text style={[styles.statValue, { color: textSecondary }]}>\n ${(pool.totalSize / 1_000_000).toFixed(1)}M\n </Text>\n <Text style={[styles.statLabel, { color: textMuted }]}>\n {(pool.utilization * 100).toFixed(1)}% util\n </Text>\n </View>\n\n {showMetrics && (\n <View style={[styles.metricsRow, { borderTopColor: border }]}>\n <View style={styles.metricItem}>\n <Text style={[styles.metricLabel, { color: textMuted }]}>APY 7d</Text>\n <Text style={[styles.metricValue, { color: '#10B981' }]}>\n {pool.apy7d.toFixed(1)}%\n </Text>\n </View>\n <View style={styles.metricItem}>\n <Text style={[styles.metricLabel, { color: textMuted }]}>24h Flow</Text>\n <Text style={[styles.metricValue, { color: pool.netFlow24h >= 0 ? '#10B981' : '#EF4444' }]}>\n {pool.netFlow24h >= 0 ? '+' : ''}${(pool.netFlow24h / 1000).toFixed(0)}K\n </Text>\n </View>\n <View style={styles.metricItem}>\n <Text style={[styles.metricLabel, { color: textMuted }]}>Txs</Text>\n <Text style={[styles.metricValue, { color: textPrimary }]}>{pool.txCount24h}</Text>\n </View>\n </View>\n )}\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: { borderRadius: 8, borderWidth: 1, padding: 14 },\n header: { flexDirection: 'row', alignItems: 'center', marginBottom: 8, gap: 8 },\n dot: { width: 8, height: 8, borderRadius: 4 },\n name: { fontSize: 13, fontWeight: '600', flex: 1 },\n alloc: { fontSize: 12 },\n barOuter: { height: 6, borderRadius: 3, overflow: 'hidden', marginBottom: 6 },\n barFill: { height: '100%', borderRadius: 3 },\n statsRow: { flexDirection: 'row', justifyContent: 'space-between' },\n statValue: { fontSize: 12, fontWeight: '600' },\n statLabel: { fontSize: 11 },\n metricsRow: { flexDirection: 'row', justifyContent: 'space-between', paddingTop: 8, marginTop: 8, borderTopWidth: 1 },\n metricItem: { alignItems: 'center', flex: 1 },\n metricLabel: { fontSize: 9, textTransform: 'uppercase', letterSpacing: 0.5, marginBottom: 2 },\n metricValue: { fontSize: 12, fontWeight: '600' },\n});\n","// ══════════════════════════════════════════════════════════════════════════════\n// ONE SDK - StableFX On-Chain Forex Types & Constants\n// Shared types for stablecoin foreign exchange pool trading\n// ══════════════════════════════════════════════════════════════════════════════\n\n// ── Capital Split ────────────────────────────────────────────────────────────\n\nexport const FOREX_CAPITAL_SPLIT = {\n poolReserves: 0.50,\n tradingCapital: 0.50,\n} as const;\n\nexport function computePoolAllocations(amount: number): {\n tradingCapital: number;\n totalPoolReserves: number;\n clearing: number;\n hedging: number;\n insurance: number;\n} {\n const totalPoolReserves = amount * FOREX_CAPITAL_SPLIT.poolReserves;\n const tradingCapital = amount * FOREX_CAPITAL_SPLIT.tradingCapital;\n return {\n tradingCapital,\n totalPoolReserves,\n clearing: totalPoolReserves * 0.50,\n hedging: totalPoolReserves * 0.30,\n insurance: totalPoolReserves * 0.20,\n };\n}\n\n// ── Cycle Options ────────────────────────────────────────────────────────────\n\nexport interface ForexCycleOption {\n days: number;\n feeRate: number;\n commissionRate: number;\n label: string;\n}\n\nexport const FOREX_CYCLE_OPTIONS: ForexCycleOption[] = [\n { days: 30, feeRate: 0.10, commissionRate: 0.60, label: '30D' },\n { days: 60, feeRate: 0.08, commissionRate: 0.70, label: '60D' },\n { days: 90, feeRate: 0.07, commissionRate: 0.75, label: '90D' },\n { days: 180, feeRate: 0.05, commissionRate: 0.85, label: '180D' },\n { days: 360, feeRate: 0.03, commissionRate: 0.90, label: '360D' },\n];\n\n// ── Currency Pairs ───────────────────────────────────────────────────────────\n\nexport interface ForexCurrencyPair {\n id: string;\n base: string;\n quote: string;\n symbol: string;\n flag: string;\n name: string;\n basePrice: number;\n pipSize: number;\n spreadPips: number;\n}\n\nexport const FOREX_CURRENCY_PAIRS: ForexCurrencyPair[] = [\n { id: 'USDC_EURC', base: 'USDC', quote: 'EURC', symbol: 'USDC/EURC', flag: '\\u{1F1EA}\\u{1F1FA}', name: 'Euro', basePrice: 0.9230, pipSize: 0.0001, spreadPips: 1.2 },\n { id: 'USDC_GBPC', base: 'USDC', quote: 'GBPC', symbol: 'USDC/GBPC', flag: '\\u{1F1EC}\\u{1F1E7}', name: 'British Pound', basePrice: 0.7890, pipSize: 0.0001, spreadPips: 1.5 },\n { id: 'USDC_JPYC', base: 'USDC', quote: 'JPYC', symbol: 'USDC/JPYC', flag: '\\u{1F1EF}\\u{1F1F5}', name: 'Japanese Yen', basePrice: 154.50, pipSize: 0.01, spreadPips: 1.0 },\n { id: 'USDC_AUDC', base: 'USDC', quote: 'AUDC', symbol: 'USDC/AUDC', flag: '\\u{1F1E6}\\u{1F1FA}', name: 'Australian Dollar', basePrice: 1.5380, pipSize: 0.0001, spreadPips: 1.8 },\n { id: 'USDC_CADC', base: 'USDC', quote: 'CADC', symbol: 'USDC/CADC', flag: '\\u{1F1E8}\\u{1F1E6}', name: 'Canadian Dollar', basePrice: 1.3640, pipSize: 0.0001, spreadPips: 1.5 },\n { id: 'USDC_CHFC', base: 'USDC', quote: 'CHFC', symbol: 'USDC/CHFC', flag: '\\u{1F1E8}\\u{1F1ED}', name: 'Swiss Franc', basePrice: 0.8750, pipSize: 0.0001, spreadPips: 1.3 },\n];\n\n// ── Pools ────────────────────────────────────────────────────────────────────\n\nexport type ForexPoolType = 'clearing' | 'hedging' | 'insurance';\n\nexport interface ForexPool {\n id: ForexPoolType;\n nameKey: string;\n descriptionKey: string;\n allocation: number;\n totalSize: number;\n utilization: number;\n color: string;\n apy7d: number;\n apy30d: number;\n netFlow24h: number;\n txCount24h: number;\n txCountTotal: number;\n totalDeposits: number;\n totalWithdrawals: number;\n profitDistributed: number;\n lastUpdated: number;\n}\n\nexport const FOREX_POOL_DEFAULTS: ForexPool[] = [\n { id: 'clearing', nameKey: 'forex.pool_clearing', descriptionKey: 'forex.pool_clearing_desc', allocation: 0.50, totalSize: 12500000, utilization: 0.78, color: '#3B82F6', apy7d: 12.8, apy30d: 11.5, netFlow24h: 185000, txCount24h: 42, txCountTotal: 12840, totalDeposits: 45200000, totalWithdrawals: 32700000, profitDistributed: 1850000, lastUpdated: Date.now() },\n { id: 'hedging', nameKey: 'forex.pool_hedging', descriptionKey: 'forex.pool_hedging_desc', allocation: 0.30, totalSize: 7500000, utilization: 0.65, color: '#F59E0B', apy7d: 8.1, apy30d: 7.6, netFlow24h: 72000, txCount24h: 24, txCountTotal: 7620, totalDeposits: 28500000, totalWithdrawals: 21000000, profitDistributed: 980000, lastUpdated: Date.now() },\n { id: 'insurance', nameKey: 'forex.pool_insurance', descriptionKey: 'forex.pool_insurance_desc', allocation: 0.20, totalSize: 5000000, utilization: 0.42, color: '#10B981', apy7d: 4.8, apy30d: 4.5, netFlow24h: 35000, txCount24h: 14, txCountTotal: 4280, totalDeposits: 15800000, totalWithdrawals: 10800000, profitDistributed: 520000, lastUpdated: Date.now() },\n];\n\n// ── Pool Transactions ────────────────────────────────────────────────────────\n\nexport type ForexPoolTransactionType =\n | 'deposit' | 'withdrawal' | 'profit_distribution'\n | 'loss_absorption' | 'inter_pool_transfer' | 'fee_collection' | 'reserve_rebalance';\n\nexport interface ForexPoolTransaction {\n id: string;\n poolId: ForexPoolType;\n type: ForexPoolTransactionType;\n amount: number;\n balanceBefore: number;\n balanceAfter: number;\n txHash: string;\n blockNumber: number;\n timestamp: number;\n description: string;\n}\n\n// ── Pool Daily Snapshots ────────────────────────────────────────────────────\n\nexport interface ForexPoolDailySnapshot {\n poolId: ForexPoolType;\n date: string;\n openBalance: number;\n closeBalance: number;\n deposits: number;\n withdrawals: number;\n netFlow: number;\n dailyPnl: number;\n dailyPnlPct: number;\n cumulativePnl: number;\n utilization: number;\n txCount: number;\n activeUsers: number;\n}\n\n// ── Positions ────────────────────────────────────────────────────────────────\n\nexport interface ForexPosition {\n id: string;\n pairId: string;\n side: 'BUY' | 'SELL';\n lots: number;\n pips: number;\n entryPrice: number;\n currentPrice: number;\n pnl: number;\n openTime: number;\n}\n\n// ── Investment ───────────────────────────────────────────────────────────────\n\nexport interface ForexInvestment {\n id: string;\n userId?: string;\n amount: number;\n currentValue: number;\n profit: number;\n status: 'active' | 'completed' | 'pending' | 'redeemed' | 'cancelled';\n selectedPairs: string[];\n cycleDays: number;\n cycleOption: ForexCycleOption;\n feeRate?: number;\n commissionRate?: number;\n startDate: string;\n endDate: string;\n tradingCapital: number;\n totalPoolReserves: number;\n poolAllocations: {\n clearing: number;\n hedging: number;\n insurance: number;\n };\n tradeWeight: number;\n totalLots: number;\n totalPips: number;\n totalTrades: number;\n positions: ForexPosition[];\n tradeHistory: ForexTradeRecord[];\n redeemedAt?: string;\n createdAt?: string;\n updatedAt?: string;\n}\n\n// ── Trade Records ────────────────────────────────────────────────────────────\n\nexport type ForexTradeStatus = 'RFQ' | 'QUOTED' | 'MATCHED' | 'SETTLED' | 'FAILED';\n\nexport interface ForexTradeRecord {\n id: string;\n timestamp: number;\n pairId: string;\n pairSymbol: string;\n side: 'BUY' | 'SELL';\n rfqPrice: number;\n quotePrice: number;\n matchPrice: number;\n settlePrice: number;\n lots: number;\n pips: number;\n pnl: number;\n status: ForexTradeStatus;\n pvpSettled: boolean;\n clearingFee?: number;\n hedgingCost?: number;\n insuranceReserve?: number;\n txHash?: string;\n blockNumber?: number;\n cycleDay?: number;\n cumulativePnl?: number;\n}\n\n// ── Console Log Types ────────────────────────────────────────────────────────\n\nexport type ForexLogType =\n | 'RFQ' | 'QUOTE' | 'MATCH' | 'SETTLE' | 'PVP'\n | 'HEDGE' | 'CLEAR' | 'POSITION' | 'PNL' | 'SYSTEM';\n\nexport interface ForexLogEntry {\n id: string;\n timestamp: number;\n type: ForexLogType;\n message: string;\n data?: Record<string, any>;\n importance: 'low' | 'medium' | 'high';\n pairId?: string;\n}\n\n// ── Agent ────────────────────────────────────────────────────────────────────\n\nexport interface ForexAgent {\n id: string;\n nameKey: string;\n descriptionKey: string;\n icon: string;\n color: string;\n supportedPairs: string[];\n dailyRoiMin: number;\n dailyRoiMax: number;\n totalManaged: number;\n totalUsers: number;\n winRate: number;\n}\n\nexport const FOREX_AGENT: ForexAgent = {\n id: 'stablefx-01',\n nameKey: 'forex.agent_name',\n descriptionKey: 'forex.agent_description',\n icon: '\\u{1F4B1}',\n color: '#0EA5E9',\n supportedPairs: FOREX_CURRENCY_PAIRS.map(p => p.id),\n dailyRoiMin: 0.002,\n dailyRoiMax: 0.005,\n totalManaged: 25000000,\n totalUsers: 3847,\n winRate: 72.5,\n};\n\n// ── Profit Calculation ───────────────────────────────────────────────────────\n\nexport function calculateForexNetProfit(\n grossProfit: number,\n cycleOption: ForexCycleOption,\n): { feeAmount: number; postFeeProfit: number; netProfit: number } {\n const feeAmount = grossProfit * cycleOption.feeRate;\n const postFeeProfit = grossProfit - feeAmount;\n const netProfit = postFeeProfit * cycleOption.commissionRate;\n return { feeAmount, postFeeProfit, netProfit };\n}\n\nexport function estimateForexProfit(\n amount: number,\n cycleDays: number,\n agent: ForexAgent = FOREX_AGENT,\n): { grossProfit: number; feeAmount: number; netProfit: number; dailyRate: number } {\n const cycleOption = FOREX_CYCLE_OPTIONS.find(c => c.days === cycleDays) || FOREX_CYCLE_OPTIONS[0];\n const estimatedApy = ((agent.dailyRoiMin + agent.dailyRoiMax) / 2) * 365 * 100;\n const dailyRate = estimatedApy / 100 / 365;\n const grossProfit = amount * dailyRate * cycleDays;\n const { feeAmount, netProfit } = calculateForexNetProfit(grossProfit, cycleOption);\n return { grossProfit, feeAmount, netProfit, dailyRate };\n}\n","/**\n * OneForexCapitalSplit - Displays 50/50 capital allocation split\n * Part of ONE Ecosystem SDK\n */\n\nimport React from 'react';\nimport { View, Text, StyleSheet, ViewStyle } from 'react-native';\nimport { FOREX_CAPITAL_SPLIT, FOREX_POOL_DEFAULTS, computePoolAllocations } from '../../types/forex';\n\nexport interface OneForexCapitalSplitProps {\n /** Total investment amount */\n amount: number;\n /** Labels (provide translated strings) */\n labels?: {\n title?: string;\n tradingCapital?: string;\n poolReserves?: string;\n clearing?: string;\n hedging?: string;\n insurance?: string;\n };\n /** Show pool breakdown within reserves */\n showPoolBreakdown?: boolean;\n /** Custom container style */\n style?: ViewStyle;\n /** Dark mode */\n dark?: boolean;\n}\n\nexport const OneForexCapitalSplit: React.FC<OneForexCapitalSplitProps> = ({\n amount,\n labels = {},\n showPoolBreakdown = true,\n style,\n dark = false,\n}) => {\n const allocs = computePoolAllocations(amount);\n const bg = dark ? '#111111' : '#ffffff';\n const border = dark ? '#1a1a1a' : '#e5e5e5';\n const textPrimary = dark ? '#ffffff' : '#1a1a1a';\n const textSecondary = dark ? '#9ca3af' : '#666666';\n const itemBg = dark ? '#0a0a0a' : '#f5f5f5';\n\n return (\n <View style={[styles.container, { backgroundColor: bg, borderColor: border }, style]}>\n {labels.title && <Text style={[styles.title, { color: textPrimary }]}>{labels.title}</Text>}\n\n <View style={styles.splitRow}>\n <View style={[styles.splitItem, { backgroundColor: itemBg }]}>\n <View style={[styles.dot, { backgroundColor: '#0EA5E9' }]} />\n <Text style={[styles.splitLabel, { color: textSecondary }]}>\n {labels.tradingCapital || 'Active Trading (RFQ)'}\n </Text>\n <Text style={[styles.splitPct, { color: textSecondary }]}>50%</Text>\n <Text style={[styles.splitAmt, { color: textPrimary }]}>\n ${allocs.tradingCapital.toLocaleString()}\n </Text>\n </View>\n <View style={[styles.splitItem, { backgroundColor: itemBg }]}>\n <View style={[styles.dot, { backgroundColor: '#8B5CF6' }]} />\n <Text style={[styles.splitLabel, { color: textSecondary }]}>\n {labels.poolReserves || 'Pool Reserves'}\n </Text>\n <Text style={[styles.splitPct, { color: textSecondary }]}>50%</Text>\n <Text style={[styles.splitAmt, { color: textPrimary }]}>\n ${allocs.totalPoolReserves.toLocaleString()}\n </Text>\n </View>\n </View>\n\n {showPoolBreakdown && amount > 0 && (\n <View style={[styles.breakdown, { borderTopColor: border }]}>\n {FOREX_POOL_DEFAULTS.map(pool => {\n const poolAmt = allocs[pool.id as keyof typeof allocs] as number;\n return (\n <View key={pool.id} style={styles.poolRow}>\n <View style={[styles.poolDot, { backgroundColor: pool.color }]} />\n <Text style={[styles.poolName, { color: textSecondary }]}>\n {(labels as any)?.[pool.id] || pool.nameKey}\n </Text>\n <View style={[styles.poolBar, { backgroundColor: dark ? '#1a1a1a' : '#e5e5e5' }]}>\n <View style={[styles.poolBarFill, { width: `${pool.allocation * 100}%`, backgroundColor: pool.color }]} />\n </View>\n <Text style={[styles.poolAmt, { color: textPrimary }]}>\n ${poolAmt.toLocaleString()}\n </Text>\n </View>\n );\n })}\n </View>\n )}\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: { borderRadius: 8, borderWidth: 1, padding: 14 },\n title: { fontSize: 14, fontWeight: '600', marginBottom: 12 },\n splitRow: { gap: 8 },\n splitItem: { flexDirection: 'row', alignItems: 'center', paddingVertical: 10, paddingHorizontal: 12, borderRadius: 8 },\n dot: { width: 10, height: 10, borderRadius: 5, marginRight: 8 },\n splitLabel: { flex: 1, fontSize: 13, fontWeight: '500' },\n splitPct: { fontSize: 12, fontWeight: '600', marginRight: 12 },\n splitAmt: { fontSize: 14, fontWeight: '700' },\n breakdown: { marginTop: 12, paddingTop: 12, borderTopWidth: 1 },\n poolRow: { flexDirection: 'row', alignItems: 'center', marginBottom: 8 },\n poolDot: { width: 8, height: 8, borderRadius: 4, marginRight: 8 },\n poolName: { width: 80, fontSize: 12 },\n poolBar: { flex: 1, height: 6, borderRadius: 3, overflow: 'hidden', marginHorizontal: 8 },\n poolBarFill: { height: '100%', borderRadius: 3 },\n poolAmt: { width: 70, fontSize: 12, fontWeight: '600', textAlign: 'right' },\n});\n","// ══════════════════════════════════════════════════════════════════════════════\n// ONE SDK - Trading Console Types & Constants\n// Shared types for real-time trading console components\n// ══════════════════════════════════════════════════════════════════════════════\n\nimport type { BotLogEntry, BotState, StrategyPersonality } from '../services/forex/BotSimulationEngine';\nimport type { ForexLogEntry, ForexPoolTransaction, ForexLogType } from './forex';\n\n// ── Re-exports for convenience ────────────────────────────────────────────────\n\nexport type { BotLogEntry, BotLogType, BotState, IndicatorSnapshot, StrategyPersonality } from '../services/forex/BotSimulationEngine';\n\n// ── Console Log Types ─────────────────────────────────────────────────────────\n\nexport type AILogType =\n | 'SCAN' | 'THINKING' | 'INDICATOR' | 'ANALYSIS' | 'SIGNAL'\n | 'STRATEGY' | 'DECISION' | 'ORDER' | 'FILLED' | 'PNL'\n | 'RISK' | 'NEWS' | 'SYSTEM';\n\nexport const AI_LOG_COLORS: Record<AILogType, string> = {\n SCAN: '#06B6D4', // Cyan\n THINKING: '#A855F7', // Purple\n INDICATOR: '#3B82F6', // Blue\n ANALYSIS: '#6366F1', // Indigo\n SIGNAL: '#F59E0B', // Amber\n STRATEGY: '#D946EF', // Fuchsia\n DECISION: '#F97316', // Orange\n ORDER: '#EC4899', // Pink\n FILLED: '#10B981', // Green\n PNL: '#22C55E', // Emerald\n RISK: '#EF4444', // Red\n NEWS: '#14B8A6', // Teal\n SYSTEM: '#9CA3AF', // Gray\n};\n\n// Forex log type colors (for ForexSimulationEngine logs)\nexport const FOREX_LOG_COLORS: Record<ForexLogType, string> = {\n RFQ: '#06B6D4', // Cyan\n QUOTE: '#8B5CF6', // Purple\n MATCH: '#10B981', // Green\n SETTLE: '#F59E0B', // Amber\n PVP: '#3B82F6', // Blue\n HEDGE: '#EC4899', // Pink\n CLEAR: '#14B8A6', // Teal\n POSITION: '#6366F1', // Indigo\n PNL: '#22C55E', // Emerald\n SYSTEM: '#9CA3AF', // Gray\n};\n\n// ── AI Position Types ─────────────────────────────────────────────────────────\n\nexport type PositionSide = 'LONG' | 'SHORT';\nexport type PositionStatus = 'open' | 'closed' | 'liquidated' | 'pending';\n\nexport interface AIPosition {\n id: string;\n strategyId: string;\n strategyName: string;\n pair: string;\n side: PositionSide;\n entryPrice: number;\n currentPrice: number;\n size: number;\n leverage: number;\n margin: number;\n pnl: number;\n pnlPercent: number;\n status: PositionStatus;\n stopLoss?: number;\n takeProfit?: number;\n liquidationPrice?: number;\n openTime: number;\n closeTime?: number;\n chain?: string;\n orderId?: string;\n aiConfidence?: number;\n aiReasoning?: string;\n}\n\n// ── AI Decision Types ─────────────────────────────────────────────────────────\n\nexport type DecisionAction = 'OPEN_LONG' | 'OPEN_SHORT' | 'CLOSE_LONG' | 'CLOSE_SHORT' | 'HOLD' | 'SKIP';\n\nexport interface AIDecision {\n id: string;\n timestamp: number;\n strategyId: string;\n strategyName: string;\n pair: string;\n action: DecisionAction;\n confidence: number;\n reasoning: string;\n indicators: {\n rsi?: number;\n macd?: number;\n ema?: string;\n volume?: number;\n bollinger?: string;\n };\n signals: string[];\n executed: boolean;\n positionId?: string;\n price?: number;\n size?: number;\n leverage?: number;\n}\n\n// ── Risk Status Types ─────────────────────────────────────────────────────────\n\nexport type RiskLevel = 'low' | 'medium' | 'high' | 'critical';\nexport type TradingStatus = 'active' | 'paused' | 'stopped' | 'cooldown';\n\nexport interface RiskStatus {\n timestamp: number;\n // Portfolio exposure\n totalExposure: number;\n maxExposure: number;\n exposurePercent: number;\n // Daily limits\n dailyPnl: number;\n dailyPnlLimit: number;\n dailyPnlPercent: number;\n dailyTradeCount: number;\n dailyTradeLimit: number;\n // Drawdown\n currentDrawdown: number;\n maxDrawdown: number;\n drawdownPercent: number;\n // Position limits\n openPositions: number;\n maxPositions: number;\n // Risk assessment\n riskLevel: RiskLevel;\n tradingStatus: TradingStatus;\n warnings: string[];\n // Per-strategy risk\n strategyRisks?: Record<string, {\n exposure: number;\n drawdown: number;\n riskLevel: RiskLevel;\n }>;\n}\n\nexport const RISK_LEVEL_COLORS: Record<RiskLevel, { color: string; bgColor: string }> = {\n low: { color: '#10B981', bgColor: '#D1FAE5' },\n medium: { color: '#F59E0B', bgColor: '#FEF3C7' },\n high: { color: '#F97316', bgColor: '#FFEDD5' },\n critical: { color: '#EF4444', bgColor: '#FEE2E2' },\n};\n\nexport const TRADING_STATUS_COLORS: Record<TradingStatus, { color: string; bgColor: string }> = {\n active: { color: '#10B981', bgColor: '#D1FAE5' },\n paused: { color: '#F59E0B', bgColor: '#FEF3C7' },\n stopped: { color: '#EF4444', bgColor: '#FEE2E2' },\n cooldown: { color: '#6366F1', bgColor: '#E0E7FF' },\n};\n\n// ── Console Metrics Types ─────────────────────────────────────────────────────\n\nexport interface ConsoleMetrics {\n // NAV & Performance\n nav: number;\n navChange24h: number;\n navChangePercent24h: number;\n // P&L\n totalPnl: number;\n realizedPnl: number;\n unrealizedPnl: number;\n pnlToday: number;\n pnl7d: number;\n pnl30d: number;\n // Trading stats\n totalTrades: number;\n tradesToday: number;\n winRate: number;\n winCount: number;\n lossCount: number;\n avgWin: number;\n avgLoss: number;\n profitFactor: number;\n // Position stats\n openPositions: number;\n totalExposure: number;\n avgLeverage: number;\n // By strategy\n strategyMetrics?: Record<string, {\n pnl: number;\n trades: number;\n winRate: number;\n exposure: number;\n }>;\n}\n\n// ── Agent Types ───────────────────────────────────────────────────────────────\n\nexport type AgentStatus = 'active' | 'paused' | 'idle' | 'error' | 'initializing';\n\nexport interface AIAgent {\n id: string;\n strategyId: string;\n name: string;\n shortName: string;\n color: string;\n status: AgentStatus;\n // Performance\n totalPnl: number;\n pnlToday: number;\n winRate: number;\n totalTrades: number;\n tradesToday: number;\n // Current state\n currentPair?: string;\n currentPrice?: number;\n lastSignal?: string;\n lastSignalConfidence?: number;\n lastActivity?: number;\n // Positions\n openPositions: number;\n totalExposure: number;\n // Risk\n riskLevel: RiskLevel;\n drawdown: number;\n // Config\n riskTolerance: 'low' | 'medium' | 'high';\n primaryIndicators: string[];\n preferredPairs: string[];\n leverageRange: [number, number];\n}\n\nexport const AGENT_STATUS_COLORS: Record<AgentStatus, { color: string; bgColor: string; label: string }> = {\n active: { color: '#10B981', bgColor: '#D1FAE5', label: 'Active' },\n paused: { color: '#F59E0B', bgColor: '#FEF3C7', label: 'Paused' },\n idle: { color: '#6B7280', bgColor: '#F3F4F6', label: 'Idle' },\n error: { color: '#EF4444', bgColor: '#FEE2E2', label: 'Error' },\n initializing: { color: '#3B82F6', bgColor: '#DBEAFE', label: 'Starting' },\n};\n\n// ── Combined Console State ────────────────────────────────────────────────────\n\nexport interface CombinedLogEntry {\n id: string;\n timestamp: number;\n source: 'ai' | 'forex';\n strategyId?: string;\n strategyName?: string;\n type: string;\n message: string;\n data?: Record<string, any>;\n importance: 'low' | 'medium' | 'high';\n}\n\nexport interface TradingConsoleState {\n ai: {\n strategies: StrategyPersonality[];\n agents: AIAgent[];\n positions: AIPosition[];\n decisions: AIDecision[];\n riskStatus: RiskStatus | null;\n simulationLogs: BotLogEntry[];\n botStates: Map<string, BotState>;\n };\n forex: {\n logs: ForexLogEntry[];\n poolTransactions: ForexPoolTransaction[];\n stats: {\n totalPnl: number;\n totalTrades: number;\n totalPips: number;\n totalLots: number;\n };\n };\n metrics: ConsoleMetrics;\n combinedLogs: CombinedLogEntry[];\n}\n\n// ── Hook Options ──────────────────────────────────────────────────────────────\n\nexport interface TradingConsoleOptions {\n simulation?: boolean;\n pollInterval?: number;\n maxLogs?: number;\n strategyIds?: string[];\n autoStart?: boolean;\n}\n\nexport interface AIQuantConsoleOptions {\n strategyIds?: string[];\n pollInterval?: number;\n simulation?: boolean;\n maxLogs?: number;\n}\n\nexport interface AgentConsoleOptions {\n strategyId: string;\n pollInterval?: number;\n simulation?: boolean;\n maxLogs?: number;\n}\n\n// ── Default Values ────────────────────────────────────────────────────────────\n\nexport const DEFAULT_CONSOLE_OPTIONS: TradingConsoleOptions = {\n simulation: true,\n pollInterval: 5000,\n maxLogs: 500,\n autoStart: false,\n};\n\nexport const DEFAULT_RISK_STATUS: RiskStatus = {\n timestamp: Date.now(),\n totalExposure: 0,\n maxExposure: 100000,\n exposurePercent: 0,\n dailyPnl: 0,\n dailyPnlLimit: 5000,\n dailyPnlPercent: 0,\n dailyTradeCount: 0,\n dailyTradeLimit: 50,\n currentDrawdown: 0,\n maxDrawdown: 15,\n drawdownPercent: 0,\n openPositions: 0,\n maxPositions: 10,\n riskLevel: 'low',\n tradingStatus: 'active',\n warnings: [],\n};\n\nexport const DEFAULT_CONSOLE_METRICS: ConsoleMetrics = {\n nav: 0,\n navChange24h: 0,\n navChangePercent24h: 0,\n totalPnl: 0,\n realizedPnl: 0,\n unrealizedPnl: 0,\n pnlToday: 0,\n pnl7d: 0,\n pnl30d: 0,\n totalTrades: 0,\n tradesToday: 0,\n winRate: 0,\n winCount: 0,\n lossCount: 0,\n avgWin: 0,\n avgLoss: 0,\n profitFactor: 0,\n openPositions: 0,\n totalExposure: 0,\n avgLeverage: 0,\n};\n\n// ── Utility Functions ─────────────────────────────────────────────────────────\n\nexport function calculateRiskLevel(\n exposurePercent: number,\n drawdownPercent: number,\n dailyPnlPercent: number\n): RiskLevel {\n const worstMetric = Math.max(exposurePercent, drawdownPercent, Math.abs(dailyPnlPercent));\n if (worstMetric >= 90) return 'critical';\n if (worstMetric >= 70) return 'high';\n if (worstMetric >= 40) return 'medium';\n return 'low';\n}\n\nexport function formatPnl(pnl: number): string {\n const sign = pnl >= 0 ? '+' : '';\n if (Math.abs(pnl) >= 1000000) {\n return `${sign}$${(pnl / 1000000).toFixed(2)}M`;\n }\n if (Math.abs(pnl) >= 1000) {\n return `${sign}$${(pnl / 1000).toFixed(2)}K`;\n }\n return `${sign}$${pnl.toFixed(2)}`;\n}\n\nexport function formatPercent(value: number, showSign = true): string {\n const sign = showSign && value >= 0 ? '+' : '';\n return `${sign}${value.toFixed(2)}%`;\n}\n","/**\n * OneForexConsoleView - Displays live forex trading console log feed\n * Part of ONE Ecosystem SDK\n */\n\nimport React, { useRef, useEffect } from 'react';\nimport { View, Text, StyleSheet, ScrollView, ViewStyle, Platform } from 'react-native';\nimport type { ForexLogEntry } from '../../types/forex';\nimport { FOREX_LOG_COLORS } from '../../types/console';\n\nconst MONO = Platform.OS === 'ios' ? 'Courier New' : 'monospace';\n\nexport interface OneForexConsoleViewProps {\n /** Array of log entries to display */\n logs: ForexLogEntry[];\n /** Maximum visible entries */\n maxItems?: number;\n /** Auto-scroll to bottom */\n autoScroll?: boolean;\n /** Custom container style */\n style?: ViewStyle;\n /** Console height */\n height?: number;\n}\n\nexport const OneForexConsoleView: React.FC<OneForexConsoleViewProps> = ({\n logs,\n maxItems = 100,\n autoScroll = true,\n style,\n height = 400,\n}) => {\n const scrollRef = useRef<ScrollView>(null);\n const visibleLogs = logs.slice(-maxItems);\n\n useEffect(() => {\n if (autoScroll && scrollRef.current) {\n setTimeout(() => scrollRef.current?.scrollToEnd({ animated: true }), 50);\n }\n }, [logs.length, autoScroll]);\n\n const formatTime = (ts: number) => {\n const d = new Date(ts);\n return `${d.getHours().toString().padStart(2, '0')}:${d.getMinutes().toString().padStart(2, '0')}:${d.getSeconds().toString().padStart(2, '0')}`;\n };\n\n return (\n <View style={[styles.container, { height }, style]}>\n <ScrollView ref={scrollRef} style={styles.scroll} contentContainerStyle={styles.scrollContent}>\n {visibleLogs.map((log) => (\n <View key={log.id} style={styles.logRow}>\n <Text style={styles.timestamp}>{formatTime(log.timestamp)}</Text>\n <Text style={[styles.type, { color: FOREX_LOG_COLORS[log.type] || '#9CA3AF' }]}>\n {log.type.padEnd(8)}\n </Text>\n <Text style={[\n styles.message,\n log.importance === 'high' && styles.messageHigh,\n ]} numberOfLines={2}>\n {log.message}\n </Text>\n </View>\n ))}\n {visibleLogs.length === 0 && (\n <Text style={styles.emptyText}>Waiting for trading activity...</Text>\n )}\n </ScrollView>\n </View>\n );\n};\n\n// Terminal palette – always dark regardless of app theme\nconst T = {\n base: '#0A0A0C',\n border: '#2A2A35',\n muted: '#555560',\n secondary: '#9CA3AF',\n};\n\nconst styles = StyleSheet.create({\n container: { backgroundColor: T.base, borderRadius: 8, borderWidth: 1, borderColor: T.border, overflow: 'hidden' },\n scroll: { flex: 1 },\n scrollContent: { padding: 8 },\n logRow: { flexDirection: 'row', paddingVertical: 3 },\n timestamp: { fontFamily: MONO, fontSize: 10, color: T.muted, width: 60, marginRight: 6 },\n type: { fontFamily: MONO, fontSize: 10, fontWeight: '700', width: 65, marginRight: 6 },\n message: { fontFamily: MONO, fontSize: 10, color: T.secondary, flex: 1 },\n messageHigh: { color: '#ffffff', fontWeight: '600' },\n emptyText: { fontFamily: MONO, fontSize: 11, color: T.muted, textAlign: 'center', paddingVertical: 40 },\n});\n","/**\n * OneForexPairSelector - Stablecoin FX pair selection for forex trading\n * Part of ONE Ecosystem SDK\n */\n\nimport React from 'react';\nimport { View, Text, StyleSheet, TouchableOpacity, ViewStyle } from 'react-native';\nimport { FOREX_CURRENCY_PAIRS } from '../../types/forex';\nimport type { ForexCurrencyPair } from '../../types/forex';\n\nexport interface OneForexPairSelectorProps {\n /** Currently selected pair IDs */\n selectedPairs: string[];\n /** Callback when a pair is toggled */\n onTogglePair: (pairId: string) => void;\n /** Accent color for selected state */\n accentColor?: string;\n /** Section title */\n title?: string;\n /** Section subtitle */\n subtitle?: string;\n /** Custom pairs list (defaults to FOREX_CURRENCY_PAIRS) */\n pairs?: ForexCurrencyPair[];\n /** Custom container style */\n style?: ViewStyle;\n}\n\nexport const OneForexPairSelector: React.FC<OneForexPairSelectorProps> = ({\n selectedPairs,\n onTogglePair,\n accentColor = '#0EA5E9',\n title,\n subtitle,\n pairs = FOREX_CURRENCY_PAIRS,\n style,\n}) => {\n const handleToggle = (pairId: string) => {\n if (selectedPairs.includes(pairId) && selectedPairs.length <= 1) return;\n onTogglePair(pairId);\n };\n\n return (\n <View style={[styles.container, style]}>\n {title && <Text style={styles.title}>{title}</Text>}\n {subtitle && <Text style={styles.subtitle}>{subtitle}</Text>}\n\n <View style={styles.pairGrid}>\n {pairs.map((pair) => {\n const isSelected = selectedPairs.includes(pair.id);\n return (\n <TouchableOpacity\n key={pair.id}\n style={[\n styles.pairBtn,\n isSelected && styles.pairBtnActive,\n isSelected && { borderColor: accentColor, backgroundColor: accentColor + '08' },\n ]}\n onPress={() => handleToggle(pair.id)}\n activeOpacity={0.7}\n >\n <Text style={styles.pairFlag}>{pair.flag}</Text>\n <View style={styles.pairInfo}>\n <Text style={[styles.pairSymbol, isSelected && { color: accentColor, fontWeight: '600' }]}>\n {pair.symbol}\n </Text>\n <Text style={styles.pairName}>{pair.name}</Text>\n </View>\n {isSelected && (\n <Text style={[styles.check, { color: accentColor }]}>{'\\u2713'}</Text>\n )}\n </TouchableOpacity>\n );\n })}\n </View>\n\n <Text style={styles.selectedInfo}>\n {selectedPairs.length} pair{selectedPairs.length !== 1 ? 's' : ''} selected (min: 1)\n </Text>\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: { marginBottom: 16 },\n title: { fontSize: 16, fontWeight: '600', color: '#1a1a1a', marginBottom: 4 },\n subtitle: { fontSize: 12, color: '#666', marginBottom: 12 },\n pairGrid: { gap: 8 },\n pairBtn: {\n flexDirection: 'row', alignItems: 'center',\n paddingHorizontal: 12, paddingVertical: 12,\n borderRadius: 8, borderWidth: 1.5, borderColor: '#e5e5e5',\n backgroundColor: '#fff', gap: 10,\n },\n pairBtnActive: { borderWidth: 2 },\n pairFlag: { fontSize: 20 },\n pairInfo: { flex: 1 },\n pairSymbol: { fontSize: 14, color: '#666' },\n pairName: { fontSize: 11, color: '#999' },\n check: { fontSize: 16, fontWeight: '700' },\n selectedInfo: { fontSize: 12, color: '#888', marginTop: 8 },\n});\n","/**\n * OneForexTradeHistory - Displays trade history with settlement details\n * Part of ONE Ecosystem SDK\n */\n\nimport React from 'react';\nimport { View, Text, StyleSheet, ScrollView, ViewStyle, Platform } from 'react-native';\nimport type { ForexTradeRecord } from '../../types/forex';\n\nconst MONO = Platform.OS === 'ios' ? 'Courier New' : 'monospace';\n\nexport interface OneForexTradeHistoryProps {\n /** Trade records to display */\n trades: ForexTradeRecord[];\n /** Maximum trades to show */\n maxItems?: number;\n /** Show settlement details (clearing/hedging/insurance fees) */\n showSettlementDetails?: boolean;\n /** Show transaction hash */\n showTxHash?: boolean;\n /** Empty state text */\n emptyText?: string;\n /** Custom container style */\n style?: ViewStyle;\n}\n\nexport const OneForexTradeHistory: React.FC<OneForexTradeHistoryProps> = ({\n trades,\n maxItems = 50,\n showSettlementDetails = true,\n showTxHash = true,\n emptyText = 'No trade history yet',\n style,\n}) => {\n const visibleTrades = trades.slice(-maxItems).reverse();\n\n if (visibleTrades.length === 0) {\n return (\n <View style={[styles.empty, style]}>\n <Text style={styles.emptyText}>{emptyText}</Text>\n </View>\n );\n }\n\n return (\n <ScrollView style={[styles.container, style]} contentContainerStyle={styles.scrollContent}>\n {visibleTrades.map((trade) => (\n <View key={trade.id} style={styles.card}>\n <View style={styles.header}>\n <Text style={styles.pair}>{trade.pairSymbol}</Text>\n <View style={[\n styles.sideBadge,\n { backgroundColor: trade.side === 'BUY' ? '#10B98118' : '#EF444418', borderColor: trade.side === 'BUY' ? '#10B98140' : '#EF444440' },\n ]}>\n <Text style={[styles.sideText, { color: trade.side === 'BUY' ? '#10B981' : '#EF4444' }]}>\n {trade.side}\n </Text>\n </View>\n <Text style={[styles.pnl, { color: trade.pnl >= 0 ? '#10B981' : '#EF4444' }]}>\n {trade.pnl >= 0 ? '+' : ''}${trade.pnl.toFixed(2)}\n </Text>\n </View>\n\n <View style={styles.details}>\n <Text style={styles.detail}>\n {trade.lots.toFixed(2)} lots | {trade.pips >= 0 ? '+' : ''}{trade.pips.toFixed(1)} pips\n </Text>\n <Text style={styles.time}>{new Date(trade.timestamp).toLocaleString()}</Text>\n </View>\n\n {showSettlementDetails && trade.clearingFee !== undefined && (\n <View style={styles.settlement}>\n <Text style={styles.settlementText}>\n CLR: ${trade.clearingFee.toFixed(2)} | HDG: ${(trade.hedgingCost || 0).toFixed(2)} | INS: ${(trade.insuranceReserve || 0).toFixed(2)}\n </Text>\n </View>\n )}\n\n {showTxHash && trade.txHash && (\n <Text style={styles.txHash}>\n {trade.txHash.slice(0, 10)}...{trade.txHash.slice(-6)}\n </Text>\n )}\n </View>\n ))}\n </ScrollView>\n );\n};\n\nconst styles = StyleSheet.create({\n container: { flex: 1 },\n scrollContent: { paddingBottom: 16 },\n empty: { alignItems: 'center', justifyContent: 'center', padding: 40 },\n emptyText: { fontSize: 14, color: '#666' },\n card: { backgroundColor: '#111111', borderRadius: 6, borderWidth: 1, borderColor: '#1a1a1a', padding: 12, marginBottom: 8 },\n header: { flexDirection: 'row', alignItems: 'center', gap: 8 },\n pair: { fontSize: 13, fontWeight: '600', color: '#ffffff' },\n sideBadge: { paddingHorizontal: 6, paddingVertical: 2, borderRadius: 3, borderWidth: 1 },\n sideText: { fontSize: 9, fontWeight: '700', letterSpacing: 0.5 },\n pnl: { fontFamily: MONO, marginLeft: 'auto', fontSize: 13, fontWeight: '700' },\n details: { flexDirection: 'row', justifyContent: 'space-between', marginTop: 6 },\n detail: { fontFamily: MONO, fontSize: 11, color: '#9ca3af' },\n time: { fontSize: 11, color: '#666' },\n settlement: { marginTop: 6, paddingTop: 6, borderTopWidth: 1, borderTopColor: '#1a1a1a' },\n settlementText: { fontFamily: MONO, fontSize: 10, color: '#666' },\n txHash: { fontFamily: MONO, fontSize: 9, color: '#444', marginTop: 2 },\n});\n","/**\n * OneMetricsDashboard - Displays trading metrics and performance\n * Part of ONE Ecosystem SDK\n */\n\nimport React from 'react';\nimport { View, Text, StyleSheet, ViewStyle, Platform } from 'react-native';\nimport type { ConsoleMetrics } from '../../../types/console';\nimport { formatPnl, formatPercent } from '../../../types/console';\n\nconst MONO = Platform.OS === 'ios' ? 'Courier New' : 'monospace';\n\nexport interface OneMetricsDashboardProps {\n metrics: ConsoleMetrics;\n showNAV?: boolean;\n showPnL?: boolean;\n showTrades?: boolean;\n showPositions?: boolean;\n showStrategies?: boolean;\n compact?: boolean;\n style?: ViewStyle;\n dark?: boolean;\n}\n\nexport const OneMetricsDashboard: React.FC<OneMetricsDashboardProps> = ({\n metrics,\n showNAV = true,\n showPnL = true,\n showTrades = true,\n showPositions = true,\n showStrategies = false,\n compact = false,\n style,\n dark = true,\n}) => {\n const bg = dark ? '#111111' : '#ffffff';\n const border = dark ? '#2A2A35' : '#E5E7EB';\n const textPrimary = dark ? '#ffffff' : '#111827';\n const textSecondary = dark ? '#9CA3AF' : '#6B7280';\n const textMuted = dark ? '#555560' : '#9CA3AF';\n const cardBg = dark ? '#1A1A1F' : '#F9FAFB';\n\n const MetricCard = ({\n label,\n value,\n subValue,\n valueColor,\n icon,\n }: {\n label: string;\n value: string;\n subValue?: string;\n valueColor?: string;\n icon?: string;\n }) => (\n <View style={[styles.metricCard, { backgroundColor: cardBg }]}>\n <View style={styles.metricHeader}>\n {icon && <Text style={styles.metricIcon}>{icon}</Text>}\n <Text style={[styles.metricLabel, { color: textMuted }]}>{label}</Text>\n </View>\n <Text style={[styles.metricValue, { color: valueColor || textPrimary }]}>\n {value}\n </Text>\n {subValue && (\n <Text style={[styles.metricSubValue, { color: textSecondary }]}>\n {subValue}\n </Text>\n )}\n </View>\n );\n\n if (compact) {\n return (\n <View style={[styles.compactContainer, { backgroundColor: bg, borderColor: border }, style]}>\n <View style={styles.compactItem}>\n <Text style={[styles.compactLabel, { color: textMuted }]}>NAV</Text>\n <Text style={[styles.compactValue, { color: textPrimary }]}>\n ${metrics.nav.toFixed(0)}\n </Text>\n </View>\n <View style={styles.compactDivider} />\n <View style={styles.compactItem}>\n <Text style={[styles.compactLabel, { color: textMuted }]}>P&L</Text>\n <Text style={[\n styles.compactValue,\n { color: metrics.totalPnl >= 0 ? '#10B981' : '#EF4444' }\n ]}>\n {formatPnl(metrics.totalPnl)}\n </Text>\n </View>\n <View style={styles.compactDivider} />\n <View style={styles.compactItem}>\n <Text style={[styles.compactLabel, { color: textMuted }]}>Win</Text>\n <Text style={[styles.compactValue, { color: textPrimary }]}>\n {(metrics.winRate * 100).toFixed(0)}%\n </Text>\n </View>\n <View style={styles.compactDivider} />\n <View style={styles.compactItem}>\n <Text style={[styles.compactLabel, { color: textMuted }]}>Pos</Text>\n <Text style={[styles.compactValue, { color: textPrimary }]}>\n {metrics.openPositions}\n </Text>\n </View>\n </View>\n );\n }\n\n return (\n <View style={[styles.container, { backgroundColor: bg, borderColor: border }, style]}>\n {/* NAV Section */}\n {showNAV && (\n <View style={styles.navSection}>\n <View style={styles.navMain}>\n <Text style={[styles.navLabel, { color: textMuted }]}>Net Asset Value</Text>\n <Text style={[styles.navValue, { color: textPrimary }]}>\n ${metrics.nav.toLocaleString('en-US', { minimumFractionDigits: 2 })}\n </Text>\n <View style={styles.navChangeRow}>\n <Text style={[\n styles.navChange,\n { color: metrics.navChange24h >= 0 ? '#10B981' : '#EF4444' }\n ]}>\n {metrics.navChange24h >= 0 ? '+' : ''}${metrics.navChange24h.toFixed(2)}\n </Text>\n <Text style={[\n styles.navChangePercent,\n { color: metrics.navChange24h >= 0 ? '#10B981' : '#EF4444' }\n ]}>\n ({formatPercent(metrics.navChangePercent24h)})\n </Text>\n <Text style={[styles.navPeriod, { color: textMuted }]}>24h</Text>\n </View>\n </View>\n </View>\n )}\n\n {/* P&L Grid */}\n {showPnL && (\n <View style={styles.section}>\n <Text style={[styles.sectionTitle, { color: textMuted }]}>Profit & Loss</Text>\n <View style={styles.metricsGrid}>\n <MetricCard\n label=\"Total P&L\"\n value={formatPnl(metrics.totalPnl)}\n valueColor={metrics.totalPnl >= 0 ? '#10B981' : '#EF4444'}\n />\n <MetricCard\n label=\"Realized\"\n value={formatPnl(metrics.realizedPnl)}\n valueColor={metrics.realizedPnl >= 0 ? '#10B981' : '#EF4444'}\n />\n <MetricCard\n label=\"Unrealized\"\n value={formatPnl(metrics.unrealizedPnl)}\n valueColor={metrics.unrealizedPnl >= 0 ? '#10B981' : '#EF4444'}\n />\n <MetricCard\n label=\"Today\"\n value={formatPnl(metrics.pnlToday)}\n valueColor={metrics.pnlToday >= 0 ? '#10B981' : '#EF4444'}\n />\n </View>\n <View style={styles.pnlPeriods}>\n <View style={styles.pnlPeriodItem}>\n <Text style={[styles.pnlPeriodLabel, { color: textMuted }]}>7D</Text>\n <Text style={[\n styles.pnlPeriodValue,\n { color: metrics.pnl7d >= 0 ? '#10B981' : '#EF4444' }\n ]}>\n {formatPnl(metrics.pnl7d)}\n </Text>\n </View>\n <View style={styles.pnlPeriodItem}>\n <Text style={[styles.pnlPeriodLabel, { color: textMuted }]}>30D</Text>\n <Text style={[\n styles.pnlPeriodValue,\n { color: metrics.pnl30d >= 0 ? '#10B981' : '#EF4444' }\n ]}>\n {formatPnl(metrics.pnl30d)}\n </Text>\n </View>\n </View>\n </View>\n )}\n\n {/* Trading Stats */}\n {showTrades && (\n <View style={styles.section}>\n <Text style={[styles.sectionTitle, { color: textMuted }]}>Trading Stats</Text>\n <View style={styles.metricsGrid}>\n <MetricCard\n label=\"Total Trades\"\n value={metrics.totalTrades.toString()}\n subValue={`${metrics.tradesToday} today`}\n />\n <MetricCard\n label=\"Win Rate\"\n value={`${(metrics.winRate * 100).toFixed(1)}%`}\n subValue={`${metrics.winCount}W / ${metrics.lossCount}L`}\n valueColor={metrics.winRate >= 0.5 ? '#10B981' : '#EF4444'}\n />\n <MetricCard\n label=\"Avg Win\"\n value={formatPnl(metrics.avgWin)}\n valueColor=\"#10B981\"\n />\n <MetricCard\n label=\"Avg Loss\"\n value={formatPnl(metrics.avgLoss)}\n valueColor=\"#EF4444\"\n />\n </View>\n {metrics.profitFactor > 0 && metrics.profitFactor !== Infinity && (\n <View style={styles.profitFactorRow}>\n <Text style={[styles.profitFactorLabel, { color: textMuted }]}>Profit Factor</Text>\n <Text style={[\n styles.profitFactorValue,\n { color: metrics.profitFactor >= 1.5 ? '#10B981' : metrics.profitFactor >= 1 ? '#F59E0B' : '#EF4444' }\n ]}>\n {metrics.profitFactor.toFixed(2)}\n </Text>\n </View>\n )}\n </View>\n )}\n\n {/* Position Stats */}\n {showPositions && (\n <View style={styles.section}>\n <Text style={[styles.sectionTitle, { color: textMuted }]}>Position Overview</Text>\n <View style={styles.positionStats}>\n <View style={styles.positionItem}>\n <Text style={[styles.positionLabel, { color: textMuted }]}>Open Positions</Text>\n <Text style={[styles.positionValue, { color: textPrimary }]}>\n {metrics.openPositions}\n </Text>\n </View>\n <View style={styles.positionItem}>\n <Text style={[styles.positionLabel, { color: textMuted }]}>Total Exposure</Text>\n <Text style={[styles.positionValue, { color: textPrimary }]}>\n ${metrics.totalExposure.toFixed(0)}\n </Text>\n </View>\n <View style={styles.positionItem}>\n <Text style={[styles.positionLabel, { color: textMuted }]}>Avg Leverage</Text>\n <Text style={[styles.positionValue, { color: textPrimary }]}>\n {metrics.avgLeverage.toFixed(1)}x\n </Text>\n </View>\n </View>\n </View>\n )}\n\n {/* Strategy Breakdown */}\n {showStrategies && metrics.strategyMetrics && Object.keys(metrics.strategyMetrics).length > 0 && (\n <View style={styles.section}>\n <Text style={[styles.sectionTitle, { color: textMuted }]}>Strategy Performance</Text>\n {Object.entries(metrics.strategyMetrics).map(([strategyId, data]) => (\n <View key={strategyId} style={styles.strategyRow}>\n <Text style={[styles.strategyName, { color: textSecondary }]}>\n {strategyId.replace('-01', '').replace('-', ' ')}\n </Text>\n <View style={styles.strategyStats}>\n <Text style={[\n styles.strategyPnl,\n { color: data.pnl >= 0 ? '#10B981' : '#EF4444' }\n ]}>\n {formatPnl(data.pnl)}\n </Text>\n <Text style={[styles.strategyWinRate, { color: textMuted }]}>\n {(data.winRate * 100).toFixed(0)}%\n </Text>\n <Text style={[styles.strategyTrades, { color: textMuted }]}>\n {data.trades} trades\n </Text>\n </View>\n </View>\n ))}\n </View>\n )}\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n borderRadius: 12,\n borderWidth: 1,\n padding: 14,\n gap: 16,\n },\n compactContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-around',\n borderRadius: 8,\n borderWidth: 1,\n paddingVertical: 10,\n paddingHorizontal: 12,\n },\n compactItem: {\n alignItems: 'center',\n gap: 2,\n },\n compactLabel: {\n fontFamily: MONO,\n fontSize: 9,\n textTransform: 'uppercase',\n },\n compactValue: {\n fontFamily: MONO,\n fontSize: 13,\n fontWeight: '600',\n },\n compactDivider: {\n width: 1,\n height: 24,\n backgroundColor: '#2A2A35',\n },\n navSection: {\n alignItems: 'center',\n paddingBottom: 10,\n borderBottomWidth: 1,\n borderBottomColor: '#2A2A35',\n },\n navMain: {\n alignItems: 'center',\n gap: 4,\n },\n navLabel: {\n fontFamily: MONO,\n fontSize: 10,\n textTransform: 'uppercase',\n },\n navValue: {\n fontSize: 28,\n fontWeight: '700',\n fontFamily: MONO,\n },\n navChangeRow: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 6,\n },\n navChange: {\n fontFamily: MONO,\n fontSize: 14,\n fontWeight: '600',\n },\n navChangePercent: {\n fontFamily: MONO,\n fontSize: 12,\n },\n navPeriod: {\n fontFamily: MONO,\n fontSize: 10,\n },\n section: {\n gap: 10,\n },\n sectionTitle: {\n fontFamily: MONO,\n fontSize: 10,\n textTransform: 'uppercase',\n letterSpacing: 1,\n },\n metricsGrid: {\n flexDirection: 'row',\n flexWrap: 'wrap',\n gap: 8,\n },\n metricCard: {\n width: '48%',\n padding: 10,\n borderRadius: 8,\n gap: 4,\n },\n metricHeader: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 4,\n },\n metricIcon: {\n fontSize: 12,\n },\n metricLabel: {\n fontFamily: MONO,\n fontSize: 9,\n textTransform: 'uppercase',\n },\n metricValue: {\n fontFamily: MONO,\n fontSize: 16,\n fontWeight: '700',\n },\n metricSubValue: {\n fontFamily: MONO,\n fontSize: 10,\n },\n pnlPeriods: {\n flexDirection: 'row',\n justifyContent: 'flex-end',\n gap: 16,\n },\n pnlPeriodItem: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 6,\n },\n pnlPeriodLabel: {\n fontFamily: MONO,\n fontSize: 10,\n },\n pnlPeriodValue: {\n fontFamily: MONO,\n fontSize: 12,\n fontWeight: '600',\n },\n profitFactorRow: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n paddingTop: 8,\n borderTopWidth: 1,\n borderTopColor: '#2A2A35',\n },\n profitFactorLabel: {\n fontFamily: MONO,\n fontSize: 10,\n textTransform: 'uppercase',\n },\n profitFactorValue: {\n fontFamily: MONO,\n fontSize: 16,\n fontWeight: '700',\n },\n positionStats: {\n flexDirection: 'row',\n justifyContent: 'space-around',\n },\n positionItem: {\n alignItems: 'center',\n gap: 4,\n },\n positionLabel: {\n fontFamily: MONO,\n fontSize: 9,\n textTransform: 'uppercase',\n },\n positionValue: {\n fontFamily: MONO,\n fontSize: 16,\n fontWeight: '600',\n },\n strategyRow: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n paddingVertical: 6,\n borderBottomWidth: 1,\n borderBottomColor: '#1A1A1F',\n },\n strategyName: {\n fontSize: 12,\n textTransform: 'capitalize',\n flex: 1,\n },\n strategyStats: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 12,\n },\n strategyPnl: {\n fontFamily: MONO,\n fontSize: 12,\n fontWeight: '600',\n width: 70,\n textAlign: 'right',\n },\n strategyWinRate: {\n fontFamily: MONO,\n fontSize: 11,\n width: 35,\n textAlign: 'right',\n },\n strategyTrades: {\n fontFamily: MONO,\n fontSize: 10,\n width: 60,\n textAlign: 'right',\n },\n});\n","/**\n * OneRiskIndicator - Displays risk status with visual indicators\n * Part of ONE Ecosystem SDK\n */\n\nimport React from 'react';\nimport { View, Text, StyleSheet, ViewStyle, Platform } from 'react-native';\nimport type { RiskStatus, RiskLevel, TradingStatus } from '../../../types/console';\nimport { RISK_LEVEL_COLORS, TRADING_STATUS_COLORS } from '../../../types/console';\n\nconst MONO = Platform.OS === 'ios' ? 'Courier New' : 'monospace';\n\nexport interface OneRiskIndicatorProps {\n riskStatus: RiskStatus;\n showDetails?: boolean;\n showWarnings?: boolean;\n showLimits?: boolean;\n compact?: boolean;\n style?: ViewStyle;\n dark?: boolean;\n}\n\nexport const OneRiskIndicator: React.FC<OneRiskIndicatorProps> = ({\n riskStatus,\n showDetails = true,\n showWarnings = true,\n showLimits = true,\n compact = false,\n style,\n dark = true,\n}) => {\n const bg = dark ? '#111111' : '#ffffff';\n const border = dark ? '#2A2A35' : '#E5E7EB';\n const textPrimary = dark ? '#ffffff' : '#111827';\n const textSecondary = dark ? '#9CA3AF' : '#6B7280';\n const textMuted = dark ? '#555560' : '#9CA3AF';\n\n const riskConfig = RISK_LEVEL_COLORS[riskStatus.riskLevel];\n const statusConfig = TRADING_STATUS_COLORS[riskStatus.tradingStatus];\n\n // Progress bar component\n const ProgressBar = ({\n value,\n max,\n color,\n label,\n showValue = true,\n }: {\n value: number;\n max: number;\n color: string;\n label: string;\n showValue?: boolean;\n }) => {\n const percent = Math.min((value / max) * 100, 100);\n const barColor = percent > 80 ? '#EF4444' : percent > 60 ? '#F59E0B' : color;\n\n return (\n <View style={styles.progressItem}>\n <View style={styles.progressHeader}>\n <Text style={[styles.progressLabel, { color: textMuted }]}>{label}</Text>\n {showValue && (\n <Text style={[styles.progressValue, { color: textSecondary }]}>\n {value.toFixed(0)} / {max.toFixed(0)}\n </Text>\n )}\n </View>\n <View style={[styles.progressTrack, { backgroundColor: dark ? '#1A1A1F' : '#E5E7EB' }]}>\n <View\n style={[\n styles.progressFill,\n { width: `${percent}%`, backgroundColor: barColor }\n ]}\n />\n </View>\n <Text style={[styles.progressPercent, { color: barColor }]}>\n {percent.toFixed(1)}%\n </Text>\n </View>\n );\n };\n\n if (compact) {\n return (\n <View style={[styles.compactContainer, { backgroundColor: bg, borderColor: border }, style]}>\n <View style={[styles.riskBadge, { backgroundColor: riskConfig.bgColor }]}>\n <View style={[styles.riskDot, { backgroundColor: riskConfig.color }]} />\n <Text style={[styles.riskText, { color: riskConfig.color }]}>\n {riskStatus.riskLevel.toUpperCase()}\n </Text>\n </View>\n <View style={[styles.statusBadge, { backgroundColor: statusConfig.bgColor }]}>\n <Text style={[styles.statusText, { color: statusConfig.color }]}>\n {riskStatus.tradingStatus.toUpperCase()}\n </Text>\n </View>\n <Text style={[styles.compactExposure, { color: textSecondary }]}>\n Exp: {riskStatus.exposurePercent.toFixed(0)}%\n </Text>\n <Text style={[\n styles.compactPnl,\n { color: riskStatus.dailyPnl >= 0 ? '#10B981' : '#EF4444' }\n ]}>\n {riskStatus.dailyPnl >= 0 ? '+' : ''}{riskStatus.dailyPnl.toFixed(0)}\n </Text>\n </View>\n );\n }\n\n return (\n <View style={[styles.container, { backgroundColor: bg, borderColor: border }, style]}>\n {/* Header */}\n <View style={styles.header}>\n <View style={styles.headerLeft}>\n <Text style={[styles.title, { color: textPrimary }]}>Risk Status</Text>\n <View style={[styles.riskBadgeLarge, { backgroundColor: riskConfig.bgColor }]}>\n <View style={[styles.riskDotLarge, { backgroundColor: riskConfig.color }]} />\n <Text style={[styles.riskTextLarge, { color: riskConfig.color }]}>\n {riskStatus.riskLevel.toUpperCase()}\n </Text>\n </View>\n </View>\n <View style={[styles.tradingStatusBadge, { backgroundColor: statusConfig.bgColor }]}>\n <View style={[styles.statusIndicator, { backgroundColor: statusConfig.color }]} />\n <Text style={[styles.tradingStatusText, { color: statusConfig.color }]}>\n {riskStatus.tradingStatus === 'active' ? 'Trading Active' :\n riskStatus.tradingStatus === 'paused' ? 'Trading Paused' :\n riskStatus.tradingStatus === 'stopped' ? 'Trading Stopped' : 'Cooldown'}\n </Text>\n </View>\n </View>\n\n {/* Progress Bars */}\n {showLimits && (\n <View style={styles.progressSection}>\n <ProgressBar\n value={riskStatus.totalExposure}\n max={riskStatus.maxExposure}\n color=\"#3B82F6\"\n label=\"Portfolio Exposure\"\n />\n <ProgressBar\n value={riskStatus.currentDrawdown}\n max={riskStatus.maxDrawdown}\n color=\"#8B5CF6\"\n label=\"Drawdown\"\n showValue={false}\n />\n <ProgressBar\n value={Math.abs(riskStatus.dailyPnl)}\n max={riskStatus.dailyPnlLimit}\n color={riskStatus.dailyPnl >= 0 ? '#10B981' : '#EF4444'}\n label=\"Daily P&L Limit\"\n />\n <ProgressBar\n value={riskStatus.openPositions}\n max={riskStatus.maxPositions}\n color=\"#F59E0B\"\n label=\"Open Positions\"\n />\n </View>\n )}\n\n {/* Details Grid */}\n {showDetails && (\n <View style={styles.detailsGrid}>\n <View style={styles.detailItem}>\n <Text style={[styles.detailLabel, { color: textMuted }]}>Exposure</Text>\n <Text style={[styles.detailValue, { color: textPrimary }]}>\n ${riskStatus.totalExposure.toFixed(0)}\n </Text>\n </View>\n <View style={styles.detailItem}>\n <Text style={[styles.detailLabel, { color: textMuted }]}>Daily P&L</Text>\n <Text style={[\n styles.detailValue,\n { color: riskStatus.dailyPnl >= 0 ? '#10B981' : '#EF4444' }\n ]}>\n {riskStatus.dailyPnl >= 0 ? '+' : ''}${riskStatus.dailyPnl.toFixed(0)}\n </Text>\n </View>\n <View style={styles.detailItem}>\n <Text style={[styles.detailLabel, { color: textMuted }]}>Drawdown</Text>\n <Text style={[styles.detailValue, { color: textPrimary }]}>\n {riskStatus.currentDrawdown.toFixed(2)}%\n </Text>\n </View>\n <View style={styles.detailItem}>\n <Text style={[styles.detailLabel, { color: textMuted }]}>Trades Today</Text>\n <Text style={[styles.detailValue, { color: textPrimary }]}>\n {riskStatus.dailyTradeCount} / {riskStatus.dailyTradeLimit}\n </Text>\n </View>\n </View>\n )}\n\n {/* Warnings */}\n {showWarnings && riskStatus.warnings.length > 0 && (\n <View style={[styles.warningsSection, { backgroundColor: dark ? '#1A1A1F' : '#FEF3C7' }]}>\n <Text style={[styles.warningsTitle, { color: '#F59E0B' }]}>Warnings</Text>\n {riskStatus.warnings.map((warning, index) => (\n <View key={index} style={styles.warningItem}>\n <Text style={styles.warningIcon}>!</Text>\n <Text style={[styles.warningText, { color: textSecondary }]}>{warning}</Text>\n </View>\n ))}\n </View>\n )}\n\n {/* Strategy Risks */}\n {riskStatus.strategyRisks && Object.keys(riskStatus.strategyRisks).length > 0 && (\n <View style={styles.strategyRisksSection}>\n <Text style={[styles.sectionTitle, { color: textMuted }]}>Strategy Risk Breakdown</Text>\n {Object.entries(riskStatus.strategyRisks).map(([strategyId, risk]) => {\n const strategyRiskConfig = RISK_LEVEL_COLORS[risk.riskLevel];\n return (\n <View key={strategyId} style={styles.strategyRiskItem}>\n <Text style={[styles.strategyName, { color: textSecondary }]}>\n {strategyId.replace('-01', '')}\n </Text>\n <View style={[styles.strategyRiskBadge, { backgroundColor: strategyRiskConfig.bgColor }]}>\n <Text style={[styles.strategyRiskText, { color: strategyRiskConfig.color }]}>\n {risk.riskLevel.toUpperCase()}\n </Text>\n </View>\n <Text style={[styles.strategyExposure, { color: textMuted }]}>\n ${risk.exposure.toFixed(0)}\n </Text>\n </View>\n );\n })}\n </View>\n )}\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n borderRadius: 12,\n borderWidth: 1,\n padding: 14,\n gap: 14,\n },\n compactContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n borderRadius: 8,\n borderWidth: 1,\n paddingHorizontal: 12,\n paddingVertical: 8,\n gap: 10,\n },\n header: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'flex-start',\n },\n headerLeft: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 10,\n },\n title: {\n fontSize: 15,\n fontWeight: '600',\n },\n riskBadge: {\n flexDirection: 'row',\n alignItems: 'center',\n paddingHorizontal: 8,\n paddingVertical: 4,\n borderRadius: 12,\n gap: 4,\n },\n riskBadgeLarge: {\n flexDirection: 'row',\n alignItems: 'center',\n paddingHorizontal: 10,\n paddingVertical: 5,\n borderRadius: 12,\n gap: 5,\n },\n riskDot: {\n width: 6,\n height: 6,\n borderRadius: 3,\n },\n riskDotLarge: {\n width: 8,\n height: 8,\n borderRadius: 4,\n },\n riskText: {\n fontFamily: MONO,\n fontSize: 10,\n fontWeight: '700',\n },\n riskTextLarge: {\n fontFamily: MONO,\n fontSize: 11,\n fontWeight: '700',\n },\n statusBadge: {\n paddingHorizontal: 8,\n paddingVertical: 4,\n borderRadius: 12,\n },\n statusText: {\n fontFamily: MONO,\n fontSize: 9,\n fontWeight: '700',\n },\n tradingStatusBadge: {\n flexDirection: 'row',\n alignItems: 'center',\n paddingHorizontal: 10,\n paddingVertical: 5,\n borderRadius: 12,\n gap: 5,\n },\n statusIndicator: {\n width: 6,\n height: 6,\n borderRadius: 3,\n },\n tradingStatusText: {\n fontSize: 11,\n fontWeight: '600',\n },\n compactExposure: {\n fontFamily: MONO,\n fontSize: 11,\n flex: 1,\n },\n compactPnl: {\n fontFamily: MONO,\n fontSize: 12,\n fontWeight: '600',\n },\n progressSection: {\n gap: 10,\n },\n progressItem: {\n gap: 4,\n },\n progressHeader: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n progressLabel: {\n fontFamily: MONO,\n fontSize: 10,\n textTransform: 'uppercase',\n },\n progressValue: {\n fontFamily: MONO,\n fontSize: 10,\n },\n progressTrack: {\n height: 6,\n borderRadius: 3,\n overflow: 'hidden',\n },\n progressFill: {\n height: '100%',\n borderRadius: 3,\n },\n progressPercent: {\n fontFamily: MONO,\n fontSize: 10,\n textAlign: 'right',\n },\n detailsGrid: {\n flexDirection: 'row',\n flexWrap: 'wrap',\n gap: 10,\n },\n detailItem: {\n width: '48%',\n gap: 2,\n },\n detailLabel: {\n fontFamily: MONO,\n fontSize: 9,\n textTransform: 'uppercase',\n },\n detailValue: {\n fontFamily: MONO,\n fontSize: 14,\n fontWeight: '600',\n },\n warningsSection: {\n padding: 10,\n borderRadius: 8,\n gap: 6,\n },\n warningsTitle: {\n fontFamily: MONO,\n fontSize: 10,\n fontWeight: '700',\n textTransform: 'uppercase',\n },\n warningItem: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 8,\n },\n warningIcon: {\n width: 16,\n height: 16,\n backgroundColor: '#F59E0B',\n color: '#ffffff',\n textAlign: 'center',\n lineHeight: 16,\n fontSize: 12,\n fontWeight: '700',\n borderRadius: 8,\n overflow: 'hidden',\n },\n warningText: {\n fontSize: 12,\n flex: 1,\n },\n strategyRisksSection: {\n gap: 8,\n paddingTop: 10,\n borderTopWidth: 1,\n borderTopColor: '#2A2A35',\n },\n sectionTitle: {\n fontFamily: MONO,\n fontSize: 10,\n textTransform: 'uppercase',\n },\n strategyRiskItem: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 10,\n },\n strategyName: {\n fontFamily: MONO,\n fontSize: 11,\n flex: 1,\n textTransform: 'capitalize',\n },\n strategyRiskBadge: {\n paddingHorizontal: 6,\n paddingVertical: 2,\n borderRadius: 4,\n },\n strategyRiskText: {\n fontFamily: MONO,\n fontSize: 9,\n fontWeight: '700',\n },\n strategyExposure: {\n fontFamily: MONO,\n fontSize: 10,\n width: 60,\n textAlign: 'right',\n },\n});\n","/**\n * OneTradingConsole - Total unified console view (AI + Forex)\n * Part of ONE Ecosystem SDK\n */\n\nimport React, { useRef, useEffect, useState } from 'react';\nimport { View, Text, StyleSheet, ScrollView, ViewStyle, Platform, TouchableOpacity } from 'react-native';\nimport type { CombinedLogEntry, ConsoleMetrics, RiskStatus, AIAgent } from '../../../types/console';\nimport type { BotLogEntry } from '../../../services/forex/BotSimulationEngine';\nimport type { ForexLogEntry } from '../../../types/forex';\nimport { AI_LOG_COLORS, FOREX_LOG_COLORS } from '../../../types/console';\nimport { OneMetricsDashboard } from './OneMetricsDashboard';\nimport { OneRiskIndicator } from './OneRiskIndicator';\n\nconst MONO = Platform.OS === 'ios' ? 'Courier New' : 'monospace';\n\nexport interface OneTradingConsoleProps {\n mode?: 'combined' | 'ai-only' | 'forex-only';\n // Combined logs\n combinedLogs?: CombinedLogEntry[];\n // Or separate logs\n aiLogs?: BotLogEntry[];\n forexLogs?: ForexLogEntry[];\n // Data\n agents?: AIAgent[];\n metrics?: ConsoleMetrics;\n riskStatus?: RiskStatus | null;\n // Display options\n maxLogs?: number;\n autoScroll?: boolean;\n showMetrics?: boolean;\n showRisk?: boolean;\n showControls?: boolean;\n consoleHeight?: number;\n // Controls\n isAIRunning?: boolean;\n isForexRunning?: boolean;\n onStartAI?: () => void;\n onStopAI?: () => void;\n onStartForex?: () => void;\n onStopForex?: () => void;\n onStartAll?: () => void;\n onStopAll?: () => void;\n onClearLogs?: () => void;\n onRefresh?: () => void;\n // Callbacks\n onAgentSelect?: (agent: AIAgent) => void;\n style?: ViewStyle;\n dark?: boolean;\n}\n\nexport const OneTradingConsole: React.FC<OneTradingConsoleProps> = ({\n mode = 'combined',\n combinedLogs = [],\n aiLogs = [],\n forexLogs = [],\n agents = [],\n metrics,\n riskStatus,\n maxLogs = 200,\n autoScroll = true,\n showMetrics = true,\n showRisk = true,\n showControls = true,\n consoleHeight = 400,\n isAIRunning = false,\n isForexRunning = false,\n onStartAI,\n onStopAI,\n onStartForex,\n onStopForex,\n onStartAll,\n onStopAll,\n onClearLogs,\n onRefresh,\n onAgentSelect,\n style,\n dark = true,\n}) => {\n const bg = dark ? '#0A0A0C' : '#ffffff';\n const consoleBg = dark ? '#0A0A0C' : '#F9FAFB';\n const cardBg = dark ? '#111111' : '#F9FAFB';\n const border = dark ? '#2A2A35' : '#E5E7EB';\n const textPrimary = dark ? '#ffffff' : '#111827';\n const textSecondary = dark ? '#9CA3AF' : '#6B7280';\n const textMuted = dark ? '#555560' : '#9CA3AF';\n\n const scrollRef = useRef<ScrollView>(null);\n const [selectedTab, setSelectedTab] = useState<'console' | 'metrics' | 'risk' | 'agents'>('console');\n\n // Merge logs if not using combined\n const allLogs: CombinedLogEntry[] = combinedLogs.length > 0\n ? combinedLogs\n : [\n ...aiLogs.map(log => ({\n id: log.id,\n timestamp: log.timestamp,\n source: 'ai' as const,\n strategyId: log.strategyId,\n strategyName: log.strategyName,\n type: log.type,\n message: log.message,\n data: log.data,\n importance: log.importance,\n })),\n ...forexLogs.map(log => ({\n id: log.id,\n timestamp: log.timestamp,\n source: 'forex' as const,\n type: log.type,\n message: log.message,\n data: log.data,\n importance: log.importance,\n })),\n ].sort((a, b) => a.timestamp - b.timestamp);\n\n // Filter logs based on mode\n const filteredLogs = allLogs.filter(log => {\n if (mode === 'ai-only') return log.source === 'ai';\n if (mode === 'forex-only') return log.source === 'forex';\n return true;\n });\n\n const visibleLogs = filteredLogs.slice(-maxLogs);\n\n const isAnyRunning = isAIRunning || isForexRunning;\n\n // Auto-scroll\n useEffect(() => {\n if (autoScroll && scrollRef.current && selectedTab === 'console') {\n setTimeout(() => scrollRef.current?.scrollToEnd({ animated: true }), 50);\n }\n }, [visibleLogs.length, autoScroll, selectedTab]);\n\n const formatTime = (ts: number) => {\n const d = new Date(ts);\n return `${d.getHours().toString().padStart(2, '0')}:${d.getMinutes().toString().padStart(2, '0')}:${d.getSeconds().toString().padStart(2, '0')}`;\n };\n\n const getLogColor = (log: CombinedLogEntry): string => {\n if (log.source === 'ai') {\n return AI_LOG_COLORS[log.type as keyof typeof AI_LOG_COLORS] || textMuted;\n }\n return FOREX_LOG_COLORS[log.type as keyof typeof FOREX_LOG_COLORS] || textMuted;\n };\n\n const activeAgents = agents.filter(a => a.status === 'active');\n const totalPnl = agents.reduce((sum, a) => sum + a.totalPnl, 0);\n\n return (\n <View style={[styles.container, { backgroundColor: bg }, style]}>\n {/* Header */}\n <View style={[styles.header, { borderBottomColor: border }]}>\n <View style={styles.headerLeft}>\n <Text style={[styles.title, { color: textPrimary }]}>Trading Console</Text>\n <View style={styles.statusBadges}>\n {mode !== 'forex-only' && (\n <View style={[\n styles.statusBadge,\n { backgroundColor: isAIRunning ? '#D1FAE5' : '#F3F4F6' }\n ]}>\n <View style={[\n styles.statusDot,\n { backgroundColor: isAIRunning ? '#10B981' : '#9CA3AF' }\n ]} />\n <Text style={[\n styles.statusText,\n { color: isAIRunning ? '#10B981' : '#9CA3AF' }\n ]}>\n AI\n </Text>\n </View>\n )}\n {mode !== 'ai-only' && (\n <View style={[\n styles.statusBadge,\n { backgroundColor: isForexRunning ? '#DBEAFE' : '#F3F4F6' }\n ]}>\n <View style={[\n styles.statusDot,\n { backgroundColor: isForexRunning ? '#3B82F6' : '#9CA3AF' }\n ]} />\n <Text style={[\n styles.statusText,\n { color: isForexRunning ? '#3B82F6' : '#9CA3AF' }\n ]}>\n FX\n </Text>\n </View>\n )}\n </View>\n </View>\n {showControls && (\n <View style={styles.headerControls}>\n {onClearLogs && (\n <TouchableOpacity\n style={[styles.controlBtn, { backgroundColor: cardBg }]}\n onPress={onClearLogs}\n activeOpacity={0.7}\n >\n <Text style={[styles.controlBtnText, { color: textSecondary }]}>Clear</Text>\n </TouchableOpacity>\n )}\n {onRefresh && (\n <TouchableOpacity\n style={[styles.controlBtn, { backgroundColor: cardBg }]}\n onPress={onRefresh}\n activeOpacity={0.7}\n >\n <Text style={[styles.controlBtnText, { color: textSecondary }]}>Refresh</Text>\n </TouchableOpacity>\n )}\n {(onStartAll || onStopAll) && (\n <TouchableOpacity\n style={[\n styles.controlBtn,\n { backgroundColor: isAnyRunning ? '#FEE2E2' : '#D1FAE5' }\n ]}\n onPress={isAnyRunning ? onStopAll : onStartAll}\n activeOpacity={0.7}\n >\n <Text style={[\n styles.controlBtnText,\n { color: isAnyRunning ? '#EF4444' : '#10B981' }\n ]}>\n {isAnyRunning ? 'Stop' : 'Start'}\n </Text>\n </TouchableOpacity>\n )}\n </View>\n )}\n </View>\n\n {/* Quick Stats */}\n <View style={[styles.quickStats, { backgroundColor: cardBg, borderBottomColor: border }]}>\n <View style={styles.quickStatItem}>\n <Text style={[styles.quickStatLabel, { color: textMuted }]}>Agents</Text>\n <Text style={[styles.quickStatValue, { color: textPrimary }]}>\n {activeAgents.length}/{agents.length}\n </Text>\n </View>\n <View style={styles.quickStatDivider} />\n <View style={styles.quickStatItem}>\n <Text style={[styles.quickStatLabel, { color: textMuted }]}>P&L</Text>\n <Text style={[\n styles.quickStatValue,\n { color: totalPnl >= 0 ? '#10B981' : '#EF4444' }\n ]}>\n {totalPnl >= 0 ? '+' : ''}${totalPnl.toFixed(2)}\n </Text>\n </View>\n <View style={styles.quickStatDivider} />\n <View style={styles.quickStatItem}>\n <Text style={[styles.quickStatLabel, { color: textMuted }]}>Logs</Text>\n <Text style={[styles.quickStatValue, { color: textPrimary }]}>\n {visibleLogs.length}\n </Text>\n </View>\n </View>\n\n {/* Tab Bar */}\n <View style={[styles.tabBar, { borderBottomColor: border }]}>\n <TouchableOpacity\n style={[styles.tab, selectedTab === 'console' && styles.tabActive]}\n onPress={() => setSelectedTab('console')}\n activeOpacity={0.7}\n >\n <Text style={[\n styles.tabText,\n { color: selectedTab === 'console' ? '#3B82F6' : textSecondary }\n ]}>\n Console\n </Text>\n </TouchableOpacity>\n {showMetrics && metrics && (\n <TouchableOpacity\n style={[styles.tab, selectedTab === 'metrics' && styles.tabActive]}\n onPress={() => setSelectedTab('metrics')}\n activeOpacity={0.7}\n >\n <Text style={[\n styles.tabText,\n { color: selectedTab === 'metrics' ? '#3B82F6' : textSecondary }\n ]}>\n Metrics\n </Text>\n </TouchableOpacity>\n )}\n {showRisk && riskStatus && (\n <TouchableOpacity\n style={[styles.tab, selectedTab === 'risk' && styles.tabActive]}\n onPress={() => setSelectedTab('risk')}\n activeOpacity={0.7}\n >\n <Text style={[\n styles.tabText,\n { color: selectedTab === 'risk' ? '#3B82F6' : textSecondary }\n ]}>\n Risk\n </Text>\n </TouchableOpacity>\n )}\n {agents.length > 0 && (\n <TouchableOpacity\n style={[styles.tab, selectedTab === 'agents' && styles.tabActive]}\n onPress={() => setSelectedTab('agents')}\n activeOpacity={0.7}\n >\n <Text style={[\n styles.tabText,\n { color: selectedTab === 'agents' ? '#3B82F6' : textSecondary }\n ]}>\n Agents\n </Text>\n </TouchableOpacity>\n )}\n </View>\n\n {/* Content */}\n {selectedTab === 'console' && (\n <View style={[styles.consoleContainer, { backgroundColor: consoleBg, height: consoleHeight }]}>\n <ScrollView\n ref={scrollRef}\n style={styles.consoleScroll}\n contentContainerStyle={styles.consoleContent}\n >\n {visibleLogs.map((log) => (\n <View key={log.id} style={styles.logRow}>\n <Text style={[styles.logTime, { color: textMuted }]}>\n {formatTime(log.timestamp)}\n </Text>\n <View style={[\n styles.sourceBadge,\n { backgroundColor: log.source === 'ai' ? '#1E3A5F' : '#1E3A3A' }\n ]}>\n <Text style={[\n styles.sourceText,\n { color: log.source === 'ai' ? '#60A5FA' : '#5EEAD4' }\n ]}>\n {log.source === 'ai' ? (log.strategyName || 'AI') : 'FX'}\n </Text>\n </View>\n <Text style={[styles.logType, { color: getLogColor(log) }]}>\n {log.type.padEnd(10)}\n </Text>\n <Text\n style={[\n styles.logMessage,\n { color: log.importance === 'high' ? textPrimary : textSecondary },\n log.importance === 'high' && styles.logMessageHigh,\n ]}\n numberOfLines={2}\n >\n {log.message}\n </Text>\n </View>\n ))}\n {visibleLogs.length === 0 && (\n <View style={styles.emptyState}>\n <Text style={[styles.emptyIcon, { color: textMuted }]}>⚡</Text>\n <Text style={[styles.emptyTitle, { color: textSecondary }]}>\n No Activity Yet\n </Text>\n <Text style={[styles.emptyText, { color: textMuted }]}>\n Start the trading simulation to see live activity\n </Text>\n </View>\n )}\n </ScrollView>\n </View>\n )}\n\n {selectedTab === 'metrics' && metrics && (\n <ScrollView style={styles.tabContent} contentContainerStyle={styles.tabContentInner}>\n <OneMetricsDashboard\n metrics={metrics}\n showNAV={true}\n showPnL={true}\n showTrades={true}\n showPositions={true}\n showStrategies={true}\n dark={dark}\n />\n </ScrollView>\n )}\n\n {selectedTab === 'risk' && riskStatus && (\n <ScrollView style={styles.tabContent} contentContainerStyle={styles.tabContentInner}>\n <OneRiskIndicator\n riskStatus={riskStatus}\n showDetails={true}\n showWarnings={true}\n showLimits={true}\n dark={dark}\n />\n </ScrollView>\n )}\n\n {selectedTab === 'agents' && agents.length > 0 && (\n <ScrollView style={styles.tabContent} contentContainerStyle={styles.tabContentInner}>\n {agents.map(agent => (\n <TouchableOpacity\n key={agent.id}\n style={[styles.agentRow, { backgroundColor: cardBg, borderColor: border }]}\n onPress={() => onAgentSelect?.(agent)}\n activeOpacity={0.7}\n >\n <View style={styles.agentLeft}>\n <View style={[styles.agentDot, { backgroundColor: agent.color }]} />\n <View>\n <Text style={[styles.agentName, { color: textPrimary }]}>{agent.name}</Text>\n <Text style={[styles.agentPair, { color: textMuted }]}>\n {agent.currentPair || 'Idle'}\n </Text>\n </View>\n </View>\n <View style={styles.agentRight}>\n <Text style={[\n styles.agentPnl,\n { color: agent.totalPnl >= 0 ? '#10B981' : '#EF4444' }\n ]}>\n {agent.totalPnl >= 0 ? '+' : ''}${agent.totalPnl.toFixed(2)}\n </Text>\n <View style={[\n styles.agentStatus,\n { backgroundColor: agent.status === 'active' ? '#D1FAE5' : '#F3F4F6' }\n ]}>\n <Text style={[\n styles.agentStatusText,\n { color: agent.status === 'active' ? '#10B981' : '#9CA3AF' }\n ]}>\n {agent.status}\n </Text>\n </View>\n </View>\n </TouchableOpacity>\n ))}\n </ScrollView>\n )}\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n borderRadius: 12,\n overflow: 'hidden',\n },\n header: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n padding: 14,\n borderBottomWidth: 1,\n },\n headerLeft: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 10,\n },\n headerControls: {\n flexDirection: 'row',\n gap: 8,\n },\n title: {\n fontSize: 16,\n fontWeight: '700',\n },\n statusBadges: {\n flexDirection: 'row',\n gap: 6,\n },\n statusBadge: {\n flexDirection: 'row',\n alignItems: 'center',\n paddingHorizontal: 6,\n paddingVertical: 3,\n borderRadius: 10,\n gap: 4,\n },\n statusDot: {\n width: 6,\n height: 6,\n borderRadius: 3,\n },\n statusText: {\n fontSize: 10,\n fontWeight: '600',\n },\n controlBtn: {\n paddingHorizontal: 10,\n paddingVertical: 5,\n borderRadius: 6,\n },\n controlBtnText: {\n fontSize: 11,\n fontWeight: '600',\n },\n quickStats: {\n flexDirection: 'row',\n justifyContent: 'space-around',\n alignItems: 'center',\n paddingVertical: 10,\n borderBottomWidth: 1,\n },\n quickStatItem: {\n alignItems: 'center',\n gap: 2,\n },\n quickStatLabel: {\n fontFamily: MONO,\n fontSize: 9,\n textTransform: 'uppercase',\n },\n quickStatValue: {\n fontFamily: MONO,\n fontSize: 14,\n fontWeight: '700',\n },\n quickStatDivider: {\n width: 1,\n height: 24,\n backgroundColor: '#2A2A35',\n },\n tabBar: {\n flexDirection: 'row',\n borderBottomWidth: 1,\n },\n tab: {\n flex: 1,\n paddingVertical: 10,\n alignItems: 'center',\n borderBottomWidth: 2,\n borderBottomColor: 'transparent',\n },\n tabActive: {\n borderBottomColor: '#3B82F6',\n },\n tabText: {\n fontSize: 12,\n fontWeight: '600',\n },\n consoleContainer: {\n overflow: 'hidden',\n },\n consoleScroll: {\n flex: 1,\n },\n consoleContent: {\n padding: 8,\n },\n logRow: {\n flexDirection: 'row',\n alignItems: 'flex-start',\n paddingVertical: 2,\n },\n logTime: {\n fontFamily: MONO,\n fontSize: 10,\n width: 55,\n marginRight: 6,\n },\n sourceBadge: {\n paddingHorizontal: 4,\n paddingVertical: 1,\n borderRadius: 3,\n marginRight: 6,\n minWidth: 28,\n alignItems: 'center',\n },\n sourceText: {\n fontFamily: MONO,\n fontSize: 8,\n fontWeight: '700',\n },\n logType: {\n fontFamily: MONO,\n fontSize: 10,\n fontWeight: '700',\n width: 75,\n marginRight: 6,\n },\n logMessage: {\n fontFamily: MONO,\n fontSize: 10,\n flex: 1,\n },\n logMessageHigh: {\n fontWeight: '600',\n },\n emptyState: {\n alignItems: 'center',\n paddingVertical: 60,\n gap: 12,\n },\n emptyIcon: {\n fontSize: 36,\n },\n emptyTitle: {\n fontSize: 14,\n fontWeight: '600',\n },\n emptyText: {\n fontSize: 12,\n textAlign: 'center',\n },\n tabContent: {\n flex: 1,\n },\n tabContentInner: {\n padding: 14,\n },\n agentRow: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n padding: 12,\n borderRadius: 8,\n borderWidth: 1,\n marginBottom: 8,\n },\n agentLeft: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 10,\n },\n agentDot: {\n width: 10,\n height: 10,\n borderRadius: 5,\n },\n agentName: {\n fontSize: 13,\n fontWeight: '600',\n },\n agentPair: {\n fontFamily: MONO,\n fontSize: 10,\n },\n agentRight: {\n alignItems: 'flex-end',\n gap: 4,\n },\n agentPnl: {\n fontFamily: MONO,\n fontSize: 14,\n fontWeight: '600',\n },\n agentStatus: {\n paddingHorizontal: 6,\n paddingVertical: 2,\n borderRadius: 4,\n },\n agentStatusText: {\n fontSize: 9,\n fontWeight: '600',\n textTransform: 'uppercase',\n },\n});\n","/**\n * OneAgentCard - Displays agent status and mini metrics\n * Part of ONE Ecosystem SDK\n */\n\nimport React from 'react';\nimport { View, Text, StyleSheet, TouchableOpacity, ViewStyle, Platform } from 'react-native';\nimport type { AIAgent } from '../../../types/console';\nimport { AGENT_STATUS_COLORS, RISK_LEVEL_COLORS, formatPnl } from '../../../types/console';\n\nconst MONO = Platform.OS === 'ios' ? 'Courier New' : 'monospace';\n\nexport interface OneAgentCardProps {\n agent: AIAgent;\n onPress?: (agent: AIAgent) => void;\n showMetrics?: boolean;\n showIndicators?: boolean;\n compact?: boolean;\n style?: ViewStyle;\n dark?: boolean;\n}\n\nexport const OneAgentCard: React.FC<OneAgentCardProps> = ({\n agent,\n onPress,\n showMetrics = true,\n showIndicators = true,\n compact = false,\n style,\n dark = true,\n}) => {\n const bg = dark ? '#111111' : '#ffffff';\n const border = dark ? '#2A2A35' : '#E5E7EB';\n const textPrimary = dark ? '#ffffff' : '#111827';\n const textSecondary = dark ? '#9CA3AF' : '#6B7280';\n const textMuted = dark ? '#555560' : '#9CA3AF';\n\n const statusConfig = AGENT_STATUS_COLORS[agent.status];\n const riskConfig = RISK_LEVEL_COLORS[agent.riskLevel];\n\n const handlePress = () => {\n if (onPress) {\n onPress(agent);\n }\n };\n\n // Render content shared between pressable and non-pressable versions\n const renderCompactContent = () => (\n <>\n <View style={[styles.statusDot, { backgroundColor: statusConfig.color }]} />\n <Text style={[styles.compactName, { color: textPrimary }]}>{agent.shortName}</Text>\n <Text style={[\n styles.compactPnl,\n { color: agent.totalPnl >= 0 ? '#10B981' : '#EF4444' }\n ]}>\n {formatPnl(agent.totalPnl)}\n </Text>\n </>\n );\n\n const renderFullContent = () => (\n <>\n {/* Header */}\n <View style={styles.header}>\n <View style={styles.nameRow}>\n <View style={[styles.colorDot, { backgroundColor: agent.color }]} />\n <Text style={[styles.name, { color: textPrimary }]}>{agent.name}</Text>\n </View>\n <View style={[styles.statusBadge, { backgroundColor: statusConfig.bgColor }]}>\n <View style={[styles.statusIndicator, { backgroundColor: statusConfig.color }]} />\n <Text style={[styles.statusText, { color: statusConfig.color }]}>\n {statusConfig.label}\n </Text>\n </View>\n </View>\n\n {/* Current Activity */}\n {agent.currentPair && (\n <View style={styles.activityRow}>\n <Text style={[styles.activityLabel, { color: textMuted }]}>Watching</Text>\n <Text style={[styles.activityValue, { color: textSecondary }]}>\n {agent.currentPair} @ ${agent.currentPrice?.toFixed(2)}\n </Text>\n </View>\n )}\n\n {/* Signal */}\n {agent.lastSignal && agent.lastSignal !== 'HOLD' && (\n <View style={styles.signalRow}>\n <Text style={[styles.signalLabel, { color: textMuted }]}>Signal</Text>\n <View style={[\n styles.signalBadge,\n { backgroundColor: agent.lastSignal === 'LONG' ? '#D1FAE5' : '#FEE2E2' }\n ]}>\n <Text style={[\n styles.signalText,\n { color: agent.lastSignal === 'LONG' ? '#10B981' : '#EF4444' }\n ]}>\n {agent.lastSignal}\n </Text>\n </View>\n {agent.lastSignalConfidence && (\n <Text style={[styles.confidenceText, { color: textSecondary }]}>\n {(agent.lastSignalConfidence * 100).toFixed(0)}%\n </Text>\n )}\n </View>\n )}\n\n {/* Metrics */}\n {showMetrics && (\n <View style={styles.metricsGrid}>\n <View style={styles.metricItem}>\n <Text style={[styles.metricLabel, { color: textMuted }]}>P&L</Text>\n <Text style={[\n styles.metricValue,\n { color: agent.totalPnl >= 0 ? '#10B981' : '#EF4444' }\n ]}>\n {formatPnl(agent.totalPnl)}\n </Text>\n </View>\n <View style={styles.metricItem}>\n <Text style={[styles.metricLabel, { color: textMuted }]}>Win Rate</Text>\n <Text style={[styles.metricValue, { color: textPrimary }]}>\n {(agent.winRate * 100).toFixed(1)}%\n </Text>\n </View>\n <View style={styles.metricItem}>\n <Text style={[styles.metricLabel, { color: textMuted }]}>Trades</Text>\n <Text style={[styles.metricValue, { color: textPrimary }]}>\n {agent.totalTrades}\n </Text>\n </View>\n <View style={styles.metricItem}>\n <Text style={[styles.metricLabel, { color: textMuted }]}>Positions</Text>\n <Text style={[styles.metricValue, { color: textPrimary }]}>\n {agent.openPositions}\n </Text>\n </View>\n </View>\n )}\n\n {/* Indicators */}\n {showIndicators && (\n <View style={styles.indicatorsRow}>\n <View style={styles.indicatorItem}>\n <Text style={[styles.indicatorLabel, { color: textMuted }]}>Risk</Text>\n <View style={[styles.riskBadge, { backgroundColor: riskConfig.bgColor }]}>\n <Text style={[styles.riskText, { color: riskConfig.color }]}>\n {agent.riskLevel.toUpperCase()}\n </Text>\n </View>\n </View>\n <View style={styles.indicatorItem}>\n <Text style={[styles.indicatorLabel, { color: textMuted }]}>Exposure</Text>\n <Text style={[styles.indicatorValue, { color: textSecondary }]}>\n ${agent.totalExposure.toFixed(0)}\n </Text>\n </View>\n </View>\n )}\n\n {/* Strategy Info */}\n <View style={styles.strategyRow}>\n <Text style={[styles.strategyLabel, { color: textMuted }]}>\n {agent.primaryIndicators.join(' · ')}\n </Text>\n <Text style={[styles.leverageText, { color: textMuted }]}>\n {agent.leverageRange[0]}-{agent.leverageRange[1]}x\n </Text>\n </View>\n </>\n );\n\n if (compact) {\n if (onPress) {\n return (\n <TouchableOpacity\n style={[styles.compactContainer, { backgroundColor: bg, borderColor: border }, style]}\n onPress={handlePress}\n activeOpacity={0.7}\n >\n {renderCompactContent()}\n </TouchableOpacity>\n );\n }\n return (\n <View style={[styles.compactContainer, { backgroundColor: bg, borderColor: border }, style]}>\n {renderCompactContent()}\n </View>\n );\n }\n\n if (onPress) {\n return (\n <TouchableOpacity\n style={[styles.container, { backgroundColor: bg, borderColor: border }, style]}\n onPress={handlePress}\n activeOpacity={0.7}\n >\n {renderFullContent()}\n </TouchableOpacity>\n );\n }\n\n return (\n <View style={[styles.container, { backgroundColor: bg, borderColor: border }, style]}>\n {renderFullContent()}\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n borderRadius: 12,\n borderWidth: 1,\n padding: 14,\n gap: 10,\n },\n compactContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n borderRadius: 8,\n borderWidth: 1,\n paddingHorizontal: 12,\n paddingVertical: 8,\n gap: 8,\n },\n statusDot: {\n width: 8,\n height: 8,\n borderRadius: 4,\n },\n compactName: {\n fontFamily: MONO,\n fontSize: 12,\n fontWeight: '600',\n flex: 1,\n },\n compactPnl: {\n fontFamily: MONO,\n fontSize: 12,\n fontWeight: '600',\n },\n header: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n nameRow: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 8,\n },\n colorDot: {\n width: 10,\n height: 10,\n borderRadius: 5,\n },\n name: {\n fontSize: 15,\n fontWeight: '600',\n },\n statusBadge: {\n flexDirection: 'row',\n alignItems: 'center',\n paddingHorizontal: 8,\n paddingVertical: 4,\n borderRadius: 12,\n gap: 4,\n },\n statusIndicator: {\n width: 6,\n height: 6,\n borderRadius: 3,\n },\n statusText: {\n fontSize: 11,\n fontWeight: '600',\n textTransform: 'uppercase',\n },\n activityRow: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n activityLabel: {\n fontFamily: MONO,\n fontSize: 10,\n textTransform: 'uppercase',\n },\n activityValue: {\n fontFamily: MONO,\n fontSize: 12,\n },\n signalRow: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 8,\n },\n signalLabel: {\n fontFamily: MONO,\n fontSize: 10,\n textTransform: 'uppercase',\n },\n signalBadge: {\n paddingHorizontal: 8,\n paddingVertical: 2,\n borderRadius: 4,\n },\n signalText: {\n fontFamily: MONO,\n fontSize: 11,\n fontWeight: '700',\n },\n confidenceText: {\n fontFamily: MONO,\n fontSize: 11,\n },\n metricsGrid: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n paddingTop: 6,\n borderTopWidth: 1,\n borderTopColor: '#2A2A35',\n },\n metricItem: {\n alignItems: 'center',\n gap: 2,\n },\n metricLabel: {\n fontFamily: MONO,\n fontSize: 9,\n textTransform: 'uppercase',\n },\n metricValue: {\n fontFamily: MONO,\n fontSize: 13,\n fontWeight: '600',\n },\n indicatorsRow: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n indicatorItem: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 6,\n },\n indicatorLabel: {\n fontFamily: MONO,\n fontSize: 10,\n textTransform: 'uppercase',\n },\n indicatorValue: {\n fontFamily: MONO,\n fontSize: 12,\n },\n riskBadge: {\n paddingHorizontal: 6,\n paddingVertical: 2,\n borderRadius: 4,\n },\n riskText: {\n fontFamily: MONO,\n fontSize: 10,\n fontWeight: '700',\n },\n strategyRow: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n strategyLabel: {\n fontFamily: MONO,\n fontSize: 9,\n },\n leverageText: {\n fontFamily: MONO,\n fontSize: 9,\n },\n});\n","/**\n * OneAIQuantConsole - All 7 AI agents overview\n * Part of ONE Ecosystem SDK\n */\n\nimport React, { useState } from 'react';\nimport { View, Text, StyleSheet, ScrollView, ViewStyle, Platform, TouchableOpacity } from 'react-native';\nimport type { AIAgent, ConsoleMetrics, RiskStatus } from '../../../types/console';\nimport { OneAgentCard } from './OneAgentCard';\nimport { OneMetricsDashboard } from './OneMetricsDashboard';\nimport { OneRiskIndicator } from './OneRiskIndicator';\n\nconst MONO = Platform.OS === 'ios' ? 'Courier New' : 'monospace';\n\nexport interface OneAIQuantConsoleProps {\n agents: AIAgent[];\n metrics?: ConsoleMetrics;\n riskStatus?: RiskStatus | null;\n layout?: 'list' | 'grid' | 'compact';\n showMetrics?: boolean;\n showRisk?: boolean;\n showPerformance?: boolean;\n showPositions?: boolean;\n onAgentSelect?: (agent: AIAgent) => void;\n onStartAll?: () => void;\n onStopAll?: () => void;\n isRunning?: boolean;\n style?: ViewStyle;\n dark?: boolean;\n}\n\nexport const OneAIQuantConsole: React.FC<OneAIQuantConsoleProps> = ({\n agents,\n metrics,\n riskStatus,\n layout = 'list',\n showMetrics = true,\n showRisk = true,\n showPerformance = true,\n showPositions = true,\n onAgentSelect,\n onStartAll,\n onStopAll,\n isRunning = false,\n style,\n dark = true,\n}) => {\n const bg = dark ? '#0A0A0C' : '#ffffff';\n const border = dark ? '#2A2A35' : '#E5E7EB';\n const textPrimary = dark ? '#ffffff' : '#111827';\n const textSecondary = dark ? '#9CA3AF' : '#6B7280';\n const textMuted = dark ? '#555560' : '#9CA3AF';\n const cardBg = dark ? '#111111' : '#F9FAFB';\n\n const [selectedTab, setSelectedTab] = useState<'agents' | 'metrics' | 'risk'>('agents');\n\n const activeAgents = agents.filter(a => a.status === 'active');\n const totalPnl = agents.reduce((sum, a) => sum + a.totalPnl, 0);\n const totalPositions = agents.reduce((sum, a) => sum + a.openPositions, 0);\n\n const handleAgentPress = (agent: AIAgent) => {\n if (onAgentSelect) {\n onAgentSelect(agent);\n }\n };\n\n const renderAgentList = () => {\n if (layout === 'compact') {\n return (\n <View style={styles.compactGrid}>\n {agents.map(agent => (\n <OneAgentCard\n key={agent.id}\n agent={agent}\n onPress={handleAgentPress}\n compact={true}\n dark={dark}\n style={styles.compactCard}\n />\n ))}\n </View>\n );\n }\n\n if (layout === 'grid') {\n return (\n <View style={styles.agentGrid}>\n {agents.map(agent => (\n <View key={agent.id} style={styles.gridItem}>\n <OneAgentCard\n agent={agent}\n onPress={handleAgentPress}\n showMetrics={showPerformance}\n showIndicators={true}\n dark={dark}\n />\n </View>\n ))}\n </View>\n );\n }\n\n // Default: list layout\n return (\n <View style={styles.agentList}>\n {agents.map(agent => (\n <OneAgentCard\n key={agent.id}\n agent={agent}\n onPress={handleAgentPress}\n showMetrics={showPerformance}\n showIndicators={showPositions}\n dark={dark}\n />\n ))}\n </View>\n );\n };\n\n return (\n <View style={[styles.container, { backgroundColor: bg }, style]}>\n {/* Header */}\n <View style={[styles.header, { borderBottomColor: border }]}>\n <View style={styles.headerLeft}>\n <Text style={[styles.title, { color: textPrimary }]}>AI Quant Console</Text>\n <View style={[styles.statusBadge, { backgroundColor: isRunning ? '#D1FAE5' : '#F3F4F6' }]}>\n <View style={[\n styles.statusDot,\n { backgroundColor: isRunning ? '#10B981' : '#9CA3AF' }\n ]} />\n <Text style={[\n styles.statusText,\n { color: isRunning ? '#10B981' : '#9CA3AF' }\n ]}>\n {isRunning ? 'Running' : 'Stopped'}\n </Text>\n </View>\n </View>\n <View style={styles.headerRight}>\n {onStartAll && onStopAll && (\n <TouchableOpacity\n style={[\n styles.controlButton,\n { backgroundColor: isRunning ? '#FEE2E2' : '#D1FAE5' }\n ]}\n onPress={isRunning ? onStopAll : onStartAll}\n activeOpacity={0.7}\n >\n <Text style={[\n styles.controlButtonText,\n { color: isRunning ? '#EF4444' : '#10B981' }\n ]}>\n {isRunning ? 'Stop All' : 'Start All'}\n </Text>\n </TouchableOpacity>\n )}\n </View>\n </View>\n\n {/* Quick Stats */}\n <View style={[styles.quickStats, { backgroundColor: cardBg, borderBottomColor: border }]}>\n <View style={styles.quickStatItem}>\n <Text style={[styles.quickStatLabel, { color: textMuted }]}>Agents</Text>\n <Text style={[styles.quickStatValue, { color: textPrimary }]}>\n {activeAgents.length}/{agents.length}\n </Text>\n </View>\n <View style={styles.quickStatDivider} />\n <View style={styles.quickStatItem}>\n <Text style={[styles.quickStatLabel, { color: textMuted }]}>Total P&L</Text>\n <Text style={[\n styles.quickStatValue,\n { color: totalPnl >= 0 ? '#10B981' : '#EF4444' }\n ]}>\n {totalPnl >= 0 ? '+' : ''}${totalPnl.toFixed(2)}\n </Text>\n </View>\n <View style={styles.quickStatDivider} />\n <View style={styles.quickStatItem}>\n <Text style={[styles.quickStatLabel, { color: textMuted }]}>Positions</Text>\n <Text style={[styles.quickStatValue, { color: textPrimary }]}>\n {totalPositions}\n </Text>\n </View>\n </View>\n\n {/* Tab Navigation */}\n <View style={[styles.tabBar, { borderBottomColor: border }]}>\n <TouchableOpacity\n style={[\n styles.tab,\n selectedTab === 'agents' && styles.tabActive,\n selectedTab === 'agents' && { borderBottomColor: '#3B82F6' }\n ]}\n onPress={() => setSelectedTab('agents')}\n activeOpacity={0.7}\n >\n <Text style={[\n styles.tabText,\n { color: selectedTab === 'agents' ? '#3B82F6' : textSecondary }\n ]}>\n Agents ({agents.length})\n </Text>\n </TouchableOpacity>\n {showMetrics && metrics && (\n <TouchableOpacity\n style={[\n styles.tab,\n selectedTab === 'metrics' && styles.tabActive,\n selectedTab === 'metrics' && { borderBottomColor: '#3B82F6' }\n ]}\n onPress={() => setSelectedTab('metrics')}\n activeOpacity={0.7}\n >\n <Text style={[\n styles.tabText,\n { color: selectedTab === 'metrics' ? '#3B82F6' : textSecondary }\n ]}>\n Metrics\n </Text>\n </TouchableOpacity>\n )}\n {showRisk && riskStatus && (\n <TouchableOpacity\n style={[\n styles.tab,\n selectedTab === 'risk' && styles.tabActive,\n selectedTab === 'risk' && { borderBottomColor: '#3B82F6' }\n ]}\n onPress={() => setSelectedTab('risk')}\n activeOpacity={0.7}\n >\n <Text style={[\n styles.tabText,\n { color: selectedTab === 'risk' ? '#3B82F6' : textSecondary }\n ]}>\n Risk\n </Text>\n </TouchableOpacity>\n )}\n </View>\n\n {/* Content */}\n <ScrollView style={styles.content} contentContainerStyle={styles.contentInner}>\n {selectedTab === 'agents' && renderAgentList()}\n\n {selectedTab === 'metrics' && metrics && (\n <OneMetricsDashboard\n metrics={metrics}\n showNAV={true}\n showPnL={true}\n showTrades={true}\n showPositions={true}\n showStrategies={true}\n dark={dark}\n />\n )}\n\n {selectedTab === 'risk' && riskStatus && (\n <OneRiskIndicator\n riskStatus={riskStatus}\n showDetails={true}\n showWarnings={true}\n showLimits={true}\n dark={dark}\n />\n )}\n\n {/* Empty state */}\n {agents.length === 0 && selectedTab === 'agents' && (\n <View style={styles.emptyState}>\n <Text style={[styles.emptyIcon, { color: textMuted }]}>⚡</Text>\n <Text style={[styles.emptyTitle, { color: textSecondary }]}>\n No Agents Available\n </Text>\n <Text style={[styles.emptyText, { color: textMuted }]}>\n Start the simulation to see AI trading agents\n </Text>\n </View>\n )}\n </ScrollView>\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n borderRadius: 12,\n overflow: 'hidden',\n },\n header: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n padding: 14,\n borderBottomWidth: 1,\n },\n headerLeft: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 10,\n },\n headerRight: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 8,\n },\n title: {\n fontSize: 16,\n fontWeight: '700',\n },\n statusBadge: {\n flexDirection: 'row',\n alignItems: 'center',\n paddingHorizontal: 8,\n paddingVertical: 4,\n borderRadius: 12,\n gap: 4,\n },\n statusDot: {\n width: 6,\n height: 6,\n borderRadius: 3,\n },\n statusText: {\n fontSize: 11,\n fontWeight: '600',\n },\n controlButton: {\n paddingHorizontal: 12,\n paddingVertical: 6,\n borderRadius: 6,\n },\n controlButtonText: {\n fontSize: 12,\n fontWeight: '600',\n },\n quickStats: {\n flexDirection: 'row',\n justifyContent: 'space-around',\n alignItems: 'center',\n paddingVertical: 12,\n borderBottomWidth: 1,\n },\n quickStatItem: {\n alignItems: 'center',\n gap: 2,\n },\n quickStatLabel: {\n fontFamily: MONO,\n fontSize: 9,\n textTransform: 'uppercase',\n },\n quickStatValue: {\n fontFamily: MONO,\n fontSize: 16,\n fontWeight: '700',\n },\n quickStatDivider: {\n width: 1,\n height: 30,\n backgroundColor: '#2A2A35',\n },\n tabBar: {\n flexDirection: 'row',\n borderBottomWidth: 1,\n },\n tab: {\n flex: 1,\n paddingVertical: 12,\n alignItems: 'center',\n borderBottomWidth: 2,\n borderBottomColor: 'transparent',\n },\n tabActive: {\n borderBottomWidth: 2,\n },\n tabText: {\n fontSize: 13,\n fontWeight: '600',\n },\n content: {\n flex: 1,\n },\n contentInner: {\n padding: 14,\n gap: 12,\n },\n agentList: {\n gap: 12,\n },\n agentGrid: {\n flexDirection: 'row',\n flexWrap: 'wrap',\n gap: 12,\n },\n gridItem: {\n width: '48%',\n },\n compactGrid: {\n gap: 8,\n },\n compactCard: {\n marginBottom: 0,\n },\n emptyState: {\n alignItems: 'center',\n paddingVertical: 60,\n gap: 12,\n },\n emptyIcon: {\n fontSize: 40,\n },\n emptyTitle: {\n fontSize: 16,\n fontWeight: '600',\n },\n emptyText: {\n fontSize: 13,\n textAlign: 'center',\n },\n});\n","/**\n * OnePositionCard - Displays position with live P&L\n * Part of ONE Ecosystem SDK\n */\n\nimport React from 'react';\nimport { View, Text, StyleSheet, TouchableOpacity, ViewStyle, Platform } from 'react-native';\nimport type { AIPosition } from '../../../types/console';\nimport { formatPnl, formatPercent } from '../../../types/console';\n\nconst MONO = Platform.OS === 'ios' ? 'Courier New' : 'monospace';\n\nexport interface OnePositionCardProps {\n position: AIPosition;\n onPress?: (position: AIPosition) => void;\n onClose?: (positionId: string) => void;\n showDetails?: boolean;\n showRiskLevels?: boolean;\n compact?: boolean;\n style?: ViewStyle;\n dark?: boolean;\n}\n\nexport const OnePositionCard: React.FC<OnePositionCardProps> = ({\n position,\n onPress,\n onClose,\n showDetails = true,\n showRiskLevels = true,\n compact = false,\n style,\n dark = true,\n}) => {\n const bg = dark ? '#111111' : '#ffffff';\n const border = dark ? '#2A2A35' : '#E5E7EB';\n const textPrimary = dark ? '#ffffff' : '#111827';\n const textSecondary = dark ? '#9CA3AF' : '#6B7280';\n const textMuted = dark ? '#555560' : '#9CA3AF';\n\n const isLong = position.side === 'LONG';\n const sideColor = isLong ? '#10B981' : '#EF4444';\n const sideBgColor = isLong ? '#D1FAE5' : '#FEE2E2';\n const pnlColor = position.pnl >= 0 ? '#10B981' : '#EF4444';\n\n const handlePress = () => {\n if (onPress) {\n onPress(position);\n }\n };\n\n const handleClose = () => {\n if (onClose) {\n onClose(position.id);\n }\n };\n\n const formatPrice = (price: number): string => {\n if (price >= 1000) return price.toFixed(2);\n if (price >= 1) return price.toFixed(3);\n return price.toFixed(5);\n };\n\n const openDuration = Date.now() - position.openTime;\n const hours = Math.floor(openDuration / 3600000);\n const minutes = Math.floor((openDuration % 3600000) / 60000);\n const durationText = hours > 0 ? `${hours}h ${minutes}m` : `${minutes}m`;\n\n // Render compact content\n const renderCompactContent = () => (\n <>\n <View style={[styles.sideBadge, { backgroundColor: sideBgColor }]}>\n <Text style={[styles.sideText, { color: sideColor }]}>{position.side}</Text>\n </View>\n <Text style={[styles.compactPair, { color: textPrimary }]}>{position.pair}</Text>\n <Text style={[styles.compactLeverage, { color: textMuted }]}>{position.leverage}x</Text>\n <Text style={[styles.compactPnl, { color: pnlColor }]}>\n {formatPnl(position.pnl)}\n </Text>\n </>\n );\n\n // Render full content\n const renderFullContent = () => (\n <>\n {/* Header */}\n <View style={styles.header}>\n <View style={styles.headerLeft}>\n <View style={[styles.sideBadge, { backgroundColor: sideBgColor }]}>\n <Text style={[styles.sideText, { color: sideColor }]}>{position.side}</Text>\n </View>\n <Text style={[styles.pair, { color: textPrimary }]}>{position.pair}</Text>\n <Text style={[styles.leverage, { color: textSecondary }]}>{position.leverage}x</Text>\n </View>\n <View style={styles.headerRight}>\n <Text style={[styles.pnl, { color: pnlColor }]}>\n {formatPnl(position.pnl)}\n </Text>\n <Text style={[styles.pnlPercent, { color: pnlColor }]}>\n {formatPercent(position.pnlPercent)}\n </Text>\n </View>\n </View>\n\n {/* Price Info */}\n <View style={styles.priceRow}>\n <View style={styles.priceItem}>\n <Text style={[styles.priceLabel, { color: textMuted }]}>Entry</Text>\n <Text style={[styles.priceValue, { color: textSecondary }]}>\n ${formatPrice(position.entryPrice)}\n </Text>\n </View>\n <View style={styles.priceItem}>\n <Text style={[styles.priceLabel, { color: textMuted }]}>Current</Text>\n <Text style={[styles.priceValue, { color: textPrimary }]}>\n ${formatPrice(position.currentPrice)}\n </Text>\n </View>\n <View style={styles.priceItem}>\n <Text style={[styles.priceLabel, { color: textMuted }]}>Size</Text>\n <Text style={[styles.priceValue, { color: textSecondary }]}>\n ${position.size.toFixed(0)}\n </Text>\n </View>\n </View>\n\n {/* Risk Levels */}\n {showRiskLevels && (position.stopLoss || position.takeProfit) && (\n <View style={styles.riskRow}>\n {position.stopLoss && (\n <View style={styles.riskItem}>\n <Text style={[styles.riskLabel, { color: '#EF4444' }]}>SL</Text>\n <Text style={[styles.riskValue, { color: textSecondary }]}>\n ${formatPrice(position.stopLoss)}\n </Text>\n </View>\n )}\n {position.takeProfit && (\n <View style={styles.riskItem}>\n <Text style={[styles.riskLabel, { color: '#10B981' }]}>TP</Text>\n <Text style={[styles.riskValue, { color: textSecondary }]}>\n ${formatPrice(position.takeProfit)}\n </Text>\n </View>\n )}\n {position.liquidationPrice && (\n <View style={styles.riskItem}>\n <Text style={[styles.riskLabel, { color: '#F59E0B' }]}>LIQ</Text>\n <Text style={[styles.riskValue, { color: textSecondary }]}>\n ${formatPrice(position.liquidationPrice)}\n </Text>\n </View>\n )}\n </View>\n )}\n\n {/* Details */}\n {showDetails && (\n <View style={styles.detailsRow}>\n <View style={styles.detailItem}>\n <Text style={[styles.detailLabel, { color: textMuted }]}>Strategy</Text>\n <Text style={[styles.detailValue, { color: textSecondary }]}>\n {position.strategyName}\n </Text>\n </View>\n <View style={styles.detailItem}>\n <Text style={[styles.detailLabel, { color: textMuted }]}>Duration</Text>\n <Text style={[styles.detailValue, { color: textSecondary }]}>\n {durationText}\n </Text>\n </View>\n {position.chain && (\n <View style={styles.detailItem}>\n <Text style={[styles.detailLabel, { color: textMuted }]}>Chain</Text>\n <Text style={[styles.detailValue, { color: textSecondary }]}>\n {position.chain}\n </Text>\n </View>\n )}\n </View>\n )}\n\n {/* AI Reasoning */}\n {position.aiReasoning && (\n <View style={[styles.reasoningBox, { backgroundColor: dark ? '#1A1A1F' : '#F3F4F6' }]}>\n <Text style={[styles.reasoningLabel, { color: textMuted }]}>AI Reasoning</Text>\n <Text style={[styles.reasoningText, { color: textSecondary }]}>\n {position.aiReasoning}\n </Text>\n {position.aiConfidence && (\n <Text style={[styles.confidenceText, { color: textMuted }]}>\n Confidence: {(position.aiConfidence * 100).toFixed(0)}%\n </Text>\n )}\n </View>\n )}\n\n {/* Close Button */}\n {onClose && position.status === 'open' && (\n <TouchableOpacity\n style={styles.closeButton}\n onPress={handleClose}\n activeOpacity={0.7}\n >\n <Text style={styles.closeButtonText}>Close Position</Text>\n </TouchableOpacity>\n )}\n </>\n );\n\n if (compact) {\n if (onPress) {\n return (\n <TouchableOpacity\n style={[styles.compactContainer, { backgroundColor: bg, borderColor: border }, style]}\n onPress={handlePress}\n activeOpacity={0.7}\n >\n {renderCompactContent()}\n </TouchableOpacity>\n );\n }\n return (\n <View style={[styles.compactContainer, { backgroundColor: bg, borderColor: border }, style]}>\n {renderCompactContent()}\n </View>\n );\n }\n\n if (onPress) {\n return (\n <TouchableOpacity\n style={[styles.container, { backgroundColor: bg, borderColor: border }, style]}\n onPress={handlePress}\n activeOpacity={0.7}\n >\n {renderFullContent()}\n </TouchableOpacity>\n );\n }\n\n return (\n <View style={[styles.container, { backgroundColor: bg, borderColor: border }, style]}>\n {renderFullContent()}\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n borderRadius: 12,\n borderWidth: 1,\n padding: 14,\n gap: 12,\n },\n compactContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n borderRadius: 8,\n borderWidth: 1,\n paddingHorizontal: 12,\n paddingVertical: 8,\n gap: 10,\n },\n sideBadge: {\n paddingHorizontal: 8,\n paddingVertical: 3,\n borderRadius: 4,\n },\n sideText: {\n fontFamily: MONO,\n fontSize: 10,\n fontWeight: '700',\n },\n compactPair: {\n fontFamily: MONO,\n fontSize: 12,\n fontWeight: '600',\n flex: 1,\n },\n compactLeverage: {\n fontFamily: MONO,\n fontSize: 11,\n },\n compactPnl: {\n fontFamily: MONO,\n fontSize: 12,\n fontWeight: '600',\n },\n header: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n headerLeft: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 8,\n },\n headerRight: {\n alignItems: 'flex-end',\n },\n pair: {\n fontSize: 16,\n fontWeight: '700',\n },\n leverage: {\n fontFamily: MONO,\n fontSize: 12,\n },\n pnl: {\n fontFamily: MONO,\n fontSize: 18,\n fontWeight: '700',\n },\n pnlPercent: {\n fontFamily: MONO,\n fontSize: 12,\n },\n priceRow: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n },\n priceItem: {\n alignItems: 'center',\n gap: 2,\n },\n priceLabel: {\n fontFamily: MONO,\n fontSize: 9,\n textTransform: 'uppercase',\n },\n priceValue: {\n fontFamily: MONO,\n fontSize: 12,\n },\n riskRow: {\n flexDirection: 'row',\n justifyContent: 'space-around',\n paddingVertical: 8,\n borderTopWidth: 1,\n borderTopColor: '#2A2A35',\n borderBottomWidth: 1,\n borderBottomColor: '#2A2A35',\n },\n riskItem: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 6,\n },\n riskLabel: {\n fontFamily: MONO,\n fontSize: 10,\n fontWeight: '700',\n },\n riskValue: {\n fontFamily: MONO,\n fontSize: 11,\n },\n detailsRow: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n },\n detailItem: {\n alignItems: 'center',\n gap: 2,\n },\n detailLabel: {\n fontFamily: MONO,\n fontSize: 9,\n textTransform: 'uppercase',\n },\n detailValue: {\n fontFamily: MONO,\n fontSize: 11,\n },\n reasoningBox: {\n padding: 10,\n borderRadius: 8,\n gap: 4,\n },\n reasoningLabel: {\n fontFamily: MONO,\n fontSize: 9,\n textTransform: 'uppercase',\n },\n reasoningText: {\n fontSize: 12,\n lineHeight: 18,\n },\n confidenceText: {\n fontFamily: MONO,\n fontSize: 10,\n marginTop: 4,\n },\n closeButton: {\n backgroundColor: '#EF4444',\n paddingVertical: 10,\n borderRadius: 8,\n alignItems: 'center',\n },\n closeButtonText: {\n color: '#ffffff',\n fontWeight: '600',\n fontSize: 14,\n },\n});\n","/**\n * OneDecisionTimeline - Displays AI decision history with reasoning\n * Part of ONE Ecosystem SDK\n */\n\nimport React from 'react';\nimport { View, Text, StyleSheet, ScrollView, ViewStyle, Platform, TouchableOpacity } from 'react-native';\nimport type { AIDecision, DecisionAction } from '../../../types/console';\n\nconst MONO = Platform.OS === 'ios' ? 'Courier New' : 'monospace';\n\nconst ACTION_COLORS: Record<DecisionAction, { color: string; bgColor: string; label: string }> = {\n OPEN_LONG: { color: '#10B981', bgColor: '#D1FAE5', label: 'LONG' },\n OPEN_SHORT: { color: '#EF4444', bgColor: '#FEE2E2', label: 'SHORT' },\n CLOSE_LONG: { color: '#6366F1', bgColor: '#E0E7FF', label: 'CLOSE L' },\n CLOSE_SHORT: { color: '#8B5CF6', bgColor: '#EDE9FE', label: 'CLOSE S' },\n HOLD: { color: '#9CA3AF', bgColor: '#F3F4F6', label: 'HOLD' },\n SKIP: { color: '#F59E0B', bgColor: '#FEF3C7', label: 'SKIP' },\n};\n\nexport interface OneDecisionTimelineProps {\n decisions: AIDecision[];\n maxItems?: number;\n showReasoning?: boolean;\n showIndicators?: boolean;\n showConfidence?: boolean;\n onDecisionPress?: (decision: AIDecision) => void;\n style?: ViewStyle;\n height?: number;\n dark?: boolean;\n}\n\nexport const OneDecisionTimeline: React.FC<OneDecisionTimelineProps> = ({\n decisions,\n maxItems = 50,\n showReasoning = true,\n showIndicators = true,\n showConfidence = true,\n onDecisionPress,\n style,\n height = 400,\n dark = true,\n}) => {\n const bg = dark ? '#0A0A0C' : '#ffffff';\n const border = dark ? '#2A2A35' : '#E5E7EB';\n const textPrimary = dark ? '#ffffff' : '#111827';\n const textSecondary = dark ? '#9CA3AF' : '#6B7280';\n const textMuted = dark ? '#555560' : '#9CA3AF';\n const cardBg = dark ? '#111111' : '#F9FAFB';\n\n const visibleDecisions = decisions.slice(0, maxItems);\n\n const formatTime = (ts: number) => {\n const d = new Date(ts);\n const hours = d.getHours().toString().padStart(2, '0');\n const mins = d.getMinutes().toString().padStart(2, '0');\n const secs = d.getSeconds().toString().padStart(2, '0');\n return `${hours}:${mins}:${secs}`;\n };\n\n const formatDate = (ts: number) => {\n const d = new Date(ts);\n const month = (d.getMonth() + 1).toString().padStart(2, '0');\n const day = d.getDate().toString().padStart(2, '0');\n return `${month}/${day}`;\n };\n\n const getConfidenceColor = (confidence: number): string => {\n if (confidence >= 0.7) return '#10B981';\n if (confidence >= 0.5) return '#F59E0B';\n return '#EF4444';\n };\n\n const handlePress = (decision: AIDecision) => {\n if (onDecisionPress) {\n onDecisionPress(decision);\n }\n };\n\n const DecisionItem = ({ decision }: { decision: AIDecision }) => {\n const actionConfig = ACTION_COLORS[decision.action];\n\n const itemContent = (\n <>\n {/* Timeline dot and line */}\n <View style={styles.timelineColumn}>\n <View style={[styles.timelineDot, { backgroundColor: actionConfig.color }]} />\n <View style={[styles.timelineLine, { backgroundColor: border }]} />\n </View>\n\n {/* Content */}\n <View style={styles.decisionContent}>\n {/* Header */}\n <View style={styles.decisionHeader}>\n <View style={styles.decisionHeaderLeft}>\n <View style={[styles.actionBadge, { backgroundColor: actionConfig.bgColor }]}>\n <Text style={[styles.actionText, { color: actionConfig.color }]}>\n {actionConfig.label}\n </Text>\n </View>\n <Text style={[styles.pairText, { color: textPrimary }]}>{decision.pair}</Text>\n </View>\n <View style={styles.decisionHeaderRight}>\n <Text style={[styles.timeText, { color: textMuted }]}>\n {formatDate(decision.timestamp)} {formatTime(decision.timestamp)}\n </Text>\n </View>\n </View>\n\n {/* Strategy and Confidence */}\n <View style={styles.metaRow}>\n <Text style={[styles.strategyText, { color: textSecondary }]}>\n {decision.strategyName}\n </Text>\n {showConfidence && (\n <View style={styles.confidenceRow}>\n <Text style={[styles.confidenceLabel, { color: textMuted }]}>Confidence:</Text>\n <View style={[styles.confidenceBar, { backgroundColor: dark ? '#1A1A1F' : '#E5E7EB' }]}>\n <View\n style={[\n styles.confidenceFill,\n {\n width: `${decision.confidence * 100}%`,\n backgroundColor: getConfidenceColor(decision.confidence),\n }\n ]}\n />\n </View>\n <Text style={[styles.confidenceValue, { color: getConfidenceColor(decision.confidence) }]}>\n {(decision.confidence * 100).toFixed(0)}%\n </Text>\n </View>\n )}\n </View>\n\n {/* Reasoning */}\n {showReasoning && decision.reasoning && (\n <View style={[styles.reasoningBox, { backgroundColor: dark ? '#1A1A1F' : '#F3F4F6' }]}>\n <Text style={[styles.reasoningText, { color: textSecondary }]}>\n {decision.reasoning}\n </Text>\n </View>\n )}\n\n {/* Indicators */}\n {showIndicators && decision.indicators && Object.keys(decision.indicators).length > 0 && (\n <View style={styles.indicatorsRow}>\n {decision.indicators.rsi !== undefined && (\n <View style={styles.indicatorItem}>\n <Text style={[styles.indicatorLabel, { color: textMuted }]}>RSI</Text>\n <Text style={[styles.indicatorValue, { color: textSecondary }]}>\n {decision.indicators.rsi.toFixed(1)}\n </Text>\n </View>\n )}\n {decision.indicators.macd !== undefined && (\n <View style={styles.indicatorItem}>\n <Text style={[styles.indicatorLabel, { color: textMuted }]}>MACD</Text>\n <Text style={[\n styles.indicatorValue,\n { color: decision.indicators.macd >= 0 ? '#10B981' : '#EF4444' }\n ]}>\n {decision.indicators.macd >= 0 ? '+' : ''}{decision.indicators.macd.toFixed(3)}\n </Text>\n </View>\n )}\n {decision.indicators.ema && (\n <View style={styles.indicatorItem}>\n <Text style={[styles.indicatorLabel, { color: textMuted }]}>EMA</Text>\n <Text style={[\n styles.indicatorValue,\n { color: decision.indicators.ema === 'bullish' ? '#10B981' : '#EF4444' }\n ]}>\n {decision.indicators.ema}\n </Text>\n </View>\n )}\n {decision.indicators.volume !== undefined && (\n <View style={styles.indicatorItem}>\n <Text style={[styles.indicatorLabel, { color: textMuted }]}>Vol</Text>\n <Text style={[styles.indicatorValue, { color: textSecondary }]}>\n {decision.indicators.volume.toFixed(1)}x\n </Text>\n </View>\n )}\n </View>\n )}\n\n {/* Signals */}\n {decision.signals && decision.signals.length > 0 && (\n <View style={styles.signalsRow}>\n {decision.signals.slice(0, 3).map((signal, index) => (\n <View key={index} style={[styles.signalBadge, { backgroundColor: dark ? '#1A1A1F' : '#E5E7EB' }]}>\n <Text style={[styles.signalText, { color: textSecondary }]}>{signal}</Text>\n </View>\n ))}\n </View>\n )}\n\n {/* Execution Info */}\n {decision.executed && (\n <View style={[styles.executionRow, { borderTopColor: border }]}>\n <View style={[styles.executedBadge, { backgroundColor: '#D1FAE5' }]}>\n <Text style={styles.executedText}>EXECUTED</Text>\n </View>\n {decision.price && (\n <Text style={[styles.executionDetail, { color: textSecondary }]}>\n @ ${decision.price.toFixed(2)}\n </Text>\n )}\n {decision.size && (\n <Text style={[styles.executionDetail, { color: textSecondary }]}>\n Size: ${decision.size}\n </Text>\n )}\n {decision.leverage && (\n <Text style={[styles.executionDetail, { color: textSecondary }]}>\n {decision.leverage}x\n </Text>\n )}\n </View>\n )}\n </View>\n </>\n );\n\n if (onDecisionPress) {\n return (\n <TouchableOpacity\n style={[styles.decisionItem, { backgroundColor: cardBg }]}\n onPress={() => handlePress(decision)}\n activeOpacity={0.7}\n >\n {itemContent}\n </TouchableOpacity>\n );\n }\n\n return (\n <View style={[styles.decisionItem, { backgroundColor: cardBg }]}>\n {itemContent}\n </View>\n );\n };\n\n return (\n <View style={[styles.container, { backgroundColor: bg, borderColor: border, height }, style]}>\n <ScrollView style={styles.scroll} contentContainerStyle={styles.scrollContent}>\n {visibleDecisions.map((decision) => (\n <DecisionItem key={decision.id} decision={decision} />\n ))}\n {visibleDecisions.length === 0 && (\n <Text style={[styles.emptyText, { color: textMuted }]}>\n No decisions recorded yet...\n </Text>\n )}\n </ScrollView>\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n borderRadius: 8,\n borderWidth: 1,\n overflow: 'hidden',\n },\n scroll: {\n flex: 1,\n },\n scrollContent: {\n padding: 12,\n gap: 8,\n },\n decisionItem: {\n flexDirection: 'row',\n borderRadius: 8,\n overflow: 'hidden',\n },\n timelineColumn: {\n width: 24,\n alignItems: 'center',\n paddingTop: 14,\n },\n timelineDot: {\n width: 10,\n height: 10,\n borderRadius: 5,\n },\n timelineLine: {\n width: 2,\n flex: 1,\n marginTop: 4,\n },\n decisionContent: {\n flex: 1,\n padding: 12,\n gap: 8,\n },\n decisionHeader: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n decisionHeaderLeft: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 8,\n },\n decisionHeaderRight: {\n alignItems: 'flex-end',\n },\n actionBadge: {\n paddingHorizontal: 8,\n paddingVertical: 3,\n borderRadius: 4,\n },\n actionText: {\n fontFamily: MONO,\n fontSize: 10,\n fontWeight: '700',\n },\n pairText: {\n fontSize: 14,\n fontWeight: '600',\n },\n timeText: {\n fontFamily: MONO,\n fontSize: 10,\n },\n metaRow: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n strategyText: {\n fontSize: 11,\n },\n confidenceRow: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 6,\n },\n confidenceLabel: {\n fontFamily: MONO,\n fontSize: 9,\n },\n confidenceBar: {\n width: 50,\n height: 6,\n borderRadius: 3,\n overflow: 'hidden',\n },\n confidenceFill: {\n height: '100%',\n borderRadius: 3,\n },\n confidenceValue: {\n fontFamily: MONO,\n fontSize: 10,\n fontWeight: '600',\n },\n reasoningBox: {\n padding: 8,\n borderRadius: 6,\n },\n reasoningText: {\n fontSize: 11,\n lineHeight: 16,\n },\n indicatorsRow: {\n flexDirection: 'row',\n flexWrap: 'wrap',\n gap: 12,\n },\n indicatorItem: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 4,\n },\n indicatorLabel: {\n fontFamily: MONO,\n fontSize: 9,\n textTransform: 'uppercase',\n },\n indicatorValue: {\n fontFamily: MONO,\n fontSize: 11,\n fontWeight: '600',\n },\n signalsRow: {\n flexDirection: 'row',\n flexWrap: 'wrap',\n gap: 6,\n },\n signalBadge: {\n paddingHorizontal: 6,\n paddingVertical: 2,\n borderRadius: 4,\n },\n signalText: {\n fontFamily: MONO,\n fontSize: 9,\n },\n executionRow: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 10,\n paddingTop: 8,\n borderTopWidth: 1,\n },\n executedBadge: {\n paddingHorizontal: 6,\n paddingVertical: 2,\n borderRadius: 4,\n },\n executedText: {\n fontFamily: MONO,\n fontSize: 9,\n fontWeight: '700',\n color: '#10B981',\n },\n executionDetail: {\n fontFamily: MONO,\n fontSize: 10,\n },\n emptyText: {\n fontFamily: MONO,\n fontSize: 11,\n textAlign: 'center',\n paddingVertical: 40,\n },\n});\n","/**\n * OneAgentConsole - Individual agent detail view\n * Part of ONE Ecosystem SDK\n */\n\nimport React, { useRef, useEffect } from 'react';\nimport { View, Text, StyleSheet, ScrollView, ViewStyle, Platform, TouchableOpacity } from 'react-native';\nimport type { BotLogEntry, BotState } from '../../../services/forex/BotSimulationEngine';\nimport type { AIPosition, AIDecision, AIAgent } from '../../../types/console';\nimport { AI_LOG_COLORS } from '../../../types/console';\nimport { OnePositionCard } from './OnePositionCard';\nimport { OneDecisionTimeline } from './OneDecisionTimeline';\n\nconst MONO = Platform.OS === 'ios' ? 'Courier New' : 'monospace';\n\nexport interface OneAgentConsoleProps {\n agent?: AIAgent;\n strategyId?: string;\n strategyName?: string;\n logs: BotLogEntry[];\n botState?: BotState;\n positions?: AIPosition[];\n decisions?: AIDecision[];\n showConsole?: boolean;\n showPositions?: boolean;\n showDecisions?: boolean;\n showMetrics?: boolean;\n maxLogs?: number;\n autoScroll?: boolean;\n consoleHeight?: number;\n onPositionPress?: (position: AIPosition) => void;\n onDecisionPress?: (decision: AIDecision) => void;\n onClosePosition?: (positionId: string) => void;\n style?: ViewStyle;\n dark?: boolean;\n}\n\nexport const OneAgentConsole: React.FC<OneAgentConsoleProps> = ({\n agent,\n strategyId,\n strategyName,\n logs,\n botState,\n positions = [],\n decisions = [],\n showConsole = true,\n showPositions = true,\n showDecisions = true,\n showMetrics = true,\n maxLogs = 100,\n autoScroll = true,\n consoleHeight = 300,\n onPositionPress,\n onDecisionPress,\n onClosePosition,\n style,\n dark = true,\n}) => {\n const bg = dark ? '#111111' : '#ffffff';\n const border = dark ? '#2A2A35' : '#E5E7EB';\n const textPrimary = dark ? '#ffffff' : '#111827';\n const textSecondary = dark ? '#9CA3AF' : '#6B7280';\n const textMuted = dark ? '#555560' : '#9CA3AF';\n const consoleBg = dark ? '#0A0A0C' : '#F9FAFB';\n\n const scrollRef = useRef<ScrollView>(null);\n const visibleLogs = logs.slice(-maxLogs);\n const openPositions = positions.filter(p => p.status === 'open');\n\n // Auto-scroll console\n useEffect(() => {\n if (autoScroll && scrollRef.current) {\n setTimeout(() => scrollRef.current?.scrollToEnd({ animated: true }), 50);\n }\n }, [logs.length, autoScroll]);\n\n const formatTime = (ts: number) => {\n const d = new Date(ts);\n return `${d.getHours().toString().padStart(2, '0')}:${d.getMinutes().toString().padStart(2, '0')}:${d.getSeconds().toString().padStart(2, '0')}`;\n };\n\n const displayName = agent?.name || strategyName || strategyId || 'Agent';\n const displayColor = agent?.color || botState?.strategyName ? '#3B82F6' : '#9CA3AF';\n const isActive = agent?.status === 'active' || botState?.isRunning;\n\n return (\n <View style={[styles.container, { backgroundColor: bg, borderColor: border }, style]}>\n {/* Header */}\n <View style={styles.header}>\n <View style={styles.headerLeft}>\n <View style={[styles.colorDot, { backgroundColor: displayColor }]} />\n <Text style={[styles.agentName, { color: textPrimary }]}>{displayName}</Text>\n <View style={[\n styles.statusBadge,\n { backgroundColor: isActive ? '#D1FAE5' : '#F3F4F6' }\n ]}>\n <View style={[\n styles.statusDot,\n { backgroundColor: isActive ? '#10B981' : '#9CA3AF' }\n ]} />\n <Text style={[\n styles.statusText,\n { color: isActive ? '#10B981' : '#9CA3AF' }\n ]}>\n {isActive ? 'Active' : 'Idle'}\n </Text>\n </View>\n </View>\n {botState && (\n <View style={styles.headerRight}>\n <Text style={[styles.currentPair, { color: textSecondary }]}>\n {botState.currentPair}\n </Text>\n </View>\n )}\n </View>\n\n {/* Quick Metrics */}\n {showMetrics && (agent || botState) && (\n <View style={[styles.metricsRow, { borderBottomColor: border }]}>\n <View style={styles.metricItem}>\n <Text style={[styles.metricLabel, { color: textMuted }]}>P&L</Text>\n <Text style={[\n styles.metricValue,\n { color: (agent?.totalPnl ?? botState?.totalPnl ?? 0) >= 0 ? '#10B981' : '#EF4444' }\n ]}>\n {(agent?.totalPnl ?? botState?.totalPnl ?? 0) >= 0 ? '+' : ''}\n ${(agent?.totalPnl ?? botState?.totalPnl ?? 0).toFixed(2)}\n </Text>\n </View>\n <View style={styles.metricItem}>\n <Text style={[styles.metricLabel, { color: textMuted }]}>Win Rate</Text>\n <Text style={[styles.metricValue, { color: textPrimary }]}>\n {((agent?.winRate ?? botState?.winRate ?? 0) * 100).toFixed(1)}%\n </Text>\n </View>\n <View style={styles.metricItem}>\n <Text style={[styles.metricLabel, { color: textMuted }]}>Trades</Text>\n <Text style={[styles.metricValue, { color: textPrimary }]}>\n {agent?.totalTrades ?? botState?.totalTrades ?? 0}\n </Text>\n </View>\n <View style={styles.metricItem}>\n <Text style={[styles.metricLabel, { color: textMuted }]}>Positions</Text>\n <Text style={[styles.metricValue, { color: textPrimary }]}>\n {openPositions.length}\n </Text>\n </View>\n {botState?.lastSignal && botState.lastSignal !== 'HOLD' && (\n <View style={styles.metricItem}>\n <Text style={[styles.metricLabel, { color: textMuted }]}>Signal</Text>\n <View style={[\n styles.signalBadge,\n { backgroundColor: botState.lastSignal === 'LONG' ? '#D1FAE5' : '#FEE2E2' }\n ]}>\n <Text style={[\n styles.signalText,\n { color: botState.lastSignal === 'LONG' ? '#10B981' : '#EF4444' }\n ]}>\n {botState.lastSignal}\n </Text>\n </View>\n </View>\n )}\n </View>\n )}\n\n {/* Console Output */}\n {showConsole && (\n <View style={styles.section}>\n <Text style={[styles.sectionTitle, { color: textMuted }]}>Console Output</Text>\n <View style={[styles.consoleContainer, { backgroundColor: consoleBg, height: consoleHeight }]}>\n <ScrollView\n ref={scrollRef}\n style={styles.consoleScroll}\n contentContainerStyle={styles.consoleContent}\n >\n {visibleLogs.map((log) => (\n <View key={log.id} style={styles.logRow}>\n <Text style={[styles.logTime, { color: textMuted }]}>\n {formatTime(log.timestamp)}\n </Text>\n <Text style={[\n styles.logType,\n { color: AI_LOG_COLORS[log.type as keyof typeof AI_LOG_COLORS] || textMuted }\n ]}>\n {log.type.padEnd(10)}\n </Text>\n <Text\n style={[\n styles.logMessage,\n { color: log.importance === 'high' ? textPrimary : textSecondary },\n log.importance === 'high' && styles.logMessageHigh,\n ]}\n numberOfLines={2}\n >\n {log.message}\n </Text>\n </View>\n ))}\n {visibleLogs.length === 0 && (\n <Text style={[styles.emptyText, { color: textMuted }]}>\n Waiting for activity...\n </Text>\n )}\n </ScrollView>\n </View>\n </View>\n )}\n\n {/* Open Positions */}\n {showPositions && openPositions.length > 0 && (\n <View style={styles.section}>\n <Text style={[styles.sectionTitle, { color: textMuted }]}>\n Open Positions ({openPositions.length})\n </Text>\n <View style={styles.positionsList}>\n {openPositions.map((position) => (\n <OnePositionCard\n key={position.id}\n position={position}\n onPress={onPositionPress}\n onClose={onClosePosition}\n compact={true}\n dark={dark}\n />\n ))}\n </View>\n </View>\n )}\n\n {/* Recent Decisions */}\n {showDecisions && decisions.length > 0 && (\n <View style={styles.section}>\n <Text style={[styles.sectionTitle, { color: textMuted }]}>\n Recent Decisions ({decisions.length})\n </Text>\n <OneDecisionTimeline\n decisions={decisions.slice(0, 5)}\n showReasoning={true}\n showIndicators={false}\n showConfidence={true}\n onDecisionPress={onDecisionPress}\n height={250}\n dark={dark}\n />\n </View>\n )}\n\n {/* Indicators (if bot state available) */}\n {botState?.indicators && (\n <View style={[styles.indicatorsSection, { borderTopColor: border }]}>\n <Text style={[styles.sectionTitle, { color: textMuted }]}>Current Indicators</Text>\n <View style={styles.indicatorsGrid}>\n <View style={styles.indicatorItem}>\n <Text style={[styles.indicatorLabel, { color: textMuted }]}>RSI</Text>\n <Text style={[\n styles.indicatorValue,\n {\n color: botState.indicators.rsi < 30 ? '#10B981' :\n botState.indicators.rsi > 70 ? '#EF4444' : textPrimary\n }\n ]}>\n {botState.indicators.rsi.toFixed(1)}\n </Text>\n </View>\n <View style={styles.indicatorItem}>\n <Text style={[styles.indicatorLabel, { color: textMuted }]}>MACD</Text>\n <Text style={[\n styles.indicatorValue,\n { color: botState.indicators.macd.histogram >= 0 ? '#10B981' : '#EF4444' }\n ]}>\n {botState.indicators.macd.histogram >= 0 ? '+' : ''}\n {botState.indicators.macd.histogram.toFixed(3)}\n </Text>\n </View>\n <View style={styles.indicatorItem}>\n <Text style={[styles.indicatorLabel, { color: textMuted }]}>EMA</Text>\n <Text style={[\n styles.indicatorValue,\n { color: botState.indicators.ema.crossover === 'golden' ? '#10B981' :\n botState.indicators.ema.crossover === 'death' ? '#EF4444' : textSecondary }\n ]}>\n {botState.indicators.ema.crossover !== 'none' ?\n botState.indicators.ema.crossover.toUpperCase() : 'NEUTRAL'}\n </Text>\n </View>\n <View style={styles.indicatorItem}>\n <Text style={[styles.indicatorLabel, { color: textMuted }]}>Volume</Text>\n <Text style={[styles.indicatorValue, { color: textPrimary }]}>\n {botState.indicators.volume.ratio.toFixed(1)}x\n </Text>\n </View>\n <View style={styles.indicatorItem}>\n <Text style={[styles.indicatorLabel, { color: textMuted }]}>BB Pos</Text>\n <Text style={[styles.indicatorValue, { color: textPrimary }]}>\n {botState.indicators.bollinger.position.toFixed(0)}%\n </Text>\n </View>\n </View>\n </View>\n )}\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n borderRadius: 12,\n borderWidth: 1,\n overflow: 'hidden',\n },\n header: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n padding: 14,\n borderBottomWidth: 1,\n borderBottomColor: '#2A2A35',\n },\n headerLeft: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 10,\n },\n headerRight: {\n alignItems: 'flex-end',\n },\n colorDot: {\n width: 12,\n height: 12,\n borderRadius: 6,\n },\n agentName: {\n fontSize: 16,\n fontWeight: '600',\n },\n statusBadge: {\n flexDirection: 'row',\n alignItems: 'center',\n paddingHorizontal: 8,\n paddingVertical: 4,\n borderRadius: 12,\n gap: 4,\n },\n statusDot: {\n width: 6,\n height: 6,\n borderRadius: 3,\n },\n statusText: {\n fontSize: 11,\n fontWeight: '600',\n },\n currentPair: {\n fontFamily: MONO,\n fontSize: 12,\n },\n metricsRow: {\n flexDirection: 'row',\n justifyContent: 'space-around',\n paddingVertical: 12,\n paddingHorizontal: 8,\n borderBottomWidth: 1,\n },\n metricItem: {\n alignItems: 'center',\n gap: 2,\n },\n metricLabel: {\n fontFamily: MONO,\n fontSize: 9,\n textTransform: 'uppercase',\n },\n metricValue: {\n fontFamily: MONO,\n fontSize: 14,\n fontWeight: '600',\n },\n signalBadge: {\n paddingHorizontal: 8,\n paddingVertical: 2,\n borderRadius: 4,\n },\n signalText: {\n fontFamily: MONO,\n fontSize: 10,\n fontWeight: '700',\n },\n section: {\n padding: 14,\n gap: 10,\n },\n sectionTitle: {\n fontFamily: MONO,\n fontSize: 10,\n textTransform: 'uppercase',\n letterSpacing: 1,\n },\n consoleContainer: {\n borderRadius: 8,\n overflow: 'hidden',\n },\n consoleScroll: {\n flex: 1,\n },\n consoleContent: {\n padding: 8,\n },\n logRow: {\n flexDirection: 'row',\n paddingVertical: 2,\n },\n logTime: {\n fontFamily: MONO,\n fontSize: 10,\n width: 60,\n marginRight: 6,\n },\n logType: {\n fontFamily: MONO,\n fontSize: 10,\n fontWeight: '700',\n width: 75,\n marginRight: 6,\n },\n logMessage: {\n fontFamily: MONO,\n fontSize: 10,\n flex: 1,\n },\n logMessageHigh: {\n fontWeight: '600',\n },\n emptyText: {\n fontFamily: MONO,\n fontSize: 11,\n textAlign: 'center',\n paddingVertical: 30,\n },\n positionsList: {\n gap: 8,\n },\n indicatorsSection: {\n padding: 14,\n borderTopWidth: 1,\n gap: 10,\n },\n indicatorsGrid: {\n flexDirection: 'row',\n flexWrap: 'wrap',\n gap: 16,\n },\n indicatorItem: {\n alignItems: 'center',\n gap: 2,\n minWidth: 60,\n },\n indicatorLabel: {\n fontFamily: MONO,\n fontSize: 9,\n textTransform: 'uppercase',\n },\n indicatorValue: {\n fontFamily: MONO,\n fontSize: 13,\n fontWeight: '600',\n },\n});\n","/**\n * OnePositionDetail - Detailed position tracking view\n * Part of ONE Ecosystem SDK\n */\n\nimport React, { useEffect, useState, useRef } from 'react';\nimport { View, Text, StyleSheet, ScrollView, ViewStyle, Platform, TouchableOpacity, Animated } from 'react-native';\nimport type { AIPosition } from '../../../types/console';\nimport { formatPnl, formatPercent } from '../../../types/console';\n\nconst MONO = Platform.OS === 'ios' ? 'Courier New' : 'monospace';\n\nexport interface OnePositionDetailProps {\n position: AIPosition;\n showTimeline?: boolean;\n showReasoning?: boolean;\n showRiskLevels?: boolean;\n showHistory?: boolean;\n priceUpdateInterval?: number;\n onClose?: (positionId: string) => void;\n onUpdateStopLoss?: (positionId: string, stopLoss: number) => void;\n onUpdateTakeProfit?: (positionId: string, takeProfit: number) => void;\n style?: ViewStyle;\n dark?: boolean;\n}\n\nexport const OnePositionDetail: React.FC<OnePositionDetailProps> = ({\n position,\n showTimeline = true,\n showReasoning = true,\n showRiskLevels = true,\n showHistory = true,\n priceUpdateInterval = 5000,\n onClose,\n onUpdateStopLoss,\n onUpdateTakeProfit,\n style,\n dark = true,\n}) => {\n const bg = dark ? '#0A0A0C' : '#ffffff';\n const cardBg = dark ? '#111111' : '#F9FAFB';\n const border = dark ? '#2A2A35' : '#E5E7EB';\n const textPrimary = dark ? '#ffffff' : '#111827';\n const textSecondary = dark ? '#9CA3AF' : '#6B7280';\n const textMuted = dark ? '#555560' : '#9CA3AF';\n\n const isLong = position.side === 'LONG';\n const sideColor = isLong ? '#10B981' : '#EF4444';\n const sideBgColor = isLong ? '#D1FAE5' : '#FEE2E2';\n const pnlColor = position.pnl >= 0 ? '#10B981' : '#EF4444';\n\n // Animated values for P&L updates\n const pnlAnim = useRef(new Animated.Value(0)).current;\n const [prevPnl, setPrevPnl] = useState(position.pnl);\n\n useEffect(() => {\n if (position.pnl !== prevPnl) {\n Animated.sequence([\n Animated.timing(pnlAnim, { toValue: 1, duration: 200, useNativeDriver: false }),\n Animated.timing(pnlAnim, { toValue: 0, duration: 400, useNativeDriver: false }),\n ]).start();\n setPrevPnl(position.pnl);\n }\n }, [position.pnl, prevPnl, pnlAnim]);\n\n const pnlBgColor = pnlAnim.interpolate({\n inputRange: [0, 1],\n outputRange: [cardBg, position.pnl >= 0 ? '#134E4A' : '#7F1D1D'],\n });\n\n const formatPrice = (price: number): string => {\n if (price >= 1000) return price.toFixed(2);\n if (price >= 1) return price.toFixed(4);\n return price.toFixed(6);\n };\n\n const formatDuration = (openTime: number, closeTime?: number): string => {\n const end = closeTime || Date.now();\n const duration = end - openTime;\n const hours = Math.floor(duration / 3600000);\n const minutes = Math.floor((duration % 3600000) / 60000);\n const seconds = Math.floor((duration % 60000) / 1000);\n\n if (hours > 0) return `${hours}h ${minutes}m`;\n if (minutes > 0) return `${minutes}m ${seconds}s`;\n return `${seconds}s`;\n };\n\n const formatTimestamp = (ts: number): string => {\n const d = new Date(ts);\n return d.toLocaleString('en-US', {\n month: 'short',\n day: 'numeric',\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n });\n };\n\n // Calculate distance to liquidation\n const distanceToLiquidation = position.liquidationPrice\n ? Math.abs((position.currentPrice - position.liquidationPrice) / position.currentPrice * 100)\n : null;\n\n // Calculate P&L at TP and SL\n const pnlAtTP = position.takeProfit\n ? ((isLong\n ? (position.takeProfit - position.entryPrice)\n : (position.entryPrice - position.takeProfit)) / position.entryPrice) * position.leverage * position.size\n : null;\n\n const pnlAtSL = position.stopLoss\n ? ((isLong\n ? (position.stopLoss - position.entryPrice)\n : (position.entryPrice - position.stopLoss)) / position.entryPrice) * position.leverage * position.size\n : null;\n\n const handleClose = () => {\n if (onClose) {\n onClose(position.id);\n }\n };\n\n return (\n <ScrollView style={[styles.container, { backgroundColor: bg }, style]}>\n {/* Header */}\n <View style={[styles.header, { backgroundColor: cardBg, borderBottomColor: border }]}>\n <View style={styles.headerTop}>\n <View style={styles.headerLeft}>\n <View style={[styles.sideBadge, { backgroundColor: sideBgColor }]}>\n <Text style={[styles.sideText, { color: sideColor }]}>{position.side}</Text>\n </View>\n <Text style={[styles.pair, { color: textPrimary }]}>{position.pair}</Text>\n <Text style={[styles.leverage, { color: textSecondary }]}>{position.leverage}x</Text>\n </View>\n <View style={[\n styles.statusBadge,\n { backgroundColor: position.status === 'open' ? '#D1FAE5' : '#F3F4F6' }\n ]}>\n <Text style={[\n styles.statusText,\n { color: position.status === 'open' ? '#10B981' : '#9CA3AF' }\n ]}>\n {position.status.toUpperCase()}\n </Text>\n </View>\n </View>\n\n {/* Main P&L Display */}\n <Animated.View style={[styles.pnlSection, { backgroundColor: pnlBgColor }]}>\n <View style={styles.pnlMain}>\n <Text style={[styles.pnlValue, { color: pnlColor }]}>\n {formatPnl(position.pnl)}\n </Text>\n <Text style={[styles.pnlPercent, { color: pnlColor }]}>\n {formatPercent(position.pnlPercent)}\n </Text>\n </View>\n <Text style={[styles.pnlLabel, { color: textMuted }]}>Unrealized P&L</Text>\n </Animated.View>\n </View>\n\n {/* Price Information */}\n <View style={[styles.section, { backgroundColor: cardBg }]}>\n <Text style={[styles.sectionTitle, { color: textMuted }]}>Price Information</Text>\n <View style={styles.priceGrid}>\n <View style={styles.priceItem}>\n <Text style={[styles.priceLabel, { color: textMuted }]}>Entry Price</Text>\n <Text style={[styles.priceValue, { color: textPrimary }]}>\n ${formatPrice(position.entryPrice)}\n </Text>\n </View>\n <View style={styles.priceItem}>\n <Text style={[styles.priceLabel, { color: textMuted }]}>Current Price</Text>\n <Text style={[styles.priceValue, { color: textPrimary }]}>\n ${formatPrice(position.currentPrice)}\n </Text>\n </View>\n <View style={styles.priceItem}>\n <Text style={[styles.priceLabel, { color: textMuted }]}>Price Change</Text>\n <Text style={[\n styles.priceValue,\n { color: (position.currentPrice - position.entryPrice) * (isLong ? 1 : -1) >= 0 ? '#10B981' : '#EF4444' }\n ]}>\n {((position.currentPrice - position.entryPrice) / position.entryPrice * 100) >= 0 ? '+' : ''}\n {((position.currentPrice - position.entryPrice) / position.entryPrice * 100).toFixed(4)}%\n </Text>\n </View>\n </View>\n </View>\n\n {/* Position Details */}\n <View style={[styles.section, { backgroundColor: cardBg }]}>\n <Text style={[styles.sectionTitle, { color: textMuted }]}>Position Details</Text>\n <View style={styles.detailsGrid}>\n <View style={styles.detailRow}>\n <Text style={[styles.detailLabel, { color: textSecondary }]}>Size</Text>\n <Text style={[styles.detailValue, { color: textPrimary }]}>\n ${position.size.toLocaleString()}\n </Text>\n </View>\n <View style={styles.detailRow}>\n <Text style={[styles.detailLabel, { color: textSecondary }]}>Margin</Text>\n <Text style={[styles.detailValue, { color: textPrimary }]}>\n ${position.margin.toFixed(2)}\n </Text>\n </View>\n <View style={styles.detailRow}>\n <Text style={[styles.detailLabel, { color: textSecondary }]}>Leverage</Text>\n <Text style={[styles.detailValue, { color: textPrimary }]}>\n {position.leverage}x\n </Text>\n </View>\n <View style={styles.detailRow}>\n <Text style={[styles.detailLabel, { color: textSecondary }]}>Strategy</Text>\n <Text style={[styles.detailValue, { color: textPrimary }]}>\n {position.strategyName}\n </Text>\n </View>\n {position.chain && (\n <View style={styles.detailRow}>\n <Text style={[styles.detailLabel, { color: textSecondary }]}>Chain</Text>\n <Text style={[styles.detailValue, { color: textPrimary }]}>\n {position.chain}\n </Text>\n </View>\n )}\n <View style={styles.detailRow}>\n <Text style={[styles.detailLabel, { color: textSecondary }]}>Duration</Text>\n <Text style={[styles.detailValue, { color: textPrimary }]}>\n {formatDuration(position.openTime, position.closeTime)}\n </Text>\n </View>\n </View>\n </View>\n\n {/* Risk Levels */}\n {showRiskLevels && (\n <View style={[styles.section, { backgroundColor: cardBg }]}>\n <Text style={[styles.sectionTitle, { color: textMuted }]}>Risk Management</Text>\n <View style={styles.riskGrid}>\n {position.stopLoss && (\n <View style={[styles.riskCard, { borderColor: '#EF4444' }]}>\n <Text style={[styles.riskCardLabel, { color: '#EF4444' }]}>Stop Loss</Text>\n <Text style={[styles.riskCardPrice, { color: textPrimary }]}>\n ${formatPrice(position.stopLoss)}\n </Text>\n {pnlAtSL !== null && (\n <Text style={[styles.riskCardPnl, { color: '#EF4444' }]}>\n {formatPnl(pnlAtSL)}\n </Text>\n )}\n </View>\n )}\n {position.takeProfit && (\n <View style={[styles.riskCard, { borderColor: '#10B981' }]}>\n <Text style={[styles.riskCardLabel, { color: '#10B981' }]}>Take Profit</Text>\n <Text style={[styles.riskCardPrice, { color: textPrimary }]}>\n ${formatPrice(position.takeProfit)}\n </Text>\n {pnlAtTP !== null && (\n <Text style={[styles.riskCardPnl, { color: '#10B981' }]}>\n {formatPnl(pnlAtTP)}\n </Text>\n )}\n </View>\n )}\n {position.liquidationPrice && (\n <View style={[styles.riskCard, { borderColor: '#F59E0B' }]}>\n <Text style={[styles.riskCardLabel, { color: '#F59E0B' }]}>Liquidation</Text>\n <Text style={[styles.riskCardPrice, { color: textPrimary }]}>\n ${formatPrice(position.liquidationPrice)}\n </Text>\n {distanceToLiquidation !== null && (\n <Text style={[styles.riskCardDistance, { color: textMuted }]}>\n {distanceToLiquidation.toFixed(2)}% away\n </Text>\n )}\n </View>\n )}\n </View>\n </View>\n )}\n\n {/* AI Reasoning */}\n {showReasoning && position.aiReasoning && (\n <View style={[styles.section, { backgroundColor: cardBg }]}>\n <Text style={[styles.sectionTitle, { color: textMuted }]}>AI Analysis</Text>\n <View style={[styles.reasoningBox, { backgroundColor: dark ? '#1A1A1F' : '#F3F4F6' }]}>\n <Text style={[styles.reasoningText, { color: textSecondary }]}>\n {position.aiReasoning}\n </Text>\n </View>\n {position.aiConfidence && (\n <View style={styles.confidenceRow}>\n <Text style={[styles.confidenceLabel, { color: textMuted }]}>Confidence</Text>\n <View style={[styles.confidenceBar, { backgroundColor: dark ? '#1A1A1F' : '#E5E7EB' }]}>\n <View\n style={[\n styles.confidenceFill,\n {\n width: `${position.aiConfidence * 100}%`,\n backgroundColor: position.aiConfidence >= 0.7 ? '#10B981' :\n position.aiConfidence >= 0.5 ? '#F59E0B' : '#EF4444',\n }\n ]}\n />\n </View>\n <Text style={[styles.confidenceValue, { color: textPrimary }]}>\n {(position.aiConfidence * 100).toFixed(0)}%\n </Text>\n </View>\n )}\n </View>\n )}\n\n {/* Timeline */}\n {showTimeline && (\n <View style={[styles.section, { backgroundColor: cardBg }]}>\n <Text style={[styles.sectionTitle, { color: textMuted }]}>Timeline</Text>\n <View style={styles.timeline}>\n <View style={styles.timelineItem}>\n <View style={[styles.timelineDot, { backgroundColor: '#10B981' }]} />\n <View style={styles.timelineContent}>\n <Text style={[styles.timelineLabel, { color: textSecondary }]}>Position Opened</Text>\n <Text style={[styles.timelineTime, { color: textMuted }]}>\n {formatTimestamp(position.openTime)}\n </Text>\n <Text style={[styles.timelineDetail, { color: textMuted }]}>\n @ ${formatPrice(position.entryPrice)}\n </Text>\n </View>\n </View>\n {position.closeTime && (\n <View style={styles.timelineItem}>\n <View style={[styles.timelineDot, { backgroundColor: '#EF4444' }]} />\n <View style={styles.timelineContent}>\n <Text style={[styles.timelineLabel, { color: textSecondary }]}>Position Closed</Text>\n <Text style={[styles.timelineTime, { color: textMuted }]}>\n {formatTimestamp(position.closeTime)}\n </Text>\n <Text style={[styles.timelineDetail, { color: textMuted }]}>\n @ ${formatPrice(position.currentPrice)}\n </Text>\n </View>\n </View>\n )}\n </View>\n </View>\n )}\n\n {/* Action Buttons */}\n {position.status === 'open' && onClose && (\n <View style={styles.actionsSection}>\n <TouchableOpacity\n style={styles.closeButton}\n onPress={handleClose}\n activeOpacity={0.7}\n >\n <Text style={styles.closeButtonText}>Close Position</Text>\n </TouchableOpacity>\n </View>\n )}\n </ScrollView>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n },\n header: {\n padding: 16,\n borderBottomWidth: 1,\n gap: 16,\n },\n headerTop: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n headerLeft: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 10,\n },\n sideBadge: {\n paddingHorizontal: 10,\n paddingVertical: 4,\n borderRadius: 6,\n },\n sideText: {\n fontFamily: MONO,\n fontSize: 12,\n fontWeight: '700',\n },\n pair: {\n fontSize: 20,\n fontWeight: '700',\n },\n leverage: {\n fontFamily: MONO,\n fontSize: 14,\n },\n statusBadge: {\n paddingHorizontal: 10,\n paddingVertical: 4,\n borderRadius: 6,\n },\n statusText: {\n fontSize: 11,\n fontWeight: '700',\n },\n pnlSection: {\n padding: 16,\n borderRadius: 12,\n alignItems: 'center',\n gap: 4,\n },\n pnlMain: {\n flexDirection: 'row',\n alignItems: 'baseline',\n gap: 10,\n },\n pnlValue: {\n fontFamily: MONO,\n fontSize: 32,\n fontWeight: '700',\n },\n pnlPercent: {\n fontFamily: MONO,\n fontSize: 18,\n fontWeight: '600',\n },\n pnlLabel: {\n fontFamily: MONO,\n fontSize: 10,\n textTransform: 'uppercase',\n },\n section: {\n margin: 12,\n marginTop: 0,\n padding: 16,\n borderRadius: 12,\n gap: 12,\n },\n sectionTitle: {\n fontFamily: MONO,\n fontSize: 10,\n textTransform: 'uppercase',\n letterSpacing: 1,\n },\n priceGrid: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n },\n priceItem: {\n alignItems: 'center',\n gap: 4,\n },\n priceLabel: {\n fontFamily: MONO,\n fontSize: 9,\n textTransform: 'uppercase',\n },\n priceValue: {\n fontFamily: MONO,\n fontSize: 14,\n fontWeight: '600',\n },\n detailsGrid: {\n gap: 8,\n },\n detailRow: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n paddingVertical: 6,\n borderBottomWidth: 1,\n borderBottomColor: '#1A1A1F',\n },\n detailLabel: {\n fontSize: 13,\n },\n detailValue: {\n fontFamily: MONO,\n fontSize: 13,\n fontWeight: '600',\n },\n riskGrid: {\n flexDirection: 'row',\n gap: 10,\n },\n riskCard: {\n flex: 1,\n padding: 12,\n borderRadius: 8,\n borderWidth: 1,\n alignItems: 'center',\n gap: 4,\n },\n riskCardLabel: {\n fontFamily: MONO,\n fontSize: 9,\n fontWeight: '700',\n textTransform: 'uppercase',\n },\n riskCardPrice: {\n fontFamily: MONO,\n fontSize: 13,\n fontWeight: '600',\n },\n riskCardPnl: {\n fontFamily: MONO,\n fontSize: 11,\n },\n riskCardDistance: {\n fontFamily: MONO,\n fontSize: 10,\n },\n reasoningBox: {\n padding: 12,\n borderRadius: 8,\n },\n reasoningText: {\n fontSize: 13,\n lineHeight: 20,\n },\n confidenceRow: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 10,\n },\n confidenceLabel: {\n fontFamily: MONO,\n fontSize: 10,\n textTransform: 'uppercase',\n },\n confidenceBar: {\n flex: 1,\n height: 8,\n borderRadius: 4,\n overflow: 'hidden',\n },\n confidenceFill: {\n height: '100%',\n borderRadius: 4,\n },\n confidenceValue: {\n fontFamily: MONO,\n fontSize: 12,\n fontWeight: '600',\n width: 35,\n },\n timeline: {\n gap: 16,\n paddingLeft: 8,\n },\n timelineItem: {\n flexDirection: 'row',\n gap: 12,\n },\n timelineDot: {\n width: 12,\n height: 12,\n borderRadius: 6,\n marginTop: 3,\n },\n timelineContent: {\n flex: 1,\n gap: 2,\n },\n timelineLabel: {\n fontSize: 13,\n fontWeight: '500',\n },\n timelineTime: {\n fontFamily: MONO,\n fontSize: 11,\n },\n timelineDetail: {\n fontFamily: MONO,\n fontSize: 11,\n },\n actionsSection: {\n padding: 16,\n gap: 10,\n },\n closeButton: {\n backgroundColor: '#EF4444',\n paddingVertical: 14,\n borderRadius: 10,\n alignItems: 'center',\n },\n closeButtonText: {\n color: '#ffffff',\n fontSize: 16,\n fontWeight: '600',\n },\n});\n"]}
1
+ {"version":3,"sources":["../../src/config/index.ts","../../src/providers/OneProvider.tsx","../../src/components/OneConnectButton.tsx","../../src/components/OnePayWidget.tsx","../../src/components/OneTransactionButton.tsx","../../src/components/OneSendWidget.tsx","../../src/components/OneOnrampWidget.tsx","../../src/components/OneOfframpWidget.tsx","../../src/components/OneSwapWidget.tsx","../../src/components/OneWalletBalance.tsx","../../src/components/OneNFTGallery.tsx","../../src/components/OneReceiveWidget.tsx","../../src/components/ai/OneChainSelector.tsx","../../src/components/ai/OneTierSelector.tsx","../../src/components/ai/OneCycleSelector.tsx","../../src/components/ai/OnePairSelector.tsx","../../src/components/ai/OneForexPoolCard.tsx","../../src/types/forex.ts","../../src/components/ai/OneForexCapitalSplit.tsx","../../src/types/console.ts","../../src/components/ai/OneForexConsoleView.tsx","../../src/components/ai/OneForexPairSelector.tsx","../../src/components/ai/OneForexTradeHistory.tsx","../../src/components/ai/console/OneMetricsDashboard.tsx","../../src/components/ai/console/OneRiskIndicator.tsx","../../src/components/ai/console/OneTradingConsole.tsx","../../src/components/ai/console/OneAgentCard.tsx","../../src/components/ai/console/OneAIQuantConsole.tsx","../../src/components/ai/console/OnePositionCard.tsx","../../src/components/ai/console/OneDecisionTimeline.tsx","../../src/components/ai/console/OneAgentConsole.tsx","../../src/components/ai/console/OnePositionDetail.tsx"],"names":["createContext","useContext","base","jsx","inAppWallet","ConnectButton","ethereum","polygon","arbitrum","PayEmbed","prepareTransaction","buttonStyle","TransactionButton","useActiveAccount","useSendTransaction","useState","useCallback","toWei","error","jsxs","containerStyle","inputStyle","useEffect","DEFAULT_FIATS","DEFAULT_CRYPTOS","DEFAULT_NETWORKS","NETWORK_DISPLAY_NAMES","CRYPTO_RATES","headerStyle","selectStyle","rowStyle","quoteBoxStyle","useWalletBalance","CHAIN_CONFIGS","optimism","bsc","avalanche","labelStyle","useMemo","chains","MediaRenderer","CHAIN_INFO","View","Text","TouchableOpacity","StyleSheet","styles","Platform","useRef","ScrollView","MONO","Fragment","Animated"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * ONE SDK Configuration\n *\n * Chain data is fetched from ONE Engine API - no duplicates needed here.\n * Engine is the single source of truth for 200+ EVM chains.\n */\n\nimport type { ChainConfig } from '../types';\n\n// ===== SDK Configuration =====\nexport interface OneConfig {\n // ONE Engine (required)\n oneEngineUrl: string;\n oneClientId: string;\n oneSecretKey?: string; // Only for backend usage\n\n // Optional: Direct Supabase access (for realtime subscriptions)\n supabaseUrl?: string;\n supabaseAnonKey?: string;\n\n // Deprecated: Use ONE Engine instead\n thirdwebClientId?: string;\n}\n\n// Default configuration values\nconst DEFAULT_ENGINE_URL = 'https://api.one23.io';\nconst DEFAULT_CLIENT_ID = 'one_pk_e8f647bfa643fdcfaa3a23f760488e49be09f929296eed4a6c399d437d907f60';\n\nlet config: OneConfig | null = null;\n\nexport function initOneSDK(options: Partial<OneConfig>): void {\n // Use defaults if not provided\n const engineUrl = options.oneEngineUrl || DEFAULT_ENGINE_URL;\n const clientId = options.oneClientId || DEFAULT_CLIENT_ID;\n\n config = {\n ...options,\n oneEngineUrl: engineUrl,\n oneClientId: clientId,\n } as OneConfig;\n}\n\nexport function getConfig(): OneConfig {\n if (!config) {\n throw new Error('ONE SDK not initialized. Call initOneSDK() first.');\n }\n return config;\n}\n\nexport function isInitialized(): boolean {\n return config !== null;\n}\n\nexport function getEngineUrl(): string {\n return config?.oneEngineUrl || process.env.NEXT_PUBLIC_ONE_ENGINE_URL || DEFAULT_ENGINE_URL;\n}\n\n// ===== Chain Data (Fetched from Engine) =====\n\n// Cache for chain data\nlet chainsCache: ChainConfig[] | null = null;\nlet chainsCacheTimestamp = 0;\nconst CACHE_TTL = 5 * 60 * 1000; // 5 minutes\n\n/**\n * Fetch chains from ONE Engine API\n * Engine is the source of truth for 200+ EVM chains\n */\nexport async function fetchChains(options?: {\n category?: 'mainnet' | 'l2' | 'testnet' | 'gaming' | 'recommended';\n smartWallet?: boolean;\n limit?: number;\n}): Promise<ChainConfig[]> {\n const engineUrl = getEngineUrl();\n const params = new URLSearchParams();\n\n if (options?.category) params.set('category', options.category);\n if (options?.smartWallet) params.set('smartWallet', 'true');\n if (options?.limit) params.set('limit', options.limit.toString());\n\n const response = await fetch(`${engineUrl}/v1/chains?${params}`);\n const data = await response.json();\n\n if (!data.success) {\n throw new Error(data.error?.message || 'Failed to fetch chains');\n }\n\n // Transform Engine response to SDK ChainConfig format\n return data.data.chains.map((chain: any) => ({\n id: chain.id,\n name: chain.name,\n shortName: chain.shortName || chain.slug || chain.name.toLowerCase(),\n icon: getChainIcon(chain.id),\n nativeCurrency: chain.nativeCurrency,\n rpcUrls: Array.isArray(chain.rpc) ? chain.rpc : [chain.rpc],\n blockExplorerUrls: chain.blockExplorer ? [chain.blockExplorer] : [],\n testnet: chain.testnet,\n }));\n}\n\n/**\n * Get all supported chains (cached)\n */\nexport async function getChains(): Promise<ChainConfig[]> {\n const now = Date.now();\n if (chainsCache && (now - chainsCacheTimestamp) < CACHE_TTL) {\n return chainsCache;\n }\n\n chainsCache = await fetchChains({ limit: 200 });\n chainsCacheTimestamp = now;\n return chainsCache;\n}\n\n/**\n * Get chain by ID\n */\nexport async function getChainById(chainId: number): Promise<ChainConfig | undefined> {\n const chains = await getChains();\n return chains.find(c => c.id === chainId);\n}\n\n/**\n * Get chain by name/shortName\n */\nexport async function getChainByName(name: string): Promise<ChainConfig | undefined> {\n const chains = await getChains();\n const lowerName = name.toLowerCase();\n return chains.find(\n c => c.name.toLowerCase() === lowerName || c.shortName.toLowerCase() === lowerName\n );\n}\n\n/**\n * Get recommended chains for UI display\n */\nexport async function getRecommendedChains(): Promise<ChainConfig[]> {\n return fetchChains({ category: 'recommended', limit: 10 });\n}\n\n/**\n * Get chains with smart wallet support\n */\nexport async function getSmartWalletChains(): Promise<ChainConfig[]> {\n return fetchChains({ smartWallet: true, limit: 50 });\n}\n\n// ===== Default Chain Constants =====\n// These are commonly used chain IDs, but full data should be fetched from Engine\n\nexport const CHAIN_IDS = {\n ETHEREUM: 1,\n POLYGON: 137,\n BSC: 56,\n ARBITRUM: 42161,\n OPTIMISM: 10,\n BASE: 8453,\n AVALANCHE: 43114,\n ZKSYNC: 324,\n LINEA: 59144,\n SCROLL: 534352,\n BLAST: 81457,\n // Testnets\n SEPOLIA: 11155111,\n BASE_SEPOLIA: 84532,\n ARBITRUM_SEPOLIA: 421614,\n} as const;\n\nexport const DEFAULT_CHAIN_ID = CHAIN_IDS.BASE;\n\n// ===== Chain Icons (Simple emoji fallback) =====\nconst CHAIN_ICONS: Record<number, string> = {\n 1: '\\u229F', // Ethereum\n 137: '\\uD83D\\uDFE3', // Polygon\n 56: '\\uD83D\\uDFE1', // BSC\n 42161: '\\uD83D\\uDD35', // Arbitrum\n 10: '\\uD83D\\uDD34', // Optimism\n 8453: '\\uD83D\\uDD37', // Base\n 43114: '\\uD83D\\uDD3A', // Avalanche\n 324: '\\u26A1', // zkSync\n 59144: '\\uD83D\\uDD39', // Linea\n 534352: '\\uD83D\\uDCDC', // Scroll\n};\n\nfunction getChainIcon(chainId: number): string {\n return CHAIN_ICONS[chainId] || '\\uD83D\\uDD17';\n}\n\n// ===== Token Names Mapping =====\n// Common token symbols to human-readable names\nexport const TOKEN_NAMES: Record<string, string> = {\n ETH: 'Ethereum',\n BTC: 'Bitcoin',\n BNB: 'BNB',\n MATIC: 'Polygon',\n POL: 'Polygon',\n AVAX: 'Avalanche',\n USDT: 'Tether',\n USDC: 'USD Coin',\n DAI: 'Dai',\n WBTC: 'Wrapped Bitcoin',\n WETH: 'Wrapped Ether',\n ARB: 'Arbitrum',\n OP: 'Optimism',\n LINK: 'Chainlink',\n UNI: 'Uniswap',\n AAVE: 'Aave',\n CRV: 'Curve',\n MKR: 'Maker',\n SNX: 'Synthetix',\n COMP: 'Compound',\n SUSHI: 'SushiSwap',\n YFI: 'Yearn Finance',\n SOL: 'Solana',\n DOT: 'Polkadot',\n ATOM: 'Cosmos',\n NEAR: 'Near Protocol',\n};\n\n// ===== CoinGecko ID Mapping =====\n// For price lookups via CoinGecko API\nexport const COINGECKO_IDS: Record<string, string> = {\n ETH: 'ethereum',\n BTC: 'bitcoin',\n BNB: 'binancecoin',\n MATIC: 'matic-network',\n POL: 'matic-network',\n AVAX: 'avalanche-2',\n USDT: 'tether',\n USDC: 'usd-coin',\n DAI: 'dai',\n WBTC: 'wrapped-bitcoin',\n WETH: 'weth',\n ARB: 'arbitrum',\n OP: 'optimism',\n LINK: 'chainlink',\n UNI: 'uniswap',\n AAVE: 'aave',\n SOL: 'solana',\n};\n\n// ===== Backwards Compatibility =====\n// @deprecated - Use getChains() or fetch from Engine API\n// These static configs are kept for backwards compatibility only\n\nexport const CHAIN_CONFIGS: Record<string, ChainConfig> = {\n ethereum: {\n id: 1,\n name: 'Ethereum',\n shortName: 'ETH',\n icon: '\\u229F',\n nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },\n rpcUrls: ['https://ethereum.rpc.thirdweb.com'],\n blockExplorerUrls: ['https://etherscan.io'],\n testnet: false,\n },\n polygon: {\n id: 137,\n name: 'Polygon',\n shortName: 'MATIC',\n icon: '\\uD83D\\uDFE3',\n nativeCurrency: { name: 'POL', symbol: 'POL', decimals: 18 },\n rpcUrls: ['https://polygon.rpc.thirdweb.com'],\n blockExplorerUrls: ['https://polygonscan.com'],\n testnet: false,\n },\n base: {\n id: 8453,\n name: 'Base',\n shortName: 'BASE',\n icon: '\\uD83D\\uDD37',\n nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },\n rpcUrls: ['https://base.rpc.thirdweb.com'],\n blockExplorerUrls: ['https://basescan.org'],\n testnet: false,\n },\n arbitrum: {\n id: 42161,\n name: 'Arbitrum One',\n shortName: 'ARB',\n icon: '\\uD83D\\uDD35',\n nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },\n rpcUrls: ['https://arbitrum.rpc.thirdweb.com'],\n blockExplorerUrls: ['https://arbiscan.io'],\n testnet: false,\n },\n optimism: {\n id: 10,\n name: 'Optimism',\n shortName: 'OP',\n icon: '\\uD83D\\uDD34',\n nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },\n rpcUrls: ['https://optimism.rpc.thirdweb.com'],\n blockExplorerUrls: ['https://optimistic.etherscan.io'],\n testnet: false,\n },\n};\n\n// @deprecated - Use getChains() to get all supported chains\nexport const SUPPORTED_CHAINS = Object.keys(CHAIN_CONFIGS);\n\n// @deprecated - Use getChainByName() instead\nexport function getChainConfig(chain: string): ChainConfig | undefined {\n return CHAIN_CONFIGS[chain.toLowerCase()];\n}\n","'use client';\n\nimport React, {\n createContext,\n useContext,\n useEffect,\n useState,\n useCallback,\n useMemo,\n type ReactNode,\n} from 'react';\nimport { createThirdwebClient, type ThirdwebClient } from 'thirdweb';\nimport { ThirdwebProvider as BaseThirdwebProvider } from 'thirdweb/react';\nimport { inAppWallet, smartWallet } from 'thirdweb/wallets';\nimport type { Chain } from 'thirdweb/chains';\nimport { base, ethereum, polygon, arbitrum, optimism } from 'thirdweb/chains';\n\nimport { initOneSDK, type OneConfig } from '../config';\nimport {\n OneEngineClient,\n createOneEngineClient,\n type EngineWalletBalance,\n type OnrampSessionRequest,\n type SwapQuote,\n type SwapQuoteRequest,\n} from '../services/engine';\nimport type { User, Token, AIStrategy, AIOrder } from '../types';\n\n// ===== Thirdweb Config Types =====\n\nexport interface ThirdwebAuthOptions {\n email?: boolean;\n phone?: boolean;\n google?: boolean;\n apple?: boolean;\n facebook?: boolean;\n discord?: boolean;\n passkey?: boolean;\n guest?: boolean;\n}\n\nexport interface ThirdwebWalletConfig {\n appName?: string;\n appIcon?: string;\n defaultChain?: Chain;\n supportedChains?: Chain[];\n sponsorGas?: boolean;\n authOptions?: ThirdwebAuthOptions;\n}\n\n// ===== Context Types =====\n\ninterface AuthContextValue {\n user: User | null;\n isAuthenticated: boolean;\n isLoading: boolean;\n accessToken: string | null;\n sendOtp: (email: string) => Promise<{ success: boolean; error?: string }>;\n verifyOtp: (email: string, otp: string) => Promise<{ success: boolean; error?: string }>;\n signOut: () => Promise<void>;\n refreshUser: () => Promise<void>;\n}\n\ninterface WalletContextValue {\n // Address management\n address: string | null;\n setAddress: (address: string | null) => void;\n // Balance from Engine API\n balance: EngineWalletBalance | null;\n tokens: Token[];\n totalUsd: number;\n isLoading: boolean;\n error: string | null;\n fetchBalance: (chains?: number[]) => Promise<void>;\n refreshBalance: () => Promise<void>;\n // Thirdweb client for wallet connection\n thirdwebClient: ThirdwebClient | null;\n isThirdwebReady: boolean;\n}\n\ninterface OnrampContextValue {\n isOpen: boolean;\n widgetUrl: string | null;\n sessionId: string | null;\n openOnramp: (options?: Partial<OnrampSessionRequest>) => Promise<void>;\n closeOnramp: () => void;\n getQuote: (fiatCurrency: string, fiatAmount: number, cryptoCurrency: string) => Promise<any>;\n}\n\ninterface SwapContextValue {\n getQuote: (request: SwapQuoteRequest) => Promise<SwapQuote | null>;\n executeSwap: (quoteId: string) => Promise<any>;\n getSupportedTokens: (chainId?: number) => Promise<Token[]>;\n getSupportedChains: () => Promise<{ id: number; name: string }[]>;\n}\n\ninterface TradingContextValue {\n strategies: AIStrategy[];\n orders: AIOrder[];\n portfolioStats: {\n totalInvested: number;\n totalValue: number;\n totalPnl: number;\n totalPnlPercent: number;\n activePositions: number;\n } | null;\n isLoading: boolean;\n fetchStrategies: () => Promise<void>;\n fetchOrders: () => Promise<void>;\n fetchPortfolio: () => Promise<void>;\n createOrder: (strategyId: string, amount: number, currency: string) => Promise<any>;\n}\n\ninterface OneContextValue {\n isInitialized: boolean;\n config: OneConfig | null;\n engine: OneEngineClient;\n auth: AuthContextValue;\n wallet: WalletContextValue;\n onramp: OnrampContextValue;\n swap: SwapContextValue;\n trading: TradingContextValue;\n // Direct thirdweb access\n thirdwebClient: ThirdwebClient | null;\n}\n\nconst OneContext = createContext<OneContextValue | null>(null);\n\n// ===== Default Thirdweb Configuration =====\n\nconst DEFAULT_CHAINS: Chain[] = [base, ethereum, polygon, arbitrum, optimism];\n\nconst DEFAULT_AUTH_OPTIONS: ThirdwebAuthOptions = {\n email: true,\n phone: false,\n google: true,\n apple: true,\n facebook: false,\n discord: false,\n passkey: true,\n guest: false,\n};\n\n// ===== Create Wallets Configuration =====\n\nfunction createWalletConfig(config: ThirdwebWalletConfig) {\n const authOptions = { ...DEFAULT_AUTH_OPTIONS, ...config.authOptions };\n\n // Build auth options array\n const authMethods: string[] = [];\n if (authOptions.google) authMethods.push('google');\n if (authOptions.apple) authMethods.push('apple');\n if (authOptions.facebook) authMethods.push('facebook');\n if (authOptions.discord) authMethods.push('discord');\n if (authOptions.passkey) authMethods.push('passkey');\n\n // Create in-app wallet with email and social logins\n const inApp = inAppWallet({\n auth: {\n options: authMethods as any[],\n },\n metadata: config.appName ? {\n name: config.appName,\n image: config.appIcon ? { src: config.appIcon, width: 100, height: 100 } : undefined,\n } : undefined,\n });\n\n // If gas sponsorship is enabled, wrap in smart wallet\n if (config.sponsorGas) {\n const chain = config.defaultChain || base;\n return [\n smartWallet({\n chain,\n sponsorGas: true,\n }),\n ];\n }\n\n return [inApp];\n}\n\n// ===== Provider Props =====\ninterface OneProviderProps {\n children: ReactNode;\n config: OneConfig;\n thirdweb?: ThirdwebWalletConfig;\n autoFetchBalance?: boolean;\n}\n\n// ===== Provider Component =====\nexport function OneProvider({\n children,\n config,\n thirdweb: thirdwebConfig = {},\n autoFetchBalance = true,\n}: OneProviderProps) {\n // Initialize SDK synchronously before creating engine client\n useMemo(() => {\n initOneSDK(config);\n }, [config]);\n\n const [isInitialized, setIsInitialized] = useState(true);\n const engine = useMemo(() => createOneEngineClient({\n baseUrl: config.oneEngineUrl,\n clientId: config.oneClientId,\n secretKey: config.oneSecretKey,\n }), [config]);\n\n // ===== Thirdweb State =====\n const [thirdwebClientId, setThirdwebClientId] = useState<string | null>(null);\n const [thirdwebLoading, setThirdwebLoading] = useState(true);\n const [thirdwebError, setThirdwebError] = useState<string | null>(null);\n\n // Fetch thirdweb clientId from Engine on mount\n useEffect(() => {\n const fetchClientConfig = async () => {\n try {\n const response = await fetch(`${config.oneEngineUrl}/api/v1/config/thirdweb`);\n\n if (response.ok) {\n const data = await response.json();\n if (data.success && data.data?.clientId) {\n setThirdwebClientId(data.data.clientId);\n } else {\n // Fallback to environment variable\n const envClientId = typeof window !== 'undefined'\n ? (window as any).__NEXT_PUBLIC_THIRDWEB_CLIENT_ID\n : process.env.NEXT_PUBLIC_THIRDWEB_CLIENT_ID;\n if (envClientId) {\n setThirdwebClientId(envClientId);\n } else {\n setThirdwebError('Failed to load wallet configuration');\n }\n }\n } else {\n // Fallback to environment variable\n const envClientId = process.env.NEXT_PUBLIC_THIRDWEB_CLIENT_ID;\n if (envClientId) {\n setThirdwebClientId(envClientId);\n } else {\n setThirdwebError('Wallet service unavailable');\n }\n }\n } catch (err) {\n // Fallback to environment variable on network error\n const envClientId = process.env.NEXT_PUBLIC_THIRDWEB_CLIENT_ID;\n if (envClientId) {\n setThirdwebClientId(envClientId);\n } else {\n console.warn('Failed to fetch thirdweb config:', err);\n // Don't set error - thirdweb is optional\n }\n } finally {\n setThirdwebLoading(false);\n }\n };\n\n fetchClientConfig();\n }, [config.oneEngineUrl]);\n\n // Create thirdweb client once we have clientId\n const thirdwebClient = useMemo(() => {\n if (!thirdwebClientId) return null;\n return createThirdwebClient({ clientId: thirdwebClientId });\n }, [thirdwebClientId]);\n\n // Create wallet configuration\n const wallets = useMemo(() => createWalletConfig(thirdwebConfig), [thirdwebConfig]);\n\n // ===== Auth State =====\n const [user, setUser] = useState<User | null>(null);\n const [accessToken, setAccessToken] = useState<string | null>(null);\n const [authLoading, setAuthLoading] = useState(true);\n\n const sendOtp = useCallback(async (email: string) => {\n const result = await engine.sendEmailOtp(email);\n if (!result.success) {\n return { success: false, error: result.error?.message };\n }\n return { success: true };\n }, [engine]);\n\n const verifyOtp = useCallback(async (email: string, otp: string) => {\n const result = await engine.verifyEmailOtp(email, otp);\n if (!result.success || !result.data) {\n return { success: false, error: result.error?.message };\n }\n\n const { user: authUser, accessToken: token } = result.data;\n setUser(authUser);\n setAccessToken(token);\n engine.setAccessToken(token);\n\n return { success: true };\n }, [engine]);\n\n const signOut = useCallback(async () => {\n await engine.signOut();\n setUser(null);\n setAccessToken(null);\n engine.clearAccessToken();\n }, [engine]);\n\n const refreshUser = useCallback(async () => {\n try {\n if (accessToken) {\n engine.setAccessToken(accessToken);\n const result = await engine.getCurrentUser();\n if (result.success && result.data) {\n setUser(result.data);\n }\n }\n } finally {\n setAuthLoading(false);\n }\n }, [engine, accessToken]);\n\n useEffect(() => {\n refreshUser();\n }, []);\n\n // ===== Wallet State =====\n const [walletAddress, setWalletAddress] = useState<string | null>(null);\n const [walletBalance, setWalletBalance] = useState<EngineWalletBalance | null>(null);\n const [walletLoading, setWalletLoading] = useState(false);\n const [walletError, setWalletError] = useState<string | null>(null);\n\n const fetchBalance = useCallback(async (chains?: number[]) => {\n if (!walletAddress) return;\n\n setWalletLoading(true);\n setWalletError(null);\n\n try {\n const result = await engine.getWalletBalance(walletAddress, chains);\n if (result.success && result.data) {\n setWalletBalance(result.data);\n } else {\n setWalletError(result.error?.message || 'Failed to fetch balance');\n }\n } catch (error) {\n setWalletError(error instanceof Error ? error.message : 'Failed to fetch balance');\n } finally {\n setWalletLoading(false);\n }\n }, [walletAddress, engine]);\n\n const refreshBalance = useCallback(async () => {\n await fetchBalance();\n }, [fetchBalance]);\n\n useEffect(() => {\n if (autoFetchBalance && walletAddress && isInitialized) {\n fetchBalance();\n }\n }, [walletAddress, autoFetchBalance, isInitialized, fetchBalance]);\n\n // ===== Onramp State =====\n const [onrampOpen, setOnrampOpen] = useState(false);\n const [onrampUrl, setOnrampUrl] = useState<string | null>(null);\n const [onrampSessionId, setOnrampSessionId] = useState<string | null>(null);\n\n const openOnramp = useCallback(async (options?: Partial<OnrampSessionRequest>) => {\n if (!walletAddress) return;\n\n const result = await engine.createOnrampSession({\n walletAddress,\n fiatCurrency: 'USD',\n cryptoCurrency: 'ETH',\n ...options,\n });\n\n if (result.success && result.data) {\n setOnrampUrl(result.data.widgetUrl);\n setOnrampSessionId(result.data.sessionId);\n setOnrampOpen(true);\n }\n }, [walletAddress, engine]);\n\n const closeOnramp = useCallback(() => {\n setOnrampOpen(false);\n setOnrampUrl(null);\n }, []);\n\n const getOnrampQuote = useCallback(async (\n fiatCurrency: string,\n fiatAmount: number,\n cryptoCurrency: string\n ) => {\n const result = await engine.getOnrampQuote(fiatCurrency, fiatAmount, cryptoCurrency);\n return result.success ? result.data : null;\n }, [engine]);\n\n // ===== Swap =====\n const getSwapQuote = useCallback(async (request: SwapQuoteRequest) => {\n const result = await engine.getSwapQuote(request);\n return result.success ? result.data || null : null;\n }, [engine]);\n\n const executeSwap = useCallback(async (quoteId: string) => {\n if (!walletAddress) return null;\n const result = await engine.executeSwap({ quoteId, walletAddress });\n return result.success ? result.data : null;\n }, [engine, walletAddress]);\n\n const getSupportedTokens = useCallback(async (chainId?: number) => {\n const result = await engine.getSupportedSwapTokens(chainId);\n return result.success && result.data ? result.data.tokens : [];\n }, [engine]);\n\n const getSupportedChains = useCallback(async () => {\n const result = await engine.getSupportedSwapChains();\n return result.success && result.data ? result.data.chains : [];\n }, [engine]);\n\n // ===== Trading State =====\n const [strategies, setStrategies] = useState<AIStrategy[]>([]);\n const [orders, setOrders] = useState<AIOrder[]>([]);\n const [portfolioStats, setPortfolioStats] = useState<TradingContextValue['portfolioStats']>(null);\n const [tradingLoading, setTradingLoading] = useState(false);\n\n const fetchStrategies = useCallback(async () => {\n setTradingLoading(true);\n try {\n const result = await engine.getStrategies();\n if (result.success && result.data) {\n setStrategies(result.data);\n }\n } finally {\n setTradingLoading(false);\n }\n }, [engine]);\n\n const fetchOrders = useCallback(async () => {\n const result = await engine.getUserOrders();\n if (result.success && result.data) {\n setOrders(result.data);\n }\n }, [engine]);\n\n const fetchPortfolio = useCallback(async () => {\n const result = await engine.getPortfolioStats();\n if (result.success && result.data) {\n setPortfolioStats(result.data);\n }\n }, [engine]);\n\n const createOrder = useCallback(async (\n strategyId: string,\n amount: number,\n currency: string\n ) => {\n const result = await engine.createOrder(strategyId, amount, currency);\n if (result.success) {\n await fetchOrders();\n await fetchPortfolio();\n }\n return result;\n }, [engine, fetchOrders, fetchPortfolio]);\n\n // ===== Context Value =====\n const contextValue: OneContextValue = useMemo(() => ({\n isInitialized,\n config: isInitialized ? config : null,\n engine,\n thirdwebClient,\n\n auth: {\n user,\n isAuthenticated: !!user,\n isLoading: authLoading,\n accessToken,\n sendOtp,\n verifyOtp,\n signOut,\n refreshUser,\n },\n\n wallet: {\n address: walletAddress,\n balance: walletBalance,\n tokens: walletBalance?.tokens || [],\n totalUsd: walletBalance?.totalUsd || 0,\n isLoading: walletLoading,\n error: walletError,\n setAddress: setWalletAddress,\n fetchBalance,\n refreshBalance,\n thirdwebClient,\n isThirdwebReady: !thirdwebLoading && !!thirdwebClient,\n },\n\n onramp: {\n isOpen: onrampOpen,\n widgetUrl: onrampUrl,\n sessionId: onrampSessionId,\n openOnramp,\n closeOnramp,\n getQuote: getOnrampQuote,\n },\n\n swap: {\n getQuote: getSwapQuote,\n executeSwap,\n getSupportedTokens,\n getSupportedChains,\n },\n\n trading: {\n strategies,\n orders,\n portfolioStats,\n isLoading: tradingLoading,\n fetchStrategies,\n fetchOrders,\n fetchPortfolio,\n createOrder,\n },\n }), [\n isInitialized,\n config,\n engine,\n thirdwebClient,\n thirdwebLoading,\n user,\n authLoading,\n accessToken,\n sendOtp,\n verifyOtp,\n signOut,\n refreshUser,\n walletAddress,\n walletBalance,\n walletLoading,\n walletError,\n fetchBalance,\n refreshBalance,\n onrampOpen,\n onrampUrl,\n onrampSessionId,\n openOnramp,\n closeOnramp,\n getOnrampQuote,\n getSwapQuote,\n executeSwap,\n getSupportedTokens,\n getSupportedChains,\n strategies,\n orders,\n portfolioStats,\n tradingLoading,\n fetchStrategies,\n fetchOrders,\n fetchPortfolio,\n createOrder,\n ]);\n\n // Wrap with ThirdwebProvider if client is available\n const content = (\n <OneContext.Provider value={contextValue}>\n {children}\n </OneContext.Provider>\n );\n\n // If thirdweb is ready, wrap with ThirdwebProvider\n if (thirdwebClient) {\n return (\n <BaseThirdwebProvider>\n {content}\n </BaseThirdwebProvider>\n );\n }\n\n return content;\n}\n\n// ===== Hooks =====\nexport function useOne(): OneContextValue {\n const context = useContext(OneContext);\n if (!context) {\n throw new Error('useOne must be used within a OneProvider');\n }\n return context;\n}\n\nexport function useOneAuth() {\n const { auth } = useOne();\n return auth;\n}\n\nexport function useOneWallet() {\n const { wallet } = useOne();\n return wallet;\n}\n\nexport function useOneOnramp() {\n const { onramp } = useOne();\n return onramp;\n}\n\nexport function useOneSwap() {\n const { swap } = useOne();\n return swap;\n}\n\nexport function useOneTrading() {\n const { trading } = useOne();\n return trading;\n}\n\nexport function useOneEngine() {\n const { engine } = useOne();\n return engine;\n}\n\nexport function useThirdwebClient(): ThirdwebClient | null {\n const { thirdwebClient } = useOne();\n return thirdwebClient;\n}\n\n// Export context for advanced usage\nexport { OneContext };\n\n// Export thirdweb utilities for convenience\nexport { inAppWallet, smartWallet } from 'thirdweb/wallets';\nexport { base, ethereum, polygon, arbitrum, optimism } from 'thirdweb/chains';\nexport type { Chain } from 'thirdweb/chains';\nexport type { ThirdwebClient } from 'thirdweb';\n","'use client';\n\nimport React from 'react';\nimport { ConnectButton, type ConnectButtonProps } from 'thirdweb/react';\nimport { inAppWallet, smartWallet } from 'thirdweb/wallets';\nimport { base } from 'thirdweb/chains';\nimport { useThirdwebClient } from '../providers';\n\n// ===== Types =====\n\nexport interface OneConnectButtonProps {\n // Appearance\n label?: string;\n theme?: 'light' | 'dark';\n className?: string;\n style?: React.CSSProperties;\n\n // Chain config\n chain?: Parameters<typeof smartWallet>[0]['chain'];\n sponsorGas?: boolean;\n\n // Auth options\n authOptions?: {\n email?: boolean;\n google?: boolean;\n apple?: boolean;\n discord?: boolean;\n passkey?: boolean;\n };\n\n // Callbacks\n onConnect?: (address: string) => void;\n onDisconnect?: () => void;\n\n // Account abstraction\n accountAbstraction?: {\n chain: Parameters<typeof smartWallet>[0]['chain'];\n sponsorGas?: boolean;\n };\n}\n\n// ===== Default Theme =====\n\nconst ONE_THEME = {\n colors: {\n primaryButtonBg: '#10b981', // emerald-500\n primaryButtonText: '#ffffff',\n accentButtonBg: '#059669', // emerald-600\n modalBg: '#1f2937', // gray-800\n borderColor: '#374151', // gray-700\n separatorLine: '#374151',\n secondaryText: '#9ca3af', // gray-400\n primaryText: '#ffffff',\n },\n fontFamily: 'Inter, system-ui, sans-serif',\n};\n\n// ===== Component =====\n\nexport function OneConnectButton({\n label = 'Connect Wallet',\n theme = 'dark',\n className,\n style,\n chain = base,\n sponsorGas = true,\n authOptions = {\n email: true,\n google: true,\n apple: true,\n discord: false,\n passkey: true,\n },\n onConnect,\n onDisconnect,\n accountAbstraction,\n}: OneConnectButtonProps) {\n const client = useThirdwebClient();\n\n // Show loading state if client is not ready\n if (!client) {\n return (\n <button\n disabled\n className={className}\n style={{\n backgroundColor: ONE_THEME.colors.primaryButtonBg,\n color: ONE_THEME.colors.primaryButtonText,\n fontFamily: ONE_THEME.fontFamily,\n fontWeight: 600,\n borderRadius: '12px',\n padding: '12px 24px',\n opacity: 0.5,\n cursor: 'not-allowed',\n ...style,\n }}\n >\n Initializing...\n </button>\n );\n }\n\n // Build auth methods\n const authMethods: string[] = ['email'];\n if (authOptions.google) authMethods.push('google');\n if (authOptions.apple) authMethods.push('apple');\n if (authOptions.discord) authMethods.push('discord');\n if (authOptions.passkey) authMethods.push('passkey');\n\n // Create in-app wallet\n const wallet = inAppWallet({\n auth: {\n options: authMethods as any[],\n },\n });\n\n // Build connect button props\n const connectProps: Partial<ConnectButtonProps> = {\n client,\n wallets: [wallet],\n connectButton: {\n label,\n style: {\n backgroundColor: ONE_THEME.colors.primaryButtonBg,\n color: ONE_THEME.colors.primaryButtonText,\n fontFamily: ONE_THEME.fontFamily,\n fontWeight: 600,\n borderRadius: '12px',\n padding: '12px 24px',\n ...style,\n },\n className,\n },\n theme: theme === 'dark' ? 'dark' : 'light',\n };\n\n // Add account abstraction if sponsoring gas\n if (sponsorGas || accountAbstraction) {\n connectProps.accountAbstraction = {\n chain: accountAbstraction?.chain || chain,\n sponsorGas: accountAbstraction?.sponsorGas ?? sponsorGas,\n };\n }\n\n return <ConnectButton {...(connectProps as ConnectButtonProps)} />;\n}\n\n// ===== Presets =====\n\nexport function OneConnectButtonSimple(props: Omit<OneConnectButtonProps, 'authOptions'>) {\n return (\n <OneConnectButton\n {...props}\n authOptions={{ email: true, google: true, apple: false, passkey: false }}\n />\n );\n}\n\nexport function OneConnectButtonFull(props: Omit<OneConnectButtonProps, 'authOptions'>) {\n return (\n <OneConnectButton\n {...props}\n authOptions={{ email: true, google: true, apple: true, discord: true, passkey: true }}\n />\n );\n}\n","'use client';\n\nimport React from 'react';\nimport { PayEmbed, type PayEmbedProps } from 'thirdweb/react';\nimport { base, ethereum, polygon, arbitrum } from 'thirdweb/chains';\nimport { useThirdwebClient } from '../providers';\n\n// ===== Types =====\n\nexport type PayMode = 'fund_wallet' | 'direct_payment' | 'transaction';\n\nexport interface OnePayWidgetProps {\n // Mode configuration\n mode?: PayMode;\n\n // For direct_payment mode\n recipientAddress?: string;\n amount?: string;\n tokenAddress?: string;\n chainId?: number;\n\n // For transaction mode\n transaction?: any; // PreparedTransaction from thirdweb\n\n // Appearance\n theme?: 'light' | 'dark';\n className?: string;\n style?: React.CSSProperties;\n\n // Payment options\n buyWithCrypto?: boolean;\n buyWithFiat?: boolean;\n\n // Supported tokens (token addresses per chain)\n supportedTokens?: {\n [chainId: number]: string[];\n };\n\n // Callbacks\n onSuccess?: (result: any) => void;\n onError?: (error: Error) => void;\n onCancel?: () => void;\n}\n\n// ===== Default Configuration =====\n\nconst DEFAULT_SUPPORTED_TOKENS = {\n [base.id]: [\n '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913', // USDC on Base\n ],\n [ethereum.id]: [\n '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', // USDC on Ethereum\n '0xdAC17F958D2ee523a2206206994597C13D831ec7', // USDT on Ethereum\n ],\n [polygon.id]: [\n '0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359', // USDC on Polygon\n ],\n [arbitrum.id]: [\n '0xaf88d065e77c8cC2239327C5EDb3A432268e5831', // USDC on Arbitrum\n ],\n};\n\n// ===== Component =====\n\nexport function OnePayWidget({\n mode = 'fund_wallet',\n recipientAddress,\n amount,\n tokenAddress,\n chainId,\n transaction,\n theme = 'dark',\n className,\n style,\n buyWithCrypto = true,\n buyWithFiat = true,\n supportedTokens = DEFAULT_SUPPORTED_TOKENS,\n onSuccess,\n onError,\n onCancel,\n}: OnePayWidgetProps) {\n const client = useThirdwebClient();\n\n // Show loading state if client is not ready\n if (!client) {\n return (\n <div className={className} style={{ ...style, padding: '20px', textAlign: 'center', color: '#9ca3af' }}>\n Initializing payment...\n </div>\n );\n }\n\n // Build pay options based on mode\n let payOptions: PayEmbedProps['payOptions'];\n\n switch (mode) {\n case 'direct_payment':\n if (!recipientAddress) {\n console.warn('OnePayWidget: recipientAddress required for direct_payment mode');\n }\n payOptions = {\n mode: 'direct_payment',\n paymentInfo: {\n sellerAddress: recipientAddress || '',\n amount: amount || '0',\n chain: chainId ? { id: chainId } as any : base,\n token: tokenAddress ? { address: tokenAddress } as any : undefined,\n },\n buyWithCrypto: buyWithCrypto ? {} : false,\n buyWithFiat: buyWithFiat ? {} : false,\n };\n break;\n\n case 'transaction':\n if (!transaction) {\n console.warn('OnePayWidget: transaction required for transaction mode');\n }\n payOptions = {\n mode: 'transaction',\n transaction,\n buyWithCrypto: buyWithCrypto ? {} : false,\n buyWithFiat: buyWithFiat ? {} : false,\n };\n break;\n\n case 'fund_wallet':\n default:\n payOptions = {\n mode: 'fund_wallet',\n buyWithCrypto: buyWithCrypto ? {} : false,\n buyWithFiat: buyWithFiat ? {} : false,\n };\n break;\n }\n\n return (\n <div className={className} style={style}>\n <PayEmbed\n client={client}\n payOptions={payOptions}\n theme={theme}\n supportedTokens={supportedTokens as any}\n />\n </div>\n );\n}\n\n// ===== Presets =====\n\nexport function OneFundWalletWidget(props: Omit<OnePayWidgetProps, 'mode'>) {\n return <OnePayWidget {...props} mode=\"fund_wallet\" />;\n}\n\nexport function OneDirectPayWidget(\n props: Omit<OnePayWidgetProps, 'mode'> & {\n recipientAddress: string;\n amount: string;\n }\n) {\n return <OnePayWidget {...props} mode=\"direct_payment\" />;\n}\n\nexport function OneCryptoOnlyPayWidget(props: Omit<OnePayWidgetProps, 'buyWithFiat'>) {\n return <OnePayWidget {...props} buyWithFiat={false} />;\n}\n\nexport function OneFiatOnlyPayWidget(props: Omit<OnePayWidgetProps, 'buyWithCrypto'>) {\n return <OnePayWidget {...props} buyWithCrypto={false} />;\n}\n","'use client';\n\nimport React from 'react';\nimport { TransactionButton, type TransactionButtonProps } from 'thirdweb/react';\nimport { prepareTransaction, type PreparedTransaction } from 'thirdweb';\nimport type { Chain } from 'thirdweb/chains';\nimport { useThirdwebClient } from '../providers';\n\n// ===== Types =====\n\nexport interface OneTransactionButtonProps {\n // Transaction config\n to: string;\n value?: bigint;\n data?: `0x${string}`;\n chain: Chain;\n\n // Or use prepared transaction directly\n transaction?: PreparedTransaction;\n\n // Appearance\n label?: string;\n loadingLabel?: string;\n theme?: 'light' | 'dark';\n className?: string;\n style?: React.CSSProperties;\n disabled?: boolean;\n\n // Callbacks\n onSuccess?: (result: { transactionHash: string }) => void;\n onError?: (error: Error) => void;\n onSubmitted?: (txHash: string) => void;\n}\n\n// ===== ONE Theme Styles =====\n\nconst ONE_BUTTON_STYLE: React.CSSProperties = {\n backgroundColor: '#10b981',\n color: '#ffffff',\n fontFamily: 'Inter, system-ui, sans-serif',\n fontWeight: 600,\n borderRadius: '12px',\n padding: '12px 24px',\n border: 'none',\n cursor: 'pointer',\n transition: 'background-color 0.2s',\n};\n\nconst ONE_BUTTON_DISABLED_STYLE: React.CSSProperties = {\n ...ONE_BUTTON_STYLE,\n backgroundColor: '#6b7280',\n cursor: 'not-allowed',\n};\n\n// ===== Component =====\n\nexport function OneTransactionButton({\n to,\n value,\n data,\n chain,\n transaction: preparedTx,\n label = 'Send Transaction',\n loadingLabel = 'Processing...',\n theme = 'dark',\n className,\n style,\n disabled = false,\n onSuccess,\n onError,\n onSubmitted,\n}: OneTransactionButtonProps) {\n const client = useThirdwebClient();\n\n // Show loading state if client is not ready\n if (!client && !preparedTx) {\n return (\n <button\n disabled\n className={className}\n style={{ ...ONE_BUTTON_DISABLED_STYLE, ...style, opacity: 0.5 }}\n >\n Initializing...\n </button>\n );\n }\n\n // Prepare transaction if not already provided\n const transaction = preparedTx || (client ? prepareTransaction({\n to,\n value,\n data,\n chain,\n client,\n }) : null);\n\n if (!transaction) {\n return (\n <button\n disabled\n className={className}\n style={{ ...ONE_BUTTON_DISABLED_STYLE, ...style, opacity: 0.5 }}\n >\n Initializing...\n </button>\n );\n }\n\n const buttonStyle = disabled\n ? { ...ONE_BUTTON_DISABLED_STYLE, ...style }\n : { ...ONE_BUTTON_STYLE, ...style };\n\n return (\n <TransactionButton\n transaction={() => transaction}\n onTransactionSent={(result) => onSubmitted?.(result.transactionHash)}\n onTransactionConfirmed={(result) => onSuccess?.({ transactionHash: result.transactionHash })}\n onError={onError}\n disabled={disabled}\n style={buttonStyle}\n className={className}\n theme={theme}\n >\n {label}\n </TransactionButton>\n );\n}\n\n// ===== Presets =====\n\nexport interface OneSendETHButtonProps extends Omit<OneTransactionButtonProps, 'data'> {\n amount: string; // in ETH\n}\n\nexport function OneSendETHButton({\n amount,\n ...props\n}: OneSendETHButtonProps) {\n const valueInWei = BigInt(Math.floor(parseFloat(amount) * 1e18));\n\n return (\n <OneTransactionButton\n {...props}\n value={valueInWei}\n label={props.label || `Send ${amount} ETH`}\n />\n );\n}\n\nexport interface OneApproveButtonProps extends Omit<OneTransactionButtonProps, 'to' | 'data' | 'value'> {\n tokenAddress: string;\n spenderAddress: string;\n amount?: bigint; // Max uint256 by default\n}\n\nexport function OneApproveButton({\n tokenAddress,\n spenderAddress,\n amount = BigInt('0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff'),\n chain,\n ...props\n}: OneApproveButtonProps) {\n // ERC20 approve function selector + encoded params\n const approveData = `0x095ea7b3${spenderAddress.slice(2).padStart(64, '0')}${amount.toString(16).padStart(64, '0')}` as `0x${string}`;\n\n return (\n <OneTransactionButton\n {...props}\n to={tokenAddress}\n data={approveData}\n chain={chain}\n label={props.label || 'Approve Token'}\n />\n );\n}\n","'use client';\n\nimport React, { useState, useCallback } from 'react';\nimport { useSendTransaction, useActiveAccount } from 'thirdweb/react';\nimport { prepareTransaction, toWei } from 'thirdweb';\nimport type { Chain } from 'thirdweb/chains';\nimport { base } from 'thirdweb/chains';\nimport { useThirdwebClient } from '../providers';\n\n// ===== Types =====\n\nexport interface OneSendWidgetProps {\n // Default values\n defaultRecipient?: string;\n defaultAmount?: string;\n defaultChain?: Chain;\n\n // Token config (if sending ERC20)\n tokenAddress?: string;\n tokenSymbol?: string;\n tokenDecimals?: number;\n\n // Appearance\n theme?: 'light' | 'dark';\n className?: string;\n style?: React.CSSProperties;\n\n // Callbacks\n onSuccess?: (txHash: string) => void;\n onError?: (error: Error) => void;\n onCancel?: () => void;\n}\n\n// ===== Styles =====\n\nconst containerStyle: React.CSSProperties = {\n display: 'flex',\n flexDirection: 'column',\n gap: '16px',\n padding: '24px',\n backgroundColor: '#1f2937',\n borderRadius: '16px',\n border: '1px solid #374151',\n};\n\nconst inputStyle: React.CSSProperties = {\n width: '100%',\n padding: '12px 16px',\n backgroundColor: '#374151',\n border: '1px solid #4b5563',\n borderRadius: '12px',\n color: '#ffffff',\n fontSize: '16px',\n outline: 'none',\n};\n\nconst labelStyle: React.CSSProperties = {\n color: '#9ca3af',\n fontSize: '14px',\n marginBottom: '4px',\n};\n\nconst buttonStyle: React.CSSProperties = {\n width: '100%',\n padding: '14px',\n backgroundColor: '#10b981',\n color: '#ffffff',\n border: 'none',\n borderRadius: '12px',\n fontSize: '16px',\n fontWeight: 600,\n cursor: 'pointer',\n};\n\nconst buttonDisabledStyle: React.CSSProperties = {\n ...buttonStyle,\n backgroundColor: '#6b7280',\n cursor: 'not-allowed',\n};\n\n// ===== Component =====\n\nexport function OneSendWidget({\n defaultRecipient = '',\n defaultAmount = '',\n defaultChain = base,\n tokenAddress,\n tokenSymbol = 'ETH',\n tokenDecimals = 18,\n theme = 'dark',\n className,\n style,\n onSuccess,\n onError,\n onCancel,\n}: OneSendWidgetProps) {\n const client = useThirdwebClient();\n const account = useActiveAccount();\n const { mutate: sendTransaction, isPending } = useSendTransaction();\n\n const [recipient, setRecipient] = useState(defaultRecipient);\n const [amount, setAmount] = useState(defaultAmount);\n const [error, setError] = useState<string | null>(null);\n\n const isValidAddress = (address: string) => /^0x[a-fA-F0-9]{40}$/.test(address);\n const isValidAmount = (amt: string) => !isNaN(parseFloat(amt)) && parseFloat(amt) > 0;\n\n const canSend = !!client && isValidAddress(recipient) && isValidAmount(amount) && !isPending;\n\n const handleSend = useCallback(async () => {\n if (!account || !canSend || !client) return;\n\n setError(null);\n\n try {\n let tx;\n\n if (tokenAddress) {\n // ERC20 transfer\n const amountInWei = BigInt(Math.floor(parseFloat(amount) * Math.pow(10, tokenDecimals)));\n const transferData = `0xa9059cbb${recipient.slice(2).padStart(64, '0')}${amountInWei.toString(16).padStart(64, '0')}` as `0x${string}`;\n\n tx = prepareTransaction({\n to: tokenAddress,\n data: transferData,\n chain: defaultChain,\n client,\n });\n } else {\n // Native token transfer\n tx = prepareTransaction({\n to: recipient as `0x${string}`,\n value: toWei(amount),\n chain: defaultChain,\n client,\n });\n }\n\n sendTransaction(tx, {\n onSuccess: (result) => {\n onSuccess?.(result.transactionHash);\n setRecipient('');\n setAmount('');\n },\n onError: (err) => {\n setError(err.message);\n onError?.(err);\n },\n });\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Transaction failed');\n setError(error.message);\n onError?.(error);\n }\n }, [account, canSend, recipient, amount, tokenAddress, tokenDecimals, defaultChain, client, sendTransaction, onSuccess, onError]);\n\n const isDark = theme === 'dark';\n\n return (\n <div\n className={className}\n style={{\n ...containerStyle,\n backgroundColor: isDark ? '#1f2937' : '#ffffff',\n border: `1px solid ${isDark ? '#374151' : '#e5e7eb'}`,\n ...style,\n }}\n >\n <h3 style={{ color: isDark ? '#ffffff' : '#111827', margin: 0, fontSize: '18px', fontWeight: 600 }}>\n Send {tokenSymbol}\n </h3>\n\n <div>\n <label style={{ ...labelStyle, color: isDark ? '#9ca3af' : '#6b7280' }}>Recipient Address</label>\n <input\n type=\"text\"\n value={recipient}\n onChange={(e) => setRecipient(e.target.value)}\n placeholder=\"0x...\"\n style={{\n ...inputStyle,\n backgroundColor: isDark ? '#374151' : '#f3f4f6',\n color: isDark ? '#ffffff' : '#111827',\n border: `1px solid ${isDark ? '#4b5563' : '#d1d5db'}`,\n }}\n />\n </div>\n\n <div>\n <label style={{ ...labelStyle, color: isDark ? '#9ca3af' : '#6b7280' }}>Amount ({tokenSymbol})</label>\n <input\n type=\"number\"\n value={amount}\n onChange={(e) => setAmount(e.target.value)}\n placeholder=\"0.0\"\n min=\"0\"\n step=\"any\"\n style={{\n ...inputStyle,\n backgroundColor: isDark ? '#374151' : '#f3f4f6',\n color: isDark ? '#ffffff' : '#111827',\n border: `1px solid ${isDark ? '#4b5563' : '#d1d5db'}`,\n }}\n />\n </div>\n\n {error && (\n <div style={{ color: '#ef4444', fontSize: '14px', padding: '8px 12px', backgroundColor: 'rgba(239, 68, 68, 0.1)', borderRadius: '8px' }}>\n {error}\n </div>\n )}\n\n <div style={{ display: 'flex', gap: '12px' }}>\n {onCancel && (\n <button\n onClick={onCancel}\n style={{\n ...buttonStyle,\n flex: 1,\n backgroundColor: 'transparent',\n border: `1px solid ${isDark ? '#4b5563' : '#d1d5db'}`,\n color: isDark ? '#9ca3af' : '#6b7280',\n }}\n >\n Cancel\n </button>\n )}\n <button\n onClick={handleSend}\n disabled={!canSend}\n style={canSend ? { ...buttonStyle, flex: 1 } : { ...buttonDisabledStyle, flex: 1 }}\n >\n {isPending ? 'Sending...' : `Send ${tokenSymbol}`}\n </button>\n </div>\n </div>\n );\n}\n\n// ===== Presets =====\n\nexport function OneSendETHWidget(props: Omit<OneSendWidgetProps, 'tokenAddress' | 'tokenSymbol' | 'tokenDecimals'>) {\n return <OneSendWidget {...props} tokenSymbol=\"ETH\" tokenDecimals={18} />;\n}\n\nexport function OneSendUSDCWidget(props: Omit<OneSendWidgetProps, 'tokenSymbol' | 'tokenDecimals'> & { tokenAddress: string }) {\n return <OneSendWidget {...props} tokenSymbol=\"USDC\" tokenDecimals={6} />;\n}\n","'use client';\n\nimport React, { useState, useEffect, useCallback } from 'react';\nimport { useActiveAccount } from 'thirdweb/react';\nimport { getEngineUrl } from '../config';\n\n// ===== Types =====\n\nexport interface OneOnrampWidgetProps {\n // Configuration\n defaultFiat?: string;\n defaultCrypto?: string;\n defaultAmount?: number;\n defaultNetwork?: string;\n\n // Currency options\n supportedFiats?: string[];\n supportedCryptos?: string[];\n supportedNetworks?: string[];\n\n // User info (pre-fill)\n email?: string;\n country?: string;\n\n // Appearance\n theme?: 'light' | 'dark';\n accentColor?: string;\n className?: string;\n style?: React.CSSProperties;\n\n // Display mode\n mode?: 'form' | 'embed' | 'popup';\n embedHeight?: number;\n\n // Callbacks\n onSuccess?: (transaction: OnrampTransaction) => void;\n onError?: (error: Error) => void;\n onClose?: () => void;\n onQuoteUpdate?: (quote: OnrampQuote) => void;\n}\n\nexport interface OnrampQuote {\n fiatCurrency: string;\n fiatAmount: number;\n cryptoCurrency: string;\n cryptoAmount: number;\n network: string;\n rate: number;\n fees: {\n network: number;\n provider: number;\n total: number;\n };\n estimatedTime: string;\n}\n\nexport interface OnrampTransaction {\n id: string;\n status: 'pending' | 'processing' | 'completed' | 'failed';\n fiatCurrency: string;\n fiatAmount: number;\n cryptoCurrency: string;\n cryptoAmount?: number;\n walletAddress: string;\n txHash?: string;\n provider: string;\n}\n\n// ===== Default Values =====\n\nconst DEFAULT_FIATS = ['USD', 'EUR', 'GBP', 'CNY', 'JPY', 'KRW', 'CAD', 'AUD'];\nconst DEFAULT_CRYPTOS = ['USDT', 'USDC', 'ETH', 'BTC', 'MATIC', 'BNB', 'AVAX', 'SOL'];\nconst DEFAULT_NETWORKS = ['ethereum', 'polygon', 'arbitrum', 'optimism', 'base', 'bsc', 'avalanche'];\n\nconst NETWORK_DISPLAY_NAMES: Record<string, string> = {\n ethereum: 'Ethereum',\n polygon: 'Polygon',\n arbitrum: 'Arbitrum',\n optimism: 'Optimism',\n base: 'Base',\n bsc: 'BNB Chain',\n avalanche: 'Avalanche',\n solana: 'Solana',\n};\n\n// Approximate rates for quote estimation\nconst CRYPTO_RATES: Record<string, number> = {\n ETH: 3500,\n BTC: 95000,\n USDT: 1,\n USDC: 1,\n MATIC: 0.85,\n BNB: 650,\n AVAX: 42,\n SOL: 200,\n DAI: 1,\n ARB: 1.2,\n OP: 2.5,\n};\n\n// ===== Styles =====\n\nconst containerStyle: React.CSSProperties = {\n display: 'flex',\n flexDirection: 'column',\n gap: '16px',\n padding: '24px',\n borderRadius: '16px',\n border: '1px solid',\n maxWidth: '420px',\n};\n\nconst headerStyle: React.CSSProperties = {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n marginBottom: '8px',\n};\n\nconst selectStyle: React.CSSProperties = {\n padding: '12px 16px',\n borderRadius: '12px',\n fontSize: '16px',\n outline: 'none',\n cursor: 'pointer',\n appearance: 'none',\n backgroundRepeat: 'no-repeat',\n backgroundPosition: 'right 12px center',\n paddingRight: '40px',\n};\n\nconst inputStyle: React.CSSProperties = {\n padding: '12px 16px',\n borderRadius: '12px',\n fontSize: '18px',\n fontWeight: 500,\n outline: 'none',\n width: '100%',\n boxSizing: 'border-box',\n};\n\nconst buttonStyle: React.CSSProperties = {\n width: '100%',\n padding: '16px',\n border: 'none',\n borderRadius: '12px',\n fontSize: '16px',\n fontWeight: 600,\n cursor: 'pointer',\n transition: 'background-color 0.2s',\n};\n\nconst rowStyle: React.CSSProperties = {\n display: 'flex',\n gap: '12px',\n alignItems: 'center',\n};\n\nconst quoteBoxStyle: React.CSSProperties = {\n padding: '16px',\n borderRadius: '12px',\n fontSize: '14px',\n};\n\n// ===== Component =====\n\nexport function OneOnrampWidget({\n defaultFiat = 'USD',\n defaultCrypto = 'USDT',\n defaultAmount = 100,\n defaultNetwork = 'base',\n supportedFiats = DEFAULT_FIATS,\n supportedCryptos = DEFAULT_CRYPTOS,\n supportedNetworks = DEFAULT_NETWORKS,\n email,\n country,\n theme = 'dark',\n accentColor = '#10b981',\n className,\n style,\n mode = 'form',\n embedHeight = 600,\n onSuccess,\n onError,\n onClose,\n onQuoteUpdate,\n}: OneOnrampWidgetProps) {\n const account = useActiveAccount();\n const walletAddress = account?.address;\n\n // Form state\n const [fiatCurrency, setFiatCurrency] = useState(defaultFiat);\n const [fiatAmount, setFiatAmount] = useState(defaultAmount.toString());\n const [cryptoCurrency, setCryptoCurrency] = useState(defaultCrypto);\n const [network, setNetwork] = useState(defaultNetwork);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const [quote, setQuote] = useState<OnrampQuote | null>(null);\n const [widgetUrl, setWidgetUrl] = useState<string | null>(null);\n\n const isDark = theme === 'dark';\n\n // Calculate estimated quote\n const calculateQuote = useCallback((): OnrampQuote | null => {\n const amount = parseFloat(fiatAmount);\n if (isNaN(amount) || amount <= 0) return null;\n\n const cryptoRate = CRYPTO_RATES[cryptoCurrency.toUpperCase()] || 1;\n const providerFee = amount * 0.035; // ~3.5% provider fee\n const networkFee = cryptoCurrency === 'ETH' ? 5 : 1;\n const totalFee = providerFee + networkFee;\n const netAmount = amount - totalFee;\n const cryptoAmount = netAmount / cryptoRate;\n\n return {\n fiatCurrency,\n fiatAmount: amount,\n cryptoCurrency,\n cryptoAmount: parseFloat(cryptoAmount.toFixed(8)),\n network,\n rate: cryptoRate,\n fees: {\n network: networkFee,\n provider: providerFee,\n total: totalFee,\n },\n estimatedTime: '5-15 minutes',\n };\n }, [fiatAmount, fiatCurrency, cryptoCurrency, network]);\n\n // Update quote when inputs change\n useEffect(() => {\n const newQuote = calculateQuote();\n setQuote(newQuote);\n if (newQuote) {\n onQuoteUpdate?.(newQuote);\n }\n }, [calculateQuote, onQuoteUpdate]);\n\n // Build Onramper widget URL\n const buildWidgetUrl = useCallback(() => {\n if (!walletAddress) return null;\n\n const baseUrl = 'https://buy.onramper.com';\n const params = new URLSearchParams();\n\n // API key from engine or env\n const apiKey = process.env.NEXT_PUBLIC_ONRAMPER_API_KEY || '';\n if (apiKey) {\n params.append('apiKey', apiKey);\n }\n\n // Wallet addresses (same address for all EVM chains - Smart Account)\n params.append('wallets', `ETH:${walletAddress},MATIC:${walletAddress},BNB:${walletAddress},AVAX:${walletAddress}`);\n params.append('networkWallets',\n `ethereum:${walletAddress},polygon:${walletAddress},arbitrum:${walletAddress},` +\n `optimism:${walletAddress},base:${walletAddress},bsc:${walletAddress},avalanche:${walletAddress}`\n );\n\n // Default selections\n params.append('defaultCrypto', cryptoCurrency);\n params.append('defaultFiat', fiatCurrency);\n params.append('defaultAmount', fiatAmount);\n params.append('mode', 'buy');\n\n // Network filter\n if (network) {\n params.append('onlyCryptoNetworks', network);\n }\n\n // User info\n if (email) params.append('email', email);\n if (country) params.append('country', country);\n\n // UI customization\n params.append('color', accentColor.replace('#', ''));\n params.append('darkMode', isDark ? 'true' : 'false');\n params.append('hideTopBar', 'false');\n params.append('isInAppBrowser', 'true');\n\n // Tracking\n params.append('partnerContext', `onesdk_${Date.now()}`);\n params.append('popularCryptos', 'USDT,USDC,ETH,BTC');\n\n return `${baseUrl}?${params.toString()}`;\n }, [walletAddress, cryptoCurrency, fiatCurrency, fiatAmount, network, email, country, accentColor, isDark]);\n\n // Handle buy button click\n const handleBuy = async () => {\n if (!walletAddress) {\n setError('Please connect your wallet first');\n return;\n }\n\n const amount = parseFloat(fiatAmount);\n if (isNaN(amount) || amount < 10) {\n setError('Minimum amount is $10');\n return;\n }\n\n setIsLoading(true);\n setError(null);\n\n try {\n // Try to create session via Engine API first\n const engineUrl = getEngineUrl();\n const response = await fetch(`${engineUrl}/v1/fiat/onramp`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n walletAddress,\n fiatCurrency,\n fiatAmount: amount,\n cryptoCurrency,\n network,\n email,\n }),\n });\n\n if (response.ok) {\n const data = await response.json();\n if (data.success && data.data?.widgetUrl) {\n setWidgetUrl(data.data.widgetUrl);\n if (mode === 'popup') {\n window.open(data.data.widgetUrl, '_blank', 'width=450,height=700');\n }\n return;\n }\n }\n\n // Fallback to direct Onramper URL\n const directUrl = buildWidgetUrl();\n if (directUrl) {\n setWidgetUrl(directUrl);\n if (mode === 'popup') {\n window.open(directUrl, '_blank', 'width=450,height=700');\n }\n } else {\n throw new Error('Failed to generate widget URL');\n }\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to start purchase');\n setError(error.message);\n onError?.(error);\n } finally {\n setIsLoading(false);\n }\n };\n\n // Handle closing embed\n const handleCloseEmbed = () => {\n setWidgetUrl(null);\n onClose?.();\n };\n\n // Theme colors\n const bgColor = isDark ? '#1f2937' : '#ffffff';\n const borderColor = isDark ? '#374151' : '#e5e7eb';\n const textColor = isDark ? '#ffffff' : '#111827';\n const mutedColor = isDark ? '#9ca3af' : '#6b7280';\n const inputBg = isDark ? '#374151' : '#f3f4f6';\n const quoteBg = isDark ? '#374151' : '#f3f4f6';\n\n // Embed mode - show iframe\n if (mode === 'embed' && widgetUrl) {\n return (\n <div className={className} style={{ ...style }}>\n <div style={{ display: 'flex', justifyContent: 'flex-end', marginBottom: '8px' }}>\n <button\n onClick={handleCloseEmbed}\n style={{\n background: 'none',\n border: 'none',\n color: mutedColor,\n cursor: 'pointer',\n fontSize: '14px',\n }}\n >\n Close\n </button>\n </div>\n <iframe\n src={widgetUrl}\n width=\"100%\"\n height={embedHeight}\n style={{ border: 'none', borderRadius: '16px' }}\n allow=\"payment; clipboard-read; clipboard-write\"\n />\n </div>\n );\n }\n\n // Form mode\n return (\n <div\n className={className}\n style={{\n ...containerStyle,\n backgroundColor: bgColor,\n borderColor,\n ...style,\n }}\n >\n {/* Header */}\n <div style={headerStyle}>\n <h3 style={{ color: textColor, margin: 0, fontSize: '18px', fontWeight: 600 }}>\n Buy Crypto\n </h3>\n <span style={{ color: mutedColor, fontSize: '12px' }}>\n Powered by Onramper\n </span>\n </div>\n\n {/* Fiat Input */}\n <div>\n <label style={{ color: mutedColor, fontSize: '14px', marginBottom: '8px', display: 'block' }}>\n You Pay\n </label>\n <div style={rowStyle}>\n <input\n type=\"number\"\n value={fiatAmount}\n onChange={(e) => setFiatAmount(e.target.value)}\n placeholder=\"0\"\n min=\"10\"\n style={{\n ...inputStyle,\n flex: 1,\n backgroundColor: inputBg,\n border: `1px solid ${borderColor}`,\n color: textColor,\n }}\n />\n <select\n value={fiatCurrency}\n onChange={(e) => setFiatCurrency(e.target.value)}\n style={{\n ...selectStyle,\n backgroundColor: inputBg,\n border: `1px solid ${borderColor}`,\n color: textColor,\n minWidth: '100px',\n backgroundImage: `url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='${isDark ? '%239ca3af' : '%236b7280'}'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M19 9l-7 7-7-7'%3E%3C/path%3E%3C/svg%3E\")`,\n backgroundSize: '16px',\n }}\n >\n {supportedFiats.map((fiat) => (\n <option key={fiat} value={fiat}>{fiat}</option>\n ))}\n </select>\n </div>\n </div>\n\n {/* Crypto Output */}\n <div>\n <label style={{ color: mutedColor, fontSize: '14px', marginBottom: '8px', display: 'block' }}>\n You Receive\n </label>\n <div style={rowStyle}>\n <div\n style={{\n ...inputStyle,\n flex: 1,\n backgroundColor: inputBg,\n border: `1px solid ${borderColor}`,\n color: textColor,\n display: 'flex',\n alignItems: 'center',\n }}\n >\n <span style={{ color: quote ? textColor : mutedColor }}>\n {quote ? `~${quote.cryptoAmount.toFixed(6)}` : '0.00'}\n </span>\n </div>\n <select\n value={cryptoCurrency}\n onChange={(e) => setCryptoCurrency(e.target.value)}\n style={{\n ...selectStyle,\n backgroundColor: inputBg,\n border: `1px solid ${borderColor}`,\n color: textColor,\n minWidth: '100px',\n backgroundImage: `url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='${isDark ? '%239ca3af' : '%236b7280'}'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M19 9l-7 7-7-7'%3E%3C/path%3E%3C/svg%3E\")`,\n backgroundSize: '16px',\n }}\n >\n {supportedCryptos.map((crypto) => (\n <option key={crypto} value={crypto}>{crypto}</option>\n ))}\n </select>\n </div>\n </div>\n\n {/* Network Selection */}\n <div>\n <label style={{ color: mutedColor, fontSize: '14px', marginBottom: '8px', display: 'block' }}>\n Network\n </label>\n <select\n value={network}\n onChange={(e) => setNetwork(e.target.value)}\n style={{\n ...selectStyle,\n width: '100%',\n backgroundColor: inputBg,\n border: `1px solid ${borderColor}`,\n color: textColor,\n backgroundImage: `url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='${isDark ? '%239ca3af' : '%236b7280'}'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M19 9l-7 7-7-7'%3E%3C/path%3E%3C/svg%3E\")`,\n backgroundSize: '16px',\n }}\n >\n {supportedNetworks.map((net) => (\n <option key={net} value={net}>\n {NETWORK_DISPLAY_NAMES[net] || net}\n </option>\n ))}\n </select>\n </div>\n\n {/* Quote Summary */}\n {quote && (\n <div style={{ ...quoteBoxStyle, backgroundColor: quoteBg }}>\n <div style={{ display: 'flex', justifyContent: 'space-between', marginBottom: '8px' }}>\n <span style={{ color: mutedColor }}>Rate</span>\n <span style={{ color: textColor }}>\n 1 {cryptoCurrency} = ${quote.rate.toLocaleString()}\n </span>\n </div>\n <div style={{ display: 'flex', justifyContent: 'space-between', marginBottom: '8px' }}>\n <span style={{ color: mutedColor }}>Fees</span>\n <span style={{ color: textColor }}>\n ~${quote.fees.total.toFixed(2)}\n </span>\n </div>\n <div style={{ display: 'flex', justifyContent: 'space-between' }}>\n <span style={{ color: mutedColor }}>Est. Time</span>\n <span style={{ color: textColor }}>{quote.estimatedTime}</span>\n </div>\n </div>\n )}\n\n {/* Error Message */}\n {error && (\n <div style={{\n color: '#ef4444',\n fontSize: '14px',\n padding: '12px',\n backgroundColor: 'rgba(239, 68, 68, 0.1)',\n borderRadius: '8px',\n }}>\n {error}\n </div>\n )}\n\n {/* Buy Button */}\n <button\n onClick={handleBuy}\n disabled={isLoading || !walletAddress}\n style={{\n ...buttonStyle,\n backgroundColor: isLoading || !walletAddress ? '#6b7280' : accentColor,\n color: '#ffffff',\n cursor: isLoading || !walletAddress ? 'not-allowed' : 'pointer',\n }}\n >\n {isLoading ? 'Loading...' : !walletAddress ? 'Connect Wallet' : `Buy ${cryptoCurrency}`}\n </button>\n\n {/* Wallet Address Display */}\n {walletAddress && (\n <div style={{ textAlign: 'center', color: mutedColor, fontSize: '12px' }}>\n Receiving to: {walletAddress.slice(0, 6)}...{walletAddress.slice(-4)}\n </div>\n )}\n </div>\n );\n}\n\n// ===== Presets =====\n\nexport function OneBuyUSDTWidget(props: Omit<OneOnrampWidgetProps, 'defaultCrypto'>) {\n return <OneOnrampWidget {...props} defaultCrypto=\"USDT\" />;\n}\n\nexport function OneBuyUSDCWidget(props: Omit<OneOnrampWidgetProps, 'defaultCrypto'>) {\n return <OneOnrampWidget {...props} defaultCrypto=\"USDC\" />;\n}\n\nexport function OneBuyETHWidget(props: Omit<OneOnrampWidgetProps, 'defaultCrypto'>) {\n return <OneOnrampWidget {...props} defaultCrypto=\"ETH\" />;\n}\n\nexport function OneBuyBTCWidget(props: Omit<OneOnrampWidgetProps, 'defaultCrypto'>) {\n return <OneOnrampWidget {...props} defaultCrypto=\"BTC\" />;\n}\n","'use client';\n\nimport React, { useState, useEffect, useCallback } from 'react';\nimport { useActiveAccount, useWalletBalance } from 'thirdweb/react';\nimport { base } from 'thirdweb/chains';\nimport { useThirdwebClient } from '../providers';\nimport { getEngineUrl } from '../config';\n\n// ===== Types =====\n\nexport interface OneOfframpWidgetProps {\n // Configuration\n defaultFiat?: string;\n defaultCrypto?: string;\n defaultAmount?: string;\n defaultNetwork?: string;\n\n // Currency options\n supportedFiats?: string[];\n supportedCryptos?: string[];\n supportedNetworks?: string[];\n\n // User info (pre-fill)\n email?: string;\n country?: string;\n\n // Appearance\n theme?: 'light' | 'dark';\n accentColor?: string;\n className?: string;\n style?: React.CSSProperties;\n\n // Display mode\n mode?: 'form' | 'embed' | 'popup';\n embedHeight?: number;\n\n // Callbacks\n onSuccess?: (transaction: OfframpTransaction) => void;\n onError?: (error: Error) => void;\n onClose?: () => void;\n onQuoteUpdate?: (quote: OfframpQuote) => void;\n}\n\nexport interface OfframpQuote {\n cryptoCurrency: string;\n cryptoAmount: number;\n fiatCurrency: string;\n fiatAmount: number;\n network: string;\n rate: number;\n fees: {\n network: number;\n provider: number;\n total: number;\n };\n estimatedTime: string;\n}\n\nexport interface OfframpTransaction {\n id: string;\n status: 'pending' | 'processing' | 'completed' | 'failed';\n cryptoCurrency: string;\n cryptoAmount: number;\n fiatCurrency: string;\n fiatAmount?: number;\n walletAddress: string;\n txHash?: string;\n provider: string;\n}\n\n// ===== Default Values =====\n\nconst DEFAULT_FIATS = ['USD', 'EUR', 'GBP', 'CNY', 'JPY', 'KRW', 'CAD', 'AUD'];\nconst DEFAULT_CRYPTOS = ['USDT', 'USDC', 'ETH', 'BTC', 'MATIC', 'BNB'];\nconst DEFAULT_NETWORKS = ['ethereum', 'polygon', 'arbitrum', 'optimism', 'base', 'bsc', 'avalanche'];\n\nconst NETWORK_DISPLAY_NAMES: Record<string, string> = {\n ethereum: 'Ethereum',\n polygon: 'Polygon',\n arbitrum: 'Arbitrum',\n optimism: 'Optimism',\n base: 'Base',\n bsc: 'BNB Chain',\n avalanche: 'Avalanche',\n solana: 'Solana',\n};\n\n// Approximate rates for quote estimation\nconst CRYPTO_RATES: Record<string, number> = {\n ETH: 3500,\n BTC: 95000,\n USDT: 1,\n USDC: 1,\n MATIC: 0.85,\n BNB: 650,\n AVAX: 42,\n SOL: 200,\n DAI: 1,\n};\n\n// ===== Styles =====\n\nconst containerStyle: React.CSSProperties = {\n display: 'flex',\n flexDirection: 'column',\n gap: '16px',\n padding: '24px',\n borderRadius: '16px',\n border: '1px solid',\n maxWidth: '420px',\n};\n\nconst headerStyle: React.CSSProperties = {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n marginBottom: '8px',\n};\n\nconst selectStyle: React.CSSProperties = {\n padding: '12px 16px',\n borderRadius: '12px',\n fontSize: '16px',\n outline: 'none',\n cursor: 'pointer',\n appearance: 'none',\n backgroundRepeat: 'no-repeat',\n backgroundPosition: 'right 12px center',\n paddingRight: '40px',\n};\n\nconst inputStyle: React.CSSProperties = {\n padding: '12px 16px',\n borderRadius: '12px',\n fontSize: '18px',\n fontWeight: 500,\n outline: 'none',\n width: '100%',\n boxSizing: 'border-box',\n};\n\nconst buttonStyle: React.CSSProperties = {\n width: '100%',\n padding: '16px',\n border: 'none',\n borderRadius: '12px',\n fontSize: '16px',\n fontWeight: 600,\n cursor: 'pointer',\n transition: 'background-color 0.2s',\n};\n\nconst rowStyle: React.CSSProperties = {\n display: 'flex',\n gap: '12px',\n alignItems: 'center',\n};\n\nconst quoteBoxStyle: React.CSSProperties = {\n padding: '16px',\n borderRadius: '12px',\n fontSize: '14px',\n};\n\nconst balanceStyle: React.CSSProperties = {\n display: 'flex',\n justifyContent: 'space-between',\n fontSize: '12px',\n marginTop: '4px',\n};\n\n// ===== Component =====\n\nexport function OneOfframpWidget({\n defaultFiat = 'USD',\n defaultCrypto = 'USDT',\n defaultAmount = '',\n defaultNetwork = 'base',\n supportedFiats = DEFAULT_FIATS,\n supportedCryptos = DEFAULT_CRYPTOS,\n supportedNetworks = DEFAULT_NETWORKS,\n email,\n country,\n theme = 'dark',\n accentColor = '#ef4444', // Red for sell\n className,\n style,\n mode = 'form',\n embedHeight = 600,\n onSuccess,\n onError,\n onClose,\n onQuoteUpdate,\n}: OneOfframpWidgetProps) {\n const client = useThirdwebClient();\n const account = useActiveAccount();\n const walletAddress = account?.address;\n\n // Get balance for selected crypto\n const { data: balanceData } = useWalletBalance({\n client: client as any,\n chain: base,\n address: walletAddress,\n enabled: !!client,\n } as any);\n\n // Form state\n const [cryptoCurrency, setCryptoCurrency] = useState(defaultCrypto);\n const [cryptoAmount, setCryptoAmount] = useState(defaultAmount);\n const [fiatCurrency, setFiatCurrency] = useState(defaultFiat);\n const [network, setNetwork] = useState(defaultNetwork);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const [quote, setQuote] = useState<OfframpQuote | null>(null);\n const [widgetUrl, setWidgetUrl] = useState<string | null>(null);\n\n const isDark = theme === 'dark';\n\n // Calculate estimated quote\n const calculateQuote = useCallback((): OfframpQuote | null => {\n const amount = parseFloat(cryptoAmount);\n if (isNaN(amount) || amount <= 0) return null;\n\n const cryptoRate = CRYPTO_RATES[cryptoCurrency.toUpperCase()] || 1;\n const grossAmount = amount * cryptoRate;\n const providerFee = grossAmount * 0.025; // ~2.5% provider fee for offramp\n const networkFee = cryptoCurrency === 'ETH' ? 5 : 1;\n const totalFee = providerFee + networkFee;\n const netAmount = grossAmount - totalFee;\n\n return {\n cryptoCurrency,\n cryptoAmount: amount,\n fiatCurrency,\n fiatAmount: parseFloat(netAmount.toFixed(2)),\n network,\n rate: cryptoRate,\n fees: {\n network: networkFee,\n provider: providerFee,\n total: totalFee,\n },\n estimatedTime: '1-3 business days',\n };\n }, [cryptoAmount, cryptoCurrency, fiatCurrency, network]);\n\n // Update quote when inputs change\n useEffect(() => {\n const newQuote = calculateQuote();\n setQuote(newQuote);\n if (newQuote) {\n onQuoteUpdate?.(newQuote);\n }\n }, [calculateQuote, onQuoteUpdate]);\n\n // Build Onramper widget URL (sell mode)\n const buildWidgetUrl = useCallback(() => {\n if (!walletAddress) return null;\n\n const baseUrl = 'https://buy.onramper.com';\n const params = new URLSearchParams();\n\n // API key from engine or env\n const apiKey = process.env.NEXT_PUBLIC_ONRAMPER_API_KEY || '';\n if (apiKey) {\n params.append('apiKey', apiKey);\n }\n\n // Wallet addresses\n params.append('wallets', `ETH:${walletAddress},MATIC:${walletAddress},BNB:${walletAddress}`);\n params.append('networkWallets',\n `ethereum:${walletAddress},polygon:${walletAddress},arbitrum:${walletAddress},` +\n `optimism:${walletAddress},base:${walletAddress},bsc:${walletAddress}`\n );\n\n // SELL MODE\n params.append('mode', 'sell');\n params.append('defaultCrypto', cryptoCurrency);\n params.append('defaultFiat', fiatCurrency);\n if (cryptoAmount) {\n params.append('sellDefaultAmount', cryptoAmount);\n }\n\n // Network filter\n if (network) {\n params.append('onlyCryptoNetworks', network);\n }\n\n // User info\n if (email) params.append('email', email);\n if (country) params.append('country', country);\n\n // UI customization\n params.append('color', accentColor.replace('#', ''));\n params.append('darkMode', isDark ? 'true' : 'false');\n params.append('hideTopBar', 'false');\n params.append('isInAppBrowser', 'true');\n\n // Tracking\n params.append('partnerContext', `onesdk_sell_${Date.now()}`);\n\n return `${baseUrl}?${params.toString()}`;\n }, [walletAddress, cryptoCurrency, fiatCurrency, cryptoAmount, network, email, country, accentColor, isDark]);\n\n // Handle sell button click\n const handleSell = async () => {\n if (!walletAddress) {\n setError('Please connect your wallet first');\n return;\n }\n\n const amount = parseFloat(cryptoAmount);\n if (isNaN(amount) || amount <= 0) {\n setError('Please enter a valid amount');\n return;\n }\n\n // Check balance\n if (balanceData && cryptoCurrency === 'ETH') {\n const balance = parseFloat(balanceData.displayValue);\n if (amount > balance) {\n setError(`Insufficient balance. You have ${balance.toFixed(4)} ${cryptoCurrency}`);\n return;\n }\n }\n\n setIsLoading(true);\n setError(null);\n\n try {\n // Try Engine API first\n const engineUrl = getEngineUrl();\n const response = await fetch(`${engineUrl}/v1/fiat/offramp`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n walletAddress,\n cryptoCurrency,\n cryptoAmount: amount,\n fiatCurrency,\n network,\n email,\n }),\n });\n\n if (response.ok) {\n const data = await response.json();\n if (data.success && data.data?.widgetUrl) {\n setWidgetUrl(data.data.widgetUrl);\n if (mode === 'popup') {\n window.open(data.data.widgetUrl, '_blank', 'width=450,height=700');\n }\n return;\n }\n }\n\n // Fallback to direct URL\n const directUrl = buildWidgetUrl();\n if (directUrl) {\n setWidgetUrl(directUrl);\n if (mode === 'popup') {\n window.open(directUrl, '_blank', 'width=450,height=700');\n }\n } else {\n throw new Error('Failed to generate widget URL');\n }\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to start sale');\n setError(error.message);\n onError?.(error);\n } finally {\n setIsLoading(false);\n }\n };\n\n // Use max balance\n const handleUseMax = () => {\n if (balanceData && cryptoCurrency === 'ETH') {\n const balance = parseFloat(balanceData.displayValue);\n // Leave some for gas\n const maxAmount = Math.max(0, balance - 0.005);\n setCryptoAmount(maxAmount.toFixed(6));\n }\n };\n\n // Handle closing embed\n const handleCloseEmbed = () => {\n setWidgetUrl(null);\n onClose?.();\n };\n\n // Theme colors\n const bgColor = isDark ? '#1f2937' : '#ffffff';\n const borderColor = isDark ? '#374151' : '#e5e7eb';\n const textColor = isDark ? '#ffffff' : '#111827';\n const mutedColor = isDark ? '#9ca3af' : '#6b7280';\n const inputBg = isDark ? '#374151' : '#f3f4f6';\n const quoteBg = isDark ? '#374151' : '#f3f4f6';\n\n // Embed mode - show iframe\n if (mode === 'embed' && widgetUrl) {\n return (\n <div className={className} style={{ ...style }}>\n <div style={{ display: 'flex', justifyContent: 'flex-end', marginBottom: '8px' }}>\n <button\n onClick={handleCloseEmbed}\n style={{\n background: 'none',\n border: 'none',\n color: mutedColor,\n cursor: 'pointer',\n fontSize: '14px',\n }}\n >\n Close\n </button>\n </div>\n <iframe\n src={widgetUrl}\n width=\"100%\"\n height={embedHeight}\n style={{ border: 'none', borderRadius: '16px' }}\n allow=\"payment; clipboard-read; clipboard-write\"\n />\n </div>\n );\n }\n\n // Form mode\n return (\n <div\n className={className}\n style={{\n ...containerStyle,\n backgroundColor: bgColor,\n borderColor,\n ...style,\n }}\n >\n {/* Header */}\n <div style={headerStyle}>\n <h3 style={{ color: textColor, margin: 0, fontSize: '18px', fontWeight: 600 }}>\n Sell Crypto\n </h3>\n <span style={{ color: mutedColor, fontSize: '12px' }}>\n Cash out to bank\n </span>\n </div>\n\n {/* Crypto Input */}\n <div>\n <label style={{ color: mutedColor, fontSize: '14px', marginBottom: '8px', display: 'block' }}>\n You Sell\n </label>\n <div style={rowStyle}>\n <input\n type=\"number\"\n value={cryptoAmount}\n onChange={(e) => setCryptoAmount(e.target.value)}\n placeholder=\"0.0\"\n min=\"0\"\n step=\"any\"\n style={{\n ...inputStyle,\n flex: 1,\n backgroundColor: inputBg,\n border: `1px solid ${borderColor}`,\n color: textColor,\n }}\n />\n <select\n value={cryptoCurrency}\n onChange={(e) => setCryptoCurrency(e.target.value)}\n style={{\n ...selectStyle,\n backgroundColor: inputBg,\n border: `1px solid ${borderColor}`,\n color: textColor,\n minWidth: '100px',\n backgroundImage: `url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='${isDark ? '%239ca3af' : '%236b7280'}'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M19 9l-7 7-7-7'%3E%3C/path%3E%3C/svg%3E\")`,\n backgroundSize: '16px',\n }}\n >\n {supportedCryptos.map((crypto) => (\n <option key={crypto} value={crypto}>{crypto}</option>\n ))}\n </select>\n </div>\n {/* Balance row */}\n {balanceData && cryptoCurrency === 'ETH' && (\n <div style={balanceStyle}>\n <span style={{ color: mutedColor }}>\n Balance: {parseFloat(balanceData.displayValue).toFixed(4)} ETH\n </span>\n <button\n onClick={handleUseMax}\n style={{\n background: 'none',\n border: 'none',\n color: accentColor,\n cursor: 'pointer',\n fontSize: '12px',\n padding: 0,\n }}\n >\n Use Max\n </button>\n </div>\n )}\n </div>\n\n {/* Network Selection */}\n <div>\n <label style={{ color: mutedColor, fontSize: '14px', marginBottom: '8px', display: 'block' }}>\n Network\n </label>\n <select\n value={network}\n onChange={(e) => setNetwork(e.target.value)}\n style={{\n ...selectStyle,\n width: '100%',\n backgroundColor: inputBg,\n border: `1px solid ${borderColor}`,\n color: textColor,\n backgroundImage: `url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='${isDark ? '%239ca3af' : '%236b7280'}'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M19 9l-7 7-7-7'%3E%3C/path%3E%3C/svg%3E\")`,\n backgroundSize: '16px',\n }}\n >\n {supportedNetworks.map((net) => (\n <option key={net} value={net}>\n {NETWORK_DISPLAY_NAMES[net] || net}\n </option>\n ))}\n </select>\n </div>\n\n {/* Fiat Output */}\n <div>\n <label style={{ color: mutedColor, fontSize: '14px', marginBottom: '8px', display: 'block' }}>\n You Receive\n </label>\n <div style={rowStyle}>\n <div\n style={{\n ...inputStyle,\n flex: 1,\n backgroundColor: inputBg,\n border: `1px solid ${borderColor}`,\n color: textColor,\n display: 'flex',\n alignItems: 'center',\n }}\n >\n <span style={{ color: quote ? textColor : mutedColor }}>\n {quote ? `~$${quote.fiatAmount.toLocaleString()}` : '$0.00'}\n </span>\n </div>\n <select\n value={fiatCurrency}\n onChange={(e) => setFiatCurrency(e.target.value)}\n style={{\n ...selectStyle,\n backgroundColor: inputBg,\n border: `1px solid ${borderColor}`,\n color: textColor,\n minWidth: '100px',\n backgroundImage: `url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='${isDark ? '%239ca3af' : '%236b7280'}'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M19 9l-7 7-7-7'%3E%3C/path%3E%3C/svg%3E\")`,\n backgroundSize: '16px',\n }}\n >\n {supportedFiats.map((fiat) => (\n <option key={fiat} value={fiat}>{fiat}</option>\n ))}\n </select>\n </div>\n </div>\n\n {/* Quote Summary */}\n {quote && (\n <div style={{ ...quoteBoxStyle, backgroundColor: quoteBg }}>\n <div style={{ display: 'flex', justifyContent: 'space-between', marginBottom: '8px' }}>\n <span style={{ color: mutedColor }}>Rate</span>\n <span style={{ color: textColor }}>\n 1 {cryptoCurrency} = ${quote.rate.toLocaleString()}\n </span>\n </div>\n <div style={{ display: 'flex', justifyContent: 'space-between', marginBottom: '8px' }}>\n <span style={{ color: mutedColor }}>Fees</span>\n <span style={{ color: textColor }}>\n ~${quote.fees.total.toFixed(2)}\n </span>\n </div>\n <div style={{ display: 'flex', justifyContent: 'space-between' }}>\n <span style={{ color: mutedColor }}>Est. Arrival</span>\n <span style={{ color: textColor }}>{quote.estimatedTime}</span>\n </div>\n </div>\n )}\n\n {/* Warning */}\n <div style={{\n padding: '12px',\n backgroundColor: isDark ? 'rgba(251, 191, 36, 0.1)' : 'rgba(251, 191, 36, 0.15)',\n borderRadius: '8px',\n fontSize: '12px',\n color: '#fbbf24',\n }}>\n Bank transfers typically take 1-3 business days. KYC verification may be required.\n </div>\n\n {/* Error Message */}\n {error && (\n <div style={{\n color: '#ef4444',\n fontSize: '14px',\n padding: '12px',\n backgroundColor: 'rgba(239, 68, 68, 0.1)',\n borderRadius: '8px',\n }}>\n {error}\n </div>\n )}\n\n {/* Sell Button */}\n <button\n onClick={handleSell}\n disabled={isLoading || !walletAddress}\n style={{\n ...buttonStyle,\n backgroundColor: isLoading || !walletAddress ? '#6b7280' : accentColor,\n color: '#ffffff',\n cursor: isLoading || !walletAddress ? 'not-allowed' : 'pointer',\n }}\n >\n {isLoading ? 'Loading...' : !walletAddress ? 'Connect Wallet' : `Sell ${cryptoCurrency}`}\n </button>\n\n {/* Wallet Address Display */}\n {walletAddress && (\n <div style={{ textAlign: 'center', color: mutedColor, fontSize: '12px' }}>\n Selling from: {walletAddress.slice(0, 6)}...{walletAddress.slice(-4)}\n </div>\n )}\n </div>\n );\n}\n\n// ===== Presets =====\n\nexport function OneSellUSDTWidget(props: Omit<OneOfframpWidgetProps, 'defaultCrypto'>) {\n return <OneOfframpWidget {...props} defaultCrypto=\"USDT\" />;\n}\n\nexport function OneSellUSDCWidget(props: Omit<OneOfframpWidgetProps, 'defaultCrypto'>) {\n return <OneOfframpWidget {...props} defaultCrypto=\"USDC\" />;\n}\n\nexport function OneSellETHWidget(props: Omit<OneOfframpWidgetProps, 'defaultCrypto'>) {\n return <OneOfframpWidget {...props} defaultCrypto=\"ETH\" />;\n}\n","'use client';\n\nimport React, { useState, useCallback, useEffect, useMemo } from 'react';\nimport { useActiveAccount, useSendTransaction } from 'thirdweb/react';\nimport { prepareTransaction } from 'thirdweb';\nimport type { Chain } from 'thirdweb/chains';\nimport { base, ethereum, polygon, arbitrum, optimism, bsc, avalanche } from 'thirdweb/chains';\nimport { useThirdwebClient } from '../providers';\nimport { getEngineUrl } from '../config';\n\n// ===== Types =====\n\nexport interface SwapToken {\n address: string;\n symbol: string;\n name: string;\n decimals: number;\n logoURI?: string;\n chainId: number;\n}\n\nexport interface SwapRoute {\n provider: string;\n fromChain: number;\n toChain: number;\n fromToken: SwapToken;\n toToken: SwapToken;\n fromAmount: string;\n toAmount: string;\n estimatedGas: string;\n priceImpact: string;\n executionTime: string;\n steps: SwapStep[];\n}\n\nexport interface SwapStep {\n type: 'swap' | 'bridge' | 'approve';\n protocol: string;\n fromToken: string;\n toToken: string;\n fromChain: number;\n toChain: number;\n}\n\nexport interface OneSwapWidgetProps {\n // Default values\n defaultFromToken?: SwapToken;\n defaultToToken?: SwapToken;\n defaultFromChain?: Chain;\n defaultToChain?: Chain;\n\n // Supported chains for cross-chain\n supportedChains?: Chain[];\n\n // Supported tokens per chain\n tokens?: SwapToken[];\n\n // Mode\n mode?: 'same-chain' | 'cross-chain' | 'auto';\n\n // Appearance\n theme?: 'light' | 'dark';\n accentColor?: string;\n className?: string;\n style?: React.CSSProperties;\n\n // API endpoints\n quoteEndpoint?: string;\n executeEndpoint?: string;\n\n // Callbacks\n onSwapSuccess?: (txHash: string, route?: SwapRoute) => void;\n onSwapError?: (error: Error) => void;\n onQuoteReceived?: (route: SwapRoute) => void;\n onChainChange?: (fromChain: number, toChain: number) => void;\n}\n\n// ===== Chain Configuration =====\n\ninterface ChainConfig {\n chain: Chain;\n name: string;\n shortName: string;\n nativeToken: string;\n}\n\nconst CHAIN_CONFIGS: ChainConfig[] = [\n { chain: ethereum, name: 'Ethereum', shortName: 'ETH', nativeToken: 'ETH' },\n { chain: base, name: 'Base', shortName: 'BASE', nativeToken: 'ETH' },\n { chain: arbitrum, name: 'Arbitrum', shortName: 'ARB', nativeToken: 'ETH' },\n { chain: optimism, name: 'Optimism', shortName: 'OP', nativeToken: 'ETH' },\n { chain: polygon, name: 'Polygon', shortName: 'MATIC', nativeToken: 'POL' },\n { chain: bsc, name: 'BNB Chain', shortName: 'BSC', nativeToken: 'BNB' },\n { chain: avalanche, name: 'Avalanche', shortName: 'AVAX', nativeToken: 'AVAX' },\n];\n\n// ===== Default Tokens Per Chain =====\n\nconst TOKENS_BY_CHAIN: Record<number, SwapToken[]> = {\n // Ethereum\n 1: [\n { address: '0x0000000000000000000000000000000000000000', symbol: 'ETH', name: 'Ethereum', decimals: 18, chainId: 1 },\n { address: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', symbol: 'USDC', name: 'USD Coin', decimals: 6, chainId: 1 },\n { address: '0xdAC17F958D2ee523a2206206994597C13D831ec7', symbol: 'USDT', name: 'Tether', decimals: 6, chainId: 1 },\n { address: '0x6B175474E89094C44Da98b954EedeAC495271d0F', symbol: 'DAI', name: 'Dai', decimals: 18, chainId: 1 },\n { address: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', symbol: 'WETH', name: 'Wrapped Ether', decimals: 18, chainId: 1 },\n ],\n // Base\n 8453: [\n { address: '0x0000000000000000000000000000000000000000', symbol: 'ETH', name: 'Ethereum', decimals: 18, chainId: 8453 },\n { address: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913', symbol: 'USDC', name: 'USD Coin', decimals: 6, chainId: 8453 },\n { address: '0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb', symbol: 'DAI', name: 'Dai', decimals: 18, chainId: 8453 },\n { address: '0x4200000000000000000000000000000000000006', symbol: 'WETH', name: 'Wrapped Ether', decimals: 18, chainId: 8453 },\n ],\n // Arbitrum\n 42161: [\n { address: '0x0000000000000000000000000000000000000000', symbol: 'ETH', name: 'Ethereum', decimals: 18, chainId: 42161 },\n { address: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831', symbol: 'USDC', name: 'USD Coin', decimals: 6, chainId: 42161 },\n { address: '0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9', symbol: 'USDT', name: 'Tether', decimals: 6, chainId: 42161 },\n { address: '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1', symbol: 'WETH', name: 'Wrapped Ether', decimals: 18, chainId: 42161 },\n ],\n // Optimism\n 10: [\n { address: '0x0000000000000000000000000000000000000000', symbol: 'ETH', name: 'Ethereum', decimals: 18, chainId: 10 },\n { address: '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85', symbol: 'USDC', name: 'USD Coin', decimals: 6, chainId: 10 },\n { address: '0x94b008aA00579c1307B0EF2c499aD98a8ce58e58', symbol: 'USDT', name: 'Tether', decimals: 6, chainId: 10 },\n { address: '0x4200000000000000000000000000000000000006', symbol: 'WETH', name: 'Wrapped Ether', decimals: 18, chainId: 10 },\n ],\n // Polygon\n 137: [\n { address: '0x0000000000000000000000000000000000000000', symbol: 'POL', name: 'Polygon', decimals: 18, chainId: 137 },\n { address: '0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359', symbol: 'USDC', name: 'USD Coin', decimals: 6, chainId: 137 },\n { address: '0xc2132D05D31c914a87C6611C10748AEb04B58e8F', symbol: 'USDT', name: 'Tether', decimals: 6, chainId: 137 },\n { address: '0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619', symbol: 'WETH', name: 'Wrapped Ether', decimals: 18, chainId: 137 },\n ],\n // BSC\n 56: [\n { address: '0x0000000000000000000000000000000000000000', symbol: 'BNB', name: 'BNB', decimals: 18, chainId: 56 },\n { address: '0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d', symbol: 'USDC', name: 'USD Coin', decimals: 18, chainId: 56 },\n { address: '0x55d398326f99059fF775485246999027B3197955', symbol: 'USDT', name: 'Tether', decimals: 18, chainId: 56 },\n { address: '0x2170Ed0880ac9A755fd29B2688956BD959F933F8', symbol: 'ETH', name: 'Ethereum', decimals: 18, chainId: 56 },\n ],\n // Avalanche\n 43114: [\n { address: '0x0000000000000000000000000000000000000000', symbol: 'AVAX', name: 'Avalanche', decimals: 18, chainId: 43114 },\n { address: '0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E', symbol: 'USDC', name: 'USD Coin', decimals: 6, chainId: 43114 },\n { address: '0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7', symbol: 'USDT', name: 'Tether', decimals: 6, chainId: 43114 },\n { address: '0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB', symbol: 'WETH', name: 'Wrapped Ether', decimals: 18, chainId: 43114 },\n ],\n};\n\n// ===== Styles =====\n\nconst containerStyle: React.CSSProperties = {\n display: 'flex',\n flexDirection: 'column',\n gap: '16px',\n padding: '24px',\n borderRadius: '16px',\n border: '1px solid',\n maxWidth: '420px',\n};\n\nconst chainSelectorStyle: React.CSSProperties = {\n display: 'flex',\n gap: '8px',\n alignItems: 'center',\n};\n\nconst tokenInputStyle: React.CSSProperties = {\n display: 'flex',\n flexDirection: 'column',\n gap: '8px',\n padding: '16px',\n borderRadius: '12px',\n};\n\nconst inputStyle: React.CSSProperties = {\n width: '100%',\n padding: '8px 0',\n backgroundColor: 'transparent',\n border: 'none',\n fontSize: '24px',\n fontWeight: 600,\n outline: 'none',\n};\n\nconst selectStyle: React.CSSProperties = {\n padding: '8px 12px',\n border: 'none',\n borderRadius: '8px',\n fontSize: '14px',\n fontWeight: 500,\n cursor: 'pointer',\n appearance: 'none',\n backgroundRepeat: 'no-repeat',\n backgroundPosition: 'right 8px center',\n paddingRight: '28px',\n};\n\nconst buttonStyle: React.CSSProperties = {\n width: '100%',\n padding: '16px',\n border: 'none',\n borderRadius: '12px',\n fontSize: '16px',\n fontWeight: 600,\n cursor: 'pointer',\n transition: 'background-color 0.2s',\n};\n\nconst routeBoxStyle: React.CSSProperties = {\n padding: '12px',\n borderRadius: '8px',\n fontSize: '13px',\n};\n\nconst labelStyle: React.CSSProperties = {\n fontSize: '12px',\n marginBottom: '4px',\n};\n\n// ===== Component =====\n\nexport function OneSwapWidget({\n defaultFromToken,\n defaultToToken,\n defaultFromChain = base,\n defaultToChain,\n supportedChains,\n tokens,\n mode = 'auto',\n theme = 'dark',\n accentColor = '#10b981',\n className,\n style,\n quoteEndpoint,\n executeEndpoint,\n onSwapSuccess,\n onSwapError,\n onQuoteReceived,\n onChainChange,\n}: OneSwapWidgetProps) {\n const client = useThirdwebClient();\n const account = useActiveAccount();\n const { mutate: sendTransaction, isPending } = useSendTransaction();\n\n // Available chains\n const availableChains = useMemo(() => {\n if (supportedChains) {\n return CHAIN_CONFIGS.filter(c => supportedChains.some(sc => sc.id === c.chain.id));\n }\n return CHAIN_CONFIGS;\n }, [supportedChains]);\n\n // State\n const [fromChain, setFromChain] = useState<ChainConfig>(\n availableChains.find(c => c.chain.id === defaultFromChain.id) || availableChains[0]\n );\n const [toChain, setToChain] = useState<ChainConfig>(\n defaultToChain\n ? availableChains.find(c => c.chain.id === defaultToChain.id) || availableChains[0]\n : fromChain\n );\n\n // Get tokens for selected chains\n const fromTokens = useMemo(() => {\n if (tokens) {\n return tokens.filter(t => t.chainId === fromChain.chain.id);\n }\n return TOKENS_BY_CHAIN[fromChain.chain.id] || [];\n }, [tokens, fromChain]);\n\n const toTokens = useMemo(() => {\n if (tokens) {\n return tokens.filter(t => t.chainId === toChain.chain.id);\n }\n return TOKENS_BY_CHAIN[toChain.chain.id] || [];\n }, [tokens, toChain]);\n\n const [fromToken, setFromToken] = useState<SwapToken>(defaultFromToken || fromTokens[0]);\n const [toToken, setToToken] = useState<SwapToken>(defaultToToken || toTokens[1] || toTokens[0]);\n const [fromAmount, setFromAmount] = useState('');\n const [toAmount, setToAmount] = useState('');\n const [route, setRoute] = useState<SwapRoute | null>(null);\n const [isLoadingQuote, setIsLoadingQuote] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n const isDark = theme === 'dark';\n const isCrossChain = fromChain.chain.id !== toChain.chain.id;\n\n // Update tokens when chain changes\n useEffect(() => {\n const newFromTokens = TOKENS_BY_CHAIN[fromChain.chain.id] || [];\n if (newFromTokens.length > 0 && !newFromTokens.some(t => t.address === fromToken?.address)) {\n setFromToken(newFromTokens[0]);\n }\n }, [fromChain, fromToken?.address]);\n\n useEffect(() => {\n const newToTokens = TOKENS_BY_CHAIN[toChain.chain.id] || [];\n if (newToTokens.length > 0 && !newToTokens.some(t => t.address === toToken?.address)) {\n // Try to find same symbol token on destination chain, otherwise use first\n const sameSymbol = newToTokens.find(t => t.symbol === fromToken?.symbol);\n setToToken(sameSymbol || newToTokens[0]);\n }\n }, [toChain, toToken?.address, fromToken?.symbol]);\n\n // Notify chain change\n useEffect(() => {\n onChainChange?.(fromChain.chain.id, toChain.chain.id);\n }, [fromChain, toChain, onChainChange]);\n\n // Fetch quote\n const fetchQuote = useCallback(async () => {\n if (!fromAmount || parseFloat(fromAmount) <= 0 || !fromToken || !toToken) {\n setToAmount('');\n setRoute(null);\n return;\n }\n\n setIsLoadingQuote(true);\n setError(null);\n\n try {\n const engineUrl = getEngineUrl();\n const endpoint = quoteEndpoint || `${engineUrl}/v1/swap/quote`;\n\n const response = await fetch(endpoint, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n fromChainId: fromChain.chain.id,\n toChainId: toChain.chain.id,\n fromToken: fromToken.address,\n toToken: toToken.address,\n fromAmount: fromAmount,\n fromDecimals: fromToken.decimals,\n walletAddress: account?.address,\n slippage: 0.5, // 0.5% default slippage\n }),\n });\n\n const data = await response.json();\n\n if (data.success && data.data) {\n const routeData: SwapRoute = {\n provider: data.data.provider || 'aggregator',\n fromChain: fromChain.chain.id,\n toChain: toChain.chain.id,\n fromToken,\n toToken,\n fromAmount,\n toAmount: data.data.toAmount || '0',\n estimatedGas: data.data.estimatedGas || '0',\n priceImpact: data.data.priceImpact || '0',\n executionTime: isCrossChain ? '2-5 min' : '~30 sec',\n steps: data.data.steps || [],\n };\n\n setRoute(routeData);\n setToAmount(routeData.toAmount);\n onQuoteReceived?.(routeData);\n } else {\n // Fallback: simple estimate\n const estimatedOutput = estimateSwapOutput(fromAmount, fromToken, toToken);\n setToAmount(estimatedOutput.toFixed(6));\n setError(data.error?.message || null);\n }\n } catch (err) {\n // Fallback estimate on error\n const estimatedOutput = estimateSwapOutput(fromAmount, fromToken, toToken);\n setToAmount(estimatedOutput.toFixed(6));\n console.error('Quote fetch error:', err);\n } finally {\n setIsLoadingQuote(false);\n }\n }, [fromAmount, fromToken, toToken, fromChain, toChain, account?.address, quoteEndpoint, isCrossChain, onQuoteReceived]);\n\n // Simple estimate fallback\n const estimateSwapOutput = (amount: string, from: SwapToken, to: SwapToken): number => {\n const prices: Record<string, number> = {\n ETH: 3500, WETH: 3500, BNB: 650, AVAX: 42, POL: 0.85,\n USDC: 1, USDT: 1, DAI: 1,\n };\n const fromPrice = prices[from.symbol] || 1;\n const toPrice = prices[to.symbol] || 1;\n return (parseFloat(amount) * fromPrice) / toPrice;\n };\n\n useEffect(() => {\n const debounce = setTimeout(fetchQuote, 500);\n return () => clearTimeout(debounce);\n }, [fetchQuote]);\n\n // Swap tokens/chains\n const handleSwapDirection = () => {\n const tempChain = fromChain;\n const tempToken = fromToken;\n setFromChain(toChain);\n setToChain(tempChain);\n setFromToken(toToken);\n setToToken(tempToken);\n setFromAmount(toAmount);\n setToAmount(fromAmount);\n };\n\n // Execute swap\n const handleSwap = async () => {\n if (!client || !account || !fromToken || !toToken) return;\n\n setError(null);\n\n try {\n const engineUrl = getEngineUrl();\n const endpoint = executeEndpoint || `${engineUrl}/v1/swap/execute`;\n\n const response = await fetch(endpoint, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n fromChainId: fromChain.chain.id,\n toChainId: toChain.chain.id,\n fromToken: fromToken.address,\n toToken: toToken.address,\n fromAmount,\n walletAddress: account.address,\n slippage: 0.5,\n }),\n });\n\n const data = await response.json();\n\n if (data.success && data.data?.transaction) {\n const tx = prepareTransaction({\n to: data.data.transaction.to,\n data: data.data.transaction.data,\n value: BigInt(data.data.transaction.value || 0),\n chain: fromChain.chain,\n client: client,\n });\n\n sendTransaction(tx, {\n onSuccess: (result) => {\n onSwapSuccess?.(result.transactionHash, route || undefined);\n setFromAmount('');\n setToAmount('');\n setRoute(null);\n },\n onError: (err) => {\n setError(err.message);\n onSwapError?.(err);\n },\n });\n } else {\n throw new Error(data.error?.message || 'Swap execution failed');\n }\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Swap failed');\n setError(error.message);\n onSwapError?.(error);\n }\n };\n\n const canSwap = client && account && fromAmount && parseFloat(fromAmount) > 0 && !isPending && !isLoadingQuote;\n\n // Theme colors\n const bgColor = isDark ? '#1f2937' : '#ffffff';\n const borderColor = isDark ? '#374151' : '#e5e7eb';\n const textColor = isDark ? '#ffffff' : '#111827';\n const mutedColor = isDark ? '#9ca3af' : '#6b7280';\n const inputBg = isDark ? '#374151' : '#f3f4f6';\n\n return (\n <div\n className={className}\n style={{\n ...containerStyle,\n backgroundColor: bgColor,\n borderColor,\n ...style,\n }}\n >\n {/* Header */}\n <div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center' }}>\n <h3 style={{ color: textColor, margin: 0, fontSize: '18px', fontWeight: 600 }}>\n Swap\n </h3>\n {isCrossChain && (\n <span style={{\n fontSize: '11px',\n padding: '4px 8px',\n backgroundColor: accentColor,\n color: '#fff',\n borderRadius: '4px',\n }}>\n Cross-Chain\n </span>\n )}\n </div>\n\n {/* From Section */}\n <div style={{ ...tokenInputStyle, backgroundColor: inputBg }}>\n <div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center' }}>\n <span style={{ ...labelStyle, color: mutedColor }}>From</span>\n {mode !== 'same-chain' && (\n <div style={chainSelectorStyle}>\n <select\n value={fromChain.chain.id}\n onChange={(e) => {\n const chain = availableChains.find(c => c.chain.id === parseInt(e.target.value));\n if (chain) setFromChain(chain);\n }}\n style={{\n ...selectStyle,\n backgroundColor: isDark ? '#4b5563' : '#e5e7eb',\n color: textColor,\n backgroundImage: `url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='${isDark ? '%239ca3af' : '%236b7280'}'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M19 9l-7 7-7-7'%3E%3C/path%3E%3C/svg%3E\")`,\n backgroundSize: '12px',\n fontSize: '12px',\n padding: '6px 24px 6px 8px',\n }}\n >\n {availableChains.map(c => (\n <option key={c.chain.id} value={c.chain.id}>{c.shortName}</option>\n ))}\n </select>\n </div>\n )}\n </div>\n\n <div style={{ display: 'flex', gap: '12px', alignItems: 'center' }}>\n <input\n type=\"number\"\n value={fromAmount}\n onChange={(e) => setFromAmount(e.target.value)}\n placeholder=\"0.0\"\n style={{ ...inputStyle, flex: 1, color: textColor }}\n />\n <select\n value={fromToken?.address || ''}\n onChange={(e) => {\n const token = fromTokens.find(t => t.address === e.target.value);\n if (token) setFromToken(token);\n }}\n style={{\n ...selectStyle,\n backgroundColor: isDark ? '#4b5563' : '#e5e7eb',\n color: textColor,\n backgroundImage: `url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='${isDark ? '%239ca3af' : '%236b7280'}'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M19 9l-7 7-7-7'%3E%3C/path%3E%3C/svg%3E\")`,\n backgroundSize: '12px',\n }}\n >\n {fromTokens.map(token => (\n <option key={token.address} value={token.address}>{token.symbol}</option>\n ))}\n </select>\n </div>\n </div>\n\n {/* Swap Direction Button */}\n <div style={{ display: 'flex', justifyContent: 'center', margin: '-8px 0' }}>\n <button\n onClick={handleSwapDirection}\n style={{\n width: '36px',\n height: '36px',\n borderRadius: '50%',\n backgroundColor: inputBg,\n border: `2px solid ${bgColor}`,\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: '16px',\n color: mutedColor,\n zIndex: 1,\n }}\n >\n ↕\n </button>\n </div>\n\n {/* To Section */}\n <div style={{ ...tokenInputStyle, backgroundColor: inputBg }}>\n <div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center' }}>\n <span style={{ ...labelStyle, color: mutedColor }}>To</span>\n {mode !== 'same-chain' && (\n <div style={chainSelectorStyle}>\n <select\n value={toChain.chain.id}\n onChange={(e) => {\n const chain = availableChains.find(c => c.chain.id === parseInt(e.target.value));\n if (chain) setToChain(chain);\n }}\n style={{\n ...selectStyle,\n backgroundColor: isDark ? '#4b5563' : '#e5e7eb',\n color: textColor,\n backgroundImage: `url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='${isDark ? '%239ca3af' : '%236b7280'}'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M19 9l-7 7-7-7'%3E%3C/path%3E%3C/svg%3E\")`,\n backgroundSize: '12px',\n fontSize: '12px',\n padding: '6px 24px 6px 8px',\n }}\n >\n {availableChains.map(c => (\n <option key={c.chain.id} value={c.chain.id}>{c.shortName}</option>\n ))}\n </select>\n </div>\n )}\n </div>\n\n <div style={{ display: 'flex', gap: '12px', alignItems: 'center' }}>\n <input\n type=\"number\"\n value={toAmount}\n placeholder=\"0.0\"\n readOnly\n style={{ ...inputStyle, flex: 1, color: mutedColor }}\n />\n <select\n value={toToken?.address || ''}\n onChange={(e) => {\n const token = toTokens.find(t => t.address === e.target.value);\n if (token) setToToken(token);\n }}\n style={{\n ...selectStyle,\n backgroundColor: isDark ? '#4b5563' : '#e5e7eb',\n color: textColor,\n backgroundImage: `url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='${isDark ? '%239ca3af' : '%236b7280'}'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M19 9l-7 7-7-7'%3E%3C/path%3E%3C/svg%3E\")`,\n backgroundSize: '12px',\n }}\n >\n {toTokens.map(token => (\n <option key={token.address} value={token.address}>{token.symbol}</option>\n ))}\n </select>\n </div>\n </div>\n\n {/* Route Info */}\n {(route || (fromAmount && toAmount)) && (\n <div style={{ ...routeBoxStyle, backgroundColor: inputBg }}>\n <div style={{ display: 'flex', justifyContent: 'space-between', marginBottom: '6px' }}>\n <span style={{ color: mutedColor }}>Rate</span>\n <span style={{ color: textColor }}>\n 1 {fromToken?.symbol} = {toAmount && fromAmount ? (parseFloat(toAmount) / parseFloat(fromAmount)).toFixed(6) : '0'} {toToken?.symbol}\n </span>\n </div>\n {route?.priceImpact && parseFloat(route.priceImpact) > 0 && (\n <div style={{ display: 'flex', justifyContent: 'space-between', marginBottom: '6px' }}>\n <span style={{ color: mutedColor }}>Price Impact</span>\n <span style={{ color: parseFloat(route.priceImpact) > 3 ? '#ef4444' : textColor }}>\n {route.priceImpact}%\n </span>\n </div>\n )}\n {isCrossChain && (\n <div style={{ display: 'flex', justifyContent: 'space-between' }}>\n <span style={{ color: mutedColor }}>Est. Time</span>\n <span style={{ color: textColor }}>{route?.executionTime || '2-5 min'}</span>\n </div>\n )}\n </div>\n )}\n\n {/* Error */}\n {error && (\n <div style={{\n color: '#ef4444',\n fontSize: '14px',\n padding: '10px 12px',\n backgroundColor: 'rgba(239, 68, 68, 0.1)',\n borderRadius: '8px',\n }}>\n {error}\n </div>\n )}\n\n {/* Swap Button */}\n <button\n onClick={handleSwap}\n disabled={!canSwap}\n style={{\n ...buttonStyle,\n backgroundColor: canSwap ? accentColor : '#6b7280',\n color: '#ffffff',\n cursor: canSwap ? 'pointer' : 'not-allowed',\n }}\n >\n {isPending\n ? 'Swapping...'\n : isLoadingQuote\n ? 'Getting Quote...'\n : !account\n ? 'Connect Wallet'\n : isCrossChain\n ? `Bridge & Swap`\n : 'Swap'}\n </button>\n </div>\n );\n}\n\n// ===== Presets =====\n\nexport function OneSameChainSwap(props: Omit<OneSwapWidgetProps, 'mode'>) {\n return <OneSwapWidget {...props} mode=\"same-chain\" />;\n}\n\nexport function OneCrossChainSwap(props: Omit<OneSwapWidgetProps, 'mode'>) {\n return <OneSwapWidget {...props} mode=\"cross-chain\" />;\n}\n","'use client';\n\nimport React, { useState, useEffect, useCallback } from 'react';\nimport { useActiveAccount, useWalletBalance as useThirdwebBalance } from 'thirdweb/react';\nimport type { Chain } from 'thirdweb/chains';\nimport { base, ethereum, polygon, arbitrum, optimism } from 'thirdweb/chains';\nimport { useThirdwebClient } from '../providers';\n\n// ===== Types =====\n\nexport interface TokenBalance {\n symbol: string;\n name: string;\n balance: string;\n balanceFormatted: string;\n balanceUsd: number;\n price: number;\n priceChange24h: number;\n chainId: number;\n chain: string;\n contractAddress?: string;\n logoURI?: string;\n}\n\nexport interface OneWalletBalanceProps {\n // Display options\n showTotalBalance?: boolean;\n showTokenList?: boolean;\n showChainFilter?: boolean;\n showPriceChange?: boolean;\n\n // Chains to show\n chains?: Chain[];\n\n // API endpoint for fetching balances\n balanceEndpoint?: string;\n\n // Appearance\n theme?: 'light' | 'dark';\n className?: string;\n style?: React.CSSProperties;\n compact?: boolean;\n\n // Callbacks\n onTokenClick?: (token: TokenBalance) => void;\n onRefresh?: () => void;\n}\n\n// ===== Styles =====\n\nconst containerStyle: React.CSSProperties = {\n display: 'flex',\n flexDirection: 'column',\n gap: '16px',\n};\n\nconst balanceCardStyle: React.CSSProperties = {\n padding: '24px',\n backgroundColor: '#1f2937',\n borderRadius: '16px',\n border: '1px solid #374151',\n};\n\nconst tokenRowStyle: React.CSSProperties = {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: '12px 16px',\n borderRadius: '12px',\n cursor: 'pointer',\n transition: 'background-color 0.2s',\n};\n\n// ===== Utilities =====\n\nconst formatUSD = (value: number): string => {\n return new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: 'USD',\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n }).format(value);\n};\n\nconst formatBalance = (value: string, decimals: number = 4): string => {\n const num = parseFloat(value);\n if (num === 0) return '0';\n if (num < 0.0001) return '<0.0001';\n return num.toFixed(decimals);\n};\n\nconst CHAIN_INFO: Record<number, { name: string; icon: string }> = {\n 1: { name: 'Ethereum', icon: '⟠' },\n 8453: { name: 'Base', icon: '🔵' },\n 137: { name: 'Polygon', icon: '🟣' },\n 42161: { name: 'Arbitrum', icon: '🔷' },\n 10: { name: 'Optimism', icon: '🔴' },\n};\n\n// ===== Component =====\n\nexport function OneWalletBalance({\n showTotalBalance = true,\n showTokenList = true,\n showChainFilter = true,\n showPriceChange = true,\n chains = [base, ethereum, polygon, arbitrum, optimism],\n balanceEndpoint = '/api/v1/assets',\n theme = 'dark',\n className,\n style,\n compact = false,\n onTokenClick,\n onRefresh,\n}: OneWalletBalanceProps) {\n const client = useThirdwebClient();\n const account = useActiveAccount();\n\n const [tokens, setTokens] = useState<TokenBalance[]>([]);\n const [totalBalance, setTotalBalance] = useState(0);\n const [totalChange24h, setTotalChange24h] = useState(0);\n const [isLoading, setIsLoading] = useState(true);\n const [selectedChain, setSelectedChain] = useState<number | null>(null);\n const [error, setError] = useState<string | null>(null);\n\n // Fetch balances from ONE Engine\n const fetchBalances = useCallback(async () => {\n if (!account?.address) return;\n\n setIsLoading(true);\n setError(null);\n\n try {\n const chainIds = chains.map(c => c.id).join(',');\n const response = await fetch(`${balanceEndpoint}?address=${account.address}&chains=${chainIds}`);\n const data = await response.json();\n\n if (data.success && data.data) {\n const balanceData = data.data;\n setTokens(balanceData.tokens || []);\n setTotalBalance(balanceData.totalUsd || 0);\n setTotalChange24h(balanceData.change24hPercent || 0);\n } else {\n setError(data.error?.message || 'Failed to fetch balances');\n }\n } catch (err) {\n setError('Failed to load balances');\n } finally {\n setIsLoading(false);\n }\n }, [account?.address, balanceEndpoint, chains]);\n\n useEffect(() => {\n fetchBalances();\n }, [fetchBalances]);\n\n const handleRefresh = () => {\n fetchBalances();\n onRefresh?.();\n };\n\n const filteredTokens = selectedChain\n ? tokens.filter(t => t.chainId === selectedChain)\n : tokens;\n\n const isDark = theme === 'dark';\n\n if (!account) {\n return (\n <div className={className} style={{ ...style, textAlign: 'center', padding: '24px', color: isDark ? '#9ca3af' : '#6b7280' }}>\n Connect your wallet to view balances\n </div>\n );\n }\n\n return (\n <div className={className} style={{ ...containerStyle, ...style }}>\n {/* Total Balance Card */}\n {showTotalBalance && (\n <div style={{ ...balanceCardStyle, backgroundColor: isDark ? '#1f2937' : '#ffffff', border: `1px solid ${isDark ? '#374151' : '#e5e7eb'}` }}>\n <div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'flex-start' }}>\n <div>\n <p style={{ margin: '0 0 4px 0', color: isDark ? '#9ca3af' : '#6b7280', fontSize: '14px' }}>Total Balance</p>\n {isLoading ? (\n <div style={{ height: '36px', width: '120px', backgroundColor: isDark ? '#374151' : '#e5e7eb', borderRadius: '8px', animation: 'pulse 2s infinite' }} />\n ) : (\n <h2 style={{ margin: 0, color: isDark ? '#ffffff' : '#111827', fontSize: compact ? '24px' : '32px', fontWeight: 700 }}>\n {formatUSD(totalBalance)}\n </h2>\n )}\n {showPriceChange && !isLoading && (\n <p style={{ margin: '4px 0 0 0', fontSize: '14px', color: totalChange24h >= 0 ? '#10b981' : '#ef4444' }}>\n {totalChange24h >= 0 ? '+' : ''}{totalChange24h.toFixed(2)}% (24h)\n </p>\n )}\n </div>\n <button\n onClick={handleRefresh}\n disabled={isLoading}\n style={{\n padding: '8px 12px',\n backgroundColor: isDark ? '#374151' : '#e5e7eb',\n border: 'none',\n borderRadius: '8px',\n color: isDark ? '#ffffff' : '#111827',\n cursor: isLoading ? 'not-allowed' : 'pointer',\n fontSize: '14px',\n }}\n >\n {isLoading ? '...' : '↻'}\n </button>\n </div>\n </div>\n )}\n\n {/* Chain Filter */}\n {showChainFilter && chains.length > 1 && (\n <div style={{ display: 'flex', gap: '8px', flexWrap: 'wrap' }}>\n <button\n onClick={() => setSelectedChain(null)}\n style={{\n padding: '8px 16px',\n backgroundColor: selectedChain === null ? '#10b981' : (isDark ? '#374151' : '#e5e7eb'),\n border: 'none',\n borderRadius: '20px',\n color: selectedChain === null ? '#ffffff' : (isDark ? '#9ca3af' : '#6b7280'),\n cursor: 'pointer',\n fontSize: '14px',\n }}\n >\n All\n </button>\n {chains.map(chain => (\n <button\n key={chain.id}\n onClick={() => setSelectedChain(chain.id)}\n style={{\n padding: '8px 16px',\n backgroundColor: selectedChain === chain.id ? '#10b981' : (isDark ? '#374151' : '#e5e7eb'),\n border: 'none',\n borderRadius: '20px',\n color: selectedChain === chain.id ? '#ffffff' : (isDark ? '#9ca3af' : '#6b7280'),\n cursor: 'pointer',\n fontSize: '14px',\n }}\n >\n {CHAIN_INFO[chain.id]?.icon} {CHAIN_INFO[chain.id]?.name || `Chain ${chain.id}`}\n </button>\n ))}\n </div>\n )}\n\n {/* Token List */}\n {showTokenList && (\n <div style={{ display: 'flex', flexDirection: 'column', gap: '4px' }}>\n {isLoading ? (\n Array(3).fill(0).map((_, i) => (\n <div key={i} style={{ ...tokenRowStyle, backgroundColor: isDark ? '#374151' : '#f3f4f6', height: '60px', animation: 'pulse 2s infinite' }} />\n ))\n ) : error ? (\n <div style={{ textAlign: 'center', padding: '24px', color: '#ef4444' }}>{error}</div>\n ) : filteredTokens.length === 0 ? (\n <div style={{ textAlign: 'center', padding: '24px', color: isDark ? '#9ca3af' : '#6b7280' }}>No tokens found</div>\n ) : (\n filteredTokens.map((token, index) => (\n <div\n key={`${token.chainId}-${token.symbol}-${index}`}\n style={{\n ...tokenRowStyle,\n backgroundColor: 'transparent',\n }}\n onClick={() => onTokenClick?.(token)}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = isDark ? '#374151' : '#f3f4f6';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = 'transparent';\n }}\n >\n <div style={{ display: 'flex', alignItems: 'center', gap: '12px' }}>\n <div style={{\n width: '40px',\n height: '40px',\n borderRadius: '50%',\n backgroundColor: isDark ? '#374151' : '#e5e7eb',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: '16px',\n fontWeight: 600,\n color: isDark ? '#ffffff' : '#111827',\n }}>\n {token.logoURI ? (\n <img src={token.logoURI} alt={token.symbol} style={{ width: '100%', height: '100%', borderRadius: '50%' }} />\n ) : (\n token.symbol.slice(0, 2)\n )}\n </div>\n <div>\n <div style={{ display: 'flex', alignItems: 'center', gap: '8px' }}>\n <span style={{ color: isDark ? '#ffffff' : '#111827', fontWeight: 600 }}>{token.symbol}</span>\n <span style={{\n fontSize: '10px',\n padding: '2px 6px',\n backgroundColor: isDark ? '#374151' : '#e5e7eb',\n borderRadius: '4px',\n color: isDark ? '#9ca3af' : '#6b7280',\n }}>\n {CHAIN_INFO[token.chainId]?.name || token.chain}\n </span>\n </div>\n <span style={{ color: isDark ? '#9ca3af' : '#6b7280', fontSize: '14px' }}>\n {formatBalance(token.balanceFormatted)} {token.symbol}\n </span>\n </div>\n </div>\n <div style={{ textAlign: 'right' }}>\n <div style={{ color: isDark ? '#ffffff' : '#111827', fontWeight: 600 }}>\n {formatUSD(token.balanceUsd)}\n </div>\n {showPriceChange && (\n <div style={{ fontSize: '14px', color: token.priceChange24h >= 0 ? '#10b981' : '#ef4444' }}>\n {token.priceChange24h >= 0 ? '+' : ''}{token.priceChange24h.toFixed(2)}%\n </div>\n )}\n </div>\n </div>\n ))\n )}\n </div>\n )}\n </div>\n );\n}\n\n// ===== Compact Balance Display =====\n\nexport function OneBalanceDisplay({\n theme = 'dark',\n className,\n style,\n}: Pick<OneWalletBalanceProps, 'theme' | 'className' | 'style'>) {\n return (\n <OneWalletBalance\n theme={theme}\n className={className}\n style={style}\n showTotalBalance={true}\n showTokenList={false}\n showChainFilter={false}\n compact={true}\n />\n );\n}\n","'use client';\n\nimport React, { useState, useEffect, useCallback } from 'react';\nimport { useActiveAccount } from 'thirdweb/react';\nimport { MediaRenderer } from 'thirdweb/react';\nimport { useThirdwebClient } from '../providers';\n\n// ===== Types =====\n\nexport interface NFTItem {\n id: string;\n tokenId: string;\n contractAddress: string;\n name: string;\n description?: string;\n image?: string;\n animationUrl?: string;\n attributes?: Array<{ trait_type: string; value: string | number }>;\n chain: string;\n chainId: number;\n collection?: {\n name: string;\n image?: string;\n };\n}\n\nexport interface OneNFTGalleryProps {\n // Data source\n nfts?: NFTItem[];\n fetchEndpoint?: string;\n\n // Display options\n columns?: 2 | 3 | 4;\n showCollection?: boolean;\n showChain?: boolean;\n\n // Appearance\n theme?: 'light' | 'dark';\n className?: string;\n style?: React.CSSProperties;\n\n // Callbacks\n onNFTClick?: (nft: NFTItem) => void;\n onTransfer?: (nft: NFTItem) => void;\n}\n\n// ===== Styles =====\n\nconst galleryStyle: React.CSSProperties = {\n display: 'grid',\n gap: '16px',\n};\n\nconst cardStyle: React.CSSProperties = {\n backgroundColor: '#1f2937',\n borderRadius: '16px',\n overflow: 'hidden',\n border: '1px solid #374151',\n cursor: 'pointer',\n transition: 'transform 0.2s, box-shadow 0.2s',\n};\n\nconst imageContainerStyle: React.CSSProperties = {\n aspectRatio: '1',\n backgroundColor: '#374151',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n overflow: 'hidden',\n};\n\nconst infoStyle: React.CSSProperties = {\n padding: '12px',\n};\n\n// ===== Component =====\n\nexport function OneNFTGallery({\n nfts: propNfts,\n fetchEndpoint = '/api/v1/assets/nft',\n columns = 3,\n showCollection = true,\n showChain = true,\n theme = 'dark',\n className,\n style,\n onNFTClick,\n onTransfer,\n}: OneNFTGalleryProps) {\n const client = useThirdwebClient();\n const account = useActiveAccount();\n\n const [nfts, setNfts] = useState<NFTItem[]>(propNfts || []);\n const [isLoading, setIsLoading] = useState(!propNfts);\n const [error, setError] = useState<string | null>(null);\n const [selectedNFT, setSelectedNFT] = useState<NFTItem | null>(null);\n\n // Fetch NFTs\n const fetchNFTs = useCallback(async () => {\n if (!account?.address || propNfts) return;\n\n setIsLoading(true);\n setError(null);\n\n try {\n const response = await fetch(`${fetchEndpoint}?address=${account.address}`);\n const data = await response.json();\n\n if (data.success && data.data) {\n setNfts(data.data.nfts || []);\n } else {\n setError(data.error?.message || 'Failed to fetch NFTs');\n }\n } catch (err) {\n setError('Failed to load NFTs');\n } finally {\n setIsLoading(false);\n }\n }, [account?.address, fetchEndpoint, propNfts]);\n\n useEffect(() => {\n fetchNFTs();\n }, [fetchNFTs]);\n\n useEffect(() => {\n if (propNfts) {\n setNfts(propNfts);\n }\n }, [propNfts]);\n\n const isDark = theme === 'dark';\n\n const gridColumns = {\n 2: 'repeat(2, 1fr)',\n 3: 'repeat(3, 1fr)',\n 4: 'repeat(4, 1fr)',\n };\n\n if (isLoading) {\n return (\n <div className={className} style={{ ...style, textAlign: 'center', padding: '40px', color: isDark ? '#9ca3af' : '#6b7280' }}>\n Loading NFTs...\n </div>\n );\n }\n\n if (error) {\n return (\n <div className={className} style={{ ...style, textAlign: 'center', padding: '40px', color: '#ef4444' }}>\n {error}\n </div>\n );\n }\n\n if (nfts.length === 0) {\n return (\n <div className={className} style={{ ...style, textAlign: 'center', padding: '40px', color: isDark ? '#9ca3af' : '#6b7280' }}>\n No NFTs found\n </div>\n );\n }\n\n return (\n <div className={className} style={style}>\n <div style={{ ...galleryStyle, gridTemplateColumns: gridColumns[columns] }}>\n {nfts.map((nft) => (\n <div\n key={`${nft.contractAddress}-${nft.tokenId}`}\n style={{\n ...cardStyle,\n backgroundColor: isDark ? '#1f2937' : '#ffffff',\n border: `1px solid ${isDark ? '#374151' : '#e5e7eb'}`,\n }}\n onClick={() => {\n setSelectedNFT(nft);\n onNFTClick?.(nft);\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.transform = 'translateY(-4px)';\n e.currentTarget.style.boxShadow = '0 10px 40px rgba(0,0,0,0.3)';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.transform = 'translateY(0)';\n e.currentTarget.style.boxShadow = 'none';\n }}\n >\n <div style={{ ...imageContainerStyle, backgroundColor: isDark ? '#374151' : '#f3f4f6' }}>\n {nft.image && client ? (\n <MediaRenderer\n client={client}\n src={nft.image}\n style={{ width: '100%', height: '100%', objectFit: 'cover' }}\n />\n ) : nft.image ? (\n <img src={nft.image} alt={nft.name} style={{ width: '100%', height: '100%', objectFit: 'cover' }} />\n ) : (\n <span style={{ color: isDark ? '#6b7280' : '#9ca3af', fontSize: '14px' }}>No Image</span>\n )}\n </div>\n <div style={infoStyle}>\n <h4 style={{ margin: '0 0 4px 0', color: isDark ? '#ffffff' : '#111827', fontSize: '14px', fontWeight: 600 }}>\n {nft.name || `#${nft.tokenId}`}\n </h4>\n {showCollection && nft.collection && (\n <p style={{ margin: 0, color: isDark ? '#9ca3af' : '#6b7280', fontSize: '12px' }}>\n {nft.collection.name}\n </p>\n )}\n {showChain && (\n <span style={{\n display: 'inline-block',\n marginTop: '8px',\n padding: '2px 8px',\n backgroundColor: isDark ? '#374151' : '#e5e7eb',\n borderRadius: '4px',\n fontSize: '10px',\n color: isDark ? '#9ca3af' : '#6b7280',\n }}>\n {nft.chain}\n </span>\n )}\n </div>\n </div>\n ))}\n </div>\n\n {/* NFT Detail Modal */}\n {selectedNFT && (\n <div\n style={{\n position: 'fixed',\n inset: 0,\n backgroundColor: 'rgba(0,0,0,0.8)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n zIndex: 1000,\n }}\n onClick={() => setSelectedNFT(null)}\n >\n <div\n style={{\n backgroundColor: isDark ? '#1f2937' : '#ffffff',\n borderRadius: '16px',\n padding: '24px',\n maxWidth: '500px',\n width: '90%',\n maxHeight: '90vh',\n overflow: 'auto',\n }}\n onClick={(e) => e.stopPropagation()}\n >\n {selectedNFT.image && (\n client ? (\n <MediaRenderer\n client={client}\n src={selectedNFT.image}\n style={{ width: '100%', borderRadius: '12px', marginBottom: '16px' }}\n />\n ) : (\n <img src={selectedNFT.image} alt={selectedNFT.name} style={{ width: '100%', borderRadius: '12px', marginBottom: '16px' }} />\n )\n )}\n <h3 style={{ margin: '0 0 8px 0', color: isDark ? '#ffffff' : '#111827' }}>\n {selectedNFT.name || `#${selectedNFT.tokenId}`}\n </h3>\n {selectedNFT.description && (\n <p style={{ margin: '0 0 16px 0', color: isDark ? '#9ca3af' : '#6b7280', fontSize: '14px' }}>\n {selectedNFT.description}\n </p>\n )}\n {selectedNFT.attributes && selectedNFT.attributes.length > 0 && (\n <div style={{ display: 'flex', flexWrap: 'wrap', gap: '8px', marginBottom: '16px' }}>\n {selectedNFT.attributes.map((attr, i) => (\n <div\n key={i}\n style={{\n padding: '8px 12px',\n backgroundColor: isDark ? '#374151' : '#f3f4f6',\n borderRadius: '8px',\n }}\n >\n <div style={{ fontSize: '10px', color: isDark ? '#9ca3af' : '#6b7280' }}>{attr.trait_type}</div>\n <div style={{ fontSize: '14px', color: isDark ? '#ffffff' : '#111827', fontWeight: 500 }}>{attr.value}</div>\n </div>\n ))}\n </div>\n )}\n <div style={{ display: 'flex', gap: '12px' }}>\n <button\n onClick={() => setSelectedNFT(null)}\n style={{\n flex: 1,\n padding: '12px',\n backgroundColor: 'transparent',\n border: `1px solid ${isDark ? '#374151' : '#e5e7eb'}`,\n borderRadius: '8px',\n color: isDark ? '#9ca3af' : '#6b7280',\n cursor: 'pointer',\n }}\n >\n Close\n </button>\n {onTransfer && (\n <button\n onClick={() => {\n onTransfer(selectedNFT);\n setSelectedNFT(null);\n }}\n style={{\n flex: 1,\n padding: '12px',\n backgroundColor: '#10b981',\n border: 'none',\n borderRadius: '8px',\n color: '#ffffff',\n fontWeight: 600,\n cursor: 'pointer',\n }}\n >\n Transfer\n </button>\n )}\n </div>\n </div>\n </div>\n )}\n </div>\n );\n}\n","'use client';\n\nimport React, { useState, useEffect } from 'react';\nimport { useActiveAccount } from 'thirdweb/react';\nimport type { Chain } from 'thirdweb/chains';\nimport { base, ethereum, polygon, arbitrum } from 'thirdweb/chains';\n\n// ===== Types =====\n\nexport interface OneReceiveWidgetProps {\n // Display options\n chains?: Chain[];\n defaultChain?: Chain;\n showChainSelector?: boolean;\n showCopyButton?: boolean;\n showQRCode?: boolean;\n\n // Appearance\n theme?: 'light' | 'dark';\n className?: string;\n style?: React.CSSProperties;\n qrSize?: number;\n\n // Callbacks\n onCopy?: (address: string) => void;\n onChainChange?: (chain: Chain) => void;\n}\n\n// ===== QR Code Generator (Simple SVG-based) =====\n\nfunction generateQRMatrix(data: string): boolean[][] {\n // Simple QR-like pattern generator (for demo - in production use a proper QR library)\n const size = 21;\n const matrix: boolean[][] = Array(size).fill(null).map(() => Array(size).fill(false));\n\n // Add finder patterns\n const addFinderPattern = (x: number, y: number) => {\n for (let i = 0; i < 7; i++) {\n for (let j = 0; j < 7; j++) {\n if (i === 0 || i === 6 || j === 0 || j === 6 || (i >= 2 && i <= 4 && j >= 2 && j <= 4)) {\n matrix[y + i][x + j] = true;\n }\n }\n }\n };\n\n addFinderPattern(0, 0);\n addFinderPattern(14, 0);\n addFinderPattern(0, 14);\n\n // Add data pattern based on address hash\n let hash = 0;\n for (let i = 0; i < data.length; i++) {\n hash = ((hash << 5) - hash) + data.charCodeAt(i);\n hash = hash & hash;\n }\n\n for (let i = 8; i < 13; i++) {\n for (let j = 8; j < 13; j++) {\n matrix[i][j] = ((hash >> ((i * 21 + j) % 32)) & 1) === 1;\n }\n }\n\n return matrix;\n}\n\nfunction QRCode({ data, size = 200, isDark = true }: { data: string; size?: number; isDark?: boolean }) {\n const matrix = generateQRMatrix(data);\n const cellSize = size / matrix.length;\n\n return (\n <svg width={size} height={size} viewBox={`0 0 ${size} ${size}`}>\n <rect width={size} height={size} fill={isDark ? '#ffffff' : '#ffffff'} rx=\"8\" />\n {matrix.map((row, y) =>\n row.map((cell, x) =>\n cell ? (\n <rect\n key={`${x}-${y}`}\n x={x * cellSize}\n y={y * cellSize}\n width={cellSize}\n height={cellSize}\n fill={isDark ? '#111827' : '#111827'}\n />\n ) : null\n )\n )}\n </svg>\n );\n}\n\n// ===== Styles =====\n\nconst containerStyle: React.CSSProperties = {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n gap: '20px',\n padding: '24px',\n backgroundColor: '#1f2937',\n borderRadius: '16px',\n border: '1px solid #374151',\n};\n\nconst addressStyle: React.CSSProperties = {\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n padding: '12px 16px',\n backgroundColor: '#374151',\n borderRadius: '12px',\n maxWidth: '100%',\n};\n\nconst buttonStyle: React.CSSProperties = {\n padding: '8px 16px',\n backgroundColor: '#10b981',\n color: '#ffffff',\n border: 'none',\n borderRadius: '8px',\n cursor: 'pointer',\n fontSize: '14px',\n fontWeight: 500,\n};\n\n// ===== Chain Info =====\n\nconst CHAIN_INFO: Record<number, { name: string; icon: string }> = {\n 1: { name: 'Ethereum', icon: '⟠' },\n 8453: { name: 'Base', icon: '🔵' },\n 137: { name: 'Polygon', icon: '🟣' },\n 42161: { name: 'Arbitrum', icon: '🔷' },\n 10: { name: 'Optimism', icon: '🔴' },\n};\n\n// ===== Component =====\n\nexport function OneReceiveWidget({\n chains = [base, ethereum, polygon, arbitrum],\n defaultChain = base,\n showChainSelector = true,\n showCopyButton = true,\n showQRCode = true,\n theme = 'dark',\n className,\n style,\n qrSize = 200,\n onCopy,\n onChainChange,\n}: OneReceiveWidgetProps) {\n const account = useActiveAccount();\n const [selectedChain, setSelectedChain] = useState<Chain>(defaultChain);\n const [copied, setCopied] = useState(false);\n\n const address = account?.address || '';\n const isDark = theme === 'dark';\n\n const handleCopy = async () => {\n if (!address) return;\n\n try {\n await navigator.clipboard.writeText(address);\n setCopied(true);\n onCopy?.(address);\n setTimeout(() => setCopied(false), 2000);\n } catch (err) {\n console.error('Failed to copy:', err);\n }\n };\n\n const handleChainChange = (chain: Chain) => {\n setSelectedChain(chain);\n onChainChange?.(chain);\n };\n\n const shortenAddress = (addr: string) => {\n if (!addr) return '';\n return `${addr.slice(0, 6)}...${addr.slice(-4)}`;\n };\n\n if (!account) {\n return (\n <div className={className} style={{ ...style, textAlign: 'center', padding: '24px', color: isDark ? '#9ca3af' : '#6b7280' }}>\n Connect your wallet to receive funds\n </div>\n );\n }\n\n return (\n <div\n className={className}\n style={{\n ...containerStyle,\n backgroundColor: isDark ? '#1f2937' : '#ffffff',\n border: `1px solid ${isDark ? '#374151' : '#e5e7eb'}`,\n ...style,\n }}\n >\n <h3 style={{ margin: 0, color: isDark ? '#ffffff' : '#111827', fontSize: '18px', fontWeight: 600 }}>\n Receive\n </h3>\n\n {/* Chain Selector */}\n {showChainSelector && chains.length > 1 && (\n <div style={{ display: 'flex', gap: '8px', flexWrap: 'wrap', justifyContent: 'center' }}>\n {chains.map(chain => (\n <button\n key={chain.id}\n onClick={() => handleChainChange(chain)}\n style={{\n padding: '8px 12px',\n backgroundColor: selectedChain.id === chain.id ? '#10b981' : (isDark ? '#374151' : '#e5e7eb'),\n border: 'none',\n borderRadius: '8px',\n color: selectedChain.id === chain.id ? '#ffffff' : (isDark ? '#9ca3af' : '#6b7280'),\n cursor: 'pointer',\n fontSize: '12px',\n }}\n >\n {CHAIN_INFO[chain.id]?.icon} {CHAIN_INFO[chain.id]?.name}\n </button>\n ))}\n </div>\n )}\n\n {/* QR Code */}\n {showQRCode && (\n <div style={{ padding: '16px', backgroundColor: '#ffffff', borderRadius: '12px' }}>\n <QRCode data={address} size={qrSize} isDark={isDark} />\n </div>\n )}\n\n {/* Address Display */}\n <div style={{ ...addressStyle, backgroundColor: isDark ? '#374151' : '#f3f4f6', width: '100%' }}>\n <span style={{\n color: isDark ? '#ffffff' : '#111827',\n fontSize: '14px',\n fontFamily: 'monospace',\n flex: 1,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n }}>\n {address}\n </span>\n </div>\n\n {/* Copy Button */}\n {showCopyButton && (\n <button\n onClick={handleCopy}\n style={{\n ...buttonStyle,\n backgroundColor: copied ? '#059669' : '#10b981',\n width: '100%',\n }}\n >\n {copied ? '✓ Copied!' : 'Copy Address'}\n </button>\n )}\n\n {/* Warning */}\n <p style={{\n margin: 0,\n color: isDark ? '#9ca3af' : '#6b7280',\n fontSize: '12px',\n textAlign: 'center',\n }}>\n Only send {CHAIN_INFO[selectedChain.id]?.name || 'compatible'} assets to this address\n </p>\n </div>\n );\n}\n","/**\n * OneChainSelector - Multi-chain selection component for AI trading\n * Part of ONE Ecosystem SDK - can be used by any ecosystem partner\n */\n\nimport React from 'react';\nimport { View, Text, StyleSheet, TouchableOpacity, ViewStyle, TextStyle } from 'react-native';\n\n// Chain configuration with branding\nexport const CHAIN_CONFIG: Record<string, { name: string; icon: string; color: string }> = {\n ethereum: { name: 'Ethereum', icon: 'Ξ', color: '#627EEA' },\n arbitrum: { name: 'Arbitrum', icon: '◆', color: '#28A0F0' },\n bsc: { name: 'BSC', icon: '◆', color: '#F3BA2F' },\n base: { name: 'Base', icon: '●', color: '#0052FF' },\n polygon: { name: 'Polygon', icon: '⬡', color: '#8247E5' },\n optimism: { name: 'Optimism', icon: '◉', color: '#FF0420' },\n avalanche: { name: 'Avalanche', icon: '▲', color: '#E84142' },\n linea: { name: 'Linea', icon: '═', color: '#121212' },\n zksync: { name: 'zkSync', icon: '⬢', color: '#8C8DFC' },\n scroll: { name: 'Scroll', icon: '◎', color: '#FFEEDA' },\n};\n\nexport interface OneChainSelectorProps {\n /** List of supported chain IDs */\n supportedChains: string[];\n /** Currently selected chains */\n selectedChains: string[];\n /** Callback when chain selection changes */\n onSelectChain: (chain: string) => void;\n /** Enable multi-select (default: true) */\n multiSelect?: boolean;\n /** Accent color for selected state */\n accentColor?: string;\n /** Section title */\n title?: string;\n /** Section subtitle */\n subtitle?: string;\n /** Minimum required selections (for multi-select) */\n minSelections?: number;\n /** Custom styles */\n style?: ViewStyle;\n /** Custom title style */\n titleStyle?: TextStyle;\n}\n\nexport const OneChainSelector: React.FC<OneChainSelectorProps> = ({\n supportedChains,\n selectedChains,\n onSelectChain,\n multiSelect = true,\n accentColor = '#188775',\n title,\n subtitle,\n minSelections = 1,\n style,\n titleStyle,\n}) => {\n const handleSelect = (chain: string) => {\n if (multiSelect) {\n // In multi-select, prevent deselecting if at minimum\n if (selectedChains.includes(chain) && selectedChains.length <= minSelections) {\n return;\n }\n onSelectChain(chain);\n } else {\n // Single select - always allow selection\n if (!selectedChains.includes(chain)) {\n onSelectChain(chain);\n }\n }\n };\n\n return (\n <View style={[styles.container, style]}>\n {title && <Text style={[styles.title, titleStyle]}>{title}</Text>}\n {subtitle && <Text style={styles.subtitle}>{subtitle}</Text>}\n\n <View style={styles.chainsContainer}>\n {supportedChains.map((chain) => {\n const chainInfo = CHAIN_CONFIG[chain] || { name: chain, icon: '●', color: '#888' };\n const isSelected = selectedChains.includes(chain);\n\n return (\n <TouchableOpacity\n key={chain}\n style={[\n styles.chainChip,\n isSelected && styles.chainChipSelected,\n isSelected && { borderColor: accentColor, backgroundColor: accentColor + '15' }\n ]}\n onPress={() => handleSelect(chain)}\n activeOpacity={0.7}\n >\n <View style={[styles.chainIconBg, { backgroundColor: chainInfo.color + '20' }]}>\n <Text style={[styles.chainIcon, { color: chainInfo.color }]}>{chainInfo.icon}</Text>\n </View>\n <Text style={[\n styles.chainText,\n isSelected && { color: accentColor, fontWeight: '600' }\n ]}>\n {chainInfo.name}\n </Text>\n {isSelected && (\n <Text style={[styles.checkmark, { color: accentColor }]}>✓</Text>\n )}\n </TouchableOpacity>\n );\n })}\n </View>\n\n {multiSelect && selectedChains.length > 0 && (\n <View style={styles.selectedInfo}>\n <Text style={styles.selectedText}>\n {selectedChains.length} chain{selectedChains.length > 1 ? 's' : ''} selected\n </Text>\n </View>\n )}\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n marginBottom: 16,\n },\n title: {\n fontSize: 16,\n fontWeight: '600',\n color: '#1a1a1a',\n marginBottom: 4,\n },\n subtitle: {\n fontSize: 12,\n color: '#666',\n marginBottom: 12,\n },\n chainsContainer: {\n flexDirection: 'row',\n flexWrap: 'wrap',\n gap: 8,\n },\n chainChip: {\n flexDirection: 'row',\n alignItems: 'center',\n paddingHorizontal: 12,\n paddingVertical: 8,\n backgroundColor: '#fff',\n borderRadius: 12,\n borderWidth: 2,\n borderColor: '#e5e5e5',\n gap: 8,\n },\n chainChipSelected: {\n borderWidth: 2,\n },\n chainIconBg: {\n width: 28,\n height: 28,\n borderRadius: 14,\n alignItems: 'center',\n justifyContent: 'center',\n },\n chainIcon: {\n fontSize: 14,\n fontWeight: '700',\n },\n chainText: {\n fontSize: 14,\n color: '#666',\n },\n checkmark: {\n fontSize: 16,\n fontWeight: '700',\n },\n selectedInfo: {\n marginTop: 8,\n paddingVertical: 4,\n },\n selectedText: {\n fontSize: 12,\n color: '#888',\n },\n});\n","/**\n * OneTierSelector - Investment tier selection component for AI trading\n * Part of ONE Ecosystem SDK - can be used by any ecosystem partner\n */\n\nimport React from 'react';\nimport { View, Text, StyleSheet, TouchableOpacity, ViewStyle, TextStyle } from 'react-native';\n\nexport interface Tier {\n tier: number;\n amount: number;\n label: string;\n label_zh?: string;\n}\n\nexport interface OneTierSelectorProps {\n /** Available investment tiers */\n tiers: Tier[];\n /** Currently selected tier */\n selectedTier: Tier | null;\n /** Callback when tier selection changes */\n onSelectTier: (tier: Tier) => void;\n /** Accent color for selected state */\n accentColor?: string;\n /** Section title */\n title?: string;\n /** Section subtitle */\n subtitle?: string;\n /** Show recommended badge on middle tier */\n showRecommended?: boolean;\n /** Recommended label text */\n recommendedLabel?: string;\n /** Use Chinese labels */\n useZhLabels?: boolean;\n /** Custom styles */\n style?: ViewStyle;\n /** Custom title style */\n titleStyle?: TextStyle;\n}\n\nexport const OneTierSelector: React.FC<OneTierSelectorProps> = ({\n tiers,\n selectedTier,\n onSelectTier,\n accentColor = '#188775',\n title,\n subtitle,\n showRecommended = true,\n recommendedLabel = 'Recommended',\n useZhLabels = false,\n style,\n titleStyle,\n}) => {\n // Middle tier is usually recommended\n const recommendedTierIndex = Math.floor(tiers.length / 2);\n\n return (\n <View style={[styles.container, style]}>\n {title && <Text style={[styles.title, titleStyle]}>{title}</Text>}\n {subtitle && <Text style={styles.subtitle}>{subtitle}</Text>}\n\n <View style={styles.tiersContainer}>\n {tiers.map((tier, index) => {\n const isSelected = selectedTier?.tier === tier.tier;\n const isRecommended = showRecommended && index === recommendedTierIndex;\n\n return (\n <TouchableOpacity\n key={tier.tier}\n style={[\n styles.tierCard,\n isSelected && styles.tierCardSelected,\n isSelected && { borderColor: accentColor }\n ]}\n onPress={() => onSelectTier(tier)}\n activeOpacity={0.7}\n >\n {isRecommended && (\n <View style={[styles.recommendedBadge, { backgroundColor: accentColor }]}>\n <Text style={styles.recommendedText}>{recommendedLabel}</Text>\n </View>\n )}\n\n <Text style={[\n styles.tierLabel,\n isSelected && { color: accentColor },\n isRecommended && styles.tierLabelWithBadge\n ]}>\n {useZhLabels && tier.label_zh ? tier.label_zh : tier.label}\n </Text>\n\n <Text style={[\n styles.tierAmount,\n isSelected && { color: accentColor }\n ]}>\n ${tier.amount.toLocaleString()}\n </Text>\n\n {isSelected && (\n <View style={[styles.checkCircle, { backgroundColor: accentColor }]}>\n <Text style={styles.checkmark}>✓</Text>\n </View>\n )}\n </TouchableOpacity>\n );\n })}\n </View>\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n marginBottom: 16,\n },\n title: {\n fontSize: 16,\n fontWeight: '600',\n color: '#1a1a1a',\n marginBottom: 4,\n },\n subtitle: {\n fontSize: 12,\n color: '#666',\n marginBottom: 12,\n },\n tiersContainer: {\n flexDirection: 'row',\n gap: 8,\n },\n tierCard: {\n flex: 1,\n padding: 16,\n backgroundColor: '#fff',\n borderRadius: 12,\n borderWidth: 2,\n borderColor: '#e5e5e5',\n alignItems: 'center',\n position: 'relative',\n overflow: 'hidden',\n },\n tierCardSelected: {\n backgroundColor: '#fff',\n },\n tierLabel: {\n fontSize: 12,\n color: '#666',\n marginBottom: 4,\n },\n tierLabelWithBadge: {\n marginTop: 16,\n },\n tierAmount: {\n fontSize: 20,\n fontWeight: '700',\n color: '#1a1a1a',\n },\n checkCircle: {\n position: 'absolute',\n top: -8,\n right: -8,\n width: 28,\n height: 28,\n borderRadius: 14,\n alignItems: 'center',\n justifyContent: 'center',\n },\n checkmark: {\n fontSize: 14,\n fontWeight: '700',\n color: '#fff',\n },\n recommendedBadge: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n paddingVertical: 4,\n alignItems: 'center',\n },\n recommendedText: {\n fontSize: 10,\n fontWeight: '700',\n color: '#fff',\n textTransform: 'uppercase',\n },\n});\n","/**\n * OneCycleSelector - Investment cycle selection component for AI trading\n * Part of ONE Ecosystem SDK - can be used by any ecosystem partner\n */\n\nimport React from 'react';\nimport { View, Text, StyleSheet, TouchableOpacity, ViewStyle, TextStyle } from 'react-native';\n\n// Default share rates by cycle (platform takes this percentage)\nexport const DEFAULT_SHARE_RATES: Record<number, number> = {\n 7: 25,\n 14: 22,\n 30: 18,\n 60: 15,\n 90: 12,\n};\n\nexport interface OneCycleSelectorProps {\n /** List of supported cycle days */\n supportedCycles: number[];\n /** Currently selected cycle */\n selectedCycle: number;\n /** Callback when cycle selection changes */\n onSelectCycle: (cycle: number) => void;\n /** Accent color for selected state */\n accentColor?: string;\n /** Section title */\n title?: string;\n /** Section subtitle */\n subtitle?: string;\n /** Custom share rates by cycle (overrides defaults) */\n shareRates?: Record<number, number>;\n /** Days label */\n daysLabel?: string;\n /** Your share label */\n yourShareLabel?: string;\n /** Platform fee label */\n platformFeeLabel?: string;\n /** Custom styles */\n style?: ViewStyle;\n /** Custom title style */\n titleStyle?: TextStyle;\n}\n\nexport const OneCycleSelector: React.FC<OneCycleSelectorProps> = ({\n supportedCycles,\n selectedCycle,\n onSelectCycle,\n accentColor = '#188775',\n title,\n subtitle,\n shareRates = DEFAULT_SHARE_RATES,\n daysLabel = 'days',\n yourShareLabel = 'Your share',\n platformFeeLabel = 'Platform fee',\n style,\n titleStyle,\n}) => {\n return (\n <View style={[styles.container, style]}>\n {title && <Text style={[styles.title, titleStyle]}>{title}</Text>}\n {subtitle && <Text style={styles.subtitle}>{subtitle}</Text>}\n\n <View style={styles.cyclesContainer}>\n {supportedCycles.map((cycle) => {\n const isSelected = selectedCycle === cycle;\n const shareRate = shareRates[cycle] || 20;\n const userRate = 100 - shareRate;\n\n return (\n <TouchableOpacity\n key={cycle}\n style={[\n styles.cycleOption,\n isSelected && styles.cycleOptionSelected,\n isSelected && { borderColor: accentColor, backgroundColor: accentColor + '10' }\n ]}\n onPress={() => onSelectCycle(cycle)}\n activeOpacity={0.7}\n >\n <Text style={[\n styles.cycleDays,\n isSelected && { color: accentColor }\n ]}>\n {cycle}\n </Text>\n <Text style={styles.cycleDaysLabel}>{daysLabel}</Text>\n\n <View style={styles.cycleEarnings}>\n <Text style={[\n styles.cycleEarningsValue,\n isSelected && { color: accentColor }\n ]}>\n {userRate}%\n </Text>\n <Text style={styles.cycleEarningsLabel}>{yourShareLabel}</Text>\n </View>\n\n <Text style={styles.cycleFee}>\n {shareRate}% {platformFeeLabel}\n </Text>\n </TouchableOpacity>\n );\n })}\n </View>\n\n <View style={styles.infoBox}>\n <Text style={styles.infoText}>\n Longer cycles = higher user share\n </Text>\n </View>\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n marginBottom: 16,\n },\n title: {\n fontSize: 16,\n fontWeight: '600',\n color: '#1a1a1a',\n marginBottom: 4,\n },\n subtitle: {\n fontSize: 12,\n color: '#666',\n marginBottom: 12,\n },\n cyclesContainer: {\n flexDirection: 'row',\n flexWrap: 'wrap',\n gap: 8,\n },\n cycleOption: {\n flex: 1,\n minWidth: '45%',\n padding: 16,\n borderRadius: 12,\n borderWidth: 2,\n borderColor: '#e5e5e5',\n backgroundColor: '#fff',\n alignItems: 'center',\n },\n cycleOptionSelected: {\n borderWidth: 2,\n },\n cycleDays: {\n fontSize: 28,\n fontWeight: '700',\n color: '#1a1a1a',\n },\n cycleDaysLabel: {\n fontSize: 12,\n color: '#666',\n marginBottom: 8,\n },\n cycleEarnings: {\n alignItems: 'center',\n },\n cycleEarningsValue: {\n fontSize: 18,\n fontWeight: '700',\n color: '#10B981',\n },\n cycleEarningsLabel: {\n fontSize: 11,\n color: '#666',\n },\n cycleFee: {\n fontSize: 11,\n color: '#888',\n marginTop: 4,\n },\n infoBox: {\n marginTop: 12,\n padding: 8,\n backgroundColor: '#f5f5f5',\n borderRadius: 8,\n },\n infoText: {\n fontSize: 12,\n color: '#666',\n textAlign: 'center',\n },\n});\n","/**\n * OnePairSelector - Trading pair selection component for AI trading\n * Part of ONE Ecosystem SDK - can be used by any ecosystem partner\n */\n\nimport React from 'react';\nimport { View, Text, StyleSheet, TouchableOpacity, ViewStyle, TextStyle } from 'react-native';\n\n// Common trading pairs with icons\nexport const PAIR_ICONS: Record<string, string> = {\n 'BTC/USDT': '₿',\n 'ETH/USDT': 'Ξ',\n 'SOL/USDT': '◎',\n 'BNB/USDT': '◆',\n 'XRP/USDT': '✕',\n 'DOGE/USDT': 'Ð',\n 'ADA/USDT': '◈',\n 'AVAX/USDT': '▲',\n 'DOT/USDT': '●',\n 'MATIC/USDT': '⬡',\n 'LINK/USDT': '◇',\n 'UNI/USDT': '🦄',\n 'ATOM/USDT': '⚛',\n 'LTC/USDT': 'Ł',\n 'ARB/USDT': '◆',\n 'OP/USDT': '◉',\n};\n\nexport interface OnePairSelectorProps {\n /** List of supported trading pairs */\n supportedPairs: string[];\n /** Currently selected pairs */\n selectedPairs: string[];\n /** Callback when pair selection changes */\n onTogglePair: (pair: string) => void;\n /** Accent color for selected state */\n accentColor?: string;\n /** Section title */\n title?: string;\n /** Section subtitle */\n subtitle?: string;\n /** Minimum required selections */\n minSelections?: number;\n /** Maximum allowed selections (0 = unlimited) */\n maxSelections?: number;\n /** Custom styles */\n style?: ViewStyle;\n /** Custom title style */\n titleStyle?: TextStyle;\n}\n\nexport const OnePairSelector: React.FC<OnePairSelectorProps> = ({\n supportedPairs,\n selectedPairs,\n onTogglePair,\n accentColor = '#188775',\n title,\n subtitle,\n minSelections = 1,\n maxSelections = 0,\n style,\n titleStyle,\n}) => {\n const handleToggle = (pair: string) => {\n const isSelected = selectedPairs.includes(pair);\n\n // Prevent deselecting below minimum\n if (isSelected && selectedPairs.length <= minSelections) {\n return;\n }\n\n // Prevent selecting above maximum\n if (!isSelected && maxSelections > 0 && selectedPairs.length >= maxSelections) {\n return;\n }\n\n onTogglePair(pair);\n };\n\n return (\n <View style={[styles.container, style]}>\n {title && <Text style={[styles.title, titleStyle]}>{title}</Text>}\n {subtitle && <Text style={styles.subtitle}>{subtitle}</Text>}\n\n <View style={styles.pairsContainer}>\n {supportedPairs.map((pair) => {\n const isSelected = selectedPairs.includes(pair);\n const icon = PAIR_ICONS[pair] || '●';\n const baseSymbol = pair.split('/')[0];\n\n return (\n <TouchableOpacity\n key={pair}\n style={[\n styles.pairChip,\n isSelected && styles.pairChipSelected,\n isSelected && { backgroundColor: accentColor + '15', borderColor: accentColor }\n ]}\n onPress={() => handleToggle(pair)}\n activeOpacity={0.7}\n >\n <Text style={styles.pairIcon}>{icon}</Text>\n <Text style={[\n styles.pairText,\n isSelected && { color: accentColor, fontWeight: '600' }\n ]}>\n {baseSymbol}\n </Text>\n {isSelected && (\n <Text style={[styles.checkmark, { color: accentColor }]}>✓</Text>\n )}\n </TouchableOpacity>\n );\n })}\n </View>\n\n <View style={styles.selectedInfo}>\n <Text style={styles.selectedText}>\n {selectedPairs.length} pair{selectedPairs.length !== 1 ? 's' : ''} selected\n {minSelections > 0 && ` (min: ${minSelections})`}\n {maxSelections > 0 && ` (max: ${maxSelections})`}\n </Text>\n </View>\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n marginBottom: 16,\n },\n title: {\n fontSize: 16,\n fontWeight: '600',\n color: '#1a1a1a',\n marginBottom: 4,\n },\n subtitle: {\n fontSize: 12,\n color: '#666',\n marginBottom: 12,\n },\n pairsContainer: {\n flexDirection: 'row',\n flexWrap: 'wrap',\n gap: 8,\n },\n pairChip: {\n flexDirection: 'row',\n alignItems: 'center',\n paddingHorizontal: 12,\n paddingVertical: 8,\n backgroundColor: '#fff',\n borderRadius: 8,\n borderWidth: 1,\n borderColor: '#e5e5e5',\n gap: 6,\n },\n pairChipSelected: {\n borderWidth: 2,\n },\n pairIcon: {\n fontSize: 14,\n },\n pairText: {\n fontSize: 14,\n color: '#666',\n },\n checkmark: {\n fontSize: 14,\n fontWeight: '700',\n },\n selectedInfo: {\n marginTop: 8,\n paddingVertical: 4,\n },\n selectedText: {\n fontSize: 12,\n color: '#888',\n },\n});\n","/**\n * OneForexPoolCard - Displays a forex liquidity pool with metrics\n * Part of ONE Ecosystem SDK\n */\n\nimport React from 'react';\nimport { View, Text, StyleSheet, ViewStyle } from 'react-native';\nimport type { ForexPool } from '../../types/forex';\n\nexport interface OneForexPoolCardProps {\n /** Pool data object */\n pool: ForexPool;\n /** Pool display name (provide translated string) */\n poolName?: string;\n /** Whether to show enhanced metrics (APY, flow, tx count) */\n showMetrics?: boolean;\n /** Custom accent color override */\n accentColor?: string;\n /** Custom container style */\n style?: ViewStyle;\n /** Dark mode */\n dark?: boolean;\n}\n\nexport const OneForexPoolCard: React.FC<OneForexPoolCardProps> = ({\n pool,\n poolName,\n showMetrics = true,\n accentColor,\n style,\n dark = true,\n}) => {\n const color = accentColor || pool.color;\n const bg = dark ? '#111111' : '#ffffff';\n const border = dark ? '#1a1a1a' : '#e5e5e5';\n const textPrimary = dark ? '#ffffff' : '#1a1a1a';\n const textSecondary = dark ? '#9ca3af' : '#666666';\n const textMuted = dark ? '#666666' : '#999999';\n const barBg = dark ? '#1a1a1a' : '#e5e5e5';\n\n return (\n <View style={[styles.container, { backgroundColor: bg, borderColor: border }, style]}>\n <View style={styles.header}>\n <View style={[styles.dot, { backgroundColor: color }]} />\n <Text style={[styles.name, { color: textPrimary }]}>\n {poolName || pool.nameKey}\n </Text>\n <Text style={[styles.alloc, { color: textSecondary }]}>\n {(pool.allocation * 100).toFixed(0)}%\n </Text>\n </View>\n\n <View style={[styles.barOuter, { backgroundColor: barBg }]}>\n <View style={[styles.barFill, { width: `${pool.utilization * 100}%`, backgroundColor: color }]} />\n </View>\n\n <View style={styles.statsRow}>\n <Text style={[styles.statValue, { color: textSecondary }]}>\n ${(pool.totalSize / 1_000_000).toFixed(1)}M\n </Text>\n <Text style={[styles.statLabel, { color: textMuted }]}>\n {(pool.utilization * 100).toFixed(1)}% util\n </Text>\n </View>\n\n {showMetrics && (\n <View style={[styles.metricsRow, { borderTopColor: border }]}>\n <View style={styles.metricItem}>\n <Text style={[styles.metricLabel, { color: textMuted }]}>APY 7d</Text>\n <Text style={[styles.metricValue, { color: '#10B981' }]}>\n {pool.apy7d.toFixed(1)}%\n </Text>\n </View>\n <View style={styles.metricItem}>\n <Text style={[styles.metricLabel, { color: textMuted }]}>24h Flow</Text>\n <Text style={[styles.metricValue, { color: pool.netFlow24h >= 0 ? '#10B981' : '#EF4444' }]}>\n {pool.netFlow24h >= 0 ? '+' : ''}${(pool.netFlow24h / 1000).toFixed(0)}K\n </Text>\n </View>\n <View style={styles.metricItem}>\n <Text style={[styles.metricLabel, { color: textMuted }]}>Txs</Text>\n <Text style={[styles.metricValue, { color: textPrimary }]}>{pool.txCount24h}</Text>\n </View>\n </View>\n )}\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: { borderRadius: 8, borderWidth: 1, padding: 14 },\n header: { flexDirection: 'row', alignItems: 'center', marginBottom: 8, gap: 8 },\n dot: { width: 8, height: 8, borderRadius: 4 },\n name: { fontSize: 13, fontWeight: '600', flex: 1 },\n alloc: { fontSize: 12 },\n barOuter: { height: 6, borderRadius: 3, overflow: 'hidden', marginBottom: 6 },\n barFill: { height: '100%', borderRadius: 3 },\n statsRow: { flexDirection: 'row', justifyContent: 'space-between' },\n statValue: { fontSize: 12, fontWeight: '600' },\n statLabel: { fontSize: 11 },\n metricsRow: { flexDirection: 'row', justifyContent: 'space-between', paddingTop: 8, marginTop: 8, borderTopWidth: 1 },\n metricItem: { alignItems: 'center', flex: 1 },\n metricLabel: { fontSize: 9, textTransform: 'uppercase', letterSpacing: 0.5, marginBottom: 2 },\n metricValue: { fontSize: 12, fontWeight: '600' },\n});\n","// ══════════════════════════════════════════════════════════════════════════════\n// ONE SDK - StableFX On-Chain Forex Types & Constants\n// Shared types for stablecoin foreign exchange pool trading\n// ══════════════════════════════════════════════════════════════════════════════\n\n// ── Capital Split ────────────────────────────────────────────────────────────\n\nexport const FOREX_CAPITAL_SPLIT = {\n poolReserves: 0.50,\n tradingCapital: 0.50,\n} as const;\n\nexport function computePoolAllocations(amount: number): {\n tradingCapital: number;\n totalPoolReserves: number;\n clearing: number;\n hedging: number;\n insurance: number;\n} {\n const totalPoolReserves = amount * FOREX_CAPITAL_SPLIT.poolReserves;\n const tradingCapital = amount * FOREX_CAPITAL_SPLIT.tradingCapital;\n return {\n tradingCapital,\n totalPoolReserves,\n clearing: totalPoolReserves * 0.50,\n hedging: totalPoolReserves * 0.30,\n insurance: totalPoolReserves * 0.20,\n };\n}\n\n// ── Cycle Options ────────────────────────────────────────────────────────────\n\nexport interface ForexCycleOption {\n days: number;\n feeRate: number;\n commissionRate: number;\n label: string;\n}\n\nexport const FOREX_CYCLE_OPTIONS: ForexCycleOption[] = [\n { days: 30, feeRate: 0.10, commissionRate: 0.60, label: '30D' },\n { days: 60, feeRate: 0.08, commissionRate: 0.70, label: '60D' },\n { days: 90, feeRate: 0.07, commissionRate: 0.75, label: '90D' },\n { days: 180, feeRate: 0.05, commissionRate: 0.85, label: '180D' },\n { days: 360, feeRate: 0.03, commissionRate: 0.90, label: '360D' },\n];\n\n// ── Currency Pairs ───────────────────────────────────────────────────────────\n\nexport interface ForexCurrencyPair {\n id: string;\n base: string;\n quote: string;\n symbol: string;\n flag: string;\n name: string;\n basePrice: number;\n pipSize: number;\n spreadPips: number;\n}\n\nexport const FOREX_CURRENCY_PAIRS: ForexCurrencyPair[] = [\n { id: 'USDC_EURC', base: 'USDC', quote: 'EURC', symbol: 'USDC/EURC', flag: '\\u{1F1EA}\\u{1F1FA}', name: 'Euro', basePrice: 0.9230, pipSize: 0.0001, spreadPips: 1.2 },\n { id: 'USDC_GBPC', base: 'USDC', quote: 'GBPC', symbol: 'USDC/GBPC', flag: '\\u{1F1EC}\\u{1F1E7}', name: 'British Pound', basePrice: 0.7890, pipSize: 0.0001, spreadPips: 1.5 },\n { id: 'USDC_JPYC', base: 'USDC', quote: 'JPYC', symbol: 'USDC/JPYC', flag: '\\u{1F1EF}\\u{1F1F5}', name: 'Japanese Yen', basePrice: 154.50, pipSize: 0.01, spreadPips: 1.0 },\n { id: 'USDC_AUDC', base: 'USDC', quote: 'AUDC', symbol: 'USDC/AUDC', flag: '\\u{1F1E6}\\u{1F1FA}', name: 'Australian Dollar', basePrice: 1.5380, pipSize: 0.0001, spreadPips: 1.8 },\n { id: 'USDC_CADC', base: 'USDC', quote: 'CADC', symbol: 'USDC/CADC', flag: '\\u{1F1E8}\\u{1F1E6}', name: 'Canadian Dollar', basePrice: 1.3640, pipSize: 0.0001, spreadPips: 1.5 },\n { id: 'USDC_CHFC', base: 'USDC', quote: 'CHFC', symbol: 'USDC/CHFC', flag: '\\u{1F1E8}\\u{1F1ED}', name: 'Swiss Franc', basePrice: 0.8750, pipSize: 0.0001, spreadPips: 1.3 },\n];\n\n// ── Pools ────────────────────────────────────────────────────────────────────\n\nexport type ForexPoolType = 'clearing' | 'hedging' | 'insurance';\n\nexport interface ForexPool {\n id: ForexPoolType;\n nameKey: string;\n descriptionKey: string;\n allocation: number;\n totalSize: number;\n utilization: number;\n color: string;\n apy7d: number;\n apy30d: number;\n netFlow24h: number;\n txCount24h: number;\n txCountTotal: number;\n totalDeposits: number;\n totalWithdrawals: number;\n profitDistributed: number;\n lastUpdated: number;\n}\n\nexport const FOREX_POOL_DEFAULTS: ForexPool[] = [\n { id: 'clearing', nameKey: 'forex.pool_clearing', descriptionKey: 'forex.pool_clearing_desc', allocation: 0.50, totalSize: 12500000, utilization: 0.78, color: '#3B82F6', apy7d: 12.8, apy30d: 11.5, netFlow24h: 185000, txCount24h: 42, txCountTotal: 12840, totalDeposits: 45200000, totalWithdrawals: 32700000, profitDistributed: 1850000, lastUpdated: Date.now() },\n { id: 'hedging', nameKey: 'forex.pool_hedging', descriptionKey: 'forex.pool_hedging_desc', allocation: 0.30, totalSize: 7500000, utilization: 0.65, color: '#F59E0B', apy7d: 8.1, apy30d: 7.6, netFlow24h: 72000, txCount24h: 24, txCountTotal: 7620, totalDeposits: 28500000, totalWithdrawals: 21000000, profitDistributed: 980000, lastUpdated: Date.now() },\n { id: 'insurance', nameKey: 'forex.pool_insurance', descriptionKey: 'forex.pool_insurance_desc', allocation: 0.20, totalSize: 5000000, utilization: 0.42, color: '#10B981', apy7d: 4.8, apy30d: 4.5, netFlow24h: 35000, txCount24h: 14, txCountTotal: 4280, totalDeposits: 15800000, totalWithdrawals: 10800000, profitDistributed: 520000, lastUpdated: Date.now() },\n];\n\n// ── Pool Transactions ────────────────────────────────────────────────────────\n\nexport type ForexPoolTransactionType =\n | 'deposit' | 'withdrawal' | 'profit_distribution'\n | 'loss_absorption' | 'inter_pool_transfer' | 'fee_collection' | 'reserve_rebalance';\n\nexport interface ForexPoolTransaction {\n id: string;\n poolId: ForexPoolType;\n type: ForexPoolTransactionType;\n amount: number;\n balanceBefore: number;\n balanceAfter: number;\n txHash: string;\n blockNumber: number;\n timestamp: number;\n description: string;\n}\n\n// ── Pool Daily Snapshots ────────────────────────────────────────────────────\n\nexport interface ForexPoolDailySnapshot {\n poolId: ForexPoolType;\n date: string;\n openBalance: number;\n closeBalance: number;\n deposits: number;\n withdrawals: number;\n netFlow: number;\n dailyPnl: number;\n dailyPnlPct: number;\n cumulativePnl: number;\n utilization: number;\n txCount: number;\n activeUsers: number;\n}\n\n// ── Positions ────────────────────────────────────────────────────────────────\n\nexport interface ForexPosition {\n id: string;\n pairId: string;\n side: 'BUY' | 'SELL';\n lots: number;\n pips: number;\n entryPrice: number;\n currentPrice: number;\n pnl: number;\n openTime: number;\n}\n\n// ── Investment ───────────────────────────────────────────────────────────────\n\nexport interface ForexInvestment {\n id: string;\n userId?: string;\n amount: number;\n currentValue: number;\n profit: number;\n status: 'active' | 'completed' | 'pending' | 'redeemed' | 'cancelled';\n selectedPairs: string[];\n cycleDays: number;\n cycleOption: ForexCycleOption;\n feeRate?: number;\n commissionRate?: number;\n startDate: string;\n endDate: string;\n tradingCapital: number;\n totalPoolReserves: number;\n poolAllocations: {\n clearing: number;\n hedging: number;\n insurance: number;\n };\n tradeWeight: number;\n totalLots: number;\n totalPips: number;\n totalTrades: number;\n positions: ForexPosition[];\n tradeHistory: ForexTradeRecord[];\n redeemedAt?: string;\n createdAt?: string;\n updatedAt?: string;\n}\n\n// ── Trade Records ────────────────────────────────────────────────────────────\n\nexport type ForexTradeStatus = 'RFQ' | 'QUOTED' | 'MATCHED' | 'SETTLED' | 'FAILED';\n\nexport interface ForexTradeRecord {\n id: string;\n timestamp: number;\n pairId: string;\n pairSymbol: string;\n side: 'BUY' | 'SELL';\n rfqPrice: number;\n quotePrice: number;\n matchPrice: number;\n settlePrice: number;\n lots: number;\n pips: number;\n pnl: number;\n status: ForexTradeStatus;\n pvpSettled: boolean;\n clearingFee?: number;\n hedgingCost?: number;\n insuranceReserve?: number;\n txHash?: string;\n blockNumber?: number;\n cycleDay?: number;\n cumulativePnl?: number;\n}\n\n// ── Console Log Types ────────────────────────────────────────────────────────\n\nexport type ForexLogType =\n | 'RFQ' | 'QUOTE' | 'MATCH' | 'SETTLE' | 'PVP'\n | 'HEDGE' | 'CLEAR' | 'POSITION' | 'PNL' | 'SYSTEM';\n\nexport interface ForexLogEntry {\n id: string;\n timestamp: number;\n type: ForexLogType;\n message: string;\n data?: Record<string, any>;\n importance: 'low' | 'medium' | 'high';\n pairId?: string;\n}\n\n// ── Agent ────────────────────────────────────────────────────────────────────\n\nexport interface ForexAgent {\n id: string;\n nameKey: string;\n descriptionKey: string;\n icon: string;\n color: string;\n supportedPairs: string[];\n dailyRoiMin: number;\n dailyRoiMax: number;\n totalManaged: number;\n totalUsers: number;\n winRate: number;\n}\n\nexport const FOREX_AGENT: ForexAgent = {\n id: 'stablefx-01',\n nameKey: 'forex.agent_name',\n descriptionKey: 'forex.agent_description',\n icon: '\\u{1F4B1}',\n color: '#0EA5E9',\n supportedPairs: FOREX_CURRENCY_PAIRS.map(p => p.id),\n dailyRoiMin: 0.002,\n dailyRoiMax: 0.005,\n totalManaged: 25000000,\n totalUsers: 3847,\n winRate: 72.5,\n};\n\n// ── Profit Calculation ───────────────────────────────────────────────────────\n\nexport function calculateForexNetProfit(\n grossProfit: number,\n cycleOption: ForexCycleOption,\n): { feeAmount: number; postFeeProfit: number; netProfit: number } {\n const feeAmount = grossProfit * cycleOption.feeRate;\n const postFeeProfit = grossProfit - feeAmount;\n const netProfit = postFeeProfit * cycleOption.commissionRate;\n return { feeAmount, postFeeProfit, netProfit };\n}\n\nexport function estimateForexProfit(\n amount: number,\n cycleDays: number,\n agent: ForexAgent = FOREX_AGENT,\n): { grossProfit: number; feeAmount: number; netProfit: number; dailyRate: number } {\n const cycleOption = FOREX_CYCLE_OPTIONS.find(c => c.days === cycleDays) || FOREX_CYCLE_OPTIONS[0];\n const estimatedApy = ((agent.dailyRoiMin + agent.dailyRoiMax) / 2) * 365 * 100;\n const dailyRate = estimatedApy / 100 / 365;\n const grossProfit = amount * dailyRate * cycleDays;\n const { feeAmount, netProfit } = calculateForexNetProfit(grossProfit, cycleOption);\n return { grossProfit, feeAmount, netProfit, dailyRate };\n}\n","/**\n * OneForexCapitalSplit - Displays 50/50 capital allocation split\n * Part of ONE Ecosystem SDK\n */\n\nimport React from 'react';\nimport { View, Text, StyleSheet, ViewStyle } from 'react-native';\nimport { FOREX_CAPITAL_SPLIT, FOREX_POOL_DEFAULTS, computePoolAllocations } from '../../types/forex';\n\nexport interface OneForexCapitalSplitProps {\n /** Total investment amount */\n amount: number;\n /** Labels (provide translated strings) */\n labels?: {\n title?: string;\n tradingCapital?: string;\n poolReserves?: string;\n clearing?: string;\n hedging?: string;\n insurance?: string;\n };\n /** Show pool breakdown within reserves */\n showPoolBreakdown?: boolean;\n /** Custom container style */\n style?: ViewStyle;\n /** Dark mode */\n dark?: boolean;\n}\n\nexport const OneForexCapitalSplit: React.FC<OneForexCapitalSplitProps> = ({\n amount,\n labels = {},\n showPoolBreakdown = true,\n style,\n dark = false,\n}) => {\n const allocs = computePoolAllocations(amount);\n const bg = dark ? '#111111' : '#ffffff';\n const border = dark ? '#1a1a1a' : '#e5e5e5';\n const textPrimary = dark ? '#ffffff' : '#1a1a1a';\n const textSecondary = dark ? '#9ca3af' : '#666666';\n const itemBg = dark ? '#0a0a0a' : '#f5f5f5';\n\n return (\n <View style={[styles.container, { backgroundColor: bg, borderColor: border }, style]}>\n {labels.title && <Text style={[styles.title, { color: textPrimary }]}>{labels.title}</Text>}\n\n <View style={styles.splitRow}>\n <View style={[styles.splitItem, { backgroundColor: itemBg }]}>\n <View style={[styles.dot, { backgroundColor: '#0EA5E9' }]} />\n <Text style={[styles.splitLabel, { color: textSecondary }]}>\n {labels.tradingCapital || 'Active Trading (RFQ)'}\n </Text>\n <Text style={[styles.splitPct, { color: textSecondary }]}>50%</Text>\n <Text style={[styles.splitAmt, { color: textPrimary }]}>\n ${allocs.tradingCapital.toLocaleString()}\n </Text>\n </View>\n <View style={[styles.splitItem, { backgroundColor: itemBg }]}>\n <View style={[styles.dot, { backgroundColor: '#8B5CF6' }]} />\n <Text style={[styles.splitLabel, { color: textSecondary }]}>\n {labels.poolReserves || 'Pool Reserves'}\n </Text>\n <Text style={[styles.splitPct, { color: textSecondary }]}>50%</Text>\n <Text style={[styles.splitAmt, { color: textPrimary }]}>\n ${allocs.totalPoolReserves.toLocaleString()}\n </Text>\n </View>\n </View>\n\n {showPoolBreakdown && amount > 0 && (\n <View style={[styles.breakdown, { borderTopColor: border }]}>\n {FOREX_POOL_DEFAULTS.map(pool => {\n const poolAmt = allocs[pool.id as keyof typeof allocs] as number;\n return (\n <View key={pool.id} style={styles.poolRow}>\n <View style={[styles.poolDot, { backgroundColor: pool.color }]} />\n <Text style={[styles.poolName, { color: textSecondary }]}>\n {(labels as any)?.[pool.id] || pool.nameKey}\n </Text>\n <View style={[styles.poolBar, { backgroundColor: dark ? '#1a1a1a' : '#e5e5e5' }]}>\n <View style={[styles.poolBarFill, { width: `${pool.allocation * 100}%`, backgroundColor: pool.color }]} />\n </View>\n <Text style={[styles.poolAmt, { color: textPrimary }]}>\n ${poolAmt.toLocaleString()}\n </Text>\n </View>\n );\n })}\n </View>\n )}\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: { borderRadius: 8, borderWidth: 1, padding: 14 },\n title: { fontSize: 14, fontWeight: '600', marginBottom: 12 },\n splitRow: { gap: 8 },\n splitItem: { flexDirection: 'row', alignItems: 'center', paddingVertical: 10, paddingHorizontal: 12, borderRadius: 8 },\n dot: { width: 10, height: 10, borderRadius: 5, marginRight: 8 },\n splitLabel: { flex: 1, fontSize: 13, fontWeight: '500' },\n splitPct: { fontSize: 12, fontWeight: '600', marginRight: 12 },\n splitAmt: { fontSize: 14, fontWeight: '700' },\n breakdown: { marginTop: 12, paddingTop: 12, borderTopWidth: 1 },\n poolRow: { flexDirection: 'row', alignItems: 'center', marginBottom: 8 },\n poolDot: { width: 8, height: 8, borderRadius: 4, marginRight: 8 },\n poolName: { width: 80, fontSize: 12 },\n poolBar: { flex: 1, height: 6, borderRadius: 3, overflow: 'hidden', marginHorizontal: 8 },\n poolBarFill: { height: '100%', borderRadius: 3 },\n poolAmt: { width: 70, fontSize: 12, fontWeight: '600', textAlign: 'right' },\n});\n","// ══════════════════════════════════════════════════════════════════════════════\n// ONE SDK - Trading Console Types & Constants\n// Shared types for real-time trading console components\n// ══════════════════════════════════════════════════════════════════════════════\n\nimport type { BotLogEntry, BotState, StrategyPersonality } from '../services/forex/BotSimulationEngine';\nimport type { ForexLogEntry, ForexPoolTransaction, ForexLogType } from './forex';\n\n// ── Re-exports for convenience ────────────────────────────────────────────────\n\nexport type { BotLogEntry, BotLogType, BotState, IndicatorSnapshot, StrategyPersonality } from '../services/forex/BotSimulationEngine';\n\n// ── Console Log Types ─────────────────────────────────────────────────────────\n\nexport type AILogType =\n | 'SCAN' | 'THINKING' | 'INDICATOR' | 'ANALYSIS' | 'SIGNAL'\n | 'STRATEGY' | 'DECISION' | 'ORDER' | 'FILLED' | 'PNL'\n | 'RISK' | 'NEWS' | 'SYSTEM';\n\nexport const AI_LOG_COLORS: Record<AILogType, string> = {\n SCAN: '#06B6D4', // Cyan\n THINKING: '#A855F7', // Purple\n INDICATOR: '#3B82F6', // Blue\n ANALYSIS: '#6366F1', // Indigo\n SIGNAL: '#F59E0B', // Amber\n STRATEGY: '#D946EF', // Fuchsia\n DECISION: '#F97316', // Orange\n ORDER: '#EC4899', // Pink\n FILLED: '#10B981', // Green\n PNL: '#22C55E', // Emerald\n RISK: '#EF4444', // Red\n NEWS: '#14B8A6', // Teal\n SYSTEM: '#9CA3AF', // Gray\n};\n\n// Forex log type colors (for ForexSimulationEngine logs)\nexport const FOREX_LOG_COLORS: Record<ForexLogType, string> = {\n RFQ: '#06B6D4', // Cyan\n QUOTE: '#8B5CF6', // Purple\n MATCH: '#10B981', // Green\n SETTLE: '#F59E0B', // Amber\n PVP: '#3B82F6', // Blue\n HEDGE: '#EC4899', // Pink\n CLEAR: '#14B8A6', // Teal\n POSITION: '#6366F1', // Indigo\n PNL: '#22C55E', // Emerald\n SYSTEM: '#9CA3AF', // Gray\n};\n\n// ── AI Position Types ─────────────────────────────────────────────────────────\n\nexport type PositionSide = 'LONG' | 'SHORT';\nexport type PositionStatus = 'open' | 'closed' | 'liquidated' | 'pending';\n\nexport interface AIPosition {\n id: string;\n strategyId: string;\n strategyName: string;\n pair: string;\n side: PositionSide;\n entryPrice: number;\n currentPrice: number;\n size: number;\n leverage: number;\n margin: number;\n pnl: number;\n pnlPercent: number;\n status: PositionStatus;\n stopLoss?: number;\n takeProfit?: number;\n liquidationPrice?: number;\n openTime: number;\n closeTime?: number;\n chain?: string;\n orderId?: string;\n aiConfidence?: number;\n aiReasoning?: string;\n}\n\n// ── AI Decision Types ─────────────────────────────────────────────────────────\n\nexport type DecisionAction = 'OPEN_LONG' | 'OPEN_SHORT' | 'CLOSE_LONG' | 'CLOSE_SHORT' | 'HOLD' | 'SKIP';\n\nexport interface AIDecision {\n id: string;\n timestamp: number;\n strategyId: string;\n strategyName: string;\n pair: string;\n action: DecisionAction;\n confidence: number;\n reasoning: string;\n indicators: {\n rsi?: number;\n macd?: number;\n ema?: string;\n volume?: number;\n bollinger?: string;\n };\n signals: string[];\n executed: boolean;\n positionId?: string;\n price?: number;\n size?: number;\n leverage?: number;\n}\n\n// ── Risk Status Types ─────────────────────────────────────────────────────────\n\nexport type RiskLevel = 'low' | 'medium' | 'high' | 'critical';\nexport type TradingStatus = 'active' | 'paused' | 'stopped' | 'cooldown';\n\nexport interface RiskStatus {\n timestamp: number;\n // Portfolio exposure\n totalExposure: number;\n maxExposure: number;\n exposurePercent: number;\n // Daily limits\n dailyPnl: number;\n dailyPnlLimit: number;\n dailyPnlPercent: number;\n dailyTradeCount: number;\n dailyTradeLimit: number;\n // Drawdown\n currentDrawdown: number;\n maxDrawdown: number;\n drawdownPercent: number;\n // Position limits\n openPositions: number;\n maxPositions: number;\n // Risk assessment\n riskLevel: RiskLevel;\n tradingStatus: TradingStatus;\n warnings: string[];\n // Per-strategy risk\n strategyRisks?: Record<string, {\n exposure: number;\n drawdown: number;\n riskLevel: RiskLevel;\n }>;\n}\n\nexport const RISK_LEVEL_COLORS: Record<RiskLevel, { color: string; bgColor: string }> = {\n low: { color: '#10B981', bgColor: '#D1FAE5' },\n medium: { color: '#F59E0B', bgColor: '#FEF3C7' },\n high: { color: '#F97316', bgColor: '#FFEDD5' },\n critical: { color: '#EF4444', bgColor: '#FEE2E2' },\n};\n\nexport const TRADING_STATUS_COLORS: Record<TradingStatus, { color: string; bgColor: string }> = {\n active: { color: '#10B981', bgColor: '#D1FAE5' },\n paused: { color: '#F59E0B', bgColor: '#FEF3C7' },\n stopped: { color: '#EF4444', bgColor: '#FEE2E2' },\n cooldown: { color: '#6366F1', bgColor: '#E0E7FF' },\n};\n\n// ── Console Metrics Types ─────────────────────────────────────────────────────\n\nexport interface ConsoleMetrics {\n // NAV & Performance\n nav: number;\n navChange24h: number;\n navChangePercent24h: number;\n // P&L\n totalPnl: number;\n realizedPnl: number;\n unrealizedPnl: number;\n pnlToday: number;\n pnl7d: number;\n pnl30d: number;\n // Trading stats\n totalTrades: number;\n tradesToday: number;\n winRate: number;\n winCount: number;\n lossCount: number;\n avgWin: number;\n avgLoss: number;\n profitFactor: number;\n // Position stats\n openPositions: number;\n totalExposure: number;\n avgLeverage: number;\n // By strategy\n strategyMetrics?: Record<string, {\n pnl: number;\n trades: number;\n winRate: number;\n exposure: number;\n }>;\n}\n\n// ── Agent Types ───────────────────────────────────────────────────────────────\n\nexport type AgentStatus = 'active' | 'paused' | 'idle' | 'error' | 'initializing';\n\nexport interface AIAgent {\n id: string;\n strategyId: string;\n name: string;\n shortName: string;\n color: string;\n status: AgentStatus;\n // Performance\n totalPnl: number;\n pnlToday: number;\n winRate: number;\n totalTrades: number;\n tradesToday: number;\n // Current state\n currentPair?: string;\n currentPrice?: number;\n lastSignal?: string;\n lastSignalConfidence?: number;\n lastActivity?: number;\n // Positions\n openPositions: number;\n totalExposure: number;\n // Risk\n riskLevel: RiskLevel;\n drawdown: number;\n // Config\n riskTolerance: 'low' | 'medium' | 'high';\n primaryIndicators: string[];\n preferredPairs: string[];\n leverageRange: [number, number];\n}\n\nexport const AGENT_STATUS_COLORS: Record<AgentStatus, { color: string; bgColor: string; label: string }> = {\n active: { color: '#10B981', bgColor: '#D1FAE5', label: 'Active' },\n paused: { color: '#F59E0B', bgColor: '#FEF3C7', label: 'Paused' },\n idle: { color: '#6B7280', bgColor: '#F3F4F6', label: 'Idle' },\n error: { color: '#EF4444', bgColor: '#FEE2E2', label: 'Error' },\n initializing: { color: '#3B82F6', bgColor: '#DBEAFE', label: 'Starting' },\n};\n\n// ── Combined Console State ────────────────────────────────────────────────────\n\nexport interface CombinedLogEntry {\n id: string;\n timestamp: number;\n source: 'ai' | 'forex';\n strategyId?: string;\n strategyName?: string;\n type: string;\n message: string;\n data?: Record<string, any>;\n importance: 'low' | 'medium' | 'high';\n}\n\nexport interface TradingConsoleState {\n ai: {\n strategies: StrategyPersonality[];\n agents: AIAgent[];\n positions: AIPosition[];\n decisions: AIDecision[];\n riskStatus: RiskStatus | null;\n simulationLogs: BotLogEntry[];\n botStates: Map<string, BotState>;\n };\n forex: {\n logs: ForexLogEntry[];\n poolTransactions: ForexPoolTransaction[];\n stats: {\n totalPnl: number;\n totalTrades: number;\n totalPips: number;\n totalLots: number;\n };\n };\n metrics: ConsoleMetrics;\n combinedLogs: CombinedLogEntry[];\n}\n\n// ── Hook Options ──────────────────────────────────────────────────────────────\n\nexport interface TradingConsoleOptions {\n simulation?: boolean;\n pollInterval?: number;\n maxLogs?: number;\n strategyIds?: string[];\n autoStart?: boolean;\n}\n\nexport interface AIQuantConsoleOptions {\n strategyIds?: string[];\n pollInterval?: number;\n simulation?: boolean;\n maxLogs?: number;\n}\n\nexport interface AgentConsoleOptions {\n strategyId: string;\n pollInterval?: number;\n simulation?: boolean;\n maxLogs?: number;\n}\n\n// ── Default Values ────────────────────────────────────────────────────────────\n\nexport const DEFAULT_CONSOLE_OPTIONS: TradingConsoleOptions = {\n simulation: true,\n pollInterval: 5000,\n maxLogs: 500,\n autoStart: false,\n};\n\nexport const DEFAULT_RISK_STATUS: RiskStatus = {\n timestamp: Date.now(),\n totalExposure: 0,\n maxExposure: 100000,\n exposurePercent: 0,\n dailyPnl: 0,\n dailyPnlLimit: 5000,\n dailyPnlPercent: 0,\n dailyTradeCount: 0,\n dailyTradeLimit: 50,\n currentDrawdown: 0,\n maxDrawdown: 15,\n drawdownPercent: 0,\n openPositions: 0,\n maxPositions: 10,\n riskLevel: 'low',\n tradingStatus: 'active',\n warnings: [],\n};\n\nexport const DEFAULT_CONSOLE_METRICS: ConsoleMetrics = {\n nav: 0,\n navChange24h: 0,\n navChangePercent24h: 0,\n totalPnl: 0,\n realizedPnl: 0,\n unrealizedPnl: 0,\n pnlToday: 0,\n pnl7d: 0,\n pnl30d: 0,\n totalTrades: 0,\n tradesToday: 0,\n winRate: 0,\n winCount: 0,\n lossCount: 0,\n avgWin: 0,\n avgLoss: 0,\n profitFactor: 0,\n openPositions: 0,\n totalExposure: 0,\n avgLeverage: 0,\n};\n\n// ── Utility Functions ─────────────────────────────────────────────────────────\n\nexport function calculateRiskLevel(\n exposurePercent: number,\n drawdownPercent: number,\n dailyPnlPercent: number\n): RiskLevel {\n const worstMetric = Math.max(exposurePercent, drawdownPercent, Math.abs(dailyPnlPercent));\n if (worstMetric >= 90) return 'critical';\n if (worstMetric >= 70) return 'high';\n if (worstMetric >= 40) return 'medium';\n return 'low';\n}\n\nexport function formatPnl(pnl: number): string {\n const sign = pnl >= 0 ? '+' : '';\n if (Math.abs(pnl) >= 1000000) {\n return `${sign}$${(pnl / 1000000).toFixed(2)}M`;\n }\n if (Math.abs(pnl) >= 1000) {\n return `${sign}$${(pnl / 1000).toFixed(2)}K`;\n }\n return `${sign}$${pnl.toFixed(2)}`;\n}\n\nexport function formatPercent(value: number, showSign = true): string {\n const sign = showSign && value >= 0 ? '+' : '';\n return `${sign}${value.toFixed(2)}%`;\n}\n","/**\n * OneForexConsoleView - Displays live forex trading console log feed\n * Part of ONE Ecosystem SDK\n */\n\nimport React, { useRef, useEffect } from 'react';\nimport { View, Text, StyleSheet, ScrollView, ViewStyle, Platform } from 'react-native';\nimport type { ForexLogEntry } from '../../types/forex';\nimport { FOREX_LOG_COLORS } from '../../types/console';\n\nconst MONO = Platform.OS === 'ios' ? 'Courier New' : 'monospace';\n\nexport interface OneForexConsoleViewProps {\n /** Array of log entries to display */\n logs: ForexLogEntry[];\n /** Maximum visible entries */\n maxItems?: number;\n /** Auto-scroll to bottom */\n autoScroll?: boolean;\n /** Custom container style */\n style?: ViewStyle;\n /** Console height */\n height?: number;\n}\n\nexport const OneForexConsoleView: React.FC<OneForexConsoleViewProps> = ({\n logs,\n maxItems = 100,\n autoScroll = true,\n style,\n height = 400,\n}) => {\n const scrollRef = useRef<ScrollView>(null);\n const visibleLogs = logs.slice(-maxItems);\n\n useEffect(() => {\n if (autoScroll && scrollRef.current) {\n setTimeout(() => scrollRef.current?.scrollToEnd({ animated: true }), 50);\n }\n }, [logs.length, autoScroll]);\n\n const formatTime = (ts: number) => {\n const d = new Date(ts);\n return `${d.getHours().toString().padStart(2, '0')}:${d.getMinutes().toString().padStart(2, '0')}:${d.getSeconds().toString().padStart(2, '0')}`;\n };\n\n return (\n <View style={[styles.container, { height }, style]}>\n <ScrollView ref={scrollRef} style={styles.scroll} contentContainerStyle={styles.scrollContent}>\n {visibleLogs.map((log) => (\n <View key={log.id} style={styles.logRow}>\n <Text style={styles.timestamp}>{formatTime(log.timestamp)}</Text>\n <Text style={[styles.type, { color: FOREX_LOG_COLORS[log.type] || '#9CA3AF' }]}>\n {log.type.padEnd(8)}\n </Text>\n <Text style={[\n styles.message,\n log.importance === 'high' && styles.messageHigh,\n ]} numberOfLines={2}>\n {log.message}\n </Text>\n </View>\n ))}\n {visibleLogs.length === 0 && (\n <Text style={styles.emptyText}>Waiting for trading activity...</Text>\n )}\n </ScrollView>\n </View>\n );\n};\n\n// Terminal palette – always dark regardless of app theme\nconst T = {\n base: '#0A0A0C',\n border: '#2A2A35',\n muted: '#555560',\n secondary: '#9CA3AF',\n};\n\nconst styles = StyleSheet.create({\n container: { backgroundColor: T.base, borderRadius: 8, borderWidth: 1, borderColor: T.border, overflow: 'hidden' },\n scroll: { flex: 1 },\n scrollContent: { padding: 8 },\n logRow: { flexDirection: 'row', paddingVertical: 3 },\n timestamp: { fontFamily: MONO, fontSize: 10, color: T.muted, width: 60, marginRight: 6 },\n type: { fontFamily: MONO, fontSize: 10, fontWeight: '700', width: 65, marginRight: 6 },\n message: { fontFamily: MONO, fontSize: 10, color: T.secondary, flex: 1 },\n messageHigh: { color: '#ffffff', fontWeight: '600' },\n emptyText: { fontFamily: MONO, fontSize: 11, color: T.muted, textAlign: 'center', paddingVertical: 40 },\n});\n","/**\n * OneForexPairSelector - Stablecoin FX pair selection for forex trading\n * Part of ONE Ecosystem SDK\n */\n\nimport React from 'react';\nimport { View, Text, StyleSheet, TouchableOpacity, ViewStyle } from 'react-native';\nimport { FOREX_CURRENCY_PAIRS } from '../../types/forex';\nimport type { ForexCurrencyPair } from '../../types/forex';\n\nexport interface OneForexPairSelectorProps {\n /** Currently selected pair IDs */\n selectedPairs: string[];\n /** Callback when a pair is toggled */\n onTogglePair: (pairId: string) => void;\n /** Accent color for selected state */\n accentColor?: string;\n /** Section title */\n title?: string;\n /** Section subtitle */\n subtitle?: string;\n /** Custom pairs list (defaults to FOREX_CURRENCY_PAIRS) */\n pairs?: ForexCurrencyPair[];\n /** Custom container style */\n style?: ViewStyle;\n}\n\nexport const OneForexPairSelector: React.FC<OneForexPairSelectorProps> = ({\n selectedPairs,\n onTogglePair,\n accentColor = '#0EA5E9',\n title,\n subtitle,\n pairs = FOREX_CURRENCY_PAIRS,\n style,\n}) => {\n const handleToggle = (pairId: string) => {\n if (selectedPairs.includes(pairId) && selectedPairs.length <= 1) return;\n onTogglePair(pairId);\n };\n\n return (\n <View style={[styles.container, style]}>\n {title && <Text style={styles.title}>{title}</Text>}\n {subtitle && <Text style={styles.subtitle}>{subtitle}</Text>}\n\n <View style={styles.pairGrid}>\n {pairs.map((pair) => {\n const isSelected = selectedPairs.includes(pair.id);\n return (\n <TouchableOpacity\n key={pair.id}\n style={[\n styles.pairBtn,\n isSelected && styles.pairBtnActive,\n isSelected && { borderColor: accentColor, backgroundColor: accentColor + '08' },\n ]}\n onPress={() => handleToggle(pair.id)}\n activeOpacity={0.7}\n >\n <Text style={styles.pairFlag}>{pair.flag}</Text>\n <View style={styles.pairInfo}>\n <Text style={[styles.pairSymbol, isSelected && { color: accentColor, fontWeight: '600' }]}>\n {pair.symbol}\n </Text>\n <Text style={styles.pairName}>{pair.name}</Text>\n </View>\n {isSelected && (\n <Text style={[styles.check, { color: accentColor }]}>{'\\u2713'}</Text>\n )}\n </TouchableOpacity>\n );\n })}\n </View>\n\n <Text style={styles.selectedInfo}>\n {selectedPairs.length} pair{selectedPairs.length !== 1 ? 's' : ''} selected (min: 1)\n </Text>\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: { marginBottom: 16 },\n title: { fontSize: 16, fontWeight: '600', color: '#1a1a1a', marginBottom: 4 },\n subtitle: { fontSize: 12, color: '#666', marginBottom: 12 },\n pairGrid: { gap: 8 },\n pairBtn: {\n flexDirection: 'row', alignItems: 'center',\n paddingHorizontal: 12, paddingVertical: 12,\n borderRadius: 8, borderWidth: 1.5, borderColor: '#e5e5e5',\n backgroundColor: '#fff', gap: 10,\n },\n pairBtnActive: { borderWidth: 2 },\n pairFlag: { fontSize: 20 },\n pairInfo: { flex: 1 },\n pairSymbol: { fontSize: 14, color: '#666' },\n pairName: { fontSize: 11, color: '#999' },\n check: { fontSize: 16, fontWeight: '700' },\n selectedInfo: { fontSize: 12, color: '#888', marginTop: 8 },\n});\n","/**\n * OneForexTradeHistory - Displays trade history with settlement details\n * Part of ONE Ecosystem SDK\n */\n\nimport React from 'react';\nimport { View, Text, StyleSheet, ScrollView, ViewStyle, Platform } from 'react-native';\nimport type { ForexTradeRecord } from '../../types/forex';\n\nconst MONO = Platform.OS === 'ios' ? 'Courier New' : 'monospace';\n\nexport interface OneForexTradeHistoryProps {\n /** Trade records to display */\n trades: ForexTradeRecord[];\n /** Maximum trades to show */\n maxItems?: number;\n /** Show settlement details (clearing/hedging/insurance fees) */\n showSettlementDetails?: boolean;\n /** Show transaction hash */\n showTxHash?: boolean;\n /** Empty state text */\n emptyText?: string;\n /** Custom container style */\n style?: ViewStyle;\n}\n\nexport const OneForexTradeHistory: React.FC<OneForexTradeHistoryProps> = ({\n trades,\n maxItems = 50,\n showSettlementDetails = true,\n showTxHash = true,\n emptyText = 'No trade history yet',\n style,\n}) => {\n const visibleTrades = trades.slice(-maxItems).reverse();\n\n if (visibleTrades.length === 0) {\n return (\n <View style={[styles.empty, style]}>\n <Text style={styles.emptyText}>{emptyText}</Text>\n </View>\n );\n }\n\n return (\n <ScrollView style={[styles.container, style]} contentContainerStyle={styles.scrollContent}>\n {visibleTrades.map((trade) => (\n <View key={trade.id} style={styles.card}>\n <View style={styles.header}>\n <Text style={styles.pair}>{trade.pairSymbol}</Text>\n <View style={[\n styles.sideBadge,\n { backgroundColor: trade.side === 'BUY' ? '#10B98118' : '#EF444418', borderColor: trade.side === 'BUY' ? '#10B98140' : '#EF444440' },\n ]}>\n <Text style={[styles.sideText, { color: trade.side === 'BUY' ? '#10B981' : '#EF4444' }]}>\n {trade.side}\n </Text>\n </View>\n <Text style={[styles.pnl, { color: trade.pnl >= 0 ? '#10B981' : '#EF4444' }]}>\n {trade.pnl >= 0 ? '+' : ''}${trade.pnl.toFixed(2)}\n </Text>\n </View>\n\n <View style={styles.details}>\n <Text style={styles.detail}>\n {trade.lots.toFixed(2)} lots | {trade.pips >= 0 ? '+' : ''}{trade.pips.toFixed(1)} pips\n </Text>\n <Text style={styles.time}>{new Date(trade.timestamp).toLocaleString()}</Text>\n </View>\n\n {showSettlementDetails && trade.clearingFee !== undefined && (\n <View style={styles.settlement}>\n <Text style={styles.settlementText}>\n CLR: ${trade.clearingFee.toFixed(2)} | HDG: ${(trade.hedgingCost || 0).toFixed(2)} | INS: ${(trade.insuranceReserve || 0).toFixed(2)}\n </Text>\n </View>\n )}\n\n {showTxHash && trade.txHash && (\n <Text style={styles.txHash}>\n {trade.txHash.slice(0, 10)}...{trade.txHash.slice(-6)}\n </Text>\n )}\n </View>\n ))}\n </ScrollView>\n );\n};\n\nconst styles = StyleSheet.create({\n container: { flex: 1 },\n scrollContent: { paddingBottom: 16 },\n empty: { alignItems: 'center', justifyContent: 'center', padding: 40 },\n emptyText: { fontSize: 14, color: '#666' },\n card: { backgroundColor: '#111111', borderRadius: 6, borderWidth: 1, borderColor: '#1a1a1a', padding: 12, marginBottom: 8 },\n header: { flexDirection: 'row', alignItems: 'center', gap: 8 },\n pair: { fontSize: 13, fontWeight: '600', color: '#ffffff' },\n sideBadge: { paddingHorizontal: 6, paddingVertical: 2, borderRadius: 3, borderWidth: 1 },\n sideText: { fontSize: 9, fontWeight: '700', letterSpacing: 0.5 },\n pnl: { fontFamily: MONO, marginLeft: 'auto', fontSize: 13, fontWeight: '700' },\n details: { flexDirection: 'row', justifyContent: 'space-between', marginTop: 6 },\n detail: { fontFamily: MONO, fontSize: 11, color: '#9ca3af' },\n time: { fontSize: 11, color: '#666' },\n settlement: { marginTop: 6, paddingTop: 6, borderTopWidth: 1, borderTopColor: '#1a1a1a' },\n settlementText: { fontFamily: MONO, fontSize: 10, color: '#666' },\n txHash: { fontFamily: MONO, fontSize: 9, color: '#444', marginTop: 2 },\n});\n","/**\n * OneMetricsDashboard - Displays trading metrics and performance\n * Part of ONE Ecosystem SDK\n */\n\nimport React from 'react';\nimport { View, Text, StyleSheet, ViewStyle, Platform } from 'react-native';\nimport type { ConsoleMetrics } from '../../../types/console';\nimport { formatPnl, formatPercent } from '../../../types/console';\n\nconst MONO = Platform.OS === 'ios' ? 'Courier New' : 'monospace';\n\nexport interface OneMetricsDashboardProps {\n metrics: ConsoleMetrics;\n showNAV?: boolean;\n showPnL?: boolean;\n showTrades?: boolean;\n showPositions?: boolean;\n showStrategies?: boolean;\n compact?: boolean;\n style?: ViewStyle;\n dark?: boolean;\n}\n\nexport const OneMetricsDashboard: React.FC<OneMetricsDashboardProps> = ({\n metrics,\n showNAV = true,\n showPnL = true,\n showTrades = true,\n showPositions = true,\n showStrategies = false,\n compact = false,\n style,\n dark = true,\n}) => {\n const bg = dark ? '#111111' : '#ffffff';\n const border = dark ? '#2A2A35' : '#E5E7EB';\n const textPrimary = dark ? '#ffffff' : '#111827';\n const textSecondary = dark ? '#9CA3AF' : '#6B7280';\n const textMuted = dark ? '#555560' : '#9CA3AF';\n const cardBg = dark ? '#1A1A1F' : '#F9FAFB';\n\n const MetricCard = ({\n label,\n value,\n subValue,\n valueColor,\n icon,\n }: {\n label: string;\n value: string;\n subValue?: string;\n valueColor?: string;\n icon?: string;\n }) => (\n <View style={[styles.metricCard, { backgroundColor: cardBg }]}>\n <View style={styles.metricHeader}>\n {icon && <Text style={styles.metricIcon}>{icon}</Text>}\n <Text style={[styles.metricLabel, { color: textMuted }]}>{label}</Text>\n </View>\n <Text style={[styles.metricValue, { color: valueColor || textPrimary }]}>\n {value}\n </Text>\n {subValue && (\n <Text style={[styles.metricSubValue, { color: textSecondary }]}>\n {subValue}\n </Text>\n )}\n </View>\n );\n\n if (compact) {\n return (\n <View style={[styles.compactContainer, { backgroundColor: bg, borderColor: border }, style]}>\n <View style={styles.compactItem}>\n <Text style={[styles.compactLabel, { color: textMuted }]}>NAV</Text>\n <Text style={[styles.compactValue, { color: textPrimary }]}>\n ${metrics.nav.toFixed(0)}\n </Text>\n </View>\n <View style={styles.compactDivider} />\n <View style={styles.compactItem}>\n <Text style={[styles.compactLabel, { color: textMuted }]}>P&L</Text>\n <Text style={[\n styles.compactValue,\n { color: metrics.totalPnl >= 0 ? '#10B981' : '#EF4444' }\n ]}>\n {formatPnl(metrics.totalPnl)}\n </Text>\n </View>\n <View style={styles.compactDivider} />\n <View style={styles.compactItem}>\n <Text style={[styles.compactLabel, { color: textMuted }]}>Win</Text>\n <Text style={[styles.compactValue, { color: textPrimary }]}>\n {(metrics.winRate * 100).toFixed(0)}%\n </Text>\n </View>\n <View style={styles.compactDivider} />\n <View style={styles.compactItem}>\n <Text style={[styles.compactLabel, { color: textMuted }]}>Pos</Text>\n <Text style={[styles.compactValue, { color: textPrimary }]}>\n {metrics.openPositions}\n </Text>\n </View>\n </View>\n );\n }\n\n return (\n <View style={[styles.container, { backgroundColor: bg, borderColor: border }, style]}>\n {/* NAV Section */}\n {showNAV && (\n <View style={styles.navSection}>\n <View style={styles.navMain}>\n <Text style={[styles.navLabel, { color: textMuted }]}>Net Asset Value</Text>\n <Text style={[styles.navValue, { color: textPrimary }]}>\n ${metrics.nav.toLocaleString('en-US', { minimumFractionDigits: 2 })}\n </Text>\n <View style={styles.navChangeRow}>\n <Text style={[\n styles.navChange,\n { color: metrics.navChange24h >= 0 ? '#10B981' : '#EF4444' }\n ]}>\n {metrics.navChange24h >= 0 ? '+' : ''}${metrics.navChange24h.toFixed(2)}\n </Text>\n <Text style={[\n styles.navChangePercent,\n { color: metrics.navChange24h >= 0 ? '#10B981' : '#EF4444' }\n ]}>\n ({formatPercent(metrics.navChangePercent24h)})\n </Text>\n <Text style={[styles.navPeriod, { color: textMuted }]}>24h</Text>\n </View>\n </View>\n </View>\n )}\n\n {/* P&L Grid */}\n {showPnL && (\n <View style={styles.section}>\n <Text style={[styles.sectionTitle, { color: textMuted }]}>Profit & Loss</Text>\n <View style={styles.metricsGrid}>\n <MetricCard\n label=\"Total P&L\"\n value={formatPnl(metrics.totalPnl)}\n valueColor={metrics.totalPnl >= 0 ? '#10B981' : '#EF4444'}\n />\n <MetricCard\n label=\"Realized\"\n value={formatPnl(metrics.realizedPnl)}\n valueColor={metrics.realizedPnl >= 0 ? '#10B981' : '#EF4444'}\n />\n <MetricCard\n label=\"Unrealized\"\n value={formatPnl(metrics.unrealizedPnl)}\n valueColor={metrics.unrealizedPnl >= 0 ? '#10B981' : '#EF4444'}\n />\n <MetricCard\n label=\"Today\"\n value={formatPnl(metrics.pnlToday)}\n valueColor={metrics.pnlToday >= 0 ? '#10B981' : '#EF4444'}\n />\n </View>\n <View style={styles.pnlPeriods}>\n <View style={styles.pnlPeriodItem}>\n <Text style={[styles.pnlPeriodLabel, { color: textMuted }]}>7D</Text>\n <Text style={[\n styles.pnlPeriodValue,\n { color: metrics.pnl7d >= 0 ? '#10B981' : '#EF4444' }\n ]}>\n {formatPnl(metrics.pnl7d)}\n </Text>\n </View>\n <View style={styles.pnlPeriodItem}>\n <Text style={[styles.pnlPeriodLabel, { color: textMuted }]}>30D</Text>\n <Text style={[\n styles.pnlPeriodValue,\n { color: metrics.pnl30d >= 0 ? '#10B981' : '#EF4444' }\n ]}>\n {formatPnl(metrics.pnl30d)}\n </Text>\n </View>\n </View>\n </View>\n )}\n\n {/* Trading Stats */}\n {showTrades && (\n <View style={styles.section}>\n <Text style={[styles.sectionTitle, { color: textMuted }]}>Trading Stats</Text>\n <View style={styles.metricsGrid}>\n <MetricCard\n label=\"Total Trades\"\n value={metrics.totalTrades.toString()}\n subValue={`${metrics.tradesToday} today`}\n />\n <MetricCard\n label=\"Win Rate\"\n value={`${(metrics.winRate * 100).toFixed(1)}%`}\n subValue={`${metrics.winCount}W / ${metrics.lossCount}L`}\n valueColor={metrics.winRate >= 0.5 ? '#10B981' : '#EF4444'}\n />\n <MetricCard\n label=\"Avg Win\"\n value={formatPnl(metrics.avgWin)}\n valueColor=\"#10B981\"\n />\n <MetricCard\n label=\"Avg Loss\"\n value={formatPnl(metrics.avgLoss)}\n valueColor=\"#EF4444\"\n />\n </View>\n {metrics.profitFactor > 0 && metrics.profitFactor !== Infinity && (\n <View style={styles.profitFactorRow}>\n <Text style={[styles.profitFactorLabel, { color: textMuted }]}>Profit Factor</Text>\n <Text style={[\n styles.profitFactorValue,\n { color: metrics.profitFactor >= 1.5 ? '#10B981' : metrics.profitFactor >= 1 ? '#F59E0B' : '#EF4444' }\n ]}>\n {metrics.profitFactor.toFixed(2)}\n </Text>\n </View>\n )}\n </View>\n )}\n\n {/* Position Stats */}\n {showPositions && (\n <View style={styles.section}>\n <Text style={[styles.sectionTitle, { color: textMuted }]}>Position Overview</Text>\n <View style={styles.positionStats}>\n <View style={styles.positionItem}>\n <Text style={[styles.positionLabel, { color: textMuted }]}>Open Positions</Text>\n <Text style={[styles.positionValue, { color: textPrimary }]}>\n {metrics.openPositions}\n </Text>\n </View>\n <View style={styles.positionItem}>\n <Text style={[styles.positionLabel, { color: textMuted }]}>Total Exposure</Text>\n <Text style={[styles.positionValue, { color: textPrimary }]}>\n ${metrics.totalExposure.toFixed(0)}\n </Text>\n </View>\n <View style={styles.positionItem}>\n <Text style={[styles.positionLabel, { color: textMuted }]}>Avg Leverage</Text>\n <Text style={[styles.positionValue, { color: textPrimary }]}>\n {metrics.avgLeverage.toFixed(1)}x\n </Text>\n </View>\n </View>\n </View>\n )}\n\n {/* Strategy Breakdown */}\n {showStrategies && metrics.strategyMetrics && Object.keys(metrics.strategyMetrics).length > 0 && (\n <View style={styles.section}>\n <Text style={[styles.sectionTitle, { color: textMuted }]}>Strategy Performance</Text>\n {Object.entries(metrics.strategyMetrics).map(([strategyId, data]) => (\n <View key={strategyId} style={styles.strategyRow}>\n <Text style={[styles.strategyName, { color: textSecondary }]}>\n {strategyId.replace('-01', '').replace('-', ' ')}\n </Text>\n <View style={styles.strategyStats}>\n <Text style={[\n styles.strategyPnl,\n { color: data.pnl >= 0 ? '#10B981' : '#EF4444' }\n ]}>\n {formatPnl(data.pnl)}\n </Text>\n <Text style={[styles.strategyWinRate, { color: textMuted }]}>\n {(data.winRate * 100).toFixed(0)}%\n </Text>\n <Text style={[styles.strategyTrades, { color: textMuted }]}>\n {data.trades} trades\n </Text>\n </View>\n </View>\n ))}\n </View>\n )}\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n borderRadius: 12,\n borderWidth: 1,\n padding: 14,\n gap: 16,\n },\n compactContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-around',\n borderRadius: 8,\n borderWidth: 1,\n paddingVertical: 10,\n paddingHorizontal: 12,\n },\n compactItem: {\n alignItems: 'center',\n gap: 2,\n },\n compactLabel: {\n fontFamily: MONO,\n fontSize: 9,\n textTransform: 'uppercase',\n },\n compactValue: {\n fontFamily: MONO,\n fontSize: 13,\n fontWeight: '600',\n },\n compactDivider: {\n width: 1,\n height: 24,\n backgroundColor: '#2A2A35',\n },\n navSection: {\n alignItems: 'center',\n paddingBottom: 10,\n borderBottomWidth: 1,\n borderBottomColor: '#2A2A35',\n },\n navMain: {\n alignItems: 'center',\n gap: 4,\n },\n navLabel: {\n fontFamily: MONO,\n fontSize: 10,\n textTransform: 'uppercase',\n },\n navValue: {\n fontSize: 28,\n fontWeight: '700',\n fontFamily: MONO,\n },\n navChangeRow: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 6,\n },\n navChange: {\n fontFamily: MONO,\n fontSize: 14,\n fontWeight: '600',\n },\n navChangePercent: {\n fontFamily: MONO,\n fontSize: 12,\n },\n navPeriod: {\n fontFamily: MONO,\n fontSize: 10,\n },\n section: {\n gap: 10,\n },\n sectionTitle: {\n fontFamily: MONO,\n fontSize: 10,\n textTransform: 'uppercase',\n letterSpacing: 1,\n },\n metricsGrid: {\n flexDirection: 'row',\n flexWrap: 'wrap',\n gap: 8,\n },\n metricCard: {\n width: '48%',\n padding: 10,\n borderRadius: 8,\n gap: 4,\n },\n metricHeader: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 4,\n },\n metricIcon: {\n fontSize: 12,\n },\n metricLabel: {\n fontFamily: MONO,\n fontSize: 9,\n textTransform: 'uppercase',\n },\n metricValue: {\n fontFamily: MONO,\n fontSize: 16,\n fontWeight: '700',\n },\n metricSubValue: {\n fontFamily: MONO,\n fontSize: 10,\n },\n pnlPeriods: {\n flexDirection: 'row',\n justifyContent: 'flex-end',\n gap: 16,\n },\n pnlPeriodItem: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 6,\n },\n pnlPeriodLabel: {\n fontFamily: MONO,\n fontSize: 10,\n },\n pnlPeriodValue: {\n fontFamily: MONO,\n fontSize: 12,\n fontWeight: '600',\n },\n profitFactorRow: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n paddingTop: 8,\n borderTopWidth: 1,\n borderTopColor: '#2A2A35',\n },\n profitFactorLabel: {\n fontFamily: MONO,\n fontSize: 10,\n textTransform: 'uppercase',\n },\n profitFactorValue: {\n fontFamily: MONO,\n fontSize: 16,\n fontWeight: '700',\n },\n positionStats: {\n flexDirection: 'row',\n justifyContent: 'space-around',\n },\n positionItem: {\n alignItems: 'center',\n gap: 4,\n },\n positionLabel: {\n fontFamily: MONO,\n fontSize: 9,\n textTransform: 'uppercase',\n },\n positionValue: {\n fontFamily: MONO,\n fontSize: 16,\n fontWeight: '600',\n },\n strategyRow: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n paddingVertical: 6,\n borderBottomWidth: 1,\n borderBottomColor: '#1A1A1F',\n },\n strategyName: {\n fontSize: 12,\n textTransform: 'capitalize',\n flex: 1,\n },\n strategyStats: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 12,\n },\n strategyPnl: {\n fontFamily: MONO,\n fontSize: 12,\n fontWeight: '600',\n width: 70,\n textAlign: 'right',\n },\n strategyWinRate: {\n fontFamily: MONO,\n fontSize: 11,\n width: 35,\n textAlign: 'right',\n },\n strategyTrades: {\n fontFamily: MONO,\n fontSize: 10,\n width: 60,\n textAlign: 'right',\n },\n});\n","/**\n * OneRiskIndicator - Displays risk status with visual indicators\n * Part of ONE Ecosystem SDK\n */\n\nimport React from 'react';\nimport { View, Text, StyleSheet, ViewStyle, Platform } from 'react-native';\nimport type { RiskStatus, RiskLevel, TradingStatus } from '../../../types/console';\nimport { RISK_LEVEL_COLORS, TRADING_STATUS_COLORS } from '../../../types/console';\n\nconst MONO = Platform.OS === 'ios' ? 'Courier New' : 'monospace';\n\nexport interface OneRiskIndicatorProps {\n riskStatus: RiskStatus;\n showDetails?: boolean;\n showWarnings?: boolean;\n showLimits?: boolean;\n compact?: boolean;\n style?: ViewStyle;\n dark?: boolean;\n}\n\nexport const OneRiskIndicator: React.FC<OneRiskIndicatorProps> = ({\n riskStatus,\n showDetails = true,\n showWarnings = true,\n showLimits = true,\n compact = false,\n style,\n dark = true,\n}) => {\n const bg = dark ? '#111111' : '#ffffff';\n const border = dark ? '#2A2A35' : '#E5E7EB';\n const textPrimary = dark ? '#ffffff' : '#111827';\n const textSecondary = dark ? '#9CA3AF' : '#6B7280';\n const textMuted = dark ? '#555560' : '#9CA3AF';\n\n const riskConfig = RISK_LEVEL_COLORS[riskStatus.riskLevel];\n const statusConfig = TRADING_STATUS_COLORS[riskStatus.tradingStatus];\n\n // Progress bar component\n const ProgressBar = ({\n value,\n max,\n color,\n label,\n showValue = true,\n }: {\n value: number;\n max: number;\n color: string;\n label: string;\n showValue?: boolean;\n }) => {\n const percent = Math.min((value / max) * 100, 100);\n const barColor = percent > 80 ? '#EF4444' : percent > 60 ? '#F59E0B' : color;\n\n return (\n <View style={styles.progressItem}>\n <View style={styles.progressHeader}>\n <Text style={[styles.progressLabel, { color: textMuted }]}>{label}</Text>\n {showValue && (\n <Text style={[styles.progressValue, { color: textSecondary }]}>\n {value.toFixed(0)} / {max.toFixed(0)}\n </Text>\n )}\n </View>\n <View style={[styles.progressTrack, { backgroundColor: dark ? '#1A1A1F' : '#E5E7EB' }]}>\n <View\n style={[\n styles.progressFill,\n { width: `${percent}%`, backgroundColor: barColor }\n ]}\n />\n </View>\n <Text style={[styles.progressPercent, { color: barColor }]}>\n {percent.toFixed(1)}%\n </Text>\n </View>\n );\n };\n\n if (compact) {\n return (\n <View style={[styles.compactContainer, { backgroundColor: bg, borderColor: border }, style]}>\n <View style={[styles.riskBadge, { backgroundColor: riskConfig.bgColor }]}>\n <View style={[styles.riskDot, { backgroundColor: riskConfig.color }]} />\n <Text style={[styles.riskText, { color: riskConfig.color }]}>\n {riskStatus.riskLevel.toUpperCase()}\n </Text>\n </View>\n <View style={[styles.statusBadge, { backgroundColor: statusConfig.bgColor }]}>\n <Text style={[styles.statusText, { color: statusConfig.color }]}>\n {riskStatus.tradingStatus.toUpperCase()}\n </Text>\n </View>\n <Text style={[styles.compactExposure, { color: textSecondary }]}>\n Exp: {riskStatus.exposurePercent.toFixed(0)}%\n </Text>\n <Text style={[\n styles.compactPnl,\n { color: riskStatus.dailyPnl >= 0 ? '#10B981' : '#EF4444' }\n ]}>\n {riskStatus.dailyPnl >= 0 ? '+' : ''}{riskStatus.dailyPnl.toFixed(0)}\n </Text>\n </View>\n );\n }\n\n return (\n <View style={[styles.container, { backgroundColor: bg, borderColor: border }, style]}>\n {/* Header */}\n <View style={styles.header}>\n <View style={styles.headerLeft}>\n <Text style={[styles.title, { color: textPrimary }]}>Risk Status</Text>\n <View style={[styles.riskBadgeLarge, { backgroundColor: riskConfig.bgColor }]}>\n <View style={[styles.riskDotLarge, { backgroundColor: riskConfig.color }]} />\n <Text style={[styles.riskTextLarge, { color: riskConfig.color }]}>\n {riskStatus.riskLevel.toUpperCase()}\n </Text>\n </View>\n </View>\n <View style={[styles.tradingStatusBadge, { backgroundColor: statusConfig.bgColor }]}>\n <View style={[styles.statusIndicator, { backgroundColor: statusConfig.color }]} />\n <Text style={[styles.tradingStatusText, { color: statusConfig.color }]}>\n {riskStatus.tradingStatus === 'active' ? 'Trading Active' :\n riskStatus.tradingStatus === 'paused' ? 'Trading Paused' :\n riskStatus.tradingStatus === 'stopped' ? 'Trading Stopped' : 'Cooldown'}\n </Text>\n </View>\n </View>\n\n {/* Progress Bars */}\n {showLimits && (\n <View style={styles.progressSection}>\n <ProgressBar\n value={riskStatus.totalExposure}\n max={riskStatus.maxExposure}\n color=\"#3B82F6\"\n label=\"Portfolio Exposure\"\n />\n <ProgressBar\n value={riskStatus.currentDrawdown}\n max={riskStatus.maxDrawdown}\n color=\"#8B5CF6\"\n label=\"Drawdown\"\n showValue={false}\n />\n <ProgressBar\n value={Math.abs(riskStatus.dailyPnl)}\n max={riskStatus.dailyPnlLimit}\n color={riskStatus.dailyPnl >= 0 ? '#10B981' : '#EF4444'}\n label=\"Daily P&L Limit\"\n />\n <ProgressBar\n value={riskStatus.openPositions}\n max={riskStatus.maxPositions}\n color=\"#F59E0B\"\n label=\"Open Positions\"\n />\n </View>\n )}\n\n {/* Details Grid */}\n {showDetails && (\n <View style={styles.detailsGrid}>\n <View style={styles.detailItem}>\n <Text style={[styles.detailLabel, { color: textMuted }]}>Exposure</Text>\n <Text style={[styles.detailValue, { color: textPrimary }]}>\n ${riskStatus.totalExposure.toFixed(0)}\n </Text>\n </View>\n <View style={styles.detailItem}>\n <Text style={[styles.detailLabel, { color: textMuted }]}>Daily P&L</Text>\n <Text style={[\n styles.detailValue,\n { color: riskStatus.dailyPnl >= 0 ? '#10B981' : '#EF4444' }\n ]}>\n {riskStatus.dailyPnl >= 0 ? '+' : ''}${riskStatus.dailyPnl.toFixed(0)}\n </Text>\n </View>\n <View style={styles.detailItem}>\n <Text style={[styles.detailLabel, { color: textMuted }]}>Drawdown</Text>\n <Text style={[styles.detailValue, { color: textPrimary }]}>\n {riskStatus.currentDrawdown.toFixed(2)}%\n </Text>\n </View>\n <View style={styles.detailItem}>\n <Text style={[styles.detailLabel, { color: textMuted }]}>Trades Today</Text>\n <Text style={[styles.detailValue, { color: textPrimary }]}>\n {riskStatus.dailyTradeCount} / {riskStatus.dailyTradeLimit}\n </Text>\n </View>\n </View>\n )}\n\n {/* Warnings */}\n {showWarnings && riskStatus.warnings.length > 0 && (\n <View style={[styles.warningsSection, { backgroundColor: dark ? '#1A1A1F' : '#FEF3C7' }]}>\n <Text style={[styles.warningsTitle, { color: '#F59E0B' }]}>Warnings</Text>\n {riskStatus.warnings.map((warning, index) => (\n <View key={index} style={styles.warningItem}>\n <Text style={styles.warningIcon}>!</Text>\n <Text style={[styles.warningText, { color: textSecondary }]}>{warning}</Text>\n </View>\n ))}\n </View>\n )}\n\n {/* Strategy Risks */}\n {riskStatus.strategyRisks && Object.keys(riskStatus.strategyRisks).length > 0 && (\n <View style={styles.strategyRisksSection}>\n <Text style={[styles.sectionTitle, { color: textMuted }]}>Strategy Risk Breakdown</Text>\n {Object.entries(riskStatus.strategyRisks).map(([strategyId, risk]) => {\n const strategyRiskConfig = RISK_LEVEL_COLORS[risk.riskLevel];\n return (\n <View key={strategyId} style={styles.strategyRiskItem}>\n <Text style={[styles.strategyName, { color: textSecondary }]}>\n {strategyId.replace('-01', '')}\n </Text>\n <View style={[styles.strategyRiskBadge, { backgroundColor: strategyRiskConfig.bgColor }]}>\n <Text style={[styles.strategyRiskText, { color: strategyRiskConfig.color }]}>\n {risk.riskLevel.toUpperCase()}\n </Text>\n </View>\n <Text style={[styles.strategyExposure, { color: textMuted }]}>\n ${risk.exposure.toFixed(0)}\n </Text>\n </View>\n );\n })}\n </View>\n )}\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n borderRadius: 12,\n borderWidth: 1,\n padding: 14,\n gap: 14,\n },\n compactContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n borderRadius: 8,\n borderWidth: 1,\n paddingHorizontal: 12,\n paddingVertical: 8,\n gap: 10,\n },\n header: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'flex-start',\n },\n headerLeft: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 10,\n },\n title: {\n fontSize: 15,\n fontWeight: '600',\n },\n riskBadge: {\n flexDirection: 'row',\n alignItems: 'center',\n paddingHorizontal: 8,\n paddingVertical: 4,\n borderRadius: 12,\n gap: 4,\n },\n riskBadgeLarge: {\n flexDirection: 'row',\n alignItems: 'center',\n paddingHorizontal: 10,\n paddingVertical: 5,\n borderRadius: 12,\n gap: 5,\n },\n riskDot: {\n width: 6,\n height: 6,\n borderRadius: 3,\n },\n riskDotLarge: {\n width: 8,\n height: 8,\n borderRadius: 4,\n },\n riskText: {\n fontFamily: MONO,\n fontSize: 10,\n fontWeight: '700',\n },\n riskTextLarge: {\n fontFamily: MONO,\n fontSize: 11,\n fontWeight: '700',\n },\n statusBadge: {\n paddingHorizontal: 8,\n paddingVertical: 4,\n borderRadius: 12,\n },\n statusText: {\n fontFamily: MONO,\n fontSize: 9,\n fontWeight: '700',\n },\n tradingStatusBadge: {\n flexDirection: 'row',\n alignItems: 'center',\n paddingHorizontal: 10,\n paddingVertical: 5,\n borderRadius: 12,\n gap: 5,\n },\n statusIndicator: {\n width: 6,\n height: 6,\n borderRadius: 3,\n },\n tradingStatusText: {\n fontSize: 11,\n fontWeight: '600',\n },\n compactExposure: {\n fontFamily: MONO,\n fontSize: 11,\n flex: 1,\n },\n compactPnl: {\n fontFamily: MONO,\n fontSize: 12,\n fontWeight: '600',\n },\n progressSection: {\n gap: 10,\n },\n progressItem: {\n gap: 4,\n },\n progressHeader: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n progressLabel: {\n fontFamily: MONO,\n fontSize: 10,\n textTransform: 'uppercase',\n },\n progressValue: {\n fontFamily: MONO,\n fontSize: 10,\n },\n progressTrack: {\n height: 6,\n borderRadius: 3,\n overflow: 'hidden',\n },\n progressFill: {\n height: '100%',\n borderRadius: 3,\n },\n progressPercent: {\n fontFamily: MONO,\n fontSize: 10,\n textAlign: 'right',\n },\n detailsGrid: {\n flexDirection: 'row',\n flexWrap: 'wrap',\n gap: 10,\n },\n detailItem: {\n width: '48%',\n gap: 2,\n },\n detailLabel: {\n fontFamily: MONO,\n fontSize: 9,\n textTransform: 'uppercase',\n },\n detailValue: {\n fontFamily: MONO,\n fontSize: 14,\n fontWeight: '600',\n },\n warningsSection: {\n padding: 10,\n borderRadius: 8,\n gap: 6,\n },\n warningsTitle: {\n fontFamily: MONO,\n fontSize: 10,\n fontWeight: '700',\n textTransform: 'uppercase',\n },\n warningItem: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 8,\n },\n warningIcon: {\n width: 16,\n height: 16,\n backgroundColor: '#F59E0B',\n color: '#ffffff',\n textAlign: 'center',\n lineHeight: 16,\n fontSize: 12,\n fontWeight: '700',\n borderRadius: 8,\n overflow: 'hidden',\n },\n warningText: {\n fontSize: 12,\n flex: 1,\n },\n strategyRisksSection: {\n gap: 8,\n paddingTop: 10,\n borderTopWidth: 1,\n borderTopColor: '#2A2A35',\n },\n sectionTitle: {\n fontFamily: MONO,\n fontSize: 10,\n textTransform: 'uppercase',\n },\n strategyRiskItem: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 10,\n },\n strategyName: {\n fontFamily: MONO,\n fontSize: 11,\n flex: 1,\n textTransform: 'capitalize',\n },\n strategyRiskBadge: {\n paddingHorizontal: 6,\n paddingVertical: 2,\n borderRadius: 4,\n },\n strategyRiskText: {\n fontFamily: MONO,\n fontSize: 9,\n fontWeight: '700',\n },\n strategyExposure: {\n fontFamily: MONO,\n fontSize: 10,\n width: 60,\n textAlign: 'right',\n },\n});\n","/**\n * OneTradingConsole - Total unified console view (AI + Forex)\n * Part of ONE Ecosystem SDK\n */\n\nimport React, { useRef, useEffect, useState } from 'react';\nimport { View, Text, StyleSheet, ScrollView, ViewStyle, Platform, TouchableOpacity } from 'react-native';\nimport type { CombinedLogEntry, ConsoleMetrics, RiskStatus, AIAgent } from '../../../types/console';\nimport type { BotLogEntry } from '../../../services/forex/BotSimulationEngine';\nimport type { ForexLogEntry } from '../../../types/forex';\nimport { AI_LOG_COLORS, FOREX_LOG_COLORS } from '../../../types/console';\nimport { OneMetricsDashboard } from './OneMetricsDashboard';\nimport { OneRiskIndicator } from './OneRiskIndicator';\n\nconst MONO = Platform.OS === 'ios' ? 'Courier New' : 'monospace';\n\nexport interface OneTradingConsoleProps {\n mode?: 'combined' | 'ai-only' | 'forex-only';\n // Combined logs\n combinedLogs?: CombinedLogEntry[];\n // Or separate logs\n aiLogs?: BotLogEntry[];\n forexLogs?: ForexLogEntry[];\n // Data\n agents?: AIAgent[];\n metrics?: ConsoleMetrics;\n riskStatus?: RiskStatus | null;\n // Display options\n maxLogs?: number;\n autoScroll?: boolean;\n showMetrics?: boolean;\n showRisk?: boolean;\n showControls?: boolean;\n consoleHeight?: number;\n // Controls\n isAIRunning?: boolean;\n isForexRunning?: boolean;\n onStartAI?: () => void;\n onStopAI?: () => void;\n onStartForex?: () => void;\n onStopForex?: () => void;\n onStartAll?: () => void;\n onStopAll?: () => void;\n onClearLogs?: () => void;\n onRefresh?: () => void;\n // Callbacks\n onAgentSelect?: (agent: AIAgent) => void;\n style?: ViewStyle;\n dark?: boolean;\n}\n\nexport const OneTradingConsole: React.FC<OneTradingConsoleProps> = ({\n mode = 'combined',\n combinedLogs = [],\n aiLogs = [],\n forexLogs = [],\n agents = [],\n metrics,\n riskStatus,\n maxLogs = 200,\n autoScroll = true,\n showMetrics = true,\n showRisk = true,\n showControls = true,\n consoleHeight = 400,\n isAIRunning = false,\n isForexRunning = false,\n onStartAI,\n onStopAI,\n onStartForex,\n onStopForex,\n onStartAll,\n onStopAll,\n onClearLogs,\n onRefresh,\n onAgentSelect,\n style,\n dark = true,\n}) => {\n const bg = dark ? '#0A0A0C' : '#ffffff';\n const consoleBg = dark ? '#0A0A0C' : '#F9FAFB';\n const cardBg = dark ? '#111111' : '#F9FAFB';\n const border = dark ? '#2A2A35' : '#E5E7EB';\n const textPrimary = dark ? '#ffffff' : '#111827';\n const textSecondary = dark ? '#9CA3AF' : '#6B7280';\n const textMuted = dark ? '#555560' : '#9CA3AF';\n\n const scrollRef = useRef<ScrollView>(null);\n const [selectedTab, setSelectedTab] = useState<'console' | 'metrics' | 'risk' | 'agents'>('console');\n\n // Merge logs if not using combined\n const allLogs: CombinedLogEntry[] = combinedLogs.length > 0\n ? combinedLogs\n : [\n ...aiLogs.map(log => ({\n id: log.id,\n timestamp: log.timestamp,\n source: 'ai' as const,\n strategyId: log.strategyId,\n strategyName: log.strategyName,\n type: log.type,\n message: log.message,\n data: log.data,\n importance: log.importance,\n })),\n ...forexLogs.map(log => ({\n id: log.id,\n timestamp: log.timestamp,\n source: 'forex' as const,\n type: log.type,\n message: log.message,\n data: log.data,\n importance: log.importance,\n })),\n ].sort((a, b) => a.timestamp - b.timestamp);\n\n // Filter logs based on mode\n const filteredLogs = allLogs.filter(log => {\n if (mode === 'ai-only') return log.source === 'ai';\n if (mode === 'forex-only') return log.source === 'forex';\n return true;\n });\n\n const visibleLogs = filteredLogs.slice(-maxLogs);\n\n const isAnyRunning = isAIRunning || isForexRunning;\n\n // Auto-scroll\n useEffect(() => {\n if (autoScroll && scrollRef.current && selectedTab === 'console') {\n setTimeout(() => scrollRef.current?.scrollToEnd({ animated: true }), 50);\n }\n }, [visibleLogs.length, autoScroll, selectedTab]);\n\n const formatTime = (ts: number) => {\n const d = new Date(ts);\n return `${d.getHours().toString().padStart(2, '0')}:${d.getMinutes().toString().padStart(2, '0')}:${d.getSeconds().toString().padStart(2, '0')}`;\n };\n\n const getLogColor = (log: CombinedLogEntry): string => {\n if (log.source === 'ai') {\n return AI_LOG_COLORS[log.type as keyof typeof AI_LOG_COLORS] || textMuted;\n }\n return FOREX_LOG_COLORS[log.type as keyof typeof FOREX_LOG_COLORS] || textMuted;\n };\n\n const activeAgents = agents.filter(a => a.status === 'active');\n const totalPnl = agents.reduce((sum, a) => sum + a.totalPnl, 0);\n\n return (\n <View style={[styles.container, { backgroundColor: bg }, style]}>\n {/* Header */}\n <View style={[styles.header, { borderBottomColor: border }]}>\n <View style={styles.headerLeft}>\n <Text style={[styles.title, { color: textPrimary }]}>Trading Console</Text>\n <View style={styles.statusBadges}>\n {mode !== 'forex-only' && (\n <View style={[\n styles.statusBadge,\n { backgroundColor: isAIRunning ? '#D1FAE5' : '#F3F4F6' }\n ]}>\n <View style={[\n styles.statusDot,\n { backgroundColor: isAIRunning ? '#10B981' : '#9CA3AF' }\n ]} />\n <Text style={[\n styles.statusText,\n { color: isAIRunning ? '#10B981' : '#9CA3AF' }\n ]}>\n AI\n </Text>\n </View>\n )}\n {mode !== 'ai-only' && (\n <View style={[\n styles.statusBadge,\n { backgroundColor: isForexRunning ? '#DBEAFE' : '#F3F4F6' }\n ]}>\n <View style={[\n styles.statusDot,\n { backgroundColor: isForexRunning ? '#3B82F6' : '#9CA3AF' }\n ]} />\n <Text style={[\n styles.statusText,\n { color: isForexRunning ? '#3B82F6' : '#9CA3AF' }\n ]}>\n FX\n </Text>\n </View>\n )}\n </View>\n </View>\n {showControls && (\n <View style={styles.headerControls}>\n {onClearLogs && (\n <TouchableOpacity\n style={[styles.controlBtn, { backgroundColor: cardBg }]}\n onPress={onClearLogs}\n activeOpacity={0.7}\n >\n <Text style={[styles.controlBtnText, { color: textSecondary }]}>Clear</Text>\n </TouchableOpacity>\n )}\n {onRefresh && (\n <TouchableOpacity\n style={[styles.controlBtn, { backgroundColor: cardBg }]}\n onPress={onRefresh}\n activeOpacity={0.7}\n >\n <Text style={[styles.controlBtnText, { color: textSecondary }]}>Refresh</Text>\n </TouchableOpacity>\n )}\n {(onStartAll || onStopAll) && (\n <TouchableOpacity\n style={[\n styles.controlBtn,\n { backgroundColor: isAnyRunning ? '#FEE2E2' : '#D1FAE5' }\n ]}\n onPress={isAnyRunning ? onStopAll : onStartAll}\n activeOpacity={0.7}\n >\n <Text style={[\n styles.controlBtnText,\n { color: isAnyRunning ? '#EF4444' : '#10B981' }\n ]}>\n {isAnyRunning ? 'Stop' : 'Start'}\n </Text>\n </TouchableOpacity>\n )}\n </View>\n )}\n </View>\n\n {/* Quick Stats */}\n <View style={[styles.quickStats, { backgroundColor: cardBg, borderBottomColor: border }]}>\n <View style={styles.quickStatItem}>\n <Text style={[styles.quickStatLabel, { color: textMuted }]}>Agents</Text>\n <Text style={[styles.quickStatValue, { color: textPrimary }]}>\n {activeAgents.length}/{agents.length}\n </Text>\n </View>\n <View style={styles.quickStatDivider} />\n <View style={styles.quickStatItem}>\n <Text style={[styles.quickStatLabel, { color: textMuted }]}>P&L</Text>\n <Text style={[\n styles.quickStatValue,\n { color: totalPnl >= 0 ? '#10B981' : '#EF4444' }\n ]}>\n {totalPnl >= 0 ? '+' : ''}${totalPnl.toFixed(2)}\n </Text>\n </View>\n <View style={styles.quickStatDivider} />\n <View style={styles.quickStatItem}>\n <Text style={[styles.quickStatLabel, { color: textMuted }]}>Logs</Text>\n <Text style={[styles.quickStatValue, { color: textPrimary }]}>\n {visibleLogs.length}\n </Text>\n </View>\n </View>\n\n {/* Tab Bar */}\n <View style={[styles.tabBar, { borderBottomColor: border }]}>\n <TouchableOpacity\n style={[styles.tab, selectedTab === 'console' && styles.tabActive]}\n onPress={() => setSelectedTab('console')}\n activeOpacity={0.7}\n >\n <Text style={[\n styles.tabText,\n { color: selectedTab === 'console' ? '#3B82F6' : textSecondary }\n ]}>\n Console\n </Text>\n </TouchableOpacity>\n {showMetrics && metrics && (\n <TouchableOpacity\n style={[styles.tab, selectedTab === 'metrics' && styles.tabActive]}\n onPress={() => setSelectedTab('metrics')}\n activeOpacity={0.7}\n >\n <Text style={[\n styles.tabText,\n { color: selectedTab === 'metrics' ? '#3B82F6' : textSecondary }\n ]}>\n Metrics\n </Text>\n </TouchableOpacity>\n )}\n {showRisk && riskStatus && (\n <TouchableOpacity\n style={[styles.tab, selectedTab === 'risk' && styles.tabActive]}\n onPress={() => setSelectedTab('risk')}\n activeOpacity={0.7}\n >\n <Text style={[\n styles.tabText,\n { color: selectedTab === 'risk' ? '#3B82F6' : textSecondary }\n ]}>\n Risk\n </Text>\n </TouchableOpacity>\n )}\n {agents.length > 0 && (\n <TouchableOpacity\n style={[styles.tab, selectedTab === 'agents' && styles.tabActive]}\n onPress={() => setSelectedTab('agents')}\n activeOpacity={0.7}\n >\n <Text style={[\n styles.tabText,\n { color: selectedTab === 'agents' ? '#3B82F6' : textSecondary }\n ]}>\n Agents\n </Text>\n </TouchableOpacity>\n )}\n </View>\n\n {/* Content */}\n {selectedTab === 'console' && (\n <View style={[styles.consoleContainer, { backgroundColor: consoleBg, height: consoleHeight }]}>\n <ScrollView\n ref={scrollRef}\n style={styles.consoleScroll}\n contentContainerStyle={styles.consoleContent}\n >\n {visibleLogs.map((log) => (\n <View key={log.id} style={styles.logRow}>\n <Text style={[styles.logTime, { color: textMuted }]}>\n {formatTime(log.timestamp)}\n </Text>\n <View style={[\n styles.sourceBadge,\n { backgroundColor: log.source === 'ai' ? '#1E3A5F' : '#1E3A3A' }\n ]}>\n <Text style={[\n styles.sourceText,\n { color: log.source === 'ai' ? '#60A5FA' : '#5EEAD4' }\n ]}>\n {log.source === 'ai' ? (log.strategyName || 'AI') : 'FX'}\n </Text>\n </View>\n <Text style={[styles.logType, { color: getLogColor(log) }]}>\n {log.type.padEnd(10)}\n </Text>\n <Text\n style={[\n styles.logMessage,\n { color: log.importance === 'high' ? textPrimary : textSecondary },\n log.importance === 'high' && styles.logMessageHigh,\n ]}\n numberOfLines={2}\n >\n {log.message}\n </Text>\n </View>\n ))}\n {visibleLogs.length === 0 && (\n <View style={styles.emptyState}>\n <Text style={[styles.emptyIcon, { color: textMuted }]}>⚡</Text>\n <Text style={[styles.emptyTitle, { color: textSecondary }]}>\n No Activity Yet\n </Text>\n <Text style={[styles.emptyText, { color: textMuted }]}>\n Start the trading simulation to see live activity\n </Text>\n </View>\n )}\n </ScrollView>\n </View>\n )}\n\n {selectedTab === 'metrics' && metrics && (\n <ScrollView style={styles.tabContent} contentContainerStyle={styles.tabContentInner}>\n <OneMetricsDashboard\n metrics={metrics}\n showNAV={true}\n showPnL={true}\n showTrades={true}\n showPositions={true}\n showStrategies={true}\n dark={dark}\n />\n </ScrollView>\n )}\n\n {selectedTab === 'risk' && riskStatus && (\n <ScrollView style={styles.tabContent} contentContainerStyle={styles.tabContentInner}>\n <OneRiskIndicator\n riskStatus={riskStatus}\n showDetails={true}\n showWarnings={true}\n showLimits={true}\n dark={dark}\n />\n </ScrollView>\n )}\n\n {selectedTab === 'agents' && agents.length > 0 && (\n <ScrollView style={styles.tabContent} contentContainerStyle={styles.tabContentInner}>\n {agents.map(agent => (\n <TouchableOpacity\n key={agent.id}\n style={[styles.agentRow, { backgroundColor: cardBg, borderColor: border }]}\n onPress={() => onAgentSelect?.(agent)}\n activeOpacity={0.7}\n >\n <View style={styles.agentLeft}>\n <View style={[styles.agentDot, { backgroundColor: agent.color }]} />\n <View>\n <Text style={[styles.agentName, { color: textPrimary }]}>{agent.name}</Text>\n <Text style={[styles.agentPair, { color: textMuted }]}>\n {agent.currentPair || 'Idle'}\n </Text>\n </View>\n </View>\n <View style={styles.agentRight}>\n <Text style={[\n styles.agentPnl,\n { color: agent.totalPnl >= 0 ? '#10B981' : '#EF4444' }\n ]}>\n {agent.totalPnl >= 0 ? '+' : ''}${agent.totalPnl.toFixed(2)}\n </Text>\n <View style={[\n styles.agentStatus,\n { backgroundColor: agent.status === 'active' ? '#D1FAE5' : '#F3F4F6' }\n ]}>\n <Text style={[\n styles.agentStatusText,\n { color: agent.status === 'active' ? '#10B981' : '#9CA3AF' }\n ]}>\n {agent.status}\n </Text>\n </View>\n </View>\n </TouchableOpacity>\n ))}\n </ScrollView>\n )}\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n borderRadius: 12,\n overflow: 'hidden',\n },\n header: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n padding: 14,\n borderBottomWidth: 1,\n },\n headerLeft: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 10,\n },\n headerControls: {\n flexDirection: 'row',\n gap: 8,\n },\n title: {\n fontSize: 16,\n fontWeight: '700',\n },\n statusBadges: {\n flexDirection: 'row',\n gap: 6,\n },\n statusBadge: {\n flexDirection: 'row',\n alignItems: 'center',\n paddingHorizontal: 6,\n paddingVertical: 3,\n borderRadius: 10,\n gap: 4,\n },\n statusDot: {\n width: 6,\n height: 6,\n borderRadius: 3,\n },\n statusText: {\n fontSize: 10,\n fontWeight: '600',\n },\n controlBtn: {\n paddingHorizontal: 10,\n paddingVertical: 5,\n borderRadius: 6,\n },\n controlBtnText: {\n fontSize: 11,\n fontWeight: '600',\n },\n quickStats: {\n flexDirection: 'row',\n justifyContent: 'space-around',\n alignItems: 'center',\n paddingVertical: 10,\n borderBottomWidth: 1,\n },\n quickStatItem: {\n alignItems: 'center',\n gap: 2,\n },\n quickStatLabel: {\n fontFamily: MONO,\n fontSize: 9,\n textTransform: 'uppercase',\n },\n quickStatValue: {\n fontFamily: MONO,\n fontSize: 14,\n fontWeight: '700',\n },\n quickStatDivider: {\n width: 1,\n height: 24,\n backgroundColor: '#2A2A35',\n },\n tabBar: {\n flexDirection: 'row',\n borderBottomWidth: 1,\n },\n tab: {\n flex: 1,\n paddingVertical: 10,\n alignItems: 'center',\n borderBottomWidth: 2,\n borderBottomColor: 'transparent',\n },\n tabActive: {\n borderBottomColor: '#3B82F6',\n },\n tabText: {\n fontSize: 12,\n fontWeight: '600',\n },\n consoleContainer: {\n overflow: 'hidden',\n },\n consoleScroll: {\n flex: 1,\n },\n consoleContent: {\n padding: 8,\n },\n logRow: {\n flexDirection: 'row',\n alignItems: 'flex-start',\n paddingVertical: 2,\n },\n logTime: {\n fontFamily: MONO,\n fontSize: 10,\n width: 55,\n marginRight: 6,\n },\n sourceBadge: {\n paddingHorizontal: 4,\n paddingVertical: 1,\n borderRadius: 3,\n marginRight: 6,\n minWidth: 28,\n alignItems: 'center',\n },\n sourceText: {\n fontFamily: MONO,\n fontSize: 8,\n fontWeight: '700',\n },\n logType: {\n fontFamily: MONO,\n fontSize: 10,\n fontWeight: '700',\n width: 75,\n marginRight: 6,\n },\n logMessage: {\n fontFamily: MONO,\n fontSize: 10,\n flex: 1,\n },\n logMessageHigh: {\n fontWeight: '600',\n },\n emptyState: {\n alignItems: 'center',\n paddingVertical: 60,\n gap: 12,\n },\n emptyIcon: {\n fontSize: 36,\n },\n emptyTitle: {\n fontSize: 14,\n fontWeight: '600',\n },\n emptyText: {\n fontSize: 12,\n textAlign: 'center',\n },\n tabContent: {\n flex: 1,\n },\n tabContentInner: {\n padding: 14,\n },\n agentRow: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n padding: 12,\n borderRadius: 8,\n borderWidth: 1,\n marginBottom: 8,\n },\n agentLeft: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 10,\n },\n agentDot: {\n width: 10,\n height: 10,\n borderRadius: 5,\n },\n agentName: {\n fontSize: 13,\n fontWeight: '600',\n },\n agentPair: {\n fontFamily: MONO,\n fontSize: 10,\n },\n agentRight: {\n alignItems: 'flex-end',\n gap: 4,\n },\n agentPnl: {\n fontFamily: MONO,\n fontSize: 14,\n fontWeight: '600',\n },\n agentStatus: {\n paddingHorizontal: 6,\n paddingVertical: 2,\n borderRadius: 4,\n },\n agentStatusText: {\n fontSize: 9,\n fontWeight: '600',\n textTransform: 'uppercase',\n },\n});\n","/**\n * OneAgentCard - Displays agent status and mini metrics\n * Part of ONE Ecosystem SDK\n */\n\nimport React from 'react';\nimport { View, Text, StyleSheet, TouchableOpacity, ViewStyle, Platform } from 'react-native';\nimport type { AIAgent } from '../../../types/console';\nimport { AGENT_STATUS_COLORS, RISK_LEVEL_COLORS, formatPnl } from '../../../types/console';\n\nconst MONO = Platform.OS === 'ios' ? 'Courier New' : 'monospace';\n\nexport interface OneAgentCardProps {\n agent: AIAgent;\n onPress?: (agent: AIAgent) => void;\n showMetrics?: boolean;\n showIndicators?: boolean;\n compact?: boolean;\n style?: ViewStyle;\n dark?: boolean;\n}\n\nexport const OneAgentCard: React.FC<OneAgentCardProps> = ({\n agent,\n onPress,\n showMetrics = true,\n showIndicators = true,\n compact = false,\n style,\n dark = true,\n}) => {\n const bg = dark ? '#111111' : '#ffffff';\n const border = dark ? '#2A2A35' : '#E5E7EB';\n const textPrimary = dark ? '#ffffff' : '#111827';\n const textSecondary = dark ? '#9CA3AF' : '#6B7280';\n const textMuted = dark ? '#555560' : '#9CA3AF';\n\n const statusConfig = AGENT_STATUS_COLORS[agent.status];\n const riskConfig = RISK_LEVEL_COLORS[agent.riskLevel];\n\n const handlePress = () => {\n if (onPress) {\n onPress(agent);\n }\n };\n\n // Render content shared between pressable and non-pressable versions\n const renderCompactContent = () => (\n <>\n <View style={[styles.statusDot, { backgroundColor: statusConfig.color }]} />\n <Text style={[styles.compactName, { color: textPrimary }]}>{agent.shortName}</Text>\n <Text style={[\n styles.compactPnl,\n { color: agent.totalPnl >= 0 ? '#10B981' : '#EF4444' }\n ]}>\n {formatPnl(agent.totalPnl)}\n </Text>\n </>\n );\n\n const renderFullContent = () => (\n <>\n {/* Header */}\n <View style={styles.header}>\n <View style={styles.nameRow}>\n <View style={[styles.colorDot, { backgroundColor: agent.color }]} />\n <Text style={[styles.name, { color: textPrimary }]}>{agent.name}</Text>\n </View>\n <View style={[styles.statusBadge, { backgroundColor: statusConfig.bgColor }]}>\n <View style={[styles.statusIndicator, { backgroundColor: statusConfig.color }]} />\n <Text style={[styles.statusText, { color: statusConfig.color }]}>\n {statusConfig.label}\n </Text>\n </View>\n </View>\n\n {/* Current Activity */}\n {agent.currentPair && (\n <View style={styles.activityRow}>\n <Text style={[styles.activityLabel, { color: textMuted }]}>Watching</Text>\n <Text style={[styles.activityValue, { color: textSecondary }]}>\n {agent.currentPair} @ ${agent.currentPrice?.toFixed(2)}\n </Text>\n </View>\n )}\n\n {/* Signal */}\n {agent.lastSignal && agent.lastSignal !== 'HOLD' && (\n <View style={styles.signalRow}>\n <Text style={[styles.signalLabel, { color: textMuted }]}>Signal</Text>\n <View style={[\n styles.signalBadge,\n { backgroundColor: agent.lastSignal === 'LONG' ? '#D1FAE5' : '#FEE2E2' }\n ]}>\n <Text style={[\n styles.signalText,\n { color: agent.lastSignal === 'LONG' ? '#10B981' : '#EF4444' }\n ]}>\n {agent.lastSignal}\n </Text>\n </View>\n {agent.lastSignalConfidence && (\n <Text style={[styles.confidenceText, { color: textSecondary }]}>\n {(agent.lastSignalConfidence * 100).toFixed(0)}%\n </Text>\n )}\n </View>\n )}\n\n {/* Metrics */}\n {showMetrics && (\n <View style={styles.metricsGrid}>\n <View style={styles.metricItem}>\n <Text style={[styles.metricLabel, { color: textMuted }]}>P&L</Text>\n <Text style={[\n styles.metricValue,\n { color: agent.totalPnl >= 0 ? '#10B981' : '#EF4444' }\n ]}>\n {formatPnl(agent.totalPnl)}\n </Text>\n </View>\n <View style={styles.metricItem}>\n <Text style={[styles.metricLabel, { color: textMuted }]}>Win Rate</Text>\n <Text style={[styles.metricValue, { color: textPrimary }]}>\n {(agent.winRate * 100).toFixed(1)}%\n </Text>\n </View>\n <View style={styles.metricItem}>\n <Text style={[styles.metricLabel, { color: textMuted }]}>Trades</Text>\n <Text style={[styles.metricValue, { color: textPrimary }]}>\n {agent.totalTrades}\n </Text>\n </View>\n <View style={styles.metricItem}>\n <Text style={[styles.metricLabel, { color: textMuted }]}>Positions</Text>\n <Text style={[styles.metricValue, { color: textPrimary }]}>\n {agent.openPositions}\n </Text>\n </View>\n </View>\n )}\n\n {/* Indicators */}\n {showIndicators && (\n <View style={styles.indicatorsRow}>\n <View style={styles.indicatorItem}>\n <Text style={[styles.indicatorLabel, { color: textMuted }]}>Risk</Text>\n <View style={[styles.riskBadge, { backgroundColor: riskConfig.bgColor }]}>\n <Text style={[styles.riskText, { color: riskConfig.color }]}>\n {agent.riskLevel.toUpperCase()}\n </Text>\n </View>\n </View>\n <View style={styles.indicatorItem}>\n <Text style={[styles.indicatorLabel, { color: textMuted }]}>Exposure</Text>\n <Text style={[styles.indicatorValue, { color: textSecondary }]}>\n ${agent.totalExposure.toFixed(0)}\n </Text>\n </View>\n </View>\n )}\n\n {/* Strategy Info */}\n <View style={styles.strategyRow}>\n <Text style={[styles.strategyLabel, { color: textMuted }]}>\n {agent.primaryIndicators.join(' · ')}\n </Text>\n <Text style={[styles.leverageText, { color: textMuted }]}>\n {agent.leverageRange[0]}-{agent.leverageRange[1]}x\n </Text>\n </View>\n </>\n );\n\n if (compact) {\n if (onPress) {\n return (\n <TouchableOpacity\n style={[styles.compactContainer, { backgroundColor: bg, borderColor: border }, style]}\n onPress={handlePress}\n activeOpacity={0.7}\n >\n {renderCompactContent()}\n </TouchableOpacity>\n );\n }\n return (\n <View style={[styles.compactContainer, { backgroundColor: bg, borderColor: border }, style]}>\n {renderCompactContent()}\n </View>\n );\n }\n\n if (onPress) {\n return (\n <TouchableOpacity\n style={[styles.container, { backgroundColor: bg, borderColor: border }, style]}\n onPress={handlePress}\n activeOpacity={0.7}\n >\n {renderFullContent()}\n </TouchableOpacity>\n );\n }\n\n return (\n <View style={[styles.container, { backgroundColor: bg, borderColor: border }, style]}>\n {renderFullContent()}\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n borderRadius: 12,\n borderWidth: 1,\n padding: 14,\n gap: 10,\n },\n compactContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n borderRadius: 8,\n borderWidth: 1,\n paddingHorizontal: 12,\n paddingVertical: 8,\n gap: 8,\n },\n statusDot: {\n width: 8,\n height: 8,\n borderRadius: 4,\n },\n compactName: {\n fontFamily: MONO,\n fontSize: 12,\n fontWeight: '600',\n flex: 1,\n },\n compactPnl: {\n fontFamily: MONO,\n fontSize: 12,\n fontWeight: '600',\n },\n header: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n nameRow: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 8,\n },\n colorDot: {\n width: 10,\n height: 10,\n borderRadius: 5,\n },\n name: {\n fontSize: 15,\n fontWeight: '600',\n },\n statusBadge: {\n flexDirection: 'row',\n alignItems: 'center',\n paddingHorizontal: 8,\n paddingVertical: 4,\n borderRadius: 12,\n gap: 4,\n },\n statusIndicator: {\n width: 6,\n height: 6,\n borderRadius: 3,\n },\n statusText: {\n fontSize: 11,\n fontWeight: '600',\n textTransform: 'uppercase',\n },\n activityRow: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n activityLabel: {\n fontFamily: MONO,\n fontSize: 10,\n textTransform: 'uppercase',\n },\n activityValue: {\n fontFamily: MONO,\n fontSize: 12,\n },\n signalRow: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 8,\n },\n signalLabel: {\n fontFamily: MONO,\n fontSize: 10,\n textTransform: 'uppercase',\n },\n signalBadge: {\n paddingHorizontal: 8,\n paddingVertical: 2,\n borderRadius: 4,\n },\n signalText: {\n fontFamily: MONO,\n fontSize: 11,\n fontWeight: '700',\n },\n confidenceText: {\n fontFamily: MONO,\n fontSize: 11,\n },\n metricsGrid: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n paddingTop: 6,\n borderTopWidth: 1,\n borderTopColor: '#2A2A35',\n },\n metricItem: {\n alignItems: 'center',\n gap: 2,\n },\n metricLabel: {\n fontFamily: MONO,\n fontSize: 9,\n textTransform: 'uppercase',\n },\n metricValue: {\n fontFamily: MONO,\n fontSize: 13,\n fontWeight: '600',\n },\n indicatorsRow: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n indicatorItem: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 6,\n },\n indicatorLabel: {\n fontFamily: MONO,\n fontSize: 10,\n textTransform: 'uppercase',\n },\n indicatorValue: {\n fontFamily: MONO,\n fontSize: 12,\n },\n riskBadge: {\n paddingHorizontal: 6,\n paddingVertical: 2,\n borderRadius: 4,\n },\n riskText: {\n fontFamily: MONO,\n fontSize: 10,\n fontWeight: '700',\n },\n strategyRow: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n strategyLabel: {\n fontFamily: MONO,\n fontSize: 9,\n },\n leverageText: {\n fontFamily: MONO,\n fontSize: 9,\n },\n});\n","/**\n * OneAIQuantConsole - All 7 AI agents overview\n * Part of ONE Ecosystem SDK\n */\n\nimport React, { useState } from 'react';\nimport { View, Text, StyleSheet, ScrollView, ViewStyle, Platform, TouchableOpacity } from 'react-native';\nimport type { AIAgent, ConsoleMetrics, RiskStatus } from '../../../types/console';\nimport { OneAgentCard } from './OneAgentCard';\nimport { OneMetricsDashboard } from './OneMetricsDashboard';\nimport { OneRiskIndicator } from './OneRiskIndicator';\n\nconst MONO = Platform.OS === 'ios' ? 'Courier New' : 'monospace';\n\nexport interface OneAIQuantConsoleProps {\n agents: AIAgent[];\n metrics?: ConsoleMetrics;\n riskStatus?: RiskStatus | null;\n layout?: 'list' | 'grid' | 'compact';\n showMetrics?: boolean;\n showRisk?: boolean;\n showPerformance?: boolean;\n showPositions?: boolean;\n onAgentSelect?: (agent: AIAgent) => void;\n onStartAll?: () => void;\n onStopAll?: () => void;\n isRunning?: boolean;\n style?: ViewStyle;\n dark?: boolean;\n}\n\nexport const OneAIQuantConsole: React.FC<OneAIQuantConsoleProps> = ({\n agents,\n metrics,\n riskStatus,\n layout = 'list',\n showMetrics = true,\n showRisk = true,\n showPerformance = true,\n showPositions = true,\n onAgentSelect,\n onStartAll,\n onStopAll,\n isRunning = false,\n style,\n dark = true,\n}) => {\n const bg = dark ? '#0A0A0C' : '#ffffff';\n const border = dark ? '#2A2A35' : '#E5E7EB';\n const textPrimary = dark ? '#ffffff' : '#111827';\n const textSecondary = dark ? '#9CA3AF' : '#6B7280';\n const textMuted = dark ? '#555560' : '#9CA3AF';\n const cardBg = dark ? '#111111' : '#F9FAFB';\n\n const [selectedTab, setSelectedTab] = useState<'agents' | 'metrics' | 'risk'>('agents');\n\n const activeAgents = agents.filter(a => a.status === 'active');\n const totalPnl = agents.reduce((sum, a) => sum + a.totalPnl, 0);\n const totalPositions = agents.reduce((sum, a) => sum + a.openPositions, 0);\n\n const handleAgentPress = (agent: AIAgent) => {\n if (onAgentSelect) {\n onAgentSelect(agent);\n }\n };\n\n const renderAgentList = () => {\n if (layout === 'compact') {\n return (\n <View style={styles.compactGrid}>\n {agents.map(agent => (\n <OneAgentCard\n key={agent.id}\n agent={agent}\n onPress={handleAgentPress}\n compact={true}\n dark={dark}\n style={styles.compactCard}\n />\n ))}\n </View>\n );\n }\n\n if (layout === 'grid') {\n return (\n <View style={styles.agentGrid}>\n {agents.map(agent => (\n <View key={agent.id} style={styles.gridItem}>\n <OneAgentCard\n agent={agent}\n onPress={handleAgentPress}\n showMetrics={showPerformance}\n showIndicators={true}\n dark={dark}\n />\n </View>\n ))}\n </View>\n );\n }\n\n // Default: list layout\n return (\n <View style={styles.agentList}>\n {agents.map(agent => (\n <OneAgentCard\n key={agent.id}\n agent={agent}\n onPress={handleAgentPress}\n showMetrics={showPerformance}\n showIndicators={showPositions}\n dark={dark}\n />\n ))}\n </View>\n );\n };\n\n return (\n <View style={[styles.container, { backgroundColor: bg }, style]}>\n {/* Header */}\n <View style={[styles.header, { borderBottomColor: border }]}>\n <View style={styles.headerLeft}>\n <Text style={[styles.title, { color: textPrimary }]}>AI Quant Console</Text>\n <View style={[styles.statusBadge, { backgroundColor: isRunning ? '#D1FAE5' : '#F3F4F6' }]}>\n <View style={[\n styles.statusDot,\n { backgroundColor: isRunning ? '#10B981' : '#9CA3AF' }\n ]} />\n <Text style={[\n styles.statusText,\n { color: isRunning ? '#10B981' : '#9CA3AF' }\n ]}>\n {isRunning ? 'Running' : 'Stopped'}\n </Text>\n </View>\n </View>\n <View style={styles.headerRight}>\n {onStartAll && onStopAll && (\n <TouchableOpacity\n style={[\n styles.controlButton,\n { backgroundColor: isRunning ? '#FEE2E2' : '#D1FAE5' }\n ]}\n onPress={isRunning ? onStopAll : onStartAll}\n activeOpacity={0.7}\n >\n <Text style={[\n styles.controlButtonText,\n { color: isRunning ? '#EF4444' : '#10B981' }\n ]}>\n {isRunning ? 'Stop All' : 'Start All'}\n </Text>\n </TouchableOpacity>\n )}\n </View>\n </View>\n\n {/* Quick Stats */}\n <View style={[styles.quickStats, { backgroundColor: cardBg, borderBottomColor: border }]}>\n <View style={styles.quickStatItem}>\n <Text style={[styles.quickStatLabel, { color: textMuted }]}>Agents</Text>\n <Text style={[styles.quickStatValue, { color: textPrimary }]}>\n {activeAgents.length}/{agents.length}\n </Text>\n </View>\n <View style={styles.quickStatDivider} />\n <View style={styles.quickStatItem}>\n <Text style={[styles.quickStatLabel, { color: textMuted }]}>Total P&L</Text>\n <Text style={[\n styles.quickStatValue,\n { color: totalPnl >= 0 ? '#10B981' : '#EF4444' }\n ]}>\n {totalPnl >= 0 ? '+' : ''}${totalPnl.toFixed(2)}\n </Text>\n </View>\n <View style={styles.quickStatDivider} />\n <View style={styles.quickStatItem}>\n <Text style={[styles.quickStatLabel, { color: textMuted }]}>Positions</Text>\n <Text style={[styles.quickStatValue, { color: textPrimary }]}>\n {totalPositions}\n </Text>\n </View>\n </View>\n\n {/* Tab Navigation */}\n <View style={[styles.tabBar, { borderBottomColor: border }]}>\n <TouchableOpacity\n style={[\n styles.tab,\n selectedTab === 'agents' && styles.tabActive,\n selectedTab === 'agents' && { borderBottomColor: '#3B82F6' }\n ]}\n onPress={() => setSelectedTab('agents')}\n activeOpacity={0.7}\n >\n <Text style={[\n styles.tabText,\n { color: selectedTab === 'agents' ? '#3B82F6' : textSecondary }\n ]}>\n Agents ({agents.length})\n </Text>\n </TouchableOpacity>\n {showMetrics && metrics && (\n <TouchableOpacity\n style={[\n styles.tab,\n selectedTab === 'metrics' && styles.tabActive,\n selectedTab === 'metrics' && { borderBottomColor: '#3B82F6' }\n ]}\n onPress={() => setSelectedTab('metrics')}\n activeOpacity={0.7}\n >\n <Text style={[\n styles.tabText,\n { color: selectedTab === 'metrics' ? '#3B82F6' : textSecondary }\n ]}>\n Metrics\n </Text>\n </TouchableOpacity>\n )}\n {showRisk && riskStatus && (\n <TouchableOpacity\n style={[\n styles.tab,\n selectedTab === 'risk' && styles.tabActive,\n selectedTab === 'risk' && { borderBottomColor: '#3B82F6' }\n ]}\n onPress={() => setSelectedTab('risk')}\n activeOpacity={0.7}\n >\n <Text style={[\n styles.tabText,\n { color: selectedTab === 'risk' ? '#3B82F6' : textSecondary }\n ]}>\n Risk\n </Text>\n </TouchableOpacity>\n )}\n </View>\n\n {/* Content */}\n <ScrollView style={styles.content} contentContainerStyle={styles.contentInner}>\n {selectedTab === 'agents' && renderAgentList()}\n\n {selectedTab === 'metrics' && metrics && (\n <OneMetricsDashboard\n metrics={metrics}\n showNAV={true}\n showPnL={true}\n showTrades={true}\n showPositions={true}\n showStrategies={true}\n dark={dark}\n />\n )}\n\n {selectedTab === 'risk' && riskStatus && (\n <OneRiskIndicator\n riskStatus={riskStatus}\n showDetails={true}\n showWarnings={true}\n showLimits={true}\n dark={dark}\n />\n )}\n\n {/* Empty state */}\n {agents.length === 0 && selectedTab === 'agents' && (\n <View style={styles.emptyState}>\n <Text style={[styles.emptyIcon, { color: textMuted }]}>⚡</Text>\n <Text style={[styles.emptyTitle, { color: textSecondary }]}>\n No Agents Available\n </Text>\n <Text style={[styles.emptyText, { color: textMuted }]}>\n Start the simulation to see AI trading agents\n </Text>\n </View>\n )}\n </ScrollView>\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n borderRadius: 12,\n overflow: 'hidden',\n },\n header: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n padding: 14,\n borderBottomWidth: 1,\n },\n headerLeft: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 10,\n },\n headerRight: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 8,\n },\n title: {\n fontSize: 16,\n fontWeight: '700',\n },\n statusBadge: {\n flexDirection: 'row',\n alignItems: 'center',\n paddingHorizontal: 8,\n paddingVertical: 4,\n borderRadius: 12,\n gap: 4,\n },\n statusDot: {\n width: 6,\n height: 6,\n borderRadius: 3,\n },\n statusText: {\n fontSize: 11,\n fontWeight: '600',\n },\n controlButton: {\n paddingHorizontal: 12,\n paddingVertical: 6,\n borderRadius: 6,\n },\n controlButtonText: {\n fontSize: 12,\n fontWeight: '600',\n },\n quickStats: {\n flexDirection: 'row',\n justifyContent: 'space-around',\n alignItems: 'center',\n paddingVertical: 12,\n borderBottomWidth: 1,\n },\n quickStatItem: {\n alignItems: 'center',\n gap: 2,\n },\n quickStatLabel: {\n fontFamily: MONO,\n fontSize: 9,\n textTransform: 'uppercase',\n },\n quickStatValue: {\n fontFamily: MONO,\n fontSize: 16,\n fontWeight: '700',\n },\n quickStatDivider: {\n width: 1,\n height: 30,\n backgroundColor: '#2A2A35',\n },\n tabBar: {\n flexDirection: 'row',\n borderBottomWidth: 1,\n },\n tab: {\n flex: 1,\n paddingVertical: 12,\n alignItems: 'center',\n borderBottomWidth: 2,\n borderBottomColor: 'transparent',\n },\n tabActive: {\n borderBottomWidth: 2,\n },\n tabText: {\n fontSize: 13,\n fontWeight: '600',\n },\n content: {\n flex: 1,\n },\n contentInner: {\n padding: 14,\n gap: 12,\n },\n agentList: {\n gap: 12,\n },\n agentGrid: {\n flexDirection: 'row',\n flexWrap: 'wrap',\n gap: 12,\n },\n gridItem: {\n width: '48%',\n },\n compactGrid: {\n gap: 8,\n },\n compactCard: {\n marginBottom: 0,\n },\n emptyState: {\n alignItems: 'center',\n paddingVertical: 60,\n gap: 12,\n },\n emptyIcon: {\n fontSize: 40,\n },\n emptyTitle: {\n fontSize: 16,\n fontWeight: '600',\n },\n emptyText: {\n fontSize: 13,\n textAlign: 'center',\n },\n});\n","/**\n * OnePositionCard - Displays position with live P&L\n * Part of ONE Ecosystem SDK\n */\n\nimport React from 'react';\nimport { View, Text, StyleSheet, TouchableOpacity, ViewStyle, Platform } from 'react-native';\nimport type { AIPosition } from '../../../types/console';\nimport { formatPnl, formatPercent } from '../../../types/console';\n\nconst MONO = Platform.OS === 'ios' ? 'Courier New' : 'monospace';\n\nexport interface OnePositionCardProps {\n position: AIPosition;\n onPress?: (position: AIPosition) => void;\n onClose?: (positionId: string) => void;\n showDetails?: boolean;\n showRiskLevels?: boolean;\n compact?: boolean;\n style?: ViewStyle;\n dark?: boolean;\n}\n\nexport const OnePositionCard: React.FC<OnePositionCardProps> = ({\n position,\n onPress,\n onClose,\n showDetails = true,\n showRiskLevels = true,\n compact = false,\n style,\n dark = true,\n}) => {\n const bg = dark ? '#111111' : '#ffffff';\n const border = dark ? '#2A2A35' : '#E5E7EB';\n const textPrimary = dark ? '#ffffff' : '#111827';\n const textSecondary = dark ? '#9CA3AF' : '#6B7280';\n const textMuted = dark ? '#555560' : '#9CA3AF';\n\n const isLong = position.side === 'LONG';\n const sideColor = isLong ? '#10B981' : '#EF4444';\n const sideBgColor = isLong ? '#D1FAE5' : '#FEE2E2';\n const pnlColor = position.pnl >= 0 ? '#10B981' : '#EF4444';\n\n const handlePress = () => {\n if (onPress) {\n onPress(position);\n }\n };\n\n const handleClose = () => {\n if (onClose) {\n onClose(position.id);\n }\n };\n\n const formatPrice = (price: number): string => {\n if (price >= 1000) return price.toFixed(2);\n if (price >= 1) return price.toFixed(3);\n return price.toFixed(5);\n };\n\n const openDuration = Date.now() - position.openTime;\n const hours = Math.floor(openDuration / 3600000);\n const minutes = Math.floor((openDuration % 3600000) / 60000);\n const durationText = hours > 0 ? `${hours}h ${minutes}m` : `${minutes}m`;\n\n // Render compact content\n const renderCompactContent = () => (\n <>\n <View style={[styles.sideBadge, { backgroundColor: sideBgColor }]}>\n <Text style={[styles.sideText, { color: sideColor }]}>{position.side}</Text>\n </View>\n <Text style={[styles.compactPair, { color: textPrimary }]}>{position.pair}</Text>\n <Text style={[styles.compactLeverage, { color: textMuted }]}>{position.leverage}x</Text>\n <Text style={[styles.compactPnl, { color: pnlColor }]}>\n {formatPnl(position.pnl)}\n </Text>\n </>\n );\n\n // Render full content\n const renderFullContent = () => (\n <>\n {/* Header */}\n <View style={styles.header}>\n <View style={styles.headerLeft}>\n <View style={[styles.sideBadge, { backgroundColor: sideBgColor }]}>\n <Text style={[styles.sideText, { color: sideColor }]}>{position.side}</Text>\n </View>\n <Text style={[styles.pair, { color: textPrimary }]}>{position.pair}</Text>\n <Text style={[styles.leverage, { color: textSecondary }]}>{position.leverage}x</Text>\n </View>\n <View style={styles.headerRight}>\n <Text style={[styles.pnl, { color: pnlColor }]}>\n {formatPnl(position.pnl)}\n </Text>\n <Text style={[styles.pnlPercent, { color: pnlColor }]}>\n {formatPercent(position.pnlPercent)}\n </Text>\n </View>\n </View>\n\n {/* Price Info */}\n <View style={styles.priceRow}>\n <View style={styles.priceItem}>\n <Text style={[styles.priceLabel, { color: textMuted }]}>Entry</Text>\n <Text style={[styles.priceValue, { color: textSecondary }]}>\n ${formatPrice(position.entryPrice)}\n </Text>\n </View>\n <View style={styles.priceItem}>\n <Text style={[styles.priceLabel, { color: textMuted }]}>Current</Text>\n <Text style={[styles.priceValue, { color: textPrimary }]}>\n ${formatPrice(position.currentPrice)}\n </Text>\n </View>\n <View style={styles.priceItem}>\n <Text style={[styles.priceLabel, { color: textMuted }]}>Size</Text>\n <Text style={[styles.priceValue, { color: textSecondary }]}>\n ${position.size.toFixed(0)}\n </Text>\n </View>\n </View>\n\n {/* Risk Levels */}\n {showRiskLevels && (position.stopLoss || position.takeProfit) && (\n <View style={styles.riskRow}>\n {position.stopLoss && (\n <View style={styles.riskItem}>\n <Text style={[styles.riskLabel, { color: '#EF4444' }]}>SL</Text>\n <Text style={[styles.riskValue, { color: textSecondary }]}>\n ${formatPrice(position.stopLoss)}\n </Text>\n </View>\n )}\n {position.takeProfit && (\n <View style={styles.riskItem}>\n <Text style={[styles.riskLabel, { color: '#10B981' }]}>TP</Text>\n <Text style={[styles.riskValue, { color: textSecondary }]}>\n ${formatPrice(position.takeProfit)}\n </Text>\n </View>\n )}\n {position.liquidationPrice && (\n <View style={styles.riskItem}>\n <Text style={[styles.riskLabel, { color: '#F59E0B' }]}>LIQ</Text>\n <Text style={[styles.riskValue, { color: textSecondary }]}>\n ${formatPrice(position.liquidationPrice)}\n </Text>\n </View>\n )}\n </View>\n )}\n\n {/* Details */}\n {showDetails && (\n <View style={styles.detailsRow}>\n <View style={styles.detailItem}>\n <Text style={[styles.detailLabel, { color: textMuted }]}>Strategy</Text>\n <Text style={[styles.detailValue, { color: textSecondary }]}>\n {position.strategyName}\n </Text>\n </View>\n <View style={styles.detailItem}>\n <Text style={[styles.detailLabel, { color: textMuted }]}>Duration</Text>\n <Text style={[styles.detailValue, { color: textSecondary }]}>\n {durationText}\n </Text>\n </View>\n {position.chain && (\n <View style={styles.detailItem}>\n <Text style={[styles.detailLabel, { color: textMuted }]}>Chain</Text>\n <Text style={[styles.detailValue, { color: textSecondary }]}>\n {position.chain}\n </Text>\n </View>\n )}\n </View>\n )}\n\n {/* AI Reasoning */}\n {position.aiReasoning && (\n <View style={[styles.reasoningBox, { backgroundColor: dark ? '#1A1A1F' : '#F3F4F6' }]}>\n <Text style={[styles.reasoningLabel, { color: textMuted }]}>AI Reasoning</Text>\n <Text style={[styles.reasoningText, { color: textSecondary }]}>\n {position.aiReasoning}\n </Text>\n {position.aiConfidence && (\n <Text style={[styles.confidenceText, { color: textMuted }]}>\n Confidence: {(position.aiConfidence * 100).toFixed(0)}%\n </Text>\n )}\n </View>\n )}\n\n {/* Close Button */}\n {onClose && position.status === 'open' && (\n <TouchableOpacity\n style={styles.closeButton}\n onPress={handleClose}\n activeOpacity={0.7}\n >\n <Text style={styles.closeButtonText}>Close Position</Text>\n </TouchableOpacity>\n )}\n </>\n );\n\n if (compact) {\n if (onPress) {\n return (\n <TouchableOpacity\n style={[styles.compactContainer, { backgroundColor: bg, borderColor: border }, style]}\n onPress={handlePress}\n activeOpacity={0.7}\n >\n {renderCompactContent()}\n </TouchableOpacity>\n );\n }\n return (\n <View style={[styles.compactContainer, { backgroundColor: bg, borderColor: border }, style]}>\n {renderCompactContent()}\n </View>\n );\n }\n\n if (onPress) {\n return (\n <TouchableOpacity\n style={[styles.container, { backgroundColor: bg, borderColor: border }, style]}\n onPress={handlePress}\n activeOpacity={0.7}\n >\n {renderFullContent()}\n </TouchableOpacity>\n );\n }\n\n return (\n <View style={[styles.container, { backgroundColor: bg, borderColor: border }, style]}>\n {renderFullContent()}\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n borderRadius: 12,\n borderWidth: 1,\n padding: 14,\n gap: 12,\n },\n compactContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n borderRadius: 8,\n borderWidth: 1,\n paddingHorizontal: 12,\n paddingVertical: 8,\n gap: 10,\n },\n sideBadge: {\n paddingHorizontal: 8,\n paddingVertical: 3,\n borderRadius: 4,\n },\n sideText: {\n fontFamily: MONO,\n fontSize: 10,\n fontWeight: '700',\n },\n compactPair: {\n fontFamily: MONO,\n fontSize: 12,\n fontWeight: '600',\n flex: 1,\n },\n compactLeverage: {\n fontFamily: MONO,\n fontSize: 11,\n },\n compactPnl: {\n fontFamily: MONO,\n fontSize: 12,\n fontWeight: '600',\n },\n header: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n headerLeft: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 8,\n },\n headerRight: {\n alignItems: 'flex-end',\n },\n pair: {\n fontSize: 16,\n fontWeight: '700',\n },\n leverage: {\n fontFamily: MONO,\n fontSize: 12,\n },\n pnl: {\n fontFamily: MONO,\n fontSize: 18,\n fontWeight: '700',\n },\n pnlPercent: {\n fontFamily: MONO,\n fontSize: 12,\n },\n priceRow: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n },\n priceItem: {\n alignItems: 'center',\n gap: 2,\n },\n priceLabel: {\n fontFamily: MONO,\n fontSize: 9,\n textTransform: 'uppercase',\n },\n priceValue: {\n fontFamily: MONO,\n fontSize: 12,\n },\n riskRow: {\n flexDirection: 'row',\n justifyContent: 'space-around',\n paddingVertical: 8,\n borderTopWidth: 1,\n borderTopColor: '#2A2A35',\n borderBottomWidth: 1,\n borderBottomColor: '#2A2A35',\n },\n riskItem: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 6,\n },\n riskLabel: {\n fontFamily: MONO,\n fontSize: 10,\n fontWeight: '700',\n },\n riskValue: {\n fontFamily: MONO,\n fontSize: 11,\n },\n detailsRow: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n },\n detailItem: {\n alignItems: 'center',\n gap: 2,\n },\n detailLabel: {\n fontFamily: MONO,\n fontSize: 9,\n textTransform: 'uppercase',\n },\n detailValue: {\n fontFamily: MONO,\n fontSize: 11,\n },\n reasoningBox: {\n padding: 10,\n borderRadius: 8,\n gap: 4,\n },\n reasoningLabel: {\n fontFamily: MONO,\n fontSize: 9,\n textTransform: 'uppercase',\n },\n reasoningText: {\n fontSize: 12,\n lineHeight: 18,\n },\n confidenceText: {\n fontFamily: MONO,\n fontSize: 10,\n marginTop: 4,\n },\n closeButton: {\n backgroundColor: '#EF4444',\n paddingVertical: 10,\n borderRadius: 8,\n alignItems: 'center',\n },\n closeButtonText: {\n color: '#ffffff',\n fontWeight: '600',\n fontSize: 14,\n },\n});\n","/**\n * OneDecisionTimeline - Displays AI decision history with reasoning\n * Part of ONE Ecosystem SDK\n */\n\nimport React from 'react';\nimport { View, Text, StyleSheet, ScrollView, ViewStyle, Platform, TouchableOpacity } from 'react-native';\nimport type { AIDecision, DecisionAction } from '../../../types/console';\n\nconst MONO = Platform.OS === 'ios' ? 'Courier New' : 'monospace';\n\nconst ACTION_COLORS: Record<DecisionAction, { color: string; bgColor: string; label: string }> = {\n OPEN_LONG: { color: '#10B981', bgColor: '#D1FAE5', label: 'LONG' },\n OPEN_SHORT: { color: '#EF4444', bgColor: '#FEE2E2', label: 'SHORT' },\n CLOSE_LONG: { color: '#6366F1', bgColor: '#E0E7FF', label: 'CLOSE L' },\n CLOSE_SHORT: { color: '#8B5CF6', bgColor: '#EDE9FE', label: 'CLOSE S' },\n HOLD: { color: '#9CA3AF', bgColor: '#F3F4F6', label: 'HOLD' },\n SKIP: { color: '#F59E0B', bgColor: '#FEF3C7', label: 'SKIP' },\n};\n\nexport interface OneDecisionTimelineProps {\n decisions: AIDecision[];\n maxItems?: number;\n showReasoning?: boolean;\n showIndicators?: boolean;\n showConfidence?: boolean;\n onDecisionPress?: (decision: AIDecision) => void;\n style?: ViewStyle;\n height?: number;\n dark?: boolean;\n}\n\nexport const OneDecisionTimeline: React.FC<OneDecisionTimelineProps> = ({\n decisions,\n maxItems = 50,\n showReasoning = true,\n showIndicators = true,\n showConfidence = true,\n onDecisionPress,\n style,\n height = 400,\n dark = true,\n}) => {\n const bg = dark ? '#0A0A0C' : '#ffffff';\n const border = dark ? '#2A2A35' : '#E5E7EB';\n const textPrimary = dark ? '#ffffff' : '#111827';\n const textSecondary = dark ? '#9CA3AF' : '#6B7280';\n const textMuted = dark ? '#555560' : '#9CA3AF';\n const cardBg = dark ? '#111111' : '#F9FAFB';\n\n const visibleDecisions = decisions.slice(0, maxItems);\n\n const formatTime = (ts: number) => {\n const d = new Date(ts);\n const hours = d.getHours().toString().padStart(2, '0');\n const mins = d.getMinutes().toString().padStart(2, '0');\n const secs = d.getSeconds().toString().padStart(2, '0');\n return `${hours}:${mins}:${secs}`;\n };\n\n const formatDate = (ts: number) => {\n const d = new Date(ts);\n const month = (d.getMonth() + 1).toString().padStart(2, '0');\n const day = d.getDate().toString().padStart(2, '0');\n return `${month}/${day}`;\n };\n\n const getConfidenceColor = (confidence: number): string => {\n if (confidence >= 0.7) return '#10B981';\n if (confidence >= 0.5) return '#F59E0B';\n return '#EF4444';\n };\n\n const handlePress = (decision: AIDecision) => {\n if (onDecisionPress) {\n onDecisionPress(decision);\n }\n };\n\n const DecisionItem = ({ decision }: { decision: AIDecision }) => {\n const actionConfig = ACTION_COLORS[decision.action];\n\n const itemContent = (\n <>\n {/* Timeline dot and line */}\n <View style={styles.timelineColumn}>\n <View style={[styles.timelineDot, { backgroundColor: actionConfig.color }]} />\n <View style={[styles.timelineLine, { backgroundColor: border }]} />\n </View>\n\n {/* Content */}\n <View style={styles.decisionContent}>\n {/* Header */}\n <View style={styles.decisionHeader}>\n <View style={styles.decisionHeaderLeft}>\n <View style={[styles.actionBadge, { backgroundColor: actionConfig.bgColor }]}>\n <Text style={[styles.actionText, { color: actionConfig.color }]}>\n {actionConfig.label}\n </Text>\n </View>\n <Text style={[styles.pairText, { color: textPrimary }]}>{decision.pair}</Text>\n </View>\n <View style={styles.decisionHeaderRight}>\n <Text style={[styles.timeText, { color: textMuted }]}>\n {formatDate(decision.timestamp)} {formatTime(decision.timestamp)}\n </Text>\n </View>\n </View>\n\n {/* Strategy and Confidence */}\n <View style={styles.metaRow}>\n <Text style={[styles.strategyText, { color: textSecondary }]}>\n {decision.strategyName}\n </Text>\n {showConfidence && (\n <View style={styles.confidenceRow}>\n <Text style={[styles.confidenceLabel, { color: textMuted }]}>Confidence:</Text>\n <View style={[styles.confidenceBar, { backgroundColor: dark ? '#1A1A1F' : '#E5E7EB' }]}>\n <View\n style={[\n styles.confidenceFill,\n {\n width: `${decision.confidence * 100}%`,\n backgroundColor: getConfidenceColor(decision.confidence),\n }\n ]}\n />\n </View>\n <Text style={[styles.confidenceValue, { color: getConfidenceColor(decision.confidence) }]}>\n {(decision.confidence * 100).toFixed(0)}%\n </Text>\n </View>\n )}\n </View>\n\n {/* Reasoning */}\n {showReasoning && decision.reasoning && (\n <View style={[styles.reasoningBox, { backgroundColor: dark ? '#1A1A1F' : '#F3F4F6' }]}>\n <Text style={[styles.reasoningText, { color: textSecondary }]}>\n {decision.reasoning}\n </Text>\n </View>\n )}\n\n {/* Indicators */}\n {showIndicators && decision.indicators && Object.keys(decision.indicators).length > 0 && (\n <View style={styles.indicatorsRow}>\n {decision.indicators.rsi !== undefined && (\n <View style={styles.indicatorItem}>\n <Text style={[styles.indicatorLabel, { color: textMuted }]}>RSI</Text>\n <Text style={[styles.indicatorValue, { color: textSecondary }]}>\n {decision.indicators.rsi.toFixed(1)}\n </Text>\n </View>\n )}\n {decision.indicators.macd !== undefined && (\n <View style={styles.indicatorItem}>\n <Text style={[styles.indicatorLabel, { color: textMuted }]}>MACD</Text>\n <Text style={[\n styles.indicatorValue,\n { color: decision.indicators.macd >= 0 ? '#10B981' : '#EF4444' }\n ]}>\n {decision.indicators.macd >= 0 ? '+' : ''}{decision.indicators.macd.toFixed(3)}\n </Text>\n </View>\n )}\n {decision.indicators.ema && (\n <View style={styles.indicatorItem}>\n <Text style={[styles.indicatorLabel, { color: textMuted }]}>EMA</Text>\n <Text style={[\n styles.indicatorValue,\n { color: decision.indicators.ema === 'bullish' ? '#10B981' : '#EF4444' }\n ]}>\n {decision.indicators.ema}\n </Text>\n </View>\n )}\n {decision.indicators.volume !== undefined && (\n <View style={styles.indicatorItem}>\n <Text style={[styles.indicatorLabel, { color: textMuted }]}>Vol</Text>\n <Text style={[styles.indicatorValue, { color: textSecondary }]}>\n {decision.indicators.volume.toFixed(1)}x\n </Text>\n </View>\n )}\n </View>\n )}\n\n {/* Signals */}\n {decision.signals && decision.signals.length > 0 && (\n <View style={styles.signalsRow}>\n {decision.signals.slice(0, 3).map((signal, index) => (\n <View key={index} style={[styles.signalBadge, { backgroundColor: dark ? '#1A1A1F' : '#E5E7EB' }]}>\n <Text style={[styles.signalText, { color: textSecondary }]}>{signal}</Text>\n </View>\n ))}\n </View>\n )}\n\n {/* Execution Info */}\n {decision.executed && (\n <View style={[styles.executionRow, { borderTopColor: border }]}>\n <View style={[styles.executedBadge, { backgroundColor: '#D1FAE5' }]}>\n <Text style={styles.executedText}>EXECUTED</Text>\n </View>\n {decision.price && (\n <Text style={[styles.executionDetail, { color: textSecondary }]}>\n @ ${decision.price.toFixed(2)}\n </Text>\n )}\n {decision.size && (\n <Text style={[styles.executionDetail, { color: textSecondary }]}>\n Size: ${decision.size}\n </Text>\n )}\n {decision.leverage && (\n <Text style={[styles.executionDetail, { color: textSecondary }]}>\n {decision.leverage}x\n </Text>\n )}\n </View>\n )}\n </View>\n </>\n );\n\n if (onDecisionPress) {\n return (\n <TouchableOpacity\n style={[styles.decisionItem, { backgroundColor: cardBg }]}\n onPress={() => handlePress(decision)}\n activeOpacity={0.7}\n >\n {itemContent}\n </TouchableOpacity>\n );\n }\n\n return (\n <View style={[styles.decisionItem, { backgroundColor: cardBg }]}>\n {itemContent}\n </View>\n );\n };\n\n return (\n <View style={[styles.container, { backgroundColor: bg, borderColor: border, height }, style]}>\n <ScrollView style={styles.scroll} contentContainerStyle={styles.scrollContent}>\n {visibleDecisions.map((decision) => (\n <DecisionItem key={decision.id} decision={decision} />\n ))}\n {visibleDecisions.length === 0 && (\n <Text style={[styles.emptyText, { color: textMuted }]}>\n No decisions recorded yet...\n </Text>\n )}\n </ScrollView>\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n borderRadius: 8,\n borderWidth: 1,\n overflow: 'hidden',\n },\n scroll: {\n flex: 1,\n },\n scrollContent: {\n padding: 12,\n gap: 8,\n },\n decisionItem: {\n flexDirection: 'row',\n borderRadius: 8,\n overflow: 'hidden',\n },\n timelineColumn: {\n width: 24,\n alignItems: 'center',\n paddingTop: 14,\n },\n timelineDot: {\n width: 10,\n height: 10,\n borderRadius: 5,\n },\n timelineLine: {\n width: 2,\n flex: 1,\n marginTop: 4,\n },\n decisionContent: {\n flex: 1,\n padding: 12,\n gap: 8,\n },\n decisionHeader: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n decisionHeaderLeft: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 8,\n },\n decisionHeaderRight: {\n alignItems: 'flex-end',\n },\n actionBadge: {\n paddingHorizontal: 8,\n paddingVertical: 3,\n borderRadius: 4,\n },\n actionText: {\n fontFamily: MONO,\n fontSize: 10,\n fontWeight: '700',\n },\n pairText: {\n fontSize: 14,\n fontWeight: '600',\n },\n timeText: {\n fontFamily: MONO,\n fontSize: 10,\n },\n metaRow: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n strategyText: {\n fontSize: 11,\n },\n confidenceRow: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 6,\n },\n confidenceLabel: {\n fontFamily: MONO,\n fontSize: 9,\n },\n confidenceBar: {\n width: 50,\n height: 6,\n borderRadius: 3,\n overflow: 'hidden',\n },\n confidenceFill: {\n height: '100%',\n borderRadius: 3,\n },\n confidenceValue: {\n fontFamily: MONO,\n fontSize: 10,\n fontWeight: '600',\n },\n reasoningBox: {\n padding: 8,\n borderRadius: 6,\n },\n reasoningText: {\n fontSize: 11,\n lineHeight: 16,\n },\n indicatorsRow: {\n flexDirection: 'row',\n flexWrap: 'wrap',\n gap: 12,\n },\n indicatorItem: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 4,\n },\n indicatorLabel: {\n fontFamily: MONO,\n fontSize: 9,\n textTransform: 'uppercase',\n },\n indicatorValue: {\n fontFamily: MONO,\n fontSize: 11,\n fontWeight: '600',\n },\n signalsRow: {\n flexDirection: 'row',\n flexWrap: 'wrap',\n gap: 6,\n },\n signalBadge: {\n paddingHorizontal: 6,\n paddingVertical: 2,\n borderRadius: 4,\n },\n signalText: {\n fontFamily: MONO,\n fontSize: 9,\n },\n executionRow: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 10,\n paddingTop: 8,\n borderTopWidth: 1,\n },\n executedBadge: {\n paddingHorizontal: 6,\n paddingVertical: 2,\n borderRadius: 4,\n },\n executedText: {\n fontFamily: MONO,\n fontSize: 9,\n fontWeight: '700',\n color: '#10B981',\n },\n executionDetail: {\n fontFamily: MONO,\n fontSize: 10,\n },\n emptyText: {\n fontFamily: MONO,\n fontSize: 11,\n textAlign: 'center',\n paddingVertical: 40,\n },\n});\n","/**\n * OneAgentConsole - Individual agent detail view\n * Part of ONE Ecosystem SDK\n */\n\nimport React, { useRef, useEffect } from 'react';\nimport { View, Text, StyleSheet, ScrollView, ViewStyle, Platform, TouchableOpacity } from 'react-native';\nimport type { BotLogEntry, BotState } from '../../../services/forex/BotSimulationEngine';\nimport type { AIPosition, AIDecision, AIAgent } from '../../../types/console';\nimport { AI_LOG_COLORS } from '../../../types/console';\nimport { OnePositionCard } from './OnePositionCard';\nimport { OneDecisionTimeline } from './OneDecisionTimeline';\n\nconst MONO = Platform.OS === 'ios' ? 'Courier New' : 'monospace';\n\nexport interface OneAgentConsoleProps {\n agent?: AIAgent;\n strategyId?: string;\n strategyName?: string;\n logs: BotLogEntry[];\n botState?: BotState;\n positions?: AIPosition[];\n decisions?: AIDecision[];\n showConsole?: boolean;\n showPositions?: boolean;\n showDecisions?: boolean;\n showMetrics?: boolean;\n maxLogs?: number;\n autoScroll?: boolean;\n consoleHeight?: number;\n onPositionPress?: (position: AIPosition) => void;\n onDecisionPress?: (decision: AIDecision) => void;\n onClosePosition?: (positionId: string) => void;\n style?: ViewStyle;\n dark?: boolean;\n}\n\nexport const OneAgentConsole: React.FC<OneAgentConsoleProps> = ({\n agent,\n strategyId,\n strategyName,\n logs,\n botState,\n positions = [],\n decisions = [],\n showConsole = true,\n showPositions = true,\n showDecisions = true,\n showMetrics = true,\n maxLogs = 100,\n autoScroll = true,\n consoleHeight = 300,\n onPositionPress,\n onDecisionPress,\n onClosePosition,\n style,\n dark = true,\n}) => {\n const bg = dark ? '#111111' : '#ffffff';\n const border = dark ? '#2A2A35' : '#E5E7EB';\n const textPrimary = dark ? '#ffffff' : '#111827';\n const textSecondary = dark ? '#9CA3AF' : '#6B7280';\n const textMuted = dark ? '#555560' : '#9CA3AF';\n const consoleBg = dark ? '#0A0A0C' : '#F9FAFB';\n\n const scrollRef = useRef<ScrollView>(null);\n const visibleLogs = logs.slice(-maxLogs);\n const openPositions = positions.filter(p => p.status === 'open');\n\n // Auto-scroll console\n useEffect(() => {\n if (autoScroll && scrollRef.current) {\n setTimeout(() => scrollRef.current?.scrollToEnd({ animated: true }), 50);\n }\n }, [logs.length, autoScroll]);\n\n const formatTime = (ts: number) => {\n const d = new Date(ts);\n return `${d.getHours().toString().padStart(2, '0')}:${d.getMinutes().toString().padStart(2, '0')}:${d.getSeconds().toString().padStart(2, '0')}`;\n };\n\n const displayName = agent?.name || strategyName || strategyId || 'Agent';\n const displayColor = agent?.color || botState?.strategyName ? '#3B82F6' : '#9CA3AF';\n const isActive = agent?.status === 'active' || botState?.isRunning;\n\n return (\n <View style={[styles.container, { backgroundColor: bg, borderColor: border }, style]}>\n {/* Header */}\n <View style={styles.header}>\n <View style={styles.headerLeft}>\n <View style={[styles.colorDot, { backgroundColor: displayColor }]} />\n <Text style={[styles.agentName, { color: textPrimary }]}>{displayName}</Text>\n <View style={[\n styles.statusBadge,\n { backgroundColor: isActive ? '#D1FAE5' : '#F3F4F6' }\n ]}>\n <View style={[\n styles.statusDot,\n { backgroundColor: isActive ? '#10B981' : '#9CA3AF' }\n ]} />\n <Text style={[\n styles.statusText,\n { color: isActive ? '#10B981' : '#9CA3AF' }\n ]}>\n {isActive ? 'Active' : 'Idle'}\n </Text>\n </View>\n </View>\n {botState && (\n <View style={styles.headerRight}>\n <Text style={[styles.currentPair, { color: textSecondary }]}>\n {botState.currentPair}\n </Text>\n </View>\n )}\n </View>\n\n {/* Quick Metrics */}\n {showMetrics && (agent || botState) && (\n <View style={[styles.metricsRow, { borderBottomColor: border }]}>\n <View style={styles.metricItem}>\n <Text style={[styles.metricLabel, { color: textMuted }]}>P&L</Text>\n <Text style={[\n styles.metricValue,\n { color: (agent?.totalPnl ?? botState?.totalPnl ?? 0) >= 0 ? '#10B981' : '#EF4444' }\n ]}>\n {(agent?.totalPnl ?? botState?.totalPnl ?? 0) >= 0 ? '+' : ''}\n ${(agent?.totalPnl ?? botState?.totalPnl ?? 0).toFixed(2)}\n </Text>\n </View>\n <View style={styles.metricItem}>\n <Text style={[styles.metricLabel, { color: textMuted }]}>Win Rate</Text>\n <Text style={[styles.metricValue, { color: textPrimary }]}>\n {((agent?.winRate ?? botState?.winRate ?? 0) * 100).toFixed(1)}%\n </Text>\n </View>\n <View style={styles.metricItem}>\n <Text style={[styles.metricLabel, { color: textMuted }]}>Trades</Text>\n <Text style={[styles.metricValue, { color: textPrimary }]}>\n {agent?.totalTrades ?? botState?.totalTrades ?? 0}\n </Text>\n </View>\n <View style={styles.metricItem}>\n <Text style={[styles.metricLabel, { color: textMuted }]}>Positions</Text>\n <Text style={[styles.metricValue, { color: textPrimary }]}>\n {openPositions.length}\n </Text>\n </View>\n {botState?.lastSignal && botState.lastSignal !== 'HOLD' && (\n <View style={styles.metricItem}>\n <Text style={[styles.metricLabel, { color: textMuted }]}>Signal</Text>\n <View style={[\n styles.signalBadge,\n { backgroundColor: botState.lastSignal === 'LONG' ? '#D1FAE5' : '#FEE2E2' }\n ]}>\n <Text style={[\n styles.signalText,\n { color: botState.lastSignal === 'LONG' ? '#10B981' : '#EF4444' }\n ]}>\n {botState.lastSignal}\n </Text>\n </View>\n </View>\n )}\n </View>\n )}\n\n {/* Console Output */}\n {showConsole && (\n <View style={styles.section}>\n <Text style={[styles.sectionTitle, { color: textMuted }]}>Console Output</Text>\n <View style={[styles.consoleContainer, { backgroundColor: consoleBg, height: consoleHeight }]}>\n <ScrollView\n ref={scrollRef}\n style={styles.consoleScroll}\n contentContainerStyle={styles.consoleContent}\n >\n {visibleLogs.map((log) => (\n <View key={log.id} style={styles.logRow}>\n <Text style={[styles.logTime, { color: textMuted }]}>\n {formatTime(log.timestamp)}\n </Text>\n <Text style={[\n styles.logType,\n { color: AI_LOG_COLORS[log.type as keyof typeof AI_LOG_COLORS] || textMuted }\n ]}>\n {log.type.padEnd(10)}\n </Text>\n <Text\n style={[\n styles.logMessage,\n { color: log.importance === 'high' ? textPrimary : textSecondary },\n log.importance === 'high' && styles.logMessageHigh,\n ]}\n numberOfLines={2}\n >\n {log.message}\n </Text>\n </View>\n ))}\n {visibleLogs.length === 0 && (\n <Text style={[styles.emptyText, { color: textMuted }]}>\n Waiting for activity...\n </Text>\n )}\n </ScrollView>\n </View>\n </View>\n )}\n\n {/* Open Positions */}\n {showPositions && openPositions.length > 0 && (\n <View style={styles.section}>\n <Text style={[styles.sectionTitle, { color: textMuted }]}>\n Open Positions ({openPositions.length})\n </Text>\n <View style={styles.positionsList}>\n {openPositions.map((position) => (\n <OnePositionCard\n key={position.id}\n position={position}\n onPress={onPositionPress}\n onClose={onClosePosition}\n compact={true}\n dark={dark}\n />\n ))}\n </View>\n </View>\n )}\n\n {/* Recent Decisions */}\n {showDecisions && decisions.length > 0 && (\n <View style={styles.section}>\n <Text style={[styles.sectionTitle, { color: textMuted }]}>\n Recent Decisions ({decisions.length})\n </Text>\n <OneDecisionTimeline\n decisions={decisions.slice(0, 5)}\n showReasoning={true}\n showIndicators={false}\n showConfidence={true}\n onDecisionPress={onDecisionPress}\n height={250}\n dark={dark}\n />\n </View>\n )}\n\n {/* Indicators (if bot state available) */}\n {botState?.indicators && (\n <View style={[styles.indicatorsSection, { borderTopColor: border }]}>\n <Text style={[styles.sectionTitle, { color: textMuted }]}>Current Indicators</Text>\n <View style={styles.indicatorsGrid}>\n <View style={styles.indicatorItem}>\n <Text style={[styles.indicatorLabel, { color: textMuted }]}>RSI</Text>\n <Text style={[\n styles.indicatorValue,\n {\n color: botState.indicators.rsi < 30 ? '#10B981' :\n botState.indicators.rsi > 70 ? '#EF4444' : textPrimary\n }\n ]}>\n {botState.indicators.rsi.toFixed(1)}\n </Text>\n </View>\n <View style={styles.indicatorItem}>\n <Text style={[styles.indicatorLabel, { color: textMuted }]}>MACD</Text>\n <Text style={[\n styles.indicatorValue,\n { color: botState.indicators.macd.histogram >= 0 ? '#10B981' : '#EF4444' }\n ]}>\n {botState.indicators.macd.histogram >= 0 ? '+' : ''}\n {botState.indicators.macd.histogram.toFixed(3)}\n </Text>\n </View>\n <View style={styles.indicatorItem}>\n <Text style={[styles.indicatorLabel, { color: textMuted }]}>EMA</Text>\n <Text style={[\n styles.indicatorValue,\n { color: botState.indicators.ema.crossover === 'golden' ? '#10B981' :\n botState.indicators.ema.crossover === 'death' ? '#EF4444' : textSecondary }\n ]}>\n {botState.indicators.ema.crossover !== 'none' ?\n botState.indicators.ema.crossover.toUpperCase() : 'NEUTRAL'}\n </Text>\n </View>\n <View style={styles.indicatorItem}>\n <Text style={[styles.indicatorLabel, { color: textMuted }]}>Volume</Text>\n <Text style={[styles.indicatorValue, { color: textPrimary }]}>\n {botState.indicators.volume.ratio.toFixed(1)}x\n </Text>\n </View>\n <View style={styles.indicatorItem}>\n <Text style={[styles.indicatorLabel, { color: textMuted }]}>BB Pos</Text>\n <Text style={[styles.indicatorValue, { color: textPrimary }]}>\n {botState.indicators.bollinger.position.toFixed(0)}%\n </Text>\n </View>\n </View>\n </View>\n )}\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n borderRadius: 12,\n borderWidth: 1,\n overflow: 'hidden',\n },\n header: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n padding: 14,\n borderBottomWidth: 1,\n borderBottomColor: '#2A2A35',\n },\n headerLeft: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 10,\n },\n headerRight: {\n alignItems: 'flex-end',\n },\n colorDot: {\n width: 12,\n height: 12,\n borderRadius: 6,\n },\n agentName: {\n fontSize: 16,\n fontWeight: '600',\n },\n statusBadge: {\n flexDirection: 'row',\n alignItems: 'center',\n paddingHorizontal: 8,\n paddingVertical: 4,\n borderRadius: 12,\n gap: 4,\n },\n statusDot: {\n width: 6,\n height: 6,\n borderRadius: 3,\n },\n statusText: {\n fontSize: 11,\n fontWeight: '600',\n },\n currentPair: {\n fontFamily: MONO,\n fontSize: 12,\n },\n metricsRow: {\n flexDirection: 'row',\n justifyContent: 'space-around',\n paddingVertical: 12,\n paddingHorizontal: 8,\n borderBottomWidth: 1,\n },\n metricItem: {\n alignItems: 'center',\n gap: 2,\n },\n metricLabel: {\n fontFamily: MONO,\n fontSize: 9,\n textTransform: 'uppercase',\n },\n metricValue: {\n fontFamily: MONO,\n fontSize: 14,\n fontWeight: '600',\n },\n signalBadge: {\n paddingHorizontal: 8,\n paddingVertical: 2,\n borderRadius: 4,\n },\n signalText: {\n fontFamily: MONO,\n fontSize: 10,\n fontWeight: '700',\n },\n section: {\n padding: 14,\n gap: 10,\n },\n sectionTitle: {\n fontFamily: MONO,\n fontSize: 10,\n textTransform: 'uppercase',\n letterSpacing: 1,\n },\n consoleContainer: {\n borderRadius: 8,\n overflow: 'hidden',\n },\n consoleScroll: {\n flex: 1,\n },\n consoleContent: {\n padding: 8,\n },\n logRow: {\n flexDirection: 'row',\n paddingVertical: 2,\n },\n logTime: {\n fontFamily: MONO,\n fontSize: 10,\n width: 60,\n marginRight: 6,\n },\n logType: {\n fontFamily: MONO,\n fontSize: 10,\n fontWeight: '700',\n width: 75,\n marginRight: 6,\n },\n logMessage: {\n fontFamily: MONO,\n fontSize: 10,\n flex: 1,\n },\n logMessageHigh: {\n fontWeight: '600',\n },\n emptyText: {\n fontFamily: MONO,\n fontSize: 11,\n textAlign: 'center',\n paddingVertical: 30,\n },\n positionsList: {\n gap: 8,\n },\n indicatorsSection: {\n padding: 14,\n borderTopWidth: 1,\n gap: 10,\n },\n indicatorsGrid: {\n flexDirection: 'row',\n flexWrap: 'wrap',\n gap: 16,\n },\n indicatorItem: {\n alignItems: 'center',\n gap: 2,\n minWidth: 60,\n },\n indicatorLabel: {\n fontFamily: MONO,\n fontSize: 9,\n textTransform: 'uppercase',\n },\n indicatorValue: {\n fontFamily: MONO,\n fontSize: 13,\n fontWeight: '600',\n },\n});\n","/**\n * OnePositionDetail - Detailed position tracking view\n * Part of ONE Ecosystem SDK\n */\n\nimport React, { useEffect, useState, useRef } from 'react';\nimport { View, Text, StyleSheet, ScrollView, ViewStyle, Platform, TouchableOpacity, Animated } from 'react-native';\nimport type { AIPosition } from '../../../types/console';\nimport { formatPnl, formatPercent } from '../../../types/console';\n\nconst MONO = Platform.OS === 'ios' ? 'Courier New' : 'monospace';\n\nexport interface OnePositionDetailProps {\n position: AIPosition;\n showTimeline?: boolean;\n showReasoning?: boolean;\n showRiskLevels?: boolean;\n showHistory?: boolean;\n priceUpdateInterval?: number;\n onClose?: (positionId: string) => void;\n onUpdateStopLoss?: (positionId: string, stopLoss: number) => void;\n onUpdateTakeProfit?: (positionId: string, takeProfit: number) => void;\n style?: ViewStyle;\n dark?: boolean;\n}\n\nexport const OnePositionDetail: React.FC<OnePositionDetailProps> = ({\n position,\n showTimeline = true,\n showReasoning = true,\n showRiskLevels = true,\n showHistory = true,\n priceUpdateInterval = 5000,\n onClose,\n onUpdateStopLoss,\n onUpdateTakeProfit,\n style,\n dark = true,\n}) => {\n const bg = dark ? '#0A0A0C' : '#ffffff';\n const cardBg = dark ? '#111111' : '#F9FAFB';\n const border = dark ? '#2A2A35' : '#E5E7EB';\n const textPrimary = dark ? '#ffffff' : '#111827';\n const textSecondary = dark ? '#9CA3AF' : '#6B7280';\n const textMuted = dark ? '#555560' : '#9CA3AF';\n\n const isLong = position.side === 'LONG';\n const sideColor = isLong ? '#10B981' : '#EF4444';\n const sideBgColor = isLong ? '#D1FAE5' : '#FEE2E2';\n const pnlColor = position.pnl >= 0 ? '#10B981' : '#EF4444';\n\n // Animated values for P&L updates\n const pnlAnim = useRef(new Animated.Value(0)).current;\n const [prevPnl, setPrevPnl] = useState(position.pnl);\n\n useEffect(() => {\n if (position.pnl !== prevPnl) {\n Animated.sequence([\n Animated.timing(pnlAnim, { toValue: 1, duration: 200, useNativeDriver: false }),\n Animated.timing(pnlAnim, { toValue: 0, duration: 400, useNativeDriver: false }),\n ]).start();\n setPrevPnl(position.pnl);\n }\n }, [position.pnl, prevPnl, pnlAnim]);\n\n const pnlBgColor = pnlAnim.interpolate({\n inputRange: [0, 1],\n outputRange: [cardBg, position.pnl >= 0 ? '#134E4A' : '#7F1D1D'],\n });\n\n const formatPrice = (price: number): string => {\n if (price >= 1000) return price.toFixed(2);\n if (price >= 1) return price.toFixed(4);\n return price.toFixed(6);\n };\n\n const formatDuration = (openTime: number, closeTime?: number): string => {\n const end = closeTime || Date.now();\n const duration = end - openTime;\n const hours = Math.floor(duration / 3600000);\n const minutes = Math.floor((duration % 3600000) / 60000);\n const seconds = Math.floor((duration % 60000) / 1000);\n\n if (hours > 0) return `${hours}h ${minutes}m`;\n if (minutes > 0) return `${minutes}m ${seconds}s`;\n return `${seconds}s`;\n };\n\n const formatTimestamp = (ts: number): string => {\n const d = new Date(ts);\n return d.toLocaleString('en-US', {\n month: 'short',\n day: 'numeric',\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n });\n };\n\n // Calculate distance to liquidation\n const distanceToLiquidation = position.liquidationPrice\n ? Math.abs((position.currentPrice - position.liquidationPrice) / position.currentPrice * 100)\n : null;\n\n // Calculate P&L at TP and SL\n const pnlAtTP = position.takeProfit\n ? ((isLong\n ? (position.takeProfit - position.entryPrice)\n : (position.entryPrice - position.takeProfit)) / position.entryPrice) * position.leverage * position.size\n : null;\n\n const pnlAtSL = position.stopLoss\n ? ((isLong\n ? (position.stopLoss - position.entryPrice)\n : (position.entryPrice - position.stopLoss)) / position.entryPrice) * position.leverage * position.size\n : null;\n\n const handleClose = () => {\n if (onClose) {\n onClose(position.id);\n }\n };\n\n return (\n <ScrollView style={[styles.container, { backgroundColor: bg }, style]}>\n {/* Header */}\n <View style={[styles.header, { backgroundColor: cardBg, borderBottomColor: border }]}>\n <View style={styles.headerTop}>\n <View style={styles.headerLeft}>\n <View style={[styles.sideBadge, { backgroundColor: sideBgColor }]}>\n <Text style={[styles.sideText, { color: sideColor }]}>{position.side}</Text>\n </View>\n <Text style={[styles.pair, { color: textPrimary }]}>{position.pair}</Text>\n <Text style={[styles.leverage, { color: textSecondary }]}>{position.leverage}x</Text>\n </View>\n <View style={[\n styles.statusBadge,\n { backgroundColor: position.status === 'open' ? '#D1FAE5' : '#F3F4F6' }\n ]}>\n <Text style={[\n styles.statusText,\n { color: position.status === 'open' ? '#10B981' : '#9CA3AF' }\n ]}>\n {position.status.toUpperCase()}\n </Text>\n </View>\n </View>\n\n {/* Main P&L Display */}\n <Animated.View style={[styles.pnlSection, { backgroundColor: pnlBgColor }]}>\n <View style={styles.pnlMain}>\n <Text style={[styles.pnlValue, { color: pnlColor }]}>\n {formatPnl(position.pnl)}\n </Text>\n <Text style={[styles.pnlPercent, { color: pnlColor }]}>\n {formatPercent(position.pnlPercent)}\n </Text>\n </View>\n <Text style={[styles.pnlLabel, { color: textMuted }]}>Unrealized P&L</Text>\n </Animated.View>\n </View>\n\n {/* Price Information */}\n <View style={[styles.section, { backgroundColor: cardBg }]}>\n <Text style={[styles.sectionTitle, { color: textMuted }]}>Price Information</Text>\n <View style={styles.priceGrid}>\n <View style={styles.priceItem}>\n <Text style={[styles.priceLabel, { color: textMuted }]}>Entry Price</Text>\n <Text style={[styles.priceValue, { color: textPrimary }]}>\n ${formatPrice(position.entryPrice)}\n </Text>\n </View>\n <View style={styles.priceItem}>\n <Text style={[styles.priceLabel, { color: textMuted }]}>Current Price</Text>\n <Text style={[styles.priceValue, { color: textPrimary }]}>\n ${formatPrice(position.currentPrice)}\n </Text>\n </View>\n <View style={styles.priceItem}>\n <Text style={[styles.priceLabel, { color: textMuted }]}>Price Change</Text>\n <Text style={[\n styles.priceValue,\n { color: (position.currentPrice - position.entryPrice) * (isLong ? 1 : -1) >= 0 ? '#10B981' : '#EF4444' }\n ]}>\n {((position.currentPrice - position.entryPrice) / position.entryPrice * 100) >= 0 ? '+' : ''}\n {((position.currentPrice - position.entryPrice) / position.entryPrice * 100).toFixed(4)}%\n </Text>\n </View>\n </View>\n </View>\n\n {/* Position Details */}\n <View style={[styles.section, { backgroundColor: cardBg }]}>\n <Text style={[styles.sectionTitle, { color: textMuted }]}>Position Details</Text>\n <View style={styles.detailsGrid}>\n <View style={styles.detailRow}>\n <Text style={[styles.detailLabel, { color: textSecondary }]}>Size</Text>\n <Text style={[styles.detailValue, { color: textPrimary }]}>\n ${position.size.toLocaleString()}\n </Text>\n </View>\n <View style={styles.detailRow}>\n <Text style={[styles.detailLabel, { color: textSecondary }]}>Margin</Text>\n <Text style={[styles.detailValue, { color: textPrimary }]}>\n ${position.margin.toFixed(2)}\n </Text>\n </View>\n <View style={styles.detailRow}>\n <Text style={[styles.detailLabel, { color: textSecondary }]}>Leverage</Text>\n <Text style={[styles.detailValue, { color: textPrimary }]}>\n {position.leverage}x\n </Text>\n </View>\n <View style={styles.detailRow}>\n <Text style={[styles.detailLabel, { color: textSecondary }]}>Strategy</Text>\n <Text style={[styles.detailValue, { color: textPrimary }]}>\n {position.strategyName}\n </Text>\n </View>\n {position.chain && (\n <View style={styles.detailRow}>\n <Text style={[styles.detailLabel, { color: textSecondary }]}>Chain</Text>\n <Text style={[styles.detailValue, { color: textPrimary }]}>\n {position.chain}\n </Text>\n </View>\n )}\n <View style={styles.detailRow}>\n <Text style={[styles.detailLabel, { color: textSecondary }]}>Duration</Text>\n <Text style={[styles.detailValue, { color: textPrimary }]}>\n {formatDuration(position.openTime, position.closeTime)}\n </Text>\n </View>\n </View>\n </View>\n\n {/* Risk Levels */}\n {showRiskLevels && (\n <View style={[styles.section, { backgroundColor: cardBg }]}>\n <Text style={[styles.sectionTitle, { color: textMuted }]}>Risk Management</Text>\n <View style={styles.riskGrid}>\n {position.stopLoss && (\n <View style={[styles.riskCard, { borderColor: '#EF4444' }]}>\n <Text style={[styles.riskCardLabel, { color: '#EF4444' }]}>Stop Loss</Text>\n <Text style={[styles.riskCardPrice, { color: textPrimary }]}>\n ${formatPrice(position.stopLoss)}\n </Text>\n {pnlAtSL !== null && (\n <Text style={[styles.riskCardPnl, { color: '#EF4444' }]}>\n {formatPnl(pnlAtSL)}\n </Text>\n )}\n </View>\n )}\n {position.takeProfit && (\n <View style={[styles.riskCard, { borderColor: '#10B981' }]}>\n <Text style={[styles.riskCardLabel, { color: '#10B981' }]}>Take Profit</Text>\n <Text style={[styles.riskCardPrice, { color: textPrimary }]}>\n ${formatPrice(position.takeProfit)}\n </Text>\n {pnlAtTP !== null && (\n <Text style={[styles.riskCardPnl, { color: '#10B981' }]}>\n {formatPnl(pnlAtTP)}\n </Text>\n )}\n </View>\n )}\n {position.liquidationPrice && (\n <View style={[styles.riskCard, { borderColor: '#F59E0B' }]}>\n <Text style={[styles.riskCardLabel, { color: '#F59E0B' }]}>Liquidation</Text>\n <Text style={[styles.riskCardPrice, { color: textPrimary }]}>\n ${formatPrice(position.liquidationPrice)}\n </Text>\n {distanceToLiquidation !== null && (\n <Text style={[styles.riskCardDistance, { color: textMuted }]}>\n {distanceToLiquidation.toFixed(2)}% away\n </Text>\n )}\n </View>\n )}\n </View>\n </View>\n )}\n\n {/* AI Reasoning */}\n {showReasoning && position.aiReasoning && (\n <View style={[styles.section, { backgroundColor: cardBg }]}>\n <Text style={[styles.sectionTitle, { color: textMuted }]}>AI Analysis</Text>\n <View style={[styles.reasoningBox, { backgroundColor: dark ? '#1A1A1F' : '#F3F4F6' }]}>\n <Text style={[styles.reasoningText, { color: textSecondary }]}>\n {position.aiReasoning}\n </Text>\n </View>\n {position.aiConfidence && (\n <View style={styles.confidenceRow}>\n <Text style={[styles.confidenceLabel, { color: textMuted }]}>Confidence</Text>\n <View style={[styles.confidenceBar, { backgroundColor: dark ? '#1A1A1F' : '#E5E7EB' }]}>\n <View\n style={[\n styles.confidenceFill,\n {\n width: `${position.aiConfidence * 100}%`,\n backgroundColor: position.aiConfidence >= 0.7 ? '#10B981' :\n position.aiConfidence >= 0.5 ? '#F59E0B' : '#EF4444',\n }\n ]}\n />\n </View>\n <Text style={[styles.confidenceValue, { color: textPrimary }]}>\n {(position.aiConfidence * 100).toFixed(0)}%\n </Text>\n </View>\n )}\n </View>\n )}\n\n {/* Timeline */}\n {showTimeline && (\n <View style={[styles.section, { backgroundColor: cardBg }]}>\n <Text style={[styles.sectionTitle, { color: textMuted }]}>Timeline</Text>\n <View style={styles.timeline}>\n <View style={styles.timelineItem}>\n <View style={[styles.timelineDot, { backgroundColor: '#10B981' }]} />\n <View style={styles.timelineContent}>\n <Text style={[styles.timelineLabel, { color: textSecondary }]}>Position Opened</Text>\n <Text style={[styles.timelineTime, { color: textMuted }]}>\n {formatTimestamp(position.openTime)}\n </Text>\n <Text style={[styles.timelineDetail, { color: textMuted }]}>\n @ ${formatPrice(position.entryPrice)}\n </Text>\n </View>\n </View>\n {position.closeTime && (\n <View style={styles.timelineItem}>\n <View style={[styles.timelineDot, { backgroundColor: '#EF4444' }]} />\n <View style={styles.timelineContent}>\n <Text style={[styles.timelineLabel, { color: textSecondary }]}>Position Closed</Text>\n <Text style={[styles.timelineTime, { color: textMuted }]}>\n {formatTimestamp(position.closeTime)}\n </Text>\n <Text style={[styles.timelineDetail, { color: textMuted }]}>\n @ ${formatPrice(position.currentPrice)}\n </Text>\n </View>\n </View>\n )}\n </View>\n </View>\n )}\n\n {/* Action Buttons */}\n {position.status === 'open' && onClose && (\n <View style={styles.actionsSection}>\n <TouchableOpacity\n style={styles.closeButton}\n onPress={handleClose}\n activeOpacity={0.7}\n >\n <Text style={styles.closeButtonText}>Close Position</Text>\n </TouchableOpacity>\n </View>\n )}\n </ScrollView>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n },\n header: {\n padding: 16,\n borderBottomWidth: 1,\n gap: 16,\n },\n headerTop: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n headerLeft: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 10,\n },\n sideBadge: {\n paddingHorizontal: 10,\n paddingVertical: 4,\n borderRadius: 6,\n },\n sideText: {\n fontFamily: MONO,\n fontSize: 12,\n fontWeight: '700',\n },\n pair: {\n fontSize: 20,\n fontWeight: '700',\n },\n leverage: {\n fontFamily: MONO,\n fontSize: 14,\n },\n statusBadge: {\n paddingHorizontal: 10,\n paddingVertical: 4,\n borderRadius: 6,\n },\n statusText: {\n fontSize: 11,\n fontWeight: '700',\n },\n pnlSection: {\n padding: 16,\n borderRadius: 12,\n alignItems: 'center',\n gap: 4,\n },\n pnlMain: {\n flexDirection: 'row',\n alignItems: 'baseline',\n gap: 10,\n },\n pnlValue: {\n fontFamily: MONO,\n fontSize: 32,\n fontWeight: '700',\n },\n pnlPercent: {\n fontFamily: MONO,\n fontSize: 18,\n fontWeight: '600',\n },\n pnlLabel: {\n fontFamily: MONO,\n fontSize: 10,\n textTransform: 'uppercase',\n },\n section: {\n margin: 12,\n marginTop: 0,\n padding: 16,\n borderRadius: 12,\n gap: 12,\n },\n sectionTitle: {\n fontFamily: MONO,\n fontSize: 10,\n textTransform: 'uppercase',\n letterSpacing: 1,\n },\n priceGrid: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n },\n priceItem: {\n alignItems: 'center',\n gap: 4,\n },\n priceLabel: {\n fontFamily: MONO,\n fontSize: 9,\n textTransform: 'uppercase',\n },\n priceValue: {\n fontFamily: MONO,\n fontSize: 14,\n fontWeight: '600',\n },\n detailsGrid: {\n gap: 8,\n },\n detailRow: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n paddingVertical: 6,\n borderBottomWidth: 1,\n borderBottomColor: '#1A1A1F',\n },\n detailLabel: {\n fontSize: 13,\n },\n detailValue: {\n fontFamily: MONO,\n fontSize: 13,\n fontWeight: '600',\n },\n riskGrid: {\n flexDirection: 'row',\n gap: 10,\n },\n riskCard: {\n flex: 1,\n padding: 12,\n borderRadius: 8,\n borderWidth: 1,\n alignItems: 'center',\n gap: 4,\n },\n riskCardLabel: {\n fontFamily: MONO,\n fontSize: 9,\n fontWeight: '700',\n textTransform: 'uppercase',\n },\n riskCardPrice: {\n fontFamily: MONO,\n fontSize: 13,\n fontWeight: '600',\n },\n riskCardPnl: {\n fontFamily: MONO,\n fontSize: 11,\n },\n riskCardDistance: {\n fontFamily: MONO,\n fontSize: 10,\n },\n reasoningBox: {\n padding: 12,\n borderRadius: 8,\n },\n reasoningText: {\n fontSize: 13,\n lineHeight: 20,\n },\n confidenceRow: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 10,\n },\n confidenceLabel: {\n fontFamily: MONO,\n fontSize: 10,\n textTransform: 'uppercase',\n },\n confidenceBar: {\n flex: 1,\n height: 8,\n borderRadius: 4,\n overflow: 'hidden',\n },\n confidenceFill: {\n height: '100%',\n borderRadius: 4,\n },\n confidenceValue: {\n fontFamily: MONO,\n fontSize: 12,\n fontWeight: '600',\n width: 35,\n },\n timeline: {\n gap: 16,\n paddingLeft: 8,\n },\n timelineItem: {\n flexDirection: 'row',\n gap: 12,\n },\n timelineDot: {\n width: 12,\n height: 12,\n borderRadius: 6,\n marginTop: 3,\n },\n timelineContent: {\n flex: 1,\n gap: 2,\n },\n timelineLabel: {\n fontSize: 13,\n fontWeight: '500',\n },\n timelineTime: {\n fontFamily: MONO,\n fontSize: 11,\n },\n timelineDetail: {\n fontFamily: MONO,\n fontSize: 11,\n },\n actionsSection: {\n padding: 16,\n gap: 10,\n },\n closeButton: {\n backgroundColor: '#EF4444',\n paddingVertical: 14,\n borderRadius: 10,\n alignItems: 'center',\n },\n closeButtonText: {\n color: '#ffffff',\n fontSize: 16,\n fontWeight: '600',\n },\n});\n"]}