import { AlertTriangle, Coins, Loader2 } from 'lucide-react'; import { Card, CardContent } from '@/components/ui/card'; import { useCurrentUser } from '@/hooks/useCurrentUser'; import { PLATFORM_OWNER_PUBKEYS } from '@/hooks/useListingRestrictions'; import { useSasquatchAiStatus } from '@/hooks/useSasquatchAiStatus'; import { useTranslation } from '@/contexts/language'; import { cn } from '@/lib/utils'; /** * Owner-only card: the Sasquatch AI (Routstr node) balance, with a warning when * it's running low. This is the "top up before AI degrades" nudge — no webhook * needed, since the operator can see it live in Settings. */ export function SasquatchAiStatusCard() { const { t } = useTranslation(); const { user } = useCurrentUser(); const isOwner = !!user?.pubkey && PLATFORM_OWNER_PUBKEYS.includes(user.pubkey); const { data, isLoading, isError } = useSasquatchAiStatus(); if (!isOwner) return null; const low = data?.low === true; const balance = data?.balanceSats; return (

{low ? ( ) : ( )} {t('sasquatchUi.aiTitle')} {t('sasquatchUi.owner')}

{isLoading ? ( ) : isError || data?.configured === false ? ( t('sasquatchUi.notConfigured') ) : balance === null || balance === undefined ? ( t('sasquatchUi.unavailable') ) : ( t('sasquatchUi.satsValue', { balance: balance.toLocaleString() }) )}

{low ? t('sasquatchUi.lowBalance', { provider: data?.provider ?? t('sasquatchUi.theNode') }) : t('sasquatchUi.aiDesc')}

); }