/**
 * @license
 * Copyright Tyler Technologies, Inc. 
 * License: Apache-2.0
 */
import { ICustomElementFoundation } from '@tylertech/forge-core';
import { ExperimentalFocusOptions } from '../../constants';
import { IBaseButtonAdapter } from './base-button-adapter';
import { ButtonClickOptions, ButtonType } from './base-button-constants';
export interface IBaseButtonFoundation extends ICustomElementFoundation {
    type: ButtonType;
    disabled: boolean;
    popoverIcon: boolean;
    anchor: boolean;
    href: string;
    target: string;
    download: string;
    rel: string;
    dense: boolean;
    click(options: ButtonClickOptions): void;
    focus(options?: ExperimentalFocusOptions): void;
}
export declare abstract class BaseButtonFoundation<T extends IBaseButtonAdapter> implements IBaseButtonFoundation {
    protected _adapter: T;
    private _type;
    private _disabled;
    private _popoverIcon;
    private _anchor;
    private _href;
    private _target;
    private _download;
    private _rel;
    private _dense;
    private _clickListener;
    private _keydownListener;
    private _anchorFocusListener;
    constructor(_adapter: T);
    initialize(): void;
    /**
     * Handles overriding the the `click()` method on the HTMLElement instance
     */
    click({ animateStateLayer }?: ButtonClickOptions): void;
    focus(options?: ExperimentalFocusOptions): void;
    protected _onClick(evt: MouseEvent): Promise<void>;
    /**
     * Handle keydown events on the host element to manually trigger click events.
     */
    private _onKeydown;
    private _toggleAnchor;
    private _manageAnchorListeners;
    get type(): ButtonType;
    set type(type: ButtonType);
    get disabled(): boolean;
    set disabled(value: boolean);
    get popoverIcon(): boolean;
    set popoverIcon(value: boolean);
    /**
     * Anchor properties
     */
    get anchor(): boolean;
    set anchor(value: boolean);
    get href(): string;
    set href(value: string);
    get target(): string;
    set target(value: string);
    get download(): string;
    set download(value: string);
    get rel(): string;
    set rel(value: string);
    get dense(): boolean;
    set dense(value: boolean);
}
