import { ElementType, PropsWithChildren } from 'react';
import { Theme } from 'theme-ui';
import type { SupportedColorModes } from './types';
export declare type ThemeProviderProps = PropsWithChildren<{
    /**
     * Array of color modes that the app supports. The first specified color mode will be the default.
     * Defaults to `[ColorMode.DARK]`.
     */
    supportedColorModes?: SupportedColorModes;
    /**
     * Theme UI object to merge into the default theme that components use, to override or add some values.
     */
    extendTheme?: Theme;
    /**
     * Whether to include legacy values in the default theme, such as legacy colors, `theme.text`, `theme.buttons`, and `theme.styles`.
     *
     * TODO: Get rid of it when all apps have it set to `false`.
     */
    useLegacyTheme?: boolean;
    /**
     * Whether to include legacy global styles but mostly rely on the consumer app’s global styles (usually in `Layout`).
     * When `false`, all the necessary global styles are injected automatically so the consumer app doesn’t need to.
     *
     * TODO: Get rid of it when all apps have it set to `false`.
     */
    useLegacyGlobalStyles?: boolean;
    /**
     * Whether to disable smooth scrolling, or a function that gets passed the disabler function so it can be called on demand,
     * e.g. after certain events. Note that when a function is used, smooth scrolling is re-enabled automatically after each scroll,
     * and the function must return a cleanup function (like `useEffect`).
     *
     * Example usage with Next Router: `disableSmoothScrolling={(disableFn) => { router.events.on('routeChangeStart', disableFn); return () => router.events.off('routeChangeStart', disableFn); }}`
     */
    disableSmoothScrolling?: boolean | ((disableFn: () => void) => () => void);
    /**
     * Head component in which `<link>` dependencies (e.g. fonts) are injected. Defaults to `react-helmet`.
     */
    headComponent?: ElementType;
}>;
/**
 * Provides the Theme UI theme as well as global styles that are necessary for all `@edgeandnode/components`.
 * Should be placed near the root of the app.
 */
export declare const ThemeProvider: ({ supportedColorModes, extendTheme, useLegacyTheme, useLegacyGlobalStyles, disableSmoothScrolling, headComponent, children, }: ThemeProviderProps) => import("theme-ui/jsx-runtime").JSX.Element;
