import { EventEmitter } from '../../stencil-public-runtime';
/**
 * @part button - Exposes the button element for styling.
 * @part button-content - Exposes the button content for styling.
 * @part button-text - Exposes the button text for styling.
 * @part caret - Exposes the caret icon component for styling. Appears only on the disclosure variant.
 * @part icon - Exposes the icon component for styling.
 * @part loader-svg - Exposes the loader SVG element for color customization. Appears only when loading.
 * @slot (default) - Button text.
 * @slot start - Content to display before the button text.
 * @slot end - Content to display after the button text.
*/
export declare class PdsButton {
    el: HTMLPdsButtonElement;
    /**
     * A unique identifier used for the underlying component `id` attribute.
     */
    componentId: string;
    /**
     * Prompts the user to save the linked URL instead of navigating to it.
     * It can be used without a value to download with the default filename,
     * or with a string value to suggest a specific filename for the download.
     * Only applies when href is set.
     */
    download?: string;
    /**
     * Determines the button's disabled state.
     * @defaultValue false
     */
    disabled: boolean;
    /**
     * Determines if the button should take up the full width of its container.
     * @defaultValue false
     */
    fullWidth?: boolean;
    /**
     * If provided, renders the component as an anchor (`<a>`) element instead of a button.
     * When using href, button-specific props (type, name, value, loading) will be ignored.
     */
    href?: string;
    /**
     * Displays a leading icon in the button. DEPRECATED.
     * @defaultValue null
     * @deprecated Use `start` slot instead.
     */
    icon?: string;
    /**
     * When true, displays only the icon and visually hides the text (keeping it accessible).
     */
    iconOnly?: boolean;
    /**
     * Determines if the button is in a loading state.
     * When true, displays a loader and hides the button text.
     * @defaultValue false
     */
    loading?: boolean;
    /**
     * Provides the button with a submittable name.
     */
    name?: string;
    /**
     * Specifies where to open the linked document when href is provided.
     * Only applies when href is set.
     */
    target?: '_blank' | '_self' | '_parent' | '_top';
    /**
     * Provides button with a type.
     * @defaultValue button
     */
    type?: 'button' | 'reset' | 'submit';
    /**
     * Provides button with a submittable value
     */
    value?: string;
    /**
     * Sets the size of the button.
     * @defaultValue default
     */
    size?: 'default' | 'small' | 'micro';
    /**
     * Sets the style variant of the button.
     * @defaultValue primary
     */
    variant: 'primary' | 'secondary' | 'tertiary' | 'accent' | 'disclosure' | 'destructive' | 'unstyled' | 'filter';
    hasStartContent: boolean;
    hasEndContent: boolean;
    pdsClick: EventEmitter<Event>;
    /**
     * Listen for Enter key presses on form inputs to trigger submit
     */
    handleFormKeyDown(event: KeyboardEvent): void;
    private handleStartSlotChange;
    private handleEndSlotChange;
    private handleClick;
    private classNames;
    private renderStartContent;
    private renderEndContent;
    render(): any;
}
