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 {};