/**
* @license
* Copyright Akveo. All Rights Reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*/
import React from 'react';
import { Interaction, StyleType } from './style.service';
import { ThemeType } from '../theme/theme.service';
export interface StyledComponentProps {
appearance?: string;
theme?: ThemeType;
themedStyle?: StyleType;
dispatch?: (interaction: Interaction[]) => void;
}
export declare type StyledComponentClass
= React.ComponentClass;
/**
* `styled` is a High Order Function which is used to apply style mapping on component.
*
* Requires component to have `styledComponentName` string property which defines
* corresponding component name in mapping. (e.g 'Button' for Button component).
* Returns component class which can be used as styled component.
*
* @property {string} appearance - Determines style appearance of component. Default is provided by mapping.
*
* @property {ThemeType} theme - Determines theme used to style component.
*
* @property {StyleType} themedStyle - Determines component style for it's current state.
*
* @property {(interaction: Interaction[]) => void} dispatch - Determines function
* for dispatching current state of component. This is designed to be used as style request function.
* Calls component re-render if style for requested state differ from current.
*
* @param Component - Type: {ComponentType}. Determines class or functional component to be styled.
*
* @overview-example StyledComponentSimpleUsage
*
* @overview-example StyledComponentStates
*
* @overview-example StyledComponentVariants
*/
export declare const styled: (Component: React.ComponentType
) => StyledComponentClass
;