import { Identity } from "../hkt"; import { $All } from "../hkt/list"; import { IsEmpty, List } from "../list"; /** * gets the boolean AND of booleans `A` and `B`. * * @remarks * does not distribute over `A` or `B`. * * @undefined_behavior `A` is `any`, `unknown`, `never`, or `boolean` * @undefined_behavior `B` is `any`, `unknown`, `never`, or `boolean` * * @since 0.0.2 * * @example * ```ts * type e0 = And // true * type e1 = And // true * type e1 = And // true * type e2 = And // false * type e3 = And // false * type e4 = And // false * type e5 = And // false * ``` */ export type And = [ A ] extends [true] ? [B] extends [true] ? true : false : false; export declare namespace And { /** * gets the boolean AND of booleans `A` and `B` * * @remarks * distributes over `A` and `B` * * @undefined_behavior `A` is `any`, `unknown`, `never`, or `boolean` * @undefined_behavior `B` is `any`, `unknown`, `never`, or `boolean` * * @since 0.0.9 */ type Distributive = A extends true ? B extends true ? true : false : false; /** * unbounded logical AND * * @undefined_behavior an element is `any`, `unknown`, `never`, or `boolean` * * @since 0.0.9 */ type Unbounded, Vacuous = true> = IsEmpty extends true ? Vacuous : $All, L>; } //# sourceMappingURL=and.d.ts.map