import type { SessionOutboundMessage } from "../shared/messages.js";
interface RuntimeMetricsLogger {
    info(obj: object, msg?: string): void;
}
interface RuntimeMetricsContext {
    connectionPath: "direct" | "relay";
    serverId: string | null;
    getConnectionStatus: () => string;
}
interface RuntimeMetricsOptions {
    windowMs?: number;
}
export declare class DaemonClientRuntimeMetrics {
    private readonly logger;
    private readonly context;
    private readonly startedAt;
    private readonly windowMs;
    private readonly buckets;
    private readonly inboundMessageCounts;
    private readonly inboundMessageBytes;
    private readonly inboundMessageHandlerMs;
    private readonly inboundAgentStreamCounts;
    private readonly inboundAgentStreamByAgentCounts;
    private readonly inboundBinaryFrameCounts;
    constructor(logger: RuntimeMetricsLogger, context: RuntimeMetricsContext, options?: RuntimeMetricsOptions);
    recordMessage(type: string, bytes: number, handlerMs: number): void;
    recordAgentStream(payload: Extract<SessionOutboundMessage, {
        type: "agent_stream";
    }>["payload"]): void;
    recordBinaryFrame(kind: string, bytes: number, handlerMs: number): void;
    flush(options?: {
        final?: boolean;
    }): void;
    private consumeCurrentBucket;
    private pruneBuckets;
    private aggregateBuckets;
}
export {};
//# sourceMappingURL=daemon-client-runtime-metrics.d.ts.map