import { ComponentOptionsMixin } from 'vue';
import { ComponentProvideOptions } from 'vue';
import { DefineComponent } from 'vue';
import { PublicProps } from 'vue';
import { RouteLocationRaw } from 'vue-router';

declare type __VLS_WithTemplateSlots<T, S> = T & {
    new (): {
        $slots: S;
    };
};

declare interface ButtonProps {
    /**
     * Renders the secondary variant
     */
    secondary?: boolean;
    /**
     * Renders the button as a container for an Icon
     */
    icon?: boolean;
    /**
     * Renders the button as a container for an IconLabel
     */
    iconLabel?: boolean;
    /**
     * Renders the tertiary variant
     */
    tertiary?: boolean;
    /**
     * Renders the component inline
     */
    inline?: boolean;
    /**
     * Renders a color variant
     */
    color?: 'blue' | 'red';
    /**
     * The `to` prop for vue-router's `RouterLink` component. If defined, the button will render as a `<router-link />`.
     */
    to?: RouteLocationRaw;
    /**
     * Button link. If defined, the button will render as an `<a />` tag.
     */
    href?: string;
    /**
     * Displays a spinning loading icon in place of the button text and disables the button
     */
    isLoading?: boolean;
    /**
     * Disables the button
     */
    disabled?: boolean;
}

declare const _default: __VLS_WithTemplateSlots<DefineComponent<ButtonProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<ButtonProps> & Readonly<{}>, {
icon: boolean;
href: string;
secondary: boolean;
iconLabel: boolean;
tertiary: boolean;
inline: boolean;
color: "blue" | "red";
to: RouteLocationRaw;
isLoading: boolean;
disabled: boolean;
}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>, {
    default?(_: {}): any;
}>;
export default _default;

export { }
