import type { LabeledRule, SelfContainedAssertion, SelfContainedAssertions, SelfContainedRule, SelfContainedRules } from "./types";
/**
 * Runs all rules and throws an error if any has failed.
 * The failed rules are included in the error.
 *
 * @category Rules
 */
export declare class Ruleset {
    protected assertions: SelfContainedAssertion[];
    protected rules: SelfContainedRule[];
    /**
     * Evaluates all assertions **synchronously** and throws an error if any has failed.
     *
     * @throws {@link RulesBroken} if any rule has failed.
     *
     * @example
     * {@includeCode ../../../../examples/snippets/rules.ts#ruleset-ensureAll}
     */
    static ensureAll(...assertions: SelfContainedAssertions[]): void;
    /**
     * Evaluates all rules **asynchronously** and throws an error if any has failed.
     *
     * @throws {@link RulesBroken} if any rule has failed
     *
     * @example
     * {@includeCode ../../../../examples/snippets/rules.ts#email-unique,ruleset-workOn}
     */
    static workOn(...rules: SelfContainedRules[]): Promise<void>;
    constructor(assertions: SelfContainedAssertion[], rules: SelfContainedRule[]);
    mustHold(): Promise<void>;
    ensure(): void;
    protected failedAssertions(): LabeledRule[];
    protected brokenRules(): Promise<LabeledRule[]>;
    protected throwIfNotEmpty(brokenRules: LabeledRule[]): void;
}
//# sourceMappingURL=Ruleset.d.ts.map