import React from 'react';
import type { Theme } from '../hooks/openai/types';
import type { BrandColorConfig } from '../tokens/colors';
/**
 * Theme context value shape
 */
export interface ThemeContextValue {
    /**
     * Current theme ('light' or 'dark')
     */
    theme: Theme;
    /**
     * Function to programmatically set the theme.
     * Note: If running inside ChatGPT, the theme is controlled by ChatGPT
     * and this function will have no effect.
     */
    setTheme: (theme: Theme) => void;
    /**
     * Whether the theme is controlled by ChatGPT (read-only mode)
     */
    isControlledByChatGPT: boolean;
    /**
     * Current brand color configuration
     */
    brandColors?: BrandColorConfig;
}
/**
 * Theme context
 * @internal - Exported for use in useTheme hook
 */
export declare const ThemeContext: React.Context<ThemeContextValue | null>;
/**
 * Props for ThemeProvider component
 */
export interface ThemeProviderProps {
    /**
     * Child components
     */
    children: React.ReactNode;
    /**
     * Default theme to use when no other theme source is available
     * @default 'light'
     */
    defaultTheme?: Theme;
    /**
     * LocalStorage key for persisting theme preference
     * @default 'ainativekit-theme'
     */
    storageKey?: string;
    /**
     * Whether to detect and use system color scheme preference
     * @default true
     */
    enableSystemTheme?: boolean;
    /**
     * Custom brand colors to override the default accent colors
     * Provide hex color codes to customize the primary, success, warning, and error colors
     * @example
     * ```tsx
     * <ThemeProvider brandColors={{ primary: '#6B46C1', success: '#00C853' }}>
     *   <App />
     * </ThemeProvider>
     * ```
     */
    brandColors?: BrandColorConfig;
}
/**
 * Theme provider component
 *
 * Provides theme state and controls to child components. Integrates seamlessly
 * with ChatGPT Apps SDK when running inside ChatGPT, and provides standalone
 * theme management for other environments.
 *
 * @example
 * ```tsx
 * import { ThemeProvider } from '@ainativekit/ui';
 *
 * function App() {
 *   return (
 *     <ThemeProvider defaultTheme="light">
 *       <YourApp />
 *     </ThemeProvider>
 *   );
 * }
 * ```
 *
 * @example
 * ```tsx
 * // Toggle theme from a component
 * import { useThemeContext } from '@ainativekit/ui';
 *
 * function ThemeToggle() {
 *   const { theme, setTheme, isControlledByChatGPT } = useThemeContext();
 *
 *   if (isControlledByChatGPT) {
 *     return <div>Theme controlled by ChatGPT: {theme}</div>;
 *   }
 *
 *   return (
 *     <button onClick={() => setTheme(theme === 'light' ? 'dark' : 'light')}>
 *       Toggle theme (current: {theme})
 *     </button>
 *   );
 * }
 * ```
 */
export declare const ThemeProvider: React.FC<ThemeProviderProps>;
/**
 * Hook to access theme context
 *
 * Must be used within a ThemeProvider.
 *
 * @returns Theme context value with current theme and setTheme function
 * @throws Error if used outside of ThemeProvider
 *
 * @example
 * ```tsx
 * import { useThemeContext } from '@ainativekit/ui';
 *
 * function MyComponent() {
 *   const { theme, setTheme } = useThemeContext();
 *
 *   return (
 *     <div className={theme === 'dark' ? 'dark-mode' : 'light-mode'}>
 *       <button onClick={() => setTheme(theme === 'light' ? 'dark' : 'light')}>
 *         Toggle theme
 *       </button>
 *     </div>
 *   );
 * }
 * ```
 */
export declare const useThemeContext: () => ThemeContextValue;
//# sourceMappingURL=ThemeProvider.d.ts.map