import { EditorTheme, EditorUiTheme } from '@edtr-io/editor-ui';
import { RendererTheme, RendererUiTheme } from '@edtr-io/renderer-ui';
import * as React from 'react';
import styled, { ThemeProps as StyledThemeProps, ThemeProviderProps as StyledThemeProviderProps } from 'styled-components';
export { styled };
export interface Theme {
    editor: EditorTheme;
    editorUi: DeepPartial<EditorUiTheme>;
    renderer: RendererTheme;
    rendererUi: DeepPartial<RendererUiTheme>;
    plugins: Record<string, unknown>;
}
export declare type CustomTheme = DeepPartial<Theme>;
export declare type ThemeProps = StyledThemeProps<Theme>;
export declare function RootThemeProvider(props: StyledThemeProviderProps<CustomTheme>): JSX.Element;
export declare const ThemeContext: React.Context<Theme>;
export declare const ThemeConsumer: React.Context<Theme>['Consumer'];
export declare function useTheme(): Theme;
export declare function ThemeProvider(props: StyledThemeProviderProps<CustomTheme>): JSX.Element;
export declare function createPluginTheme<T>(createDefaultTheme: PluginThemeFactory<T>): (pluginName: string, theme: Theme) => T;
export declare function usePluginTheme<T>(pluginName: string, createDefaultTheme: PluginThemeFactory<T>): T;
export declare type PluginThemeFactory<T> = (theme: {
    editor: EditorTheme;
    renderer: RendererTheme;
}) => T;
declare type DeepPartial<T> = {
    [P in keyof T]?: T[P] extends (infer U)[] ? (DeepPartial<U>)[] : T[P] extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>> : DeepPartial<T[P]>;
};
//# sourceMappingURL=index.d.ts.map