import Mocha from 'mocha'; export declare const fuzzyDescribe: { (title: string, fn: DescFunc): Mocha.Suite; only(title: string, fn: DescFunc): Mocha.Suite; }; declare type Done = (err?: any) => void; declare type DescFunc = (this: Mocha.Suite, fuzzy: typeof fuzzyTestRunnerCompose, done?: Done) => void; export declare function fuzzyTestRunnerCompose(): (testFn: (done: Done) => any, options?: FuzzyTestRunnerOptions) => any; export declare namespace fuzzyTestRunnerCompose { var Number: FuzzyArgType; var String: FuzzyArgType; var Str: FuzzyArgType; var Boolean: FuzzyArgType; var Bool: FuzzyArgType; var Object: FuzzyArgType; var Obj: FuzzyArgType; var Function: FuzzyArgType; var Func: FuzzyArgType; var Fn: FuzzyArgType; var Undefined: FuzzyArgType; var Null: FuzzyArgType; var either: (...argTypes: FuzzyArgType[]) => (validValue: T) => FuzzyArgDef; var optional: (...argTypes: FuzzyArgType[]) => (validValue: T | undefined) => FuzzyArgDef; var NumberArg: FuzzyArgDefFn; var StringArg: FuzzyArgDefFn; var StrArg: FuzzyArgDefFn; var EnumArg: FuzzyArgDefFn; var BooleanArg: FuzzyArgDefFn; var BoolArg: FuzzyArgDefFn; var ObjectArg: FuzzyArgDefFn; var ObjArg: FuzzyArgDefFn; var FunctionArg: FuzzyArgDefFn<(...args: any[]) => any>; var FuncArg: FuzzyArgDefFn<(...args: any[]) => any>; var FnArg: FuzzyArgDefFn<(...args: any[]) => any>; var UndefinedArg: FuzzyArgDefFn; var NullArg: FuzzyArgDefFn; } export declare function fuzzyTestRunnerCompose(args0: FuzzyArgDef): (testFn: (args0: FuzzyArg, done: Done) => any, options?: FuzzyTestRunnerOptions) => any; export declare namespace fuzzyTestRunnerCompose { var Number: FuzzyArgType; var String: FuzzyArgType; var Str: FuzzyArgType; var Boolean: FuzzyArgType; var Bool: FuzzyArgType; var Object: FuzzyArgType; var Obj: FuzzyArgType; var Function: FuzzyArgType; var Func: FuzzyArgType; var Fn: FuzzyArgType; var Undefined: FuzzyArgType; var Null: FuzzyArgType; var either: (...argTypes: FuzzyArgType[]) => (validValue: T) => FuzzyArgDef; var optional: (...argTypes: FuzzyArgType[]) => (validValue: T | undefined) => FuzzyArgDef; var NumberArg: FuzzyArgDefFn; var StringArg: FuzzyArgDefFn; var StrArg: FuzzyArgDefFn; var EnumArg: FuzzyArgDefFn; var BooleanArg: FuzzyArgDefFn; var BoolArg: FuzzyArgDefFn; var ObjectArg: FuzzyArgDefFn; var ObjArg: FuzzyArgDefFn; var FunctionArg: FuzzyArgDefFn<(...args: any[]) => any>; var FuncArg: FuzzyArgDefFn<(...args: any[]) => any>; var FnArg: FuzzyArgDefFn<(...args: any[]) => any>; var UndefinedArg: FuzzyArgDefFn; var NullArg: FuzzyArgDefFn; } export declare function fuzzyTestRunnerCompose(args0: FuzzyArgDef, args1: FuzzyArgDef): (testFn: (args0: FuzzyArg, args1: FuzzyArg, done: Done) => any, options?: FuzzyTestRunnerOptions) => any; export declare namespace fuzzyTestRunnerCompose { var Number: FuzzyArgType; var String: FuzzyArgType; var Str: FuzzyArgType; var Boolean: FuzzyArgType; var Bool: FuzzyArgType; var Object: FuzzyArgType; var Obj: FuzzyArgType; var Function: FuzzyArgType; var Func: FuzzyArgType; var Fn: FuzzyArgType; var Undefined: FuzzyArgType; var Null: FuzzyArgType; var either: (...argTypes: FuzzyArgType[]) => (validValue: T) => FuzzyArgDef; var optional: (...argTypes: FuzzyArgType[]) => (validValue: T | undefined) => FuzzyArgDef; var NumberArg: FuzzyArgDefFn; var StringArg: FuzzyArgDefFn; var StrArg: FuzzyArgDefFn; var EnumArg: FuzzyArgDefFn; var BooleanArg: FuzzyArgDefFn; var BoolArg: FuzzyArgDefFn; var ObjectArg: FuzzyArgDefFn; var ObjArg: FuzzyArgDefFn; var FunctionArg: FuzzyArgDefFn<(...args: any[]) => any>; var FuncArg: FuzzyArgDefFn<(...args: any[]) => any>; var FnArg: FuzzyArgDefFn<(...args: any[]) => any>; var UndefinedArg: FuzzyArgDefFn; var NullArg: FuzzyArgDefFn; } export declare function fuzzyTestRunnerCompose(args0: FuzzyArgDef, args1: FuzzyArgDef, args2: FuzzyArgDef): (testFn: (args0: FuzzyArg, args1: FuzzyArg, args2: FuzzyArg, done: Done) => any, options?: FuzzyTestRunnerOptions) => any; export declare namespace fuzzyTestRunnerCompose { var Number: FuzzyArgType; var String: FuzzyArgType; var Str: FuzzyArgType; var Boolean: FuzzyArgType; var Bool: FuzzyArgType; var Object: FuzzyArgType; var Obj: FuzzyArgType; var Function: FuzzyArgType; var Func: FuzzyArgType; var Fn: FuzzyArgType; var Undefined: FuzzyArgType; var Null: FuzzyArgType; var either: (...argTypes: FuzzyArgType[]) => (validValue: T) => FuzzyArgDef; var optional: (...argTypes: FuzzyArgType[]) => (validValue: T | undefined) => FuzzyArgDef; var NumberArg: FuzzyArgDefFn; var StringArg: FuzzyArgDefFn; var StrArg: FuzzyArgDefFn; var EnumArg: FuzzyArgDefFn; var BooleanArg: FuzzyArgDefFn; var BoolArg: FuzzyArgDefFn; var ObjectArg: FuzzyArgDefFn; var ObjArg: FuzzyArgDefFn; var FunctionArg: FuzzyArgDefFn<(...args: any[]) => any>; var FuncArg: FuzzyArgDefFn<(...args: any[]) => any>; var FnArg: FuzzyArgDefFn<(...args: any[]) => any>; var UndefinedArg: FuzzyArgDefFn; var NullArg: FuzzyArgDefFn; } declare enum FuzzyArgType { Number = 0, String = 1, Boolean = 2, Object = 3, Function = 4, Undefined = 5, Null = 6 } declare type FuzzyArgDefFn = (validValue: T) => FuzzyArgDef; declare type FuzzyArgDef = { types: FuzzyArgType[]; validValue: T; }; export declare type FuzzyTestRunnerOptions = { invalidArgsOnly?: boolean; passDone?: boolean; }; declare type FuzzyArg = { type: FuzzyArgType; valid: true; value: T; } | { type: FuzzyArgType; valid: false; value: any; }; export {}; //# sourceMappingURL=suite.d.ts.map