import type { IncomingMessage, ServerResponse } from 'node:http';
import type { CurriculumService } from '../services/curriculum.js';
import type { QAService } from '../services/qa.js';
import type { VizService } from '../services/viz.js';
import type { ExerciseService } from '../services/exercises.js';
export declare function writeJSON(res: ServerResponse, data: unknown, status?: number): void;
export declare function parseBody(req: IncomingMessage): Promise<unknown>;
export declare function extractId(url: string, prefix: string): number | null;
export declare function handleSubjects(curriculumSvc: CurriculumService): (_req: IncomingMessage, res: ServerResponse) => void;
export declare function handlePhases(curriculumSvc: CurriculumService): (req: IncomingMessage, res: ServerResponse) => void;
export declare function handleTopic(curriculumSvc: CurriculumService, qaSvc: QAService): (req: IncomingMessage, res: ServerResponse) => void;
export declare function handleTopicViz(vizSvc: VizService): (req: IncomingMessage, res: ServerResponse) => void;
export declare function handleTopicExercises(exerciseSvc: ExerciseService): (req: IncomingMessage, res: ServerResponse) => void;
export declare function handleRunTests(exerciseSvc: ExerciseService): (req: IncomingMessage, res: ServerResponse) => Promise<void>;
export declare function handleSubmitQuiz(exerciseSvc: ExerciseService): (req: IncomingMessage, res: ServerResponse) => Promise<void>;
export declare function handleSearch(qaSvc: QAService): (req: IncomingMessage, res: ServerResponse) => void;
