import { type TemplateResult } from 'lit';
import { Activity } from './Activity.js';
import type { UiDialogClosingReason } from '../md/dialog/internals/Dialog.js';
import '../md/dialog/ui-dialog.js';
import '../md/button/ui-button.js';
export interface ActionButtonInit {
    /**
     * The label to use for the button.
     */
    label?: string;
    /**
     * Whether the button is disabled.
     */
    disabled?: boolean;
    /**
     * Optional callback to be called when the button is clicked.
     */
    callback?: (e: MouseEvent) => void;
}
/**
 * A special kind of activity that renders content in a modal dialog.
 * When a modal activity is running the underlying activities are paused.
 *
 * A modal activity uses the UiDialogElement to render its content. The dialog
 * is inserted directly into the `<body>` element of the document and rendered
 * in the top layer. Because of that, the modal activity does not support
 * regular rendering logic. It creates its own render root that is used to render
 * the template.
 */
export declare abstract class ModalActivity extends Activity {
    /**
     * The list of classes to apply to the dialog.
     */
    protected dialogClasses: Record<string, boolean>;
    /**
     * Controls dialog visibility without controlling the activity state.
     */
    accessor opened: boolean;
    /**
     * The id of the form used to render the dialog.
     */
    protected formId?: string;
    onResume(): void | Promise<void>;
    finish(): Promise<void>;
    protected handleDialogClosed(e: CustomEvent<UiDialogClosingReason>): void;
    /**
     * Called when the dialog is closed with a negative action.
     * Override this function to handle the negative action.
     * @param value The value passed to the dialog when it is closed.
     */
    protected handleNegativeAction(value: unknown): void;
    /**
     * Called when the dialog is closed with a positive action.
     * Override this function to handle the positive action.
     * @param value The value passed to the dialog when it is closed.
     */
    protected handlePositiveAction(value: unknown): void;
    /**
     * Override this method to handle the form submission.
     * @param e The submit event.
     */
    protected handleSubmit(e: SubmitEvent): void;
    /**
     * The function called by the rendered when rendering this dialog.
     * This way, the `render()` function is still used as the primary template provider.
     */
    renderDialog(): TemplateResult;
    /**
     * Used with dialogs that render forms. Override the `handleSubmit` method
     * to handle the form submission.
     * @param content The content to render in the form.
     * @param name Optional form name
     */
    protected renderForm(content: TemplateResult, name?: string): TemplateResult;
    /**
     * Renders the cancel button for the dialog.
     * @param label The label to use for the cancel button.
     */
    protected renderNegativeButton(init?: ActionButtonInit): TemplateResult;
    /**
     * Renders the submit button for the dialog.
     * If the formId is set, the button will be a submit button.
     * Otherwise, it will be a regular button.
     * @param label The label to use for the submit button.
     */
    protected renderPositiveButton(init?: ActionButtonInit): TemplateResult;
    /**
     * Renders the title for the dialog.
     * @param title The title to render in the dialog.
     */
    protected renderTitle(title: string): TemplateResult;
}
//# sourceMappingURL=ModalActivity.d.ts.map