import type { RaikouThemeComponent } from '../RaikouProvider'; import type { ClassNames, PartialVarsResolver, Styles } from '../styles-api'; export type DataAttributes = Record<`data-${string}`, any>; export interface FactoryPayload { props: Record; ctx?: any; ref?: any; stylesNames?: string; vars?: any; variant?: string; staticComponents?: Record; compound?: boolean; } export interface ExtendCompoundComponent { defaultProps?: Partial & DataAttributes; } export interface ExtendsRootComponent { defaultProps?: Partial & DataAttributes; classNames?: ClassNames; styles?: Styles; vars?: PartialVarsResolver; } export type ExtendComponent = Payload['compound'] extends true ? ExtendCompoundComponent : ExtendsRootComponent; export type StaticComponents = Input extends Record ? Input : Record; export interface ThemeExtend { extend: (input: ExtendComponent) => RaikouThemeComponent; } export type ComponentClasses = { classes: Payload['stylesNames'] extends string ? Record : never; }; export type RaikouComponentStaticProperties = ThemeExtend & ComponentClasses & StaticComponents & FactoryComponentWithProps; export type FactoryComponentWithProps = { withProps: (props: Partial) => React.ForwardRefExoticComponent & { component?: any; renderRoot?: (props: Record) => React.ReactNode; }>; }; export type RaikouComponent = React.ForwardRefExoticComponent & { component?: any; renderRoot?: (props: Record) => React.ReactNode; }> & RaikouComponentStaticProperties; export declare function identity(value: T): T; export declare function getWithProps(Component: T): (props: Partial) => T; export declare function factory(ui: React.ForwardRefRenderFunction): RaikouComponent;