import { JSX } from '../jsx/jsx-namespace'; import Component from '../component'; export interface Ref { current?: T; } export interface IProps { [key: string]: any; } export interface IState { [key: string]: any; } export interface IContext { [key: string]: any; } export type ElementType = string | ((props: IProps, context?: IContext) => JSX.Element | null) | (new (props: IProps, context?: IContext) => Component); export interface FunctionComponent

{ (props: P, context?: any): JSX.Element | null; } export interface ComponentClass

{ new (props: P, context?: any): Component; } export type ComponentType

= ComponentClass

| FunctionComponent

; export type ClassComponent

= ComponentClass; export type FC

= FunctionComponent

; export type HOC, P = {}, S = {}> = FC

& T;