export declare const TYPED_TEST: unique symbol; export interface Test { readonly [TYPED_TEST]: TestConfig; readonly runTest: (spec: TestSpec) => Promise; } export interface TestConfig { readonly name: string; readonly timeout?: number; readonly modifier?: 'only' | 'skip'; } export interface TestSpec { readonly timeout: number; readonly skip: boolean; } export declare type TestResult = PassedTestResult | SkippedTestResult | FailedTestResult | GroupResult; export declare type PassedTestResult = { readonly type: 'pass'; readonly name: string; }; export declare type SkippedTestResult = { readonly type: 'skip'; readonly name: string; }; export declare type FailedTestResult = { readonly type: 'fail'; readonly error: Error; readonly name: string; }; export declare type GroupResult = { readonly type: 'group'; readonly name: string; readonly results: TestResult[]; }; export interface TestMetadata extends NodeMetadata { readonly exportNames: string[]; readonly filePath: string; readonly additionalTests: NodeMetadata[]; } export interface NodeMetadata { readonly line: number; readonly lines: number; readonly position: [number, number]; readonly text: string; readonly additionalTests: NodeMetadata[]; } export declare type TestsWithMetadata = TestMetadata & { readonly tests: Test[]; }; export declare type TestsWithResults = TestsWithMetadata & { readonly results: TestResult[]; }; export declare type JsonResults = { [K in Exclude]: TestsWithResults[K]; }; export interface Logger { readonly log: (msg: string) => Promise; readonly error: (msg: string) => Promise; readonly clear: (msg: string) => Promise; }