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 } // TODO: export interface AssertFails?