import type { ExtractPropTypes, PropType } from 'vue';
import type { MaybeRef } from '@veno-ui/utils';
export type VariantProps = ExtractPropTypes<ReturnType<typeof makeVariantProps>>;
export declare const VARIANTS: readonly ["contained", "outlined", "plain", "text", "contained-text", "contained-outlined"];
export declare function genOverlays(isClickable: boolean, name: string): JSX.Element;
export declare const makeVariantProps: <Defaults extends {
    color?: unknown;
    textColor?: unknown;
    variant?: unknown;
} = {}>(defaults?: Defaults | undefined) => {
    color: unknown extends Defaults["color"] ? StringConstructor : {
        type: PropType<unknown extends Defaults["color"] ? string : string | Defaults["color"]>;
        default: unknown extends Defaults["color"] ? string : string | Defaults["color"];
    };
    textColor: unknown extends Defaults["textColor"] ? StringConstructor : {
        type: PropType<unknown extends Defaults["textColor"] ? string : string | Defaults["textColor"]>;
        default: unknown extends Defaults["textColor"] ? string : string | Defaults["textColor"];
    };
    variant: unknown extends Defaults["variant"] ? {
        type: PropType<"contained" | "outlined" | "plain" | "text" | "contained-text" | "contained-outlined">;
        default: string;
        validator: (v: any) => boolean;
    } : Omit<{
        type: PropType<"contained" | "outlined" | "plain" | "text" | "contained-text" | "contained-outlined">;
        default: string;
        validator: (v: any) => boolean;
    }, "type" | "default"> & {
        type: PropType<unknown extends Defaults["variant"] ? "contained" | "outlined" | "plain" | "text" | "contained-text" | "contained-outlined" : NonNullable<"contained" | "outlined" | "plain" | "text" | "contained-text" | "contained-outlined"> | Defaults["variant"]>;
        default: unknown extends Defaults["variant"] ? "contained" | "outlined" | "plain" | "text" | "contained-text" | "contained-outlined" : NonNullable<"contained" | "outlined" | "plain" | "text" | "contained-text" | "contained-outlined"> | Defaults["variant"];
    };
};
export declare function useVariant(props: MaybeRef<VariantProps>, name?: string): {
    colorClasses: import("vue").ComputedRef<string[]>;
    colorStyles: import("vue").ComputedRef<import("vue").CSSProperties>;
    variantClasses: import("vue").ComputedRef<string[]>;
};
