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

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

declare const _default: __VLS_WithTemplateSlots<DefineComponent<ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<RadioProps>, {
disabled: boolean;
fullWidth: boolean;
hasError: boolean;
label: string;
modelValue: undefined;
name: undefined;
variant: undefined;
}>>, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
"update:modelValue": (value: string) => void;
}, string, PublicProps, Readonly<ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<RadioProps>, {
disabled: boolean;
fullWidth: boolean;
hasError: boolean;
label: string;
modelValue: undefined;
name: undefined;
variant: undefined;
}>>> & Readonly<{
"onUpdate:modelValue"?: ((value: string) => any) | undefined;
}>, {
name: string;
disabled: boolean;
label: string;
hasError: boolean;
modelValue: string;
variant: "button" | "radio" | "tile" | "chip";
fullWidth: boolean;
}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>, {
    default?(_: {}): any;
}>;
export default _default;

export declare interface RadioProps {
    /**
     * Passed to the "name" attribute of the `<input>` element.
     */
    name?: string;
    /**
     * Whether the entire group should be disabled
     */
    disabled?: boolean;
    /**
     * Whether the group should expand to the parent's width
     */
    fullWidth?: boolean;
    /**
     * A unique string to distinguish one Radio instance from another
     * and to link the label to the input; required for accessibility
     */
    id: string | number;
    /**
     * value bound to the parent component
     */
    modelValue?: string | undefined;
    /**
     * Adds error styling
     */
    hasError?: boolean;
    /**
     * The description which appears to the right of the radio button
     */
    label?: string;
    /**
     * the styling for the radio button @defaultValue 'radio'
     */
    variant?: RadioVariants;
    /**
     * The value for the radio input.
     */
    value: string;
}

export declare enum RadioVariant {
    Radio = "radio",
    Button = "button",
    Chip = "chip",
    Tile = "tile"
}

export declare type RadioVariants = `${RadioVariant}`;

export { }
