import type { Lazy } from "../../Function/index.js";
import * as ST from "../../Structural/index.js";
import type * as ARM from "../AssertionResultM/index.js";
import * as PR from "../Primitives/index.js";
import type * as R from "../Render/index.js";
/**
* An `AssertionM[A]` is capable of producing assertion results on an `A`. As a
* proposition, assertions compose using logical conjunction and disjunction,
* and can be negated.
*/
export declare abstract class AssertionM implements ST.HasEquals {
readonly render: () => R.Render;
readonly runM: (a: Lazy) => ARM.AssertResultM;
readonly [PR._A]: (_: A) => void;
constructor(render: () => R.Render, runM: (a: Lazy) => ARM.AssertResultM);
get stringify(): string;
toString(): string;
[ST.equalsSym](that: unknown): boolean;
get [ST.hashSym](): number;
}
export declare function isAssertionM(that: unknown): that is AssertionM;
//# sourceMappingURL=AssertionM.d.ts.map