import { type App, type Ref } from 'vue'; import type { H0Density, H0Size } from './types'; export type H0ThemeName = 'light' | 'dark'; export type H0ThemePreference = H0ThemeName | 'system'; export type H0AccentName = 'default' | 'telegram' | 'uber'; export type H0AnimationQuality = 'off' | 'low' | 'medium' | 'high'; export type H0AnimationLevel = H0AnimationQuality | 'recommended'; export type H0AnimationRecommendationReason = 'pending' | 'reduced-motion' | 'save-data' | 'limited-resources' | 'software-rendering' | 'graphics-caveat' | 'unavailable-graphics' | 'unknown-graphics' | 'unavailable' | 'insufficient-sample' | 'slow-frames' | 'moderate-frames' | 'smooth-frames'; export type H0TypographySize = H0Size; export type H0RadiusSize = H0Size; export type H0ThemeConfig = { accent?: H0AccentName; animation?: H0AnimationLevel; density?: H0Density; radiusSize?: H0RadiusSize; storageKey?: string | false; target?: HTMLElement; theme?: H0ThemePreference; typographySize?: H0TypographySize; }; export type H0ThemeService = { accent: Readonly>; animation: Readonly>; resolvedAnimation: Readonly>; recommendedAnimation: Readonly>; animationRecommendationReason: Readonly>; isEvaluatingAnimation: Readonly>; refreshAnimationRecommendation: () => void; density: Readonly>; radiusSize: Readonly>; resolvedTheme: Readonly>; setAccent: (value: H0AccentName) => void; setAnimation: (value: H0AnimationLevel) => void; setDensity: (value: H0Density) => void; setRadiusSize: (value: H0RadiusSize) => void; setTheme: (value: H0ThemePreference) => void; setTypographySize: (value: H0TypographySize) => void; theme: Readonly>; toggleTheme: () => void; typographySize: Readonly>; dispose: () => void; }; export declare function createH0ThemeService(config?: H0ThemeConfig): H0ThemeService; export declare function provideH0Theme(app: App, service: H0ThemeService): void; export declare function useH0Theme(): H0ThemeService;