import { EventEmitter } from "../../../stencil-public-runtime";
import { ButtonColorType, ButtonSizesType, ButtonTargetType, ButtonTypesType, NativeTypesType } from "./constants";
import { ButtonEvent } from "./gov-button.types";
import { Attributes } from "../../../helpers/Dom/attribute";
export declare class GovButton {
    private h;
    private triggerRef?;
    private attributeObserver;
    private hydrated;
    constructor();
    host: HTMLGovButtonElement;
    /**
     * Style variation of the button
     */
    readonly color: ButtonColorType;
    /**
     * Button’s size
     */
    readonly size?: ButtonSizesType;
    /**
     * Button's type
     */
    readonly type: ButtonTypesType;
    /**
     * Expands the button to fill 100% of the container width
     */
    readonly expanded: boolean;
    /**
     * Expands the button to fill 100% of the container width only on mobile
     */
    readonly expandedMobile: boolean;
    /**
     * The name of the button, which gets paired with the button's value when submitted as part of a form. Corresponds with the native HTML name attribute
     */
    readonly name: string;
    /**
     * Makes the button component disabled.
     * This prevents users from being able to interact with the button, and conveys its inactive state to assistive technologies
     */
    readonly disabled: boolean;
    /**
     * Same as original parameter
     * https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#attr-type
     */
    readonly nativeType?: NativeTypesType;
    /**
     * Same as original parameter
     * @link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#attr-href
     */
    readonly href: string;
    /**
     * Same as original parameter
     * @link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#attr-target
     */
    readonly target?: ButtonTargetType;
    /**
     * Same as original parameter
     * @link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#attr-download
     */
    readonly download: boolean;
    /**
     * Same as original parameter
     * @link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#attr-download
     */
    readonly tab: number;
    /**
     * Same as original parameter
     * @link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#attr-hreflang
     */
    readonly hreflang: string;
    /**
     * Same as original parameter
     * @link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#attr-referrerpolicy
     */
    readonly referrerpolicy: string;
    /**
     * Same as original parameter
     * @link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#attr-rel
     */
    readonly rel: string;
    /**
     * Indicates whether an asynchronous process is running
     */
    readonly loading: string;
    /**
     * Same as original parameter
     * @link https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/focusable
     */
    readonly focusable: boolean;
    /**
     * Custom button identifier
     */
    readonly identifier: string;
    /**
     * Emitted when the button click
     */
    govClick: EventEmitter<ButtonEvent>;
    /**
     * Emitted when the button has focus
     */
    govFocus: EventEmitter<ButtonEvent>;
    /**
     * Emitted when the button loses focus
     */
    govBlur: EventEmitter<ButtonEvent>;
    validateColor(newValue: string): void;
    validateType(newValue: string): void;
    validateSize(newValue: string): void;
    validateNativeType(newValue: string): void;
    inheritedAttributes: Attributes;
    componentDidLoad(): void;
    onAriaAttributeChange(attributeName: string, newValue: string): void;
    disconnectedCallback(): void;
    componentWillLoad(): void;
    componentDidRender(): Promise<void>;
    connectedCallback(): void;
    render(): any;
    private onClickHandler;
    private onFocusHandler;
    private onBlurHandler;
    /**
     * Focus button element
     */
    setFocus(): Promise<void>;
    /**
     * Returns a clickable element instance
     */
    getRef(): Promise<HTMLLinkElement | HTMLButtonElement>;
    /**
     * Validate the Accessibility attributes of the component
     */
    validateAccessibility(): Promise<void>;
}
