type Constructor = new (...args: any[]) => T; export type Primitive = string | number | symbol | boolean | undefined | null; export declare let collectError: boolean; export declare function setCollect(flag: boolean): void; export declare abstract class Validator { path?: string; errors: string[]; abstract validate(x: unknown): x is T; protected fail(message: string): false; protected fail(options: { expect: string; actual: unknown; }): false; hasFallback: boolean; _fallback?: T; fallback(v: T): this; get fallbackValue(): T; hasDefault: boolean; protected _default?: T; default(v: T): this; get defaultValue(): T; _optional: boolean; optional(): Validator; } export declare function isNumber(x: unknown): x is number; export declare function echo(x: unknown): string; export declare function getType(x: unknown): string; export declare class $number extends Validator { private _min?; private _max?; private _isInt?; private _greater?; validate(x: unknown): x is number; min(v: number): this; max(v: number): this; isInt(v: boolean): this; greater(v: number): this; } export declare class $boolean extends Validator { validate(x: unknown): x is boolean; } export declare class $string extends Validator { private _minLength?; private _maxLength?; private _pattern?; validate(x: unknown): x is string; minLength(len: number): this; maxLength(len: number): this; pattern(patten: string | RegExp): this; } export declare class $symbol extends Validator { validate(x: unknown): x is symbol; } export declare class $any extends Validator { validate(x: unknown): x is T; } export declare class $undefined extends Validator { validate(x: unknown): x is undefined; } export declare class $null extends Validator { validate(x: unknown): x is null; } export declare class $function extends Validator<(...args: any[]) => any> { validate(x: unknown): x is (...args: any[]) => any; } export declare class $enum extends Validator { private readonly _items; constructor(..._items: (string | number | undefined)[]); validate(x: unknown): x is T; } export declare class $array extends Validator { private readonly _item?; private _minItems?; private _maxItems?; private _uniqueItems?; private _length?; constructor(_item?: Validator | undefined); validate(x: unknown): x is T[]; minItems(len: number): this; maxItems(len: number): this; uniqueItems(): this; length(len: number): this; } export declare class $record extends Validator> { private readonly _value; constructor(_value: Validator); validate(x: unknown): x is Record; } export declare class $object extends Validator { private readonly _object; constructor(_object?: Record); validate(x: unknown): x is T; } export declare class $literal extends Validator { private readonly value; constructor(value: T); validate(x: unknown): x is T; } export declare class $or extends Validator { private readonly _items; constructor(..._items: Validator[]); validate(x: unknown): x is T; } export declare class $tuple extends Validator { private readonly _items; private readonly _minItems; constructor(..._items: Validator[]); validate(x: unknown): x is T; } export declare class $arraybuffer extends Validator { validate(x: unknown): x is ArrayBuffer; } export type TypedArray = Uint8Array | Int8Array | Uint8ClampedArray | Uint16Array | Int16Array | Uint32Array | Int32Array | Float32Array | Float64Array; export declare class $typedarray extends Validator { private readonly _ctor; constructor(ctor: Constructor); validate(x: unknown): x is T; } export {};