import * as React from 'react'; export * from './theme/types'; import { IPropsTheme } from './theme/types'; export declare type PropsData = Record | PropArray; export declare type PropScalar = string | boolean | number | null | undefined; export declare type PropArray = Array>; export declare type PropValue = PropScalar | PropArray | Record | Function; export declare type PropDataObjectType = 'object' | 'array'; export declare type PropObjectType = PropDataObjectType | 'function'; export declare type PropTypeScalar = 'string' | 'boolean' | 'number'; export declare type PropEmptyType = 'null' | 'undefined'; export declare type PropType = PropTypeScalar | PropEmptyType | PropObjectType; export declare type PropValueFactory = (e: PropValueFactoryArgs) => PropValueFactoryResponse | undefined | void; export declare type PropValueFactoryResponse = { el?: React.ReactNode; underline?: { color: string | number; style: 'solid' | 'dashed'; }; }; export declare type PropValueFactoryArgs = { path: string; key: string | number; value: PropValue; type: PropType; theme: IPropsTheme; change(args: { to: string; }): void; onFocus(isFocused: boolean): void; }; export declare type PropFilter = (e: PropFilterArgs) => boolean; export declare type PropFilterArgs = { path: string; key: string | number; value: PropValue; type: PropType; }; export declare type PropsEvent = IPropsChangedEvent | IPropsFocusEvent; export declare type IPropsChangedEvent = { type: 'PROPS/changed'; payload: IPropsChange; }; export declare type IPropsChange = { action: PropChangeAction; path: string; key: string | number; value: { from: PropValue; to: PropValue; }; data: { from: D; to: D; }; }; export declare type PropChangeAction = 'CHANGE' | 'INSERT' | 'DELETE'; export declare type IPropsFocusEvent = { type: 'PROPS/focus'; payload: IPropsFocus; }; export declare type IPropsFocus = { isFocused: boolean; path: string; };