import React from "react";
import type { OsdkThemeMode } from "./types.js";
export declare const DATA_THEME_ATTR = "data-bp-color-scheme";
export interface OsdkThemeProviderProps {
	/**
	* Controlled theme. When provided, the provider does not maintain its
	* own state — the parent must respond to `onThemeChanged` (or update its
	* own external store) and re-render with the new value. Use this when an
	* external store already owns the theme value (e.g. Redux/Zustand, a
	* parent design-system provider, or a Storybook toolbar).
	*/
	theme?: OsdkThemeMode;
	/**
	* Initial theme when uncontrolled. Ignored when `theme` is provided.
	*
	* @default "system"
	*/
	defaultTheme?: OsdkThemeMode;
	/** Fires whenever `setTheme` is called from a descendant. */
	onThemeChanged?: (theme: OsdkThemeMode) => void;
	/**
	* Element to write `data-bp-color-scheme` onto.
	*
	* @default `document.documentElement` - (the `<html>` element), which is
	* the safest target because Blueprint portals (popovers, dialogs,
	* tooltips) render outside the React tree.
	*/
	target?: HTMLElement | null;
	children: React.ReactNode;
}
/**
* Provides OSDK theme state to descendants and writes a
* `data-bp-color-scheme` attribute onto the document so the CSS in
* `tokens/base-tokens/dark.css` activates the right theme.
*
* `defaultTheme="system"` (default) follows the OS `prefers-color-scheme`
* setting and re-renders when it changes. `defaultTheme="light"` /
* `defaultTheme="dark"` start in the given theme regardless of the OS
* preference. Call {@link useOsdkTheme}().setTheme from a descendant to
* switch modes at runtime.
*
* To integrate with an external theme store, pass `theme` (controlled
* mode)
*/
export declare function OsdkThemeProvider({ theme: controlledTheme, defaultTheme, onThemeChanged, target, children }: OsdkThemeProviderProps): React.ReactElement;
