import { TreeViewAnyPluginSignature, TreeViewPlugin } from './plugin'; export type DefaultizedProps

= Omit & Required> & AdditionalProps; export type MergePluginsProperty = TPlugins extends readonly [plugin: infer P, ...otherPlugin: infer R] ? P extends TreeViewAnyPluginSignature ? P[TProperty] & MergePluginsProperty : {} : {}; export type ConvertPluginsIntoSignatures = TPlugins extends readonly [plugin: infer P, ...otherPlugin: infer R] ? P extends TreeViewPlugin ? [TSignature, ...ConvertPluginsIntoSignatures] : ConvertPluginsIntoSignatures : []; export interface MergePlugins { state: MergePluginsProperty; instance: MergePluginsProperty; params: MergePluginsProperty; defaultizedParams: MergePluginsProperty; dependantPlugins: MergePluginsProperty; events: MergePluginsProperty; models: MergePluginsProperty; }