import { MenuItem } from 'primeng/api/menuitem';
import { SmzMenuItem } from '../../modules/smz-menu/models/smz-menu-item';
import { SmzBuilderUtilities } from '../common/smz-builder-utilities';
export declare class SmzGenericMenuBuilder<TGet> extends SmzBuilderUtilities<SmzGenericMenuBuilder<TGet>> {
    private _builder;
    private _items;
    protected that: this;
    constructor(_builder: TGet, _items?: SmzMenuItem[]);
    item(label: string, icon?: string, tooltip?: string): SmzSmzMenuItemItemBuilder<TGet>;
    get back(): TGet;
    build(): SmzMenuItem[];
}
export declare class SmzSmzMenuItemItemBuilder<TGet> {
    private _menuBuilder;
    private _parent;
    private _item;
    constructor(_menuBuilder: SmzGenericMenuBuilder<TGet>, _parent: SmzSmzMenuItemItemBuilder<TGet>, _item: SmzMenuItem);
    addChild(label: string, icon?: string): SmzSmzMenuItemItemBuilder<TGet>;
    setCallback<T>(callback: (item: T) => void): SmzSmzMenuItemItemBuilder<TGet>;
    setRedirect(paths: string[]): SmzSmzMenuItemItemBuilder<TGet>;
    hasClaimAccess(claim: string): SmzSmzMenuItemItemBuilder<TGet>;
    setVisibilityRule<T>(callback: (item: T) => boolean): SmzSmzMenuItemItemBuilder<TGet>;
    setActivationRule<T>(callback: (item: T) => boolean): SmzSmzMenuItemItemBuilder<TGet>;
    hide(): SmzSmzMenuItemItemBuilder<TGet>;
    disable(): SmzSmzMenuItemItemBuilder<TGet>;
    addTransformRule<T>(callback: (item: T) => Partial<MenuItem>): SmzSmzMenuItemItemBuilder<TGet>;
    askForConfirmation(title: string, message: string): SmzSmzMenuItemItemBuilder<TGet>;
    askForCriticalConfirmation(title: string, message: string): SmzSmzMenuItemItemBuilder<TGet>;
    get menu(): SmzGenericMenuBuilder<TGet>;
    applyChild(): SmzSmzMenuItemItemBuilder<TGet>;
}
