import { type DecodeContext, type RTError, Type } from './type.js'; import { type Result } from './utils.js'; export declare class ConstantType extends Type { value: T; constructor(value: T); print(): string; decode(u: unknown, _opts: DecodeContext): import("./utils.js").Err | import("./utils.js").Ok; validate(v: T, opts: DecodeContext): Promise>; validateSync(v: T, opts: DecodeContext): Result; } export declare const undefinedValue: ConstantType; export declare const nullValue: ConstantType; export declare const trueValue: ConstantType; export declare const falseValue: ConstantType; export declare class StringType extends Type { print(): string; decode(u: unknown, opts: DecodeContext): Result; validate(v: string, opts: DecodeContext): Promise>; validateSync(v: string, opts: DecodeContext): Result; in(...list: string[]): this; length(minLen: number, maxLen?: number): this; minLength(len: number): this; maxLength(len: number): this; matches(pattern: RegExp): this; email(): this; } export declare const string: StringType; export declare class NumberType extends Type { print(): string; decode(u: unknown, opts: DecodeContext): Result; validate(v: number, opts: DecodeContext): Promise>; validateSync(v: number, opts: DecodeContext): Result; in(...list: number[]): this; integer(): this; min(min: number): this; max(max: number): this; between(min: number, max: number): this; } export declare const number: NumberType; export declare class IntegerType extends NumberType { print(): string; decode(u: unknown, opts: DecodeContext): import("./utils.js").Err | import("./utils.js").Ok; } export declare const integer: IntegerType; export declare const id: IntegerType; export declare class BooleanType extends Type { print(): string; decode(u: unknown, opts: DecodeContext): Result; validate(v: boolean, opts: DecodeContext): Promise>; validateSync(v: boolean, opts: DecodeContext): Result; true(): this; false(): this; } export declare const boolean: BooleanType; export declare class DateType extends Type { print(): string; decode(u: unknown, opts: DecodeContext): Result; validate(v: Date, opts: DecodeContext): Promise>; validateSync(v: Date, opts: DecodeContext): Result; } export declare const date: DateType; export declare class AnyType extends Type { print(): string; decode(u: unknown, _opts: DecodeContext): Result; validate(v: any, opts: DecodeContext): Promise>; validateSync(v: any, opts: DecodeContext): Result; } export declare const any: AnyType; export declare class UnknownType extends Type { print(): string; decode(u: unknown, _opts: DecodeContext): import("./utils.js").Ok; validate(v: unknown, opts: DecodeContext): Promise>; validateSync(v: unknown, opts: DecodeContext): Result; } export declare const unknown: UnknownType; export declare class DefinedType extends Type<{}> { print(): string; decode(u: unknown, _opts: DecodeContext): import("./utils.js").Err | import("./utils.js").Ok<{}>; validate(v: {}, opts: DecodeContext): Promise>; validateSync(v: {}, opts: DecodeContext): Result<{}, RTError>; } export declare const defined: DefinedType; export declare class UnknownObjectType extends Type { print(): string; decode(u: unknown, _opts: DecodeContext): import("./utils.js").Err | import("./utils.js").Ok; validate(v: object, opts: DecodeContext): Promise>; validateSync(v: object, opts: DecodeContext): Result; } export declare const unknownObject: UnknownObjectType; export declare class BigIntType extends Type { print(): string; decode(u: unknown, opts: DecodeContext): Result; validate(v: bigint, opts: DecodeContext): Promise>; validateSync(v: bigint, opts: DecodeContext): Result; min(min: bigint): this; max(max: bigint): this; between(min: bigint, max: bigint): this; positive(): this; negative(): this; nonNegative(): this; } export declare const bigint: BigIntType; export declare class SymbolType extends Type { print(): string; decode(u: unknown, _opts: DecodeContext): import("./utils.js").Err | import("./utils.js").Ok; validate(v: symbol, opts: DecodeContext): Promise>; validateSync(v: symbol, opts: DecodeContext): Result; } export declare const symbol: SymbolType; export declare class VoidType extends Type { print(): string; decode(u: unknown, _opts: DecodeContext): import("./utils.js").Err | import("./utils.js").Ok; validate(v: undefined, opts: DecodeContext): Promise>; validateSync(v: undefined, opts: DecodeContext): Result; } export declare const voidType: VoidType; export declare class NeverType extends Type { print(): string; decode(_u: unknown, _opts: DecodeContext): Result; validate(_v: never, _opts: DecodeContext): Promise>; validateSync(_v: never, _opts: DecodeContext): Result; } export declare const never: NeverType; type Scalar = boolean | number | string; export declare class LiteralType> extends Type { values: T; constructor(values: T); print(): string; decode(u: unknown, _opts: DecodeContext): import("./utils.js").Err | import("./utils.js").Ok; validate(v: T[number], opts: DecodeContext): Promise>; validateSync(v: T[number], opts: DecodeContext): Result; in(...list: T[number][]): this; } export declare function literal>(...values: T): LiteralType; export {};