import { Data } from './component'; export declare type ComponentPropsOptions

= { [K in keyof P]: Prop | null; }; declare type Prop = PropOptions | PropType; interface PropOptions { type?: PropType | null; required?: boolean; default?: T | null | undefined | (() => T | null | undefined); validator?(value: any): boolean; } export declare type PropType = PropConstructor | PropConstructor[]; declare type PropConstructor = { new (...args: any[]): T & object; } | { (): T; }; declare type RequiredKeys = { [K in keyof T]: T[K] extends { required: true; } | (MakeDefautRequired extends true ? { default: any; } : never) ? K : never; }[keyof T]; declare type OptionalKeys = Exclude>; declare type InferPropType = T extends null ? any : T extends { type: null; } ? any : T extends ObjectConstructor | { type: ObjectConstructor; } ? { [key: string]: any; } : T extends Prop ? V : T; export declare type ExtractPropTypes = { readonly [K in RequiredKeys]: InferPropType; } & { readonly [K in OptionalKeys]?: InferPropType; }; export {};