import { ApxTokens } from './tokens';

/**
 * A registered theme. Open by design: `tokens` is the interoperable part, and a
 * product may carry its own fields alongside without this layer touching them.
 */
export interface ApxTheme {
    /** Family root tokens this theme contributes. */
    tokens?: ApxTokens;
    /** Light/dark hint, for products that switch a palette on it. */
    mode?: 'dark' | 'light';
    [key: string]: unknown;
}
/**
 * Register (or replace) a named theme.
 *
 * @param name Name callers reference through their product's `theme` option.
 * @param theme The theme definition. `null`/`undefined` registers an empty one.
 *
 * @example
 * ```ts
 * registerTheme('acme', {tokens: {accent: '#5b21b6', surface: '#faf7ff'}});
 * ```
 */
export declare function registerTheme(name: string, theme?: ApxTheme | null): void;
/** Look up a registered theme, or `null` when the name is unknown. */
export declare function getTheme(name: string): ApxTheme | null;
/** Names of every registered theme. */
export declare function registeredThemes(): string[];
/**
 * Remove a registered theme. Charts referencing it by name fall back to their
 * built-in defaults on the next render.
 */
export declare function unregisterTheme(name: string): void;
//# sourceMappingURL=registry.d.ts.map