declare namespace Types {
    type One<T extends boolean = boolean> = T;
    type OneNullable<T extends boolean = boolean> = One<T> | null;
    type Array<T extends boolean = boolean> = One<T>[];
    type ArrayNullable<T extends boolean = boolean> = Array<T> | null;
}
declare namespace Boolean {
    type AssertsTemplate<R> = {
        boolean(value: unknown, message?: string): asserts value is R;
    };
    type ValueIsTemplate<R> = {
        boolean(value: unknown): value is R;
    };
}
declare namespace True {
    type AssertsTemplate<R> = {
        true(value: unknown, message?: string): asserts value is R;
    };
    type ValueIsTemplate<R> = {
        true(value: unknown): value is R;
    };
}
declare namespace False {
    type AssertsTemplate<R> = {
        false(value: unknown, message?: string): asserts value is R;
    };
    type ValueIsTemplate<R> = {
        false(value: unknown): value is R;
    };
}
export declare namespace BooleanFunctions {
    namespace Asserts {
        type One = Boolean.AssertsTemplate<Types.One> & True.AssertsTemplate<Types.One<true>> & False.AssertsTemplate<Types.One<false>>;
        type OneNullable = Boolean.AssertsTemplate<Types.OneNullable> & True.AssertsTemplate<Types.OneNullable<true>> & False.AssertsTemplate<Types.OneNullable<false>>;
        type Array = Boolean.AssertsTemplate<Types.Array> & True.AssertsTemplate<Types.Array<true>> & False.AssertsTemplate<Types.Array<false>>;
        type ArrayNullable = Boolean.AssertsTemplate<Types.ArrayNullable> & True.AssertsTemplate<Types.ArrayNullable<true>> & False.AssertsTemplate<Types.ArrayNullable<false>>;
    }
    namespace ValueIs {
        type One = Boolean.ValueIsTemplate<Types.One> & True.ValueIsTemplate<Types.One<true>> & False.ValueIsTemplate<Types.One<false>>;
        type OneNullable = Boolean.ValueIsTemplate<Types.OneNullable> & True.ValueIsTemplate<Types.OneNullable<true>> & False.ValueIsTemplate<Types.OneNullable<false>>;
        type Array = Boolean.ValueIsTemplate<Types.Array> & True.ValueIsTemplate<Types.Array<true>> & False.ValueIsTemplate<Types.Array<false>>;
        type ArrayNullable = Boolean.ValueIsTemplate<Types.ArrayNullable> & True.ValueIsTemplate<Types.ArrayNullable<true>> & False.ValueIsTemplate<Types.ArrayNullable<false>>;
    }
}
export {};
