({ memory: 0, cpu: 0, disk: 0, uptime: 0, tx: 0, rx: 0 });
    const status = ServerContext.useStoreState((state) => state.status.value);
    const connected = ServerContext.useStoreState((state) => state.socket.connected);
    const instance = ServerContext.useStoreState((state) => state.socket.instance);
    const limits = ServerContext.useStoreState((state) => state.server.data!.limits);
    const textLimits = useMemo(
        () => ({
            cpu: limits?.cpu ? `${limits.cpu}%` : null,
            memory: limits?.memory ? bytesToString(mbToBytes(limits.memory)) : null,
            disk: limits?.disk ? bytesToString(mbToBytes(limits.disk)) : null,
        }),
        [limits]
    );
    const allocation = ServerContext.useStoreState((state) => {
        const match = state.server.data!.allocations.find((allocation) => allocation.isDefault);
        return !match ? 'n/a' : `${match.alias || ip(match.ip)}:${match.port}`;
    });
    useEffect(() => {
        if (!connected || !instance) {
            return;
        }
        instance.send(SocketRequest.SEND_STATS);
    }, [instance, connected]);
    useWebsocketEvent(SocketEvent.STATS, (data) => {
        let stats: any = {};
        try {
            stats = JSON.parse(data);
        } catch (e) {
            return;
        }
        setStats({
            memory: stats.memory_bytes,
            cpu: stats.cpu_absolute,
            disk: stats.disk_bytes,
            tx: stats.network.tx_bytes,
            rx: stats.network.rx_bytes,
            uptime: stats.uptime || 0,
        });
    });
    return (
        
            
                {allocation}
            
            
                {status === null ? (
                    'Offline'
                ) : stats.uptime > 0 ? (
                    
                ) : (
                    capitalize(status)
                )}
            
            
                {status === 'offline' ? (
                    Offline
                ) : (
                    {stats.cpu.toFixed(2)}%
                )}
            
            
                {status === 'offline' ? (
                    Offline
                ) : (
                    {bytesToString(stats.memory)}
                )}
            
            
                {bytesToString(stats.disk)}
            
            
                {status === 'offline' ? Offline : bytesToString(stats.rx)}
            
            
                {status === 'offline' ? Offline : bytesToString(stats.tx)}
            
        
    );
};
export default ServerDetailsBlock;