import {OperatorStub} from '@supertape/operator-stub'; export {Stub, stub} from '@cloudcmd/stub'; type OperationBaseResult = { is: boolean; expected: unknown; result: unknown; message: string; output: string; }; export type OperationResult = OperationBaseResult | Promise; export type OperatorFn = (...args: unknown[]) => OperationResult; export interface Operator {} export interface Test extends Operator, OperatorStub { equal(result: unknown, expected: unknown, message?: string): OperationResult; notEqual(result: unknown, expected: unknown, message?: string): OperationResult; deepEqual(result: unknown, expected: unknown, message?: string): OperationResult; notDeepEqual(result: unknown, expected: unknown, message?: string): OperationResult; fail(message: string): OperationResult; pass(message: string): OperationResult; ok(result: boolean | unknown, message?: string): OperationResult; comment(message: string): OperationResult; notOk(result: boolean | unknown, message?: string): OperationResult; match(result: string, pattern: string | RegExp, message?: string): OperationResult; notMatch(result: string, pattern: string | RegExp, message?: string): OperationResult; end(): void; } export type TestOptions = { checkAssertionsCount?: boolean; checkScopes?: boolean; checkDuplicates?: boolean; timeout?: number; }; export type TestFunction = ((message: string, fn: (t: T) => void, options?: TestOptions) => void) & { skip: TestFunction; only: TestFunction; }; export let test: TestFunction; export default test; export type OperatorFactory OperationResult = (...args: any[]) => OperationResult> = (operator: Test) => T; export type CustomOperator = Record; type OperatorsToMethods = { [K in keyof T]: T[K] extends (...args: any[]) => infer R ? R : never; }; export declare function extend(operators: T): TestFunction>; export let isOnlyTests: () => boolean; export let isSkipTests: () => boolean; export let isFailTests: () => boolean; export let callWhenTestsEnds: (name: string, fn: () => number | void) => void;