import { EnumObject, InitModelOf, ObjectOrModel, ObjectWithType, Predicate, StatusModel } from '../index';
export declare class Status implements StatusModel, ObjectWithType {
    model: StatusModel;
    objectType: string;
    message: string;
    severity: StatusSeverity;
    iconId: string;
    code: number;
    children: Status[];
    deletable: boolean;
    uiState: string;
    constructor(model?: InitModelOf<Status>);
    static Severity: {
        readonly OK: 1;
        readonly INFO: 256;
        readonly WARNING: 65536;
        readonly ERROR: 16777216;
    };
    static SEVERITY_CSS_CLASSES: string;
    cssClass(): string;
    /**
     * @returns true if severity is OK or INFO, false if severity is WARNING or ERROR.
     */
    isValid(): boolean;
    isError(): boolean;
    isWarning(): boolean;
    isInfo(): boolean;
    isOk(): boolean;
    /**
     * @returns status including all children recursively as flat array.
     */
    asFlatList(): Status[];
    /**
     * @returns a clone of this Status instance.
     */
    clone(): Status;
    equals(o: any): boolean;
    /**
     * Note: we cannot 'overload' this function, because predicates and status-types are both functions,
     * thus we cannot distinguish them by type or instanceof.
     *
     * @returns whether or not this status contains a child with the give type
     */
    containsStatus(statusType: abstract new () => Status): boolean;
    containsStatusByPredicate(predicate: Predicate<Status>): boolean;
    addStatus(status: Status): void;
    /**
     * Removes all children of the given type from this status. The type is checked by inheritance.
     */
    removeAllStatus(statusType: abstract new () => Status): void;
    removeAllStatusByPredicate(predicate: Predicate<Status>): void;
    protected _updateProperties(): void;
    /**
     * @returns whether this status has children (= multi status)
     */
    hasChildren(): boolean;
    /**
     * In some cases we need to transform an error status without children to a multi-status with children.
     * @returns If this instance already has children, a clone of the instance. Otherwise, a new instance with the current instance as first child.
     */
    ensureChildren(): Status;
    /**
     * Null-safe static clone method.
     */
    static clone(original: Status): Status;
    static cssClassForSeverity(severity: StatusSeverity): string;
    static animateStatusMessage($status: JQuery, message: string): void;
    /**
     * @returns a {@link Status} object with severity OK.
     */
    static ok(model?: StatusModel | string): Status;
    /**
     * @returns a {@link Status} object with severity INFO.
     */
    static info(model?: StatusModel | string): Status;
    /**
     * @returns a {@link Status} object with severity WARNING.
     */
    static warning(model?: StatusModel | string): Status;
    /**
     * @returns a {@link Status} object with severity ERROR.
     */
    static error(model?: StatusModel | string): Status;
    static ensureModel(model: StatusModel | string, severity: StatusSeverity | StatusSeverityNames): StatusModel;
    /**
     * @returns all {@link  Status} objects as flat array (recursively goes through the status hierarchy)
     */
    static asFlatList(status: Status): Status[];
    /**
     * Returns a constructor function for the given class-name.
     *
     * @returns Status constructor
     */
    static classForName(className: StatusType): new (model?: StatusModel) => Status;
    static ensure<T extends Status = Status>(status: StatusOrModel<T>): T;
}
export type StatusSeverity = EnumObject<typeof Status.Severity>;
export type StatusSeverityNames = keyof typeof Status.Severity;
export type StatusOrModel<T extends Status = Status> = ObjectOrModel<T>;
export type StatusType = 'Status' | 'DefaultStatus' | 'ParsingFailedStatus' | 'ValidationFailedStatus';
//# sourceMappingURL=Status.d.ts.map