import { ComponentOptionsMixin } from 'vue';
import { ComponentProvideOptions } from 'vue';
import { DefineComponent } from 'vue';
import { ExtractPropTypes } from 'vue';
import { PropType } from 'vue';
import { PublicProps } from 'vue';
import { RouteLocationAsPathGeneric } from 'vue-router';
import { RouteLocationAsRelativeGeneric } from 'vue-router';
import { RouteLocationRaw } from 'vue-router';

declare type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;

declare type __VLS_Prettify<T> = {
    [K in keyof T]: T[K];
} & {};

declare type __VLS_TypePropsToRuntimeProps<T> = {
    [K in keyof T]-?: {} extends Pick<T, K> ? {
        type: PropType<__VLS_NonUndefinedable<T[K]>>;
    } : {
        type: PropType<T[K]>;
        required: true;
    };
};

declare type __VLS_WithDefaults<P, D> = {
    [K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_Prettify<P[K] & {
        default: D[K];
    }> : P[K];
};

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

export 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<ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<ButtonProps>, {
secondary: boolean;
icon: boolean;
iconLabel: boolean;
tertiary: boolean;
inline: boolean;
color: undefined;
href: string;
to: undefined;
isLoading: boolean;
disabled: undefined;
}>>, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<ButtonProps>, {
secondary: boolean;
icon: boolean;
iconLabel: boolean;
tertiary: boolean;
inline: boolean;
color: undefined;
href: string;
to: undefined;
isLoading: boolean;
disabled: undefined;
}>>> & Readonly<{}>, {
to: string | RouteLocationAsRelativeGeneric | RouteLocationAsPathGeneric;
disabled: boolean;
icon: boolean;
href: string;
secondary: boolean;
iconLabel: boolean;
tertiary: boolean;
inline: boolean;
color: "blue" | "red";
isLoading: boolean;
}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>, {
    default?(_: {}): any;
}>;
export default _default;

export { }
