import { Do, Effect, Kind1 } from './effect' import { Throw, Try } from './exception' import { Equals } from './util' export interface Config { // compileTimeTestFailures: false // stopAtFailure: true // TODO: stopAtFailure } 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 }