/**
 * @license
 * Copyright Tyler Technologies, Inc. 
 * License: Apache-2.0
 */
import { BaseComponent } from '../../core/base/base-component';
import { ExperimentalFocusOptions } from '../../constants';
import { IBaseButtonAdapter } from './base-button-adapter';
import { ButtonType } from './base-button-constants';
import { BaseButtonFoundation } from './base-button-foundation';
import { IWithLabelAwareness } from '../../core/mixins/label/with-label-aware';
import { IWithElementInternals } from '../../core/mixins/internals/with-element-internals';
import { IWithDefaultAria } from '../../core/mixins/internals/with-default-aria';
export interface IBaseButton extends IWithLabelAwareness, IWithElementInternals, IWithDefaultAria {
    type: ButtonType;
    disabled: boolean;
    popoverIcon: boolean;
    name: string;
    value: string;
    dense: boolean;
    form: HTMLFormElement | null;
    popoverTargetElement: HTMLElement | null;
    popoverTargetAction: 'click' | 'hover';
    focus(options?: ExperimentalFocusOptions): void;
}
declare const BaseButton_base: import("../../constants").AbstractConstructor<import("../../core/mixins/internals/with-default-aria").WithDefaultAriaContract> & import("../../constants").AbstractConstructor<import("../../core/mixins/internals/with-element-internals").WithElementInternalsContract> & import("../../constants").AbstractConstructor<import("../../core/mixins/label/with-label-aware").WithLabelAwarenessContract> & typeof BaseComponent;
export declare abstract class BaseButton<T extends BaseButtonFoundation<IBaseButtonAdapter<IBaseButton>>> extends BaseButton_base implements IBaseButton {
    static get observedAttributes(): string[];
    static readonly formAssociated = true;
    /** @ignore */
    popoverTargetElement: HTMLElement | null;
    /** @ignore */
    popoverTargetAction: 'click' | 'hover';
    protected abstract _foundation: T;
    constructor();
    connectedCallback(): void;
    attributeChangedCallback(name: string, oldValue: string, newValue: string): void;
    labelClickedCallback(): void;
    labelChangedCallback(value: string | null): void;
    get form(): HTMLFormElement | null;
    get name(): string;
    set name(name: string);
    get value(): string;
    set value(value: string);
    type: ButtonType;
    disabled: boolean;
    popoverIcon: boolean;
    dense: boolean;
    click(): void;
    focus(options: ExperimentalFocusOptions): void;
}
export {};
