import { type ReactElement, type ReactNode } from 'react';
import type { ThemeMode, UiTheme, UiPreset, UserUiPermissions } from '@/types/theme';
import { type EffectiveUiConfigDto, type PreferencesScopeInfo } from '@/services/api/adminApi';
interface ThemeContextType {
    mode: ThemeMode;
    toggleMode: () => void;
    setMode: (mode: ThemeMode) => void;
    selectedTheme: UiTheme | null;
    selectedPreset: UiPreset | null;
    availableThemes: UiTheme[];
    availablePresets: UiPreset[];
    permissions: UserUiPermissions | null;
    setTheme: (themeId: string) => Promise<void>;
    setPreset: (presetId: string | null) => Promise<void>;
    loadFromServer: (forceScope?: 'global' | 'tenant' | null) => Promise<void>;
    isSyncing: boolean;
    scopeInfo: PreferencesScopeInfo | null;
    applyToTenant: () => Promise<void>;
    resetToGlobal: () => Promise<void>;
    selectedThemeTenant: string | null | undefined;
    setSelectedThemeTenant: (tenantId: string | null, skipLoad?: boolean) => Promise<void>;
    tenantOverrides: string[];
    loadTenantOverrides: () => Promise<void>;
    effectiveUiConfig: EffectiveUiConfigDto | null;
}
export declare const ThemeContext: import("react").Context<ThemeContextType | undefined>;
export declare function applyUiThemeToDocument(theme: UiTheme, preset: UiPreset | null, root?: HTMLElement): void;
export declare function ThemeProvider({ children }: {
    children: ReactNode;
}): ReactElement;
export declare function useTheme(): ThemeContextType;
export declare function useThemeMode(): {
    theme: ThemeMode;
    toggleTheme: () => void;
    setTheme: (mode: ThemeMode) => void;
};
export {};
//# sourceMappingURL=ThemeContext.d.ts.map