import { ComponentStyles } from '../structure/Theme';
import React from 'react';
export declare type ComponentWithDefaultStyles = React.ComponentType<any> & {
    defaultStyles?: ComponentStyles;
};
export interface ThemedComponentProps {
    styles: ComponentStyles;
    [key: string]: any;
}
/**
 * Merges component styles from different sources and passes on the the component as 'styles' prop.
 *
 * Following sources are considered as style sources. (In order of least important first):
 *
 * 1. defaultStyles: A component may provide default styles as a "defaultStyles" static
 * property of component. This is similar to defaultProps in react.
 * 2. stylesParam: 3rd property of this function. Note: Component Registry passes 'styles' prop from it's registry item.
 * 3. Themes: From theme.components[componentName] property of current theme.
 * 4. styles prop: The styles prop passed on to the component during usage.
 *
 * FIXME: Fix return typing of this function
 *
 * @param name
 * @param Component
 * @param stylesParam
 */
export declare const applyStyles: ({ name, styles: stylesParam }?: {
    name?: string | undefined;
    styles?: ComponentStyles | import("../../utils").Thunk<ComponentStyles> | undefined;
}) => (Component: ComponentWithDefaultStyles) => React.ComponentType<any>;
