import * as React from "react";
import { Module } from "@nu-art/ts-common";
import { Color, Properties } from "csstype";
export declare type Stylable = {
    style?: Properties;
    className?: string;
};
export declare type Dialog_Model = Stylable & {
    zIndex: number;
    title?: React.ReactNode;
    content: React.ReactNode;
    buttons: DialogButtonModel[];
    overlayColor?: Color;
    actionsStyle?: Properties;
    allowIndirectClosing?: boolean;
};
export declare type DialogButtonModel = Stylable & {
    content: React.ReactNode;
    action: () => void;
};
export interface DialogListener {
    showDialog(dialogModel?: Dialog_Model): void;
}
export declare class DialogModule_Class extends Module<{}> {
    private showDialog;
    close: () => void;
    show: (params: Dialog_Model) => void;
}
export declare const DialogModule: DialogModule_Class;
export declare class StylableBuilder {
    style?: Properties;
    className?: string;
    setStyle(style: Properties): this;
    clearInlineStyle(): this;
    addStyle(style: Properties): this;
    setClassName(className: string): this;
}
export declare class DialogButton_Builder extends StylableBuilder {
    content: React.ReactNode;
    action: () => void;
    setContent(content: React.ReactNode): this;
    setAction(action: () => void): this;
    build(): DialogButtonModel;
}
export declare class Dialog_Builder extends StylableBuilder {
    content: React.ReactNode;
    zIndex: number;
    title: React.ReactNode;
    buttons: DialogButtonModel[];
    overlayColor: Color;
    allowIndirectClosing: boolean;
    actionsStyle: Properties;
    constructor(content: React.ReactNode);
    setAllowIndirectClosing(allowIndirectClosing: boolean): this;
    setOverlayColor(overlayColor: Color): this;
    setActionsStyle(actionsStyle: Properties): this;
    setTitle(title: React.ReactNode): this;
    setButtons(...buttons: DialogButtonModel[]): this;
    addButton(button: DialogButtonModel): this;
    setZIndex(zIndex?: number): this;
    show(): void;
}
