interface IVerifier { verify(value: unknown): T; } declare abstract class Verifier implements IVerifier { protected readonly defaultValue: T; constructor(defaultValue: T); verify(value: unknown): T; protected abstract isType(value: unknown): value is T; } export declare class BooleanVerifier extends Verifier { protected isType(value: unknown): value is boolean; } export declare class NumberVerifier extends Verifier { protected isType(value: unknown): value is number; } export declare class SetVerifier extends Verifier> { protected isType(value: unknown): value is Set; } export declare class EnumVerifier extends Verifier { private readonly allowedValues; constructor(defaultValue: T, allowedValues: ReadonlyArray); protected isType(value: unknown): value is T; } export declare class ObjectVerifier extends Verifier { private readonly verifier; constructor(defaultValue: T, verifier: { [K in keyof T]: IVerifier; }); verify(value: unknown): T; protected isType(value: unknown): value is T; } export declare function verifyObject(verifiers: { [K in keyof T]: IVerifier; }, value: Object): T; export {};