import { Optional } from '../types/Types';
import { Construct } from '../types/Constructor';
export declare function ifType<Out, T>(o: unknown, predicate: (o: unknown) => o is T, f: Construct<Out, T>, alt: Construct<Out>): Out;
export declare function ifType<Out, T>(o: unknown, predicate: (o: unknown) => o is T, f: Construct<Out, T>, alt?: Construct<Out>): Optional<Out>;
export declare function ifString<Out>(o: unknown, f: Construct<Out, string>, alt: Construct<Out>): Out;
export declare function ifString<Out>(o: unknown, f: Construct<Out, string>, alt?: Construct<Out>): Optional<Out>;
export declare function ifNumber<Out>(o: unknown, f: Construct<Out, number>, alt: Construct<Out>): Out;
export declare function ifNumber<Out>(o: unknown, f: Construct<Out, number>, alt?: Construct<Out>): Optional<Out>;
export declare function ifBoolean<Out>(o: unknown, f: Construct<Out, boolean>, alt: Construct<Out>): Out;
export declare function ifBoolean<Out>(o: unknown, f: Construct<Out, boolean>, alt?: Construct<Out>): Optional<Out>;
export declare function ifArray<Out, T = unknown>(o: unknown, f: Construct<Out, T[]>, alt: Construct<Out>): Out;
export declare function ifArray<Out, T = unknown>(o: unknown, f: Construct<Out, T[]>, alt?: Construct<Out>): Optional<Out>;
export declare function ifObject<Out>(o: unknown, f: Construct<Out, Record<string, unknown>>, alt: Construct<Out>): Out;
export declare function ifObject<Out>(o: unknown, f: Construct<Out, Record<string, unknown>>, alt?: Construct<Out>): Optional<Out>;
