import type { App, DeepReadonly, InjectionKey, Ref } from 'vue'; import type { Color } from '../util/index.js'; type DeepPartial = T extends object ? { [P in keyof T]?: DeepPartial; } : T; export type ThemeOptions = false | { cspNonce?: string; defaultTheme?: 'light' | 'dark' | 'system' | (string & {}); variations?: false | VariationsOptions; themes?: Record; stylesheetId?: string; scope?: string; utilities?: boolean; }; export type ThemeDefinition = DeepPartial; interface VariationsOptions { colors: string[]; lighten: number; darken: number; } interface InternalThemeDefinition { dark: boolean; colors: Colors; variables: Record; } export interface Colors extends BaseColors, OnColors { [key: string]: Color; } interface BaseColors { background: Color; surface: Color; primary: Color; secondary: Color; success: Color; warning: Color; error: Color; info: Color; } interface OnColors { 'on-background': Color; 'on-surface': Color; 'on-primary': Color; 'on-secondary': Color; 'on-success': Color; 'on-warning': Color; 'on-error': Color; 'on-info': Color; } export interface ThemeInstance { change: (themeName: string) => void; cycle: (themeArray?: string[]) => void; toggle: (themeArray?: [string, string]) => void; readonly isDisabled: boolean; readonly isSystem: Readonly>; readonly themes: Ref>; readonly name: Readonly>; readonly current: DeepReadonly>; readonly computedThemes: DeepReadonly>>; readonly prefix: string; readonly themeClasses: Readonly>; readonly styles: Readonly>; readonly global: { readonly name: Ref; readonly current: DeepReadonly>; }; } export declare const ThemeSymbol: InjectionKey; export declare const makeThemeProps: (defaults?: Defaults | undefined) => { theme: unknown extends Defaults["theme"] ? StringConstructor : { type: import("vue").PropType; default: unknown extends Defaults["theme"] ? string : string | Defaults["theme"]; }; }; export declare function createTheme(options?: ThemeOptions): ThemeInstance & { install: (app: App) => void; }; export declare function provideTheme(props: { theme?: string; }): ThemeInstance; export declare function useTheme(): ThemeInstance;