import * as React from "react";
import { Module } from "@intuitionrobotics/ts-common";
import { type Stylable, StylableBuilder } from "../../tools/Stylable.js";
import { type Color, type Properties } from "../../components/types.js";
export type Dialog_Model = Stylable & {
    zIndex: number;
    title?: React.ReactNode;
    content: React.ReactNode;
    buttons: DialogButtonModel[];
    overlayColor?: Color;
    actionsStyle?: Properties;
    allowIndirectClosing?: boolean;
    id?: string;
};
export type DialogButtonModel = Stylable & {
    content: React.ReactNode;
    action: () => void;
};
export interface DialogListener {
    __showDialog(dialogModel: Dialog_Model): void;
    __hideDialog(id?: string): void;
}
export declare class DialogModule_Class extends Module<{}> {
    constructor();
    protected init(): void;
    close: (id?: string) => void;
    show: (params: Dialog_Model) => void;
}
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;
    private id?;
    constructor(content: React.ReactNode, id?: string);
    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;
    setId(id: string): this;
    show(): void;
}
export declare const DialogModule: DialogModule_Class;
//# sourceMappingURL=DialogModule.d.ts.map