import { type ThemeVariables } from "./theme-types.js"; export interface ThemeProviderAdapter { readonly id: string; canRead(target: HTMLElement): boolean; read(target: HTMLElement): ThemeVariables; } /** * The page's provider registry, shared by every copy of this package. * * Remotes and hosts bundle their own copies, while `` is defined once * per page, by whichever copy loads first. A registry private to each copy left * a later copy's providers invisible to that element. The shape is a contract * between copies of any version, so it only grows. */ interface PieThemeProviderState { readonly adapters: Map; readonly observers: Set<() => void>; } declare global { var PIE_THEME_PROVIDERS: PieThemeProviderState | undefined; } /** * Provider mode that resolves nothing, leaving this package's shipped defaults * in place. * * `"auto"` lets any registered adapter that can read the target win, which on a * DaisyUI page means PIE tokens follow `--color-*`. This is how a host asks for * the palette it would have had before adopting a provider — the first question * to answer when colours differ between two environments. * * Distinct from naming an unregistered provider, which lands in the same place * by accident. `unregisterPieThemeProvider` cannot remove this one because it is * not in the registry at all, so the mode cannot be taken away from a host. */ export declare const PIE_THEME_PROVIDER_NONE = "none"; export declare const DAISYUI_THEME_PROVIDER_ADAPTER: ThemeProviderAdapter; export declare function registerPieThemeProvider(adapter: ThemeProviderAdapter): void; export declare function unregisterPieThemeProvider(providerId: string): void; /** Package-internal invalidation used by connected pie-theme elements. */ export declare function observePieThemeProviders(listener: () => void): () => void; export declare function listPieThemeProviders(): ThemeProviderAdapter[]; export declare function getPieThemeProvider(providerId: string): ThemeProviderAdapter | undefined; export declare function resolveProviderVariables(args: { target: HTMLElement; provider?: string | null; }): ThemeVariables; export {};