import type { IRequest, IResponse } from '../../../src/index.js';
import type { QueueDriver } from './driver';
import type { LockAnalytics, QueueMonitorSnapshot } from './index';
import type { JobSummary, Metrics } from './metrics';
type QueueSnapshotData = {
    type: string;
    ts: string;
    queue: string | null;
    snapshot: QueueMonitorSnapshot;
    jobs: unknown[];
    locks: LockAnalytics;
};
type QueueMonitoringConfig = {
    getSnapshot: () => Promise<QueueMonitorSnapshot>;
    getLocks: (pattern?: string) => Promise<LockAnalytics>;
    getRecentJobsForQueue: (queue: string, metrics: Metrics, driver: QueueDriver) => Promise<unknown[]>;
    metrics: Metrics;
    driver: QueueDriver;
    queue: string;
    pattern: string;
    intervalMs: number;
};
export declare const QueueMonitoringService: Readonly<{
    subscribe(callback: (data: QueueSnapshotData) => void): void;
    unsubscribe(callback: (data: QueueSnapshotData) => void): void;
    startPollingForClient(config: QueueMonitoringConfig): void;
    stopPollingForClient(): void;
}>;
export declare const QueueMonitoringStream: (res: IResponse, req: IRequest, getSnapshot: () => Promise<QueueMonitorSnapshot>, getLocks: (pattern?: string) => Promise<LockAnalytics>, metrics: Metrics, driver: QueueDriver, settings: {
    basePath: string;
    refreshIntervalMs: number;
}) => void;
export declare function getRecentJobsForQueue(queueName: string, metrics: Metrics, driver: QueueDriver): Promise<JobSummary[]>;
export {};
//# sourceMappingURL=QueueMonitoringService.d.ts.map