import { type ExtractPublicPropTypes } from 'vue';
import { type ThemeComponent } from '../../composables/useTheme';
declare const buttonProps: {
    tag: {
        type: StringConstructor;
        default: string;
    };
    type: {
        type: StringConstructor;
        default: string;
    };
    icon: StringConstructor;
    iconLeft: StringConstructor;
    iconRight: StringConstructor;
    to: (ObjectConstructor | StringConstructor)[];
    outlined: BooleanConstructor;
    rounded: BooleanConstructor;
    glow: BooleanConstructor;
    ghost: BooleanConstructor;
    light: BooleanConstructor;
    block: BooleanConstructor;
    flat: BooleanConstructor;
    disabled: BooleanConstructor;
    loading: BooleanConstructor;
    loadingLabel: StringConstructor;
    loadingStatus: {
        readonly type: import("vue").PropType<import("../loader/Loader.vue").LoaderStatus>;
        readonly default: "active";
    };
    color: {
        readonly type: StringConstructor;
        readonly default: string | undefined;
    };
    size: {
        readonly type: import("vue").PropType<import("../../composables/useCommon").Size>;
        readonly default: "md";
        readonly validator: (value: string) => boolean;
    };
};
export type ButtonProps = ExtractPublicPropTypes<typeof buttonProps>;
type InternalClasses = 'wrapper' | 'iconLeft' | 'iconRight';
type InternalExtraData = {
    isButtonGroup: boolean;
};
export interface ButtonTheme extends ThemeComponent<ButtonProps, InternalClasses, InternalExtraData> {
}
declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<{
    tag: {
        type: StringConstructor;
        default: string;
    };
    type: {
        type: StringConstructor;
        default: string;
    };
    icon: StringConstructor;
    iconLeft: StringConstructor;
    iconRight: StringConstructor;
    to: (ObjectConstructor | StringConstructor)[];
    outlined: BooleanConstructor;
    rounded: BooleanConstructor;
    glow: BooleanConstructor;
    ghost: BooleanConstructor;
    light: BooleanConstructor;
    block: BooleanConstructor;
    flat: BooleanConstructor;
    disabled: BooleanConstructor;
    loading: BooleanConstructor;
    loadingLabel: StringConstructor;
    loadingStatus: {
        readonly type: import("vue").PropType<import("../loader/Loader.vue").LoaderStatus>;
        readonly default: "active";
    };
    color: {
        readonly type: StringConstructor;
        readonly default: string | undefined;
    };
    size: {
        readonly type: import("vue").PropType<import("../../composables/useCommon").Size>;
        readonly default: "md";
        readonly validator: (value: string) => boolean;
    };
}, {
    focus: () => void | undefined;
    blur: () => void | undefined;
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
    tag: {
        type: StringConstructor;
        default: string;
    };
    type: {
        type: StringConstructor;
        default: string;
    };
    icon: StringConstructor;
    iconLeft: StringConstructor;
    iconRight: StringConstructor;
    to: (ObjectConstructor | StringConstructor)[];
    outlined: BooleanConstructor;
    rounded: BooleanConstructor;
    glow: BooleanConstructor;
    ghost: BooleanConstructor;
    light: BooleanConstructor;
    block: BooleanConstructor;
    flat: BooleanConstructor;
    disabled: BooleanConstructor;
    loading: BooleanConstructor;
    loadingLabel: StringConstructor;
    loadingStatus: {
        readonly type: import("vue").PropType<import("../loader/Loader.vue").LoaderStatus>;
        readonly default: "active";
    };
    color: {
        readonly type: StringConstructor;
        readonly default: string | undefined;
    };
    size: {
        readonly type: import("vue").PropType<import("../../composables/useCommon").Size>;
        readonly default: "md";
        readonly validator: (value: string) => boolean;
    };
}>>, {
    disabled: boolean;
    flat: boolean;
    type: string;
    tag: string;
    glow: boolean;
    light: boolean;
    outlined: boolean;
    color: string;
    rounded: boolean;
    size: import("../../composables/useCommon").Size;
    ghost: boolean;
    block: boolean;
    loading: boolean;
    loadingStatus: import("../loader/Loader.vue").LoaderStatus;
}, {}>, {
    default?(_: {}): any;
}>;
export default _default;
type __VLS_WithTemplateSlots<T, S> = T & {
    new (): {
        $slots: S;
    };
};
