import type { Snippet } from 'svelte'; import type { ConditionalKeys, Primitive } from 'type-fest'; import type { Transformer } from '../transfomers/types.js'; type OmittedPropKeys = 'type' | 'args' | 'attach' | 'manual' | 'makeDefault' | 'id' | 'children' | `is${string}` | 'parent' | 'uuid' | 'name'; type AnyClass = new (...args: any) => any; type AnyFn = (...args: any) => any; type MaybeInstance = Type extends AnyClass ? InstanceType : Type; type InstanceProps = Partial extends Primitive ? Record : { [K in keyof MaybeInstance]?: MaybeInstance[K] extends { set: (...args: any[]) => any; } ? Parameters[K]['set']> | Parameters[K]['set']>[0] : MaybeInstance[K] extends AnyFn ? never : MaybeInstance[K]; }, ConditionalKeys, AnyFn> | OmittedPropKeys>>; type ObjectProp = { type?: T; }; export type ComplexProp = { transformer?: Transformer; label?: string; key?: string; }; export type AnyProp = string | boolean | ComplexProp; type AnyProps = { [P in keyof InstanceProps]?: AnyProp; }; export type SyncProps = AnyProps & ObjectProp & Record & { children?: Snippet<[{ capture: () => void; }]>; }; export {};