import { type ReactNode } from 'react';
import type { ReactElement } from 'react';
import type { ThemeMode, ThemeConfig, BorderRadiusConfig, BorderRadiusSize, ItemPaletteKey } from '@/types/theme';
import { type PreferencesScopeInfo } from '@/services/api/adminApi';
interface ThemeContextType {
    config: ThemeConfig;
    mode: ThemeMode;
    toggleMode: () => void;
    setMode: (mode: ThemeMode) => void;
    setBorderRadius: (element: keyof BorderRadiusConfig, size: BorderRadiusSize) => void;
    setAccentColor: (colorKey: string) => void;
    setItemPalette: (paletteKey: ItemPaletteKey) => void;
    applyPreset: (presetConfig: Partial<ThemeConfig>) => void;
    resetToDefault: () => void;
    getBorderRadius: (element: keyof BorderRadiusConfig) => string;
    /** Load preferences from server. Pass 'global' to load only global prefs, 'tenant' for effective (tenant with fallback). */
    loadFromServer: (forceScope?: 'global' | 'tenant' | null) => Promise<void>;
    isSyncing: boolean;
    scopeInfo: PreferencesScopeInfo | null;
    applyToTenant: () => Promise<void>;
    resetToGlobal: () => Promise<void>;
    selectedThemeTenant: string | null | undefined;
    /** Set the tenant scope for saving. skipLoad=true to just set scope without loading preferences. */
    setSelectedThemeTenant: (tenantId: string | null, skipLoad?: boolean) => Promise<void>;
    tenantOverrides: string[];
    loadTenantOverrides: () => Promise<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