export interface AgentInfo {
    readonly id: string;
    readonly name: string;
    readonly capabilities: readonly string[];
    readonly host: string;
    readonly port: number;
    readonly resources?: AgentResources;
}
export interface AgentResources {
    readonly cpuCores?: number;
    readonly memoryMB?: number;
    readonly gpuAvailable?: boolean;
    readonly gpuModel?: string;
}
export interface AgentStatus {
    readonly id: string;
    readonly name: string;
    readonly state: 'online' | 'offline' | 'degraded';
    readonly capabilities: readonly string[];
    readonly lastHeartbeat: number;
    readonly connectedSince?: number;
    readonly resources?: AgentResources;
    readonly activeTaskCount: number;
    readonly completedTaskCount: number;
    readonly failedTaskCount: number;
}
export interface AgentTask {
    readonly id: string;
    readonly capability: string;
    readonly input: Record<string, unknown>;
    readonly timeout: number;
    readonly priority: 'low' | 'normal' | 'high';
    readonly label?: string;
}
export interface AgentTaskResult {
    readonly taskId: string;
    readonly agentId: string;
    readonly status: 'success' | 'error' | 'timeout';
    readonly output?: Record<string, unknown>;
    readonly error?: string;
    readonly durationMs: number;
}
export interface TaskDispatchOptions {
    readonly preferredAgent?: string;
    readonly capability: string;
    readonly remoteOnly?: boolean;
}
export interface AgentEntry {
    readonly info: AgentInfo;
    state: 'online' | 'offline' | 'degraded';
    connectedSince: number;
    lastHeartbeat: number;
    activeTaskCount: number;
    completedTaskCount: number;
    failedTaskCount: number;
}
/**
 * Compact health summary returned by `$agent.health` and the hub
 * `/health/agents/:nodeId` endpoint. Distinct from `$agent.status` —
 * health is a fast probe shape (no expensive metrics, fixed schema)
 * suitable for monitoring/k8s/uptime checks.
 */
export interface AgentHealth {
    readonly ok: boolean;
    readonly nodeId: string;
    readonly name: string;
    readonly version: string;
    readonly uptimeSeconds: number;
    readonly pid: number;
    readonly hubConnected: boolean;
    readonly hubAddress: string | null;
    readonly addons: AgentHealthAddonCounts;
    readonly cpuPercent: number;
    readonly memoryPercent: number;
    /** ISO timestamp when this snapshot was generated. */
    readonly checkedAt: string;
}
export interface AgentHealthAddonCounts {
    readonly total: number;
    readonly running: number;
    readonly error: number;
}
/** Hub self-health, returned by `GET /health`. */
export interface HubHealth {
    readonly ok: boolean;
    readonly nodeId: 'hub';
    readonly version: string;
    readonly uptimeSeconds: number;
    readonly pid: number;
    readonly agents: HubHealthAgentCounts;
    readonly cpuPercent: number;
    readonly memoryPercent: number;
    readonly checkedAt: string;
}
export interface HubHealthAgentCounts {
    readonly total: number;
    readonly online: number;
    readonly offline: number;
}
/** Aggregate cluster health, returned by `GET /health/cluster`. */
export interface ClusterHealth {
    readonly ok: boolean;
    readonly hub: HubHealth;
    readonly agents: ReadonlyArray<AgentHealth | AgentHealthError>;
    readonly checkedAt: string;
}
export interface AgentHealthError {
    readonly ok: false;
    readonly nodeId: string;
    readonly error: string;
}
/** Shape returned by agents.listAgents — enriched agent entry with status and process info */
export interface AgentListItem {
    readonly info: {
        readonly id: string;
        readonly name: string;
        readonly hostname?: string;
        readonly capabilities: readonly string[];
        readonly host?: string;
        readonly port?: number;
        readonly platform?: string;
        readonly arch?: string;
        readonly cpuModel?: string;
        readonly cpuCores?: number;
        readonly memoryMB?: number;
        readonly gpuAvailable?: boolean;
        readonly gpuModel?: string;
        readonly pythonRuntimes?: readonly string[];
        readonly httpPort?: number;
        readonly installedAddons?: readonly string[];
    };
    readonly status: {
        readonly activeCameras: number;
        readonly cpuPercent: number;
        readonly memoryPercent: number;
        readonly fps: Readonly<Record<string, number>>;
        readonly errors: readonly string[];
    };
    readonly connectedSince: number;
    readonly isHub: boolean;
    readonly isOnline?: boolean;
    readonly subProcesses: readonly unknown[];
    /** Addon IDs reported by $agent.status (for non-hub nodes) */
    readonly agentAddons?: readonly string[];
    /** Local IP addresses visible on the network */
    readonly localIps?: readonly string[];
}
//# sourceMappingURL=agent.d.ts.map