import { TemplateResult } from 'lit';
import { UiElement } from '../../UiElement.js';
import { BeginPressConfig, EndPressConfig } from '../../../controllers/ActionController.js';
import UiRipple from '../../ripple/internals/ripple.js';
import '../../ripple/ui-ripple.js';
import '@material/web/focus/md-focus-ring.js';
/**
 * 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
 * @attribute {string} form - The form associated with this element when the element is outside the form.
 *                   It should be the id of the form element within the same document.
 */
export default class UiButton extends UiElement {
    #private;
    static readonly formAssociated = true;
    /**
     * The form associated with this element
     * @attribute {string} form - The form associated with this element when the element is outside the form.
     *                   It should be the id of the form element within the same document.
     */
    get form(): HTMLFormElement | null;
    get validity(): ValidityState;
    get validationMessage(): string;
    get willValidate(): boolean;
    /**
     * Determines when the element has an icon in the "icon" slot.
     */
    protected accessor 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
     */
    accessor name: string | undefined;
    get value(): string | undefined;
    /**
     * Defines the value associated with the button's name when it's submitted with the form data.
     * @see {@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#value}
     * @attribute
     */
    set value(value: string | undefined);
    /**
     * Whether to render the icon at the inline end of the label rather than the
     * inline start.
     * @attribute
     */
    accessor trailingIcon: boolean;
    protected accessor ripple: Promise<UiRipple | null>;
    /**
     * The default behavior of the button.
     * @see {@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#type}
     * @attribute
     */
    accessor type: 'submit' | 'reset' | 'button';
    get disabled(): boolean;
    /**
     * When set, the button is a disabled state.
     * @attribute
     */
    set disabled(value: boolean);
    constructor();
    connectedCallback(): void;
    checkValidity(): boolean;
    reportValidity(): boolean;
    protected firstUpdated(): void;
    protected pressRipple(): Promise<void>;
    protected endRipple(): Promise<void>;
    beginPress(options: BeginPressConfig): void;
    endPress(config: EndPressConfig): void;
    protected handleSubmit(): void;
    /**
     * Sets the `_hasIcon` state property when the "icon" slot change event is dispatched.
     */
    protected handleSlotChange(e: Event): void;
    protected render(): TemplateResult;
    protected renderIcon(): TemplateResult;
}
//# sourceMappingURL=button.d.ts.map