import { Do, Effect, Kind1 } from './effect' import { Throw, Try } from './exception' import { Equals } from './util' /** * Assert a boolean expression is true * * @typeParam _B - The boolean value to assert * * @throws {"assertion error"} if false * * @example * Here's an example checking if `SomeValue` is not equal to [1,2,3] * Uses - {@link util.Not}, {@link util.Equals} * * ```ts * Assert>> * ``` */ export interface Assert<_B extends boolean> extends Effect {} export interface Test<_m extends string, _effs extends Effect[]> extends Effect {} export interface ShowAssertionError<_L extends unknown, _R extends unknown> extends Effect {} export type AssertEquals = Try< Assert>, () => Do<[ShowAssertionError, Throw]> > export interface AssertEqualsK extends Kind1 { return: AssertEquals }