// Browser-runnable exercises (spec 4.3 type 6) export type ExerciseLanguage = "js" | "ts"; export interface Assert { equal(actual: unknown, expected: unknown, message?: string): void; deepEqual(actual: unknown, expected: unknown, message?: string): void; ok(value: unknown, message?: string): void } export interface ExerciseTest { name: string; run(mod: Record, assert: Assert): void | Promise } // A tests file is an ES module: `export const tests: ExerciseTest[]`. Learner code is an ES module. export interface TestResult { name: string; passed: boolean; message?: string; expected?: string; actual?: string } export interface ExerciseRunner { language: ExerciseLanguage; run(learnerCode: string, testsModule: string, timeoutMs: number): Promise }