export interface MonitorDomainRecords {
    ":monitor.stats?": MonitorStatsRecord;
}
export interface MonitorStatsRecord {
    gpu: MonitorStatsGpuInfo | null;
    proc: MonitorStatsProcInfo;
    buddyinfo: MonitorStatsBuddyInfo;
    meminfo: MonitorStatsMemInfo;
    net: MonitorStatsNetworkInfo;
    var: {
        used: number;
        available: number;
        timestamp: number;
    };
    hostBridge: MonitorStatsHostBridge;
}
export interface MonitorStatsGpuInfo {
    name?: string | null;
    utilization: {
        gpu?: number | null;
        memory?: number | null;
        encoder?: number | null;
        decoder?: number | null;
    };
}
export interface MonitorStatsHostBridgeMessage {
    type: string;
    id: string;
    level: number;
    title: string;
    msg: string;
}
export interface MonitorStatsHostBridge {
    types: Record<string, string>;
    messages: MonitorStatsHostBridgeMessage[];
    gpu?: MonitorStatsGpuHostInfo[];
    sensors?: MonitorStatsHostBridgeSensor[];
    timestamp: number;
}
export interface MonitorStatsGpuHostInfo {
    index: number | null;
    name: string | null;
    uuid: string | null;
    utilization: {
        gpu: number | null;
        memory: number | null;
        encoder: number | null;
        decoder: number | null;
    };
    memory: {
        total: number | null;
        used: number | null;
    };
    temperature: {
        gpu: number | null;
        memory: number | null;
    };
    power: {
        draw: number | null;
        limit: number | null;
    };
    fanSpeed: number | null;
}
export interface MonitorStatsHostBridgeSensor {
    source: string;
    key?: string;
    chip: string;
    label: string;
    kind: "temperature" | "power" | "fan";
    unit: string;
    value: number;
}
export interface MonitorStatsProcInfoCpu {
    [key: string]: string | number | boolean | null;
}
export interface MonitorStatsProcInfo {
    cpu: MonitorStatsProcInfoCpu | null;
    cpus?: MonitorStatsProcInfoCpu[];
    threads: number;
    load: number[] | null;
    interrupts?: number[] | null;
    contextSwitches: number | null;
    bootTime: number | null;
    processes: number | null;
    running: number | null;
    blocked: number | null;
    softirqs: unknown;
    cmdline: unknown;
    timestamp: number;
    total: number | null;
    idle: number | null;
    active: number | null;
    utilization: number | null;
}
export interface MonitorStatsBuddyInfo {
    normal?: number[];
    high?: number[];
    timestamp: number;
}
export interface MonitorStatsMemInfo {
    [key: string]: string | number | boolean | null;
}
export interface NetworkInterfaceInfo {
    name: string;
    timestamp?: number;
    rxBytes?: number;
    rxBytesOrigin?: number;
    rxBytesSec?: number;
    rxBytesValue?: number;
    rxDropped?: number;
    rxDroppedOrigin?: number;
    rxDroppedSec?: number;
    rxDroppedValue?: number;
    rxErrors?: number;
    rxErrorsOrigin?: number;
    rxErrorsSec?: number;
    rxErrorsValue?: number;
    rxPackets?: number;
    rxPacketsOrigin?: number;
    rxPacketsSec?: number;
    rxPacketsValue?: number;
    txBytes?: number;
    txBytesOrigin?: number;
    txBytesSec?: number;
    txBytesValue?: number;
    txDropped?: number;
    txDroppedOrigin?: number;
    txDroppedSec?: number;
    txDroppedValue?: number;
    txErrors?: number;
    txErrorsOrigin?: number;
    txErrorsSec?: number;
    txErrorsValue?: number;
}
export interface MonitorStatsNetworkInfo {
    softnet: {
        timestamp: number;
        squeezed?: number;
        squeezedDay?: number;
        squeezedHour?: number;
        processed?: number;
        processedDay?: number;
        processedHour?: number;
        processedMinute?: number;
        cpus: Array<{
            cpu: number;
            processed?: number;
            dropped?: number;
            squeezed?: number;
        }>;
    };
    sockstat: {
        timestamp: number;
        sockets?: Record<string, unknown>;
        tcp?: Record<string, unknown>;
        udp?: Record<string, unknown>;
        udplite?: Record<string, unknown>;
        raw?: Record<string, unknown>;
        frag?: Record<string, unknown>;
    };
    bonding: Array<NetworkInterfaceInfo & {
        slaves: string[];
        name: string;
        [key: string]: unknown;
    }>;
    eth: Array<NetworkInterfaceInfo & {
        speed?: number;
        rxUnicastBytes?: number;
        rxMulticastBytes?: number;
        rxBroadcastBytes?: number;
        [key: string]: unknown;
    }>;
}
