import { Guard } from './smartguard.classes.guard.js';
export interface IExecOptions {
    mode?: 'parallel' | 'serial';
    stopOnFail?: boolean;
}
/**
 * Extended GuardSet that inherits from Guard
 * and provides additional functionalities.
 */
export declare class GuardSet<T> extends Guard<T> {
    guards: Array<Guard<T>>;
    constructor(guardArray?: Array<Guard<T>>);
    /**
     * executes all guards in all guardSets against a data argument
     * @param dataArg
     */
    execAllWithData(dataArg: T, optionsArg?: IExecOptions): Promise<boolean[]>;
    /**
     * checks if all guards pass
     * @param dataArg
     */
    allGuardsPass(dataArg: T, optionsArg?: IExecOptions): Promise<boolean>;
    /**
     * checks if any guard passes
     * @param dataArg
     */
    anyGuardsPass(dataArg: T): Promise<boolean>;
    /**
     * returns the first reason for why something fails
     * @param dataArg
     * @returns
     */
    getFailedHint(dataArg: T): Promise<string>;
}
