import { TemplateResult } from "lit";
import { BeginPressConfig, EndPressConfig } from "../controllers/ActionController.js";
import { Button } from "./Button.js";
import UiRipple from "../effects/ripple.js";
import '../../define/ui/ui-ripple.js';
/**
 * The type of the button rendered.
 */
export declare enum ButtonType {
    'elevated' = "elevated",
    'filled' = "filled",
    'tonal' = "tonal",
    'outlined' = "outlined",
    'text' = "text"
}
/**
 * A material design button.
 *
 * Note, this control is form associated.
 *
 * @slot icon - A slot for the icon element
 * @slot - The default slot for the label
 */
export default class UiButton extends Button {
    #private;
    static get formAssociated(): boolean;
    get form(): HTMLFormElement | null;
    /**
     * The type of the rendered button according to Material 3 spec.
     *
     * @default {ButtonType.filled}
     * @attribute
     */
    type: ButtonType;
    /**
     * Determines when the element has an icon in the "icon" slot.
     */
    protected _hasIcon: boolean;
    /**
     * The name of the button, submitted as a pair with the button's value as part of the form data,
     * when that button is used to submit the form.
     * @attribute
     */
    name?: string;
    /**
     * Defines the value associated with the button's name when it's submitted with the form data.
     * This value is passed to the server in params when the form is submitted using this button.
     * @attribute
     */
    get value(): string | undefined;
    set value(value: string | undefined);
    /**
     * Whether to render the icon at the inline end of the label rather than the
     * inline start.
     * @attribute
     */
    trailingIcon: boolean;
    protected ripple: Promise<UiRipple | null>;
    protected showRipple: boolean;
    /**
     * Whether the button is a submit button for a form.
     * @attribute
     */
    submit?: boolean;
    protected readonly getRipple: () => Promise<UiRipple | null>;
    constructor();
    protected pressRipple(): Promise<void>;
    protected endRipple(): Promise<void>;
    beginPress(options: BeginPressConfig): void;
    endPress(config: EndPressConfig): void;
    protected _submitHandler(): void;
    /**
     * Sets the `_hasIcon` state property when the "icon" slot change event is dispatched.
     */
    protected _iconSlotChange(e: Event): void;
    protected render(): TemplateResult;
    protected _iconTemplate(): TemplateResult;
    protected renderRipple: () => TemplateResult;
}
//# sourceMappingURL=UiButton.d.ts.map