import { GestureRecognizerListener } from '@scandit/web-datacapture-core/build/js/private/GestureRecognizer/GestureRecognizer.js';
import { ScanditHTMLElement } from '@scandit/web-datacapture-core/build/js/private/utils/index.js';

type ButtonVariant = "primary" | "secondary" | "ghost";
type ButtonSize = "default" | "small";
type ButtonKind = "action" | "destructive";
type ButtonType = HTMLButtonElement["type"];
declare class Button extends ScanditHTMLElement implements GestureRecognizerListener {
    static tag: "scandit-button";
    static formAssociated: boolean;
    private _variant;
    private _size;
    private _kind;
    private _disabled;
    private _type;
    private iconStartSlot;
    private iconEndSlot;
    private onIconSlotChangeListener;
    private gestureRecognizer;
    private associatedForm;
    constructor();
    connectedCallback(): void;
    disconnectedCallback(): void;
    /**
     * Called when the element is associated or disassociated with a form.
     * @param _form - The form element or null if disassociated
     */
    formAssociatedCallback(_form: HTMLFormElement | null): void;
    /**
     * Called when the disabled state of the form changes.
     * @param disabled - Whether the form is now disabled
     */
    formDisabledCallback(disabled: boolean): void;
    onPress(): void;
    onRelease(): void;
    private onIconSlotChange;
    private updateIconColors;
    private isScanditIcon;
    get variant(): ButtonVariant;
    set variant(value: ButtonVariant);
    get size(): ButtonSize;
    set size(value: ButtonSize);
    get kind(): ButtonKind;
    set kind(value: ButtonKind);
    get disabled(): boolean;
    set disabled(value: boolean);
    get type(): ButtonType;
    set type(value: ButtonType);
    private updateAttributes;
    private updateButtonState;
    static get observedAttributes(): string[];
    attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null): void;
    set text(text: string);
    get text(): string;
    set textContent(text: string | null);
    get textContent(): string;
    static create(): Button;
    static register(): void;
    private static createStyleElement;
}
declare global {
    interface HTMLElementTagNameMap {
        [Button.tag]: Button;
    }
}

export { Button, type ButtonKind, type ButtonSize, type ButtonType, type ButtonVariant };
