import type { Assert } from './prelude.js' type Z = (value: A) => B type And = { (a: Assert): Assert (a: Assert, b: Z): Assert (a: Assert, b: Z, c: Z): Assert (a: Assert, b: Z, c: Z, d: Z): Assert } const and: And = (...as: Assert[]) => (value: unknown) => { for (const a of as) { a(value) } return value } export default and