import '../css/dialog.webgen.static.css';
import { ButtonStyle } from "../types";
import { ViewOptions, ViewOptionsFunc } from "../types/ViewOptions";
import { Color } from "./Color";
declare type DialogeFinal = void | undefined | 'close' | 'remove';
declare type DialogButtonAction = ((() => DialogeFinal) | (() => Promise<DialogeFinal>) | 'close' | 'remove');
export declare type DialogButton = {
    label: string;
    action: DialogButtonAction;
    color: Color;
    state?: ButtonStyle.Inline | ButtonStyle.Normal | ButtonStyle.Secondary;
};
export declare type DialogData = {
    addButton: (label: string, action: DialogButtonAction, style?: DialogButton["color"], state?: DialogButton["state"]) => DialogData;
    setTitle: (text: string) => DialogData;
    allowUserClose: () => DialogData;
    addClass: (...classes: string[]) => DialogData;
    onClose: (action: () => void) => DialogData;
    close: () => DialogData;
    open: () => DialogData;
    remove: () => void;
    unsafeViewOptions: <TypeT>() => ViewOptions<TypeT>;
};
export declare function Dialog<State>(render: ViewOptionsFunc<State>): DialogData;
export {};
