import { theming } from './aether';
import { SwitchProps } from '../input/Switch';
import { deep } from '@synnaxlabs/x';
import { PropsWithChildren, ReactElement } from 'react';

export interface ContextValue {
    theme: theming.Theme;
    toggleTheme: () => void;
    setTheme: (key: string) => void;
}
export interface UseProviderProps {
    theme?: deep.Partial<theming.ThemeSpec> & {
        key: string;
    };
    setTheme?: (key: string) => void;
    toggleTheme?: () => void;
    themes?: Record<string, theming.ThemeSpec>;
    lightTheme?: string;
    darkTheme?: string;
}
export type UseProviderReturn = ContextValue;
export declare const useProvider: ({ theme, themes, setTheme, toggleTheme, lightTheme, darkTheme, }: UseProviderProps) => UseProviderReturn;
export declare const useContext: () => ContextValue;
export declare const use: () => theming.Theme;
export interface ProviderProps extends PropsWithChildren<unknown>, UseProviderProps {
    applyCSSVars?: boolean;
    defaultTheme?: string;
}
export declare const Provider: import('react').FC<ProviderProps & {
    aetherKey?: string | undefined;
}>;
export declare const Switch: ({ ...props }: Omit<SwitchProps, "onChange" | "value">) => ReactElement;
//# sourceMappingURL=Provider.d.ts.map