/* eslint-disable @typescript-eslint/no-namespace, @typescript-eslint/no-explicit-any */ export declare namespace Check { type status = 'pass' | 'fail' | 'warn' type Status = { status: status info?: string } namespace Function { type Sync = (s: T) => Status type Async = (s: T) => Promise } export type Function = Function.Sync | Function.Async namespace Suite { // The actual object type that gets used by invokeCollection export type withSource = { source: T; suite: Suite } // Nested Suites have been replaced with any function that returns the following export type Nested = Promise> // Top-Level Suites (Copc, Las, Getter) have been replaced with Collections export type Collection = (withSource | Nested)[] //withSource[] // a.k.a Arrays of Suite.withSource (or Promises) } export type Suite = { [id: string]: { function: Check.Function; description: string } } export type Parser = (source: S) => Suite.Nested

export type Collection = Suite.Collection export type CollectionFn = | ((...args: any[]) => Collection) | ((...args: any[]) => Promise) export type Check = Status & { id: string description: string } } export type Check = Check.Check