export type Type = Schema.Unwrap; export declare namespace Schema { type Unwrap = X extends Schema ? T : never; type UnwrapAll = { [K in keyof X]: Unwrap; }; type Wrap = SchemaBase; type WrapAll = { [K in keyof X]: Wrap; }; } export type SchemaBase = Schema | (T extends LiteralSchema ? T : never); export type LiteralSchema = string | number | bigint | symbol | boolean | null | undefined; type Filter = (x: T) => boolean; interface SchemaOptions { displayName?: string; iter?: () => Iterator; } export declare class Schema { static check(base: SchemaBase, x: unknown): x is T; static is(base: SchemaBase, x: unknown): x is T; static displayName(base: SchemaBase): string; static every(base: SchemaBase, predicate: (value: T, index: number, array: T[]) => boolean): boolean; static from(base: SchemaBase): Schema; /** * Used to iterate through all possible values accepted by the schema, * for certain finite types */ readonly [Symbol.iterator]: () => Iterator; private readonly _check; readonly displayName: string; constructor(base: ((x: unknown) => x is T) | SchemaBase, options?: SchemaOptions); /** * A method used to check if a given value matches the schema */ check(x: unknown): x is T; that(...filters: Array>): Schema; toString(): string; } export {};