import { logMessageProcessed, logMessageQueued, logSessionStateChange } from "../../logging/diagnostic.js";
import { type DispatchMiddleware } from "./dispatch-middleware.js";
export interface WithDiagnosticLoggingOptions {
    /**
     * Pin the wall-clock function so tests can assert deterministic
     * durationMs values. Defaults to Date.now.
     */
    now?: () => number;
    /**
     * Override the diagnostic loggers — primarily for tests. Production
     * uses the imports from logging/diagnostic.js.
     */
    loggers?: {
        logMessageQueued: typeof logMessageQueued;
        logMessageProcessed: typeof logMessageProcessed;
        logSessionStateChange: typeof logSessionStateChange;
    };
}
/**
 * Returns a DispatchMiddleware that fires diagnostic events around the
 * inner handler. Always proceeds to the inner; the inner's outcome is
 * forwarded unchanged. Logging is best-effort — failures don't propagate.
 */
export declare function withDiagnosticLogging(opts?: WithDiagnosticLoggingOptions): DispatchMiddleware;
