import { ComponentOptionsMixin } from 'vue';
import { ComponentProvideOptions } from 'vue';
import { DefineComponent } from 'vue';
import { ExtractPropTypes } from 'vue';
import { PropType } from 'vue';
import { PublicProps } from 'vue';

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];
};

export declare interface ButtonGroupOption {
    id: string;
    active?: boolean;
    text: string;
}

export declare interface ButtonGroupProps {
    /**
     * A name for the group, useful when multiple ButtonGroups exist on the page
     */
    groupName?: string;
    /**
     * The list of buttons to render
     */
    options: ButtonGroupOption[];
    /**
     * Whether the group should expand to the parent's width
     */
    fullWidth?: boolean;
    /**
     * Whether the entire group should be disabled
     */
    disabled?: boolean;
    /**
     * Whether the active button can be deactivated
     */
    allowDeactivate?: boolean;
}

/**
 * @deprecated use RadioGroup instead with `variant="button"`.
 * RadioGroup uses pretty much the same API as the ButtonGroup,
 * but every button is a radio element which makes more sense semantically.
 */
declare const _default: DefineComponent<ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<ButtonGroupProps>, {
groupName: string;
fullWidth: boolean;
disabled: boolean;
allowDeactivate: boolean;
}>>, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
input: (activeButton: ButtonGroupOption | null) => void;
}, string, PublicProps, Readonly<ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<ButtonGroupProps>, {
groupName: string;
fullWidth: boolean;
disabled: boolean;
allowDeactivate: boolean;
}>>> & Readonly<{
onInput?: ((activeButton: ButtonGroupOption | null) => any) | undefined;
}>, {
disabled: boolean;
groupName: string;
fullWidth: boolean;
allowDeactivate: boolean;
}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;
export default _default;

export { }
