import type { FastifyInstance } from 'fastify';
import type { ReviewProgress, ProgressEvent } from '../modules/review-execution/entities/progress/progress.type.js';
import type { BackfillProgress } from '../modules/statistics-insights/entities/backfill/backfillProgress.js';
import type { BudgetStatusViewModel } from '../modules/token-accounting/interface-adapters/presenters/budgetStatus.presenter.js';
import type { Dependencies } from './dependencies.js';
export declare function getWsClientsCount(): number;
export declare function broadcastProgress(jobId: string, progress: ReviewProgress, event?: ProgressEvent): void;
export declare function broadcastPendingChanged(): void;
export declare function broadcastBackfillProgress(progress: BackfillProgress): void;
export interface BudgetExceededPayload {
    mrNumber: number;
    platform: 'gitlab' | 'github';
    projectPath: string;
    limitUsd: number;
    consumedUsd: number;
}
export declare function buildBudgetStatusMessage(viewModel: BudgetStatusViewModel): string;
export declare function buildBudgetExceededMessage(payload: BudgetExceededPayload): string;
export declare function broadcastBudgetStatus(viewModel: BudgetStatusViewModel): void;
export declare function broadcastBudgetExceeded(payload: BudgetExceededPayload): void;
export declare function setupWebSocketCallbacks(deps: Pick<Dependencies, 'reviewContextWatcher' | 'progressPresenter'>): void;
export declare function startWatchingReviewContext(jobId: string, localPath: string, mergeRequestId: string): void;
export declare function stopWatchingReviewContext(mergeRequestId: string): void;
export declare function registerWebSocketRoutes(app: FastifyInstance, deps: Pick<Dependencies, 'logger'>): Promise<void>;
//# sourceMappingURL=websocket.d.ts.map