import { type Slots, type UnwrapNestedRefs, type UnwrapRef, type MaybeRef, type CSSProperties } from 'vue';
import { type ColorComposition } from './useColors';
import { type CSSComposition } from './useCSS';
import type { ComponentThemes } from 'src/theme';
export type Stylish = false | null | undefined | string | CSSProperties;
export type StyleValue = Stylish | Array<Stylish>;
export type ThemeVueClass = string | Record<string, boolean> | (string | Record<string, boolean>)[];
export type ThemeClasses<P, K extends string = string, D = undefined> = Record<K, string | ((params: ThemeParams<P, D>) => ThemeVueClass)>;
export type ThemeStyles<P, D> = StyleValue | ((params: ThemeParams<P, D>) => StyleValue);
export interface ThemeComponent<P = object, K extends string = string, D = object> {
    classes?: Partial<ThemeClasses<P, K, D>>;
    styles?: ThemeStyles<P, D>;
}
export type ThemeParams<P = Record<string, any>, D = Record<string, any>> = {
    props: UnwrapRef<P>;
    slots: Slots;
    colors: ColorComposition;
    css: CSSComposition;
    rtl?: boolean;
    data: UnwrapNestedRefs<D>;
};
export declare const useTheme: <P extends object = object, K extends string = string, D extends object = object>(namespace: keyof ComponentThemes, defaultTheme?: ThemeComponent<P, K, D>, props?: MaybeRef<P>, data?: D) => {
    classPrefix: import("vue").ComputedRef<string>;
    className: import("vue").ComputedRef<string>;
    colors: ColorComposition;
    classes: import("vue").ComputedRef<Record<K, ThemeVueClass>>;
    styles: import("vue").ComputedRef<StyleValue>;
    css: CSSComposition;
};
