import React from 'react'; import { MaybeThunk } from '../utils'; import { ComponentStyles } from './Theme'; export type BlueBaseComponent = React.ComponentType & { defaultStyles?: ComponentStyles; }; export type ComponentWithDefaultStyles = BlueBaseComponent; export interface ThemedComponentProps { [key: string]: any; styles: ComponentStyles; } export type applyStylesOptions = string | { name: string; /** * @deprecated */ styles?: MaybeThunk; }; /** * 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. * * @param options */ export declare function applyStyles(options: applyStylesOptions): (Component: BlueBaseComponent) => BlueBaseComponent;