import { ComputedRef } from 'vue'; import { BioTemplateComponentBinding, BioTemplateComponentBindingsById, BioTemplateComponentImport, BioTemplateComponentPropsByComponent, BioTemplateComponentPropsBinding, BioTemplateComponentPropsById, BioTemplateComponentPropsLookupOptions, BioTemplateComponentSnippet, BioTemplateComponentUsage } from './useBioTemplateComponents'; /** * The template-component slice of `UseBioTemplateWorkspaceReturn`: the ~9 keys every * bio-template workspace composable (`useBioTemplateWorkspace`, `useBioTemplatePackWorkspace`, * `useBioTemplatePresetWorkspace`) re-exposes verbatim from `useBioTemplateComponents()`. */ export interface BioTemplateWorkspaceComponentBindings { componentBindings: BioTemplateComponentBinding[]; componentBindingsById: BioTemplateComponentBindingsById; componentImports: BioTemplateComponentImport[]; componentProps: BioTemplateComponentPropsBinding[]; componentPropsById: BioTemplateComponentPropsById; componentPropsByComponent: BioTemplateComponentPropsByComponent; componentSnippets: BioTemplateComponentSnippet[]; componentUsage: BioTemplateComponentUsage | null; getComponentProps: (component: string, options?: BioTemplateComponentPropsLookupOptions) => Record | undefined; } /** Structural source shape accepted by {@link flattenWorkspaceComponentBindings}. */ export interface BioTemplateWorkspaceComponentSource { componentBindings: BioTemplateComponentBinding[]; componentBindingsById: BioTemplateComponentBindingsById; componentImports: BioTemplateComponentImport[]; componentProps: BioTemplateComponentPropsBinding[]; componentPropsById: BioTemplateComponentPropsById; componentPropsByComponent: BioTemplateComponentPropsByComponent; componentSnippets: BioTemplateComponentSnippet[]; componentUsage: BioTemplateComponentUsage | null; getComponentProps: (component: string, options?: BioTemplateComponentPropsLookupOptions) => Record | undefined; } /** * Pick the shared template-component binding keys off a resolved bio-template workspace * (or its `components` source directly), so composables that build on `useBioTemplateWorkspace` * spread one object instead of re-listing all 9 keys by hand. * * @example Recommended * ```ts * const bindings = { renderer, ...flattenWorkspaceComponentBindings(components) } * ``` */ export declare function flattenWorkspaceComponentBindings(source: BioTemplateWorkspaceComponentSource): BioTemplateWorkspaceComponentBindings; /** Keys of {@link BioTemplateWorkspaceComponentBindings} that are plain (non-reactive) values, lifted to `ComputedRef`s by {@link liftWorkspaceComponentBindings}. */ export type LiftedBioTemplateWorkspaceComponentBindings = { [K in Exclude]: ComputedRef; } & { getComponentProps: BioTemplateWorkspaceComponentBindings['getComponentProps']; }; /** * `computed()`-lifted version of {@link flattenWorkspaceComponentBindings} for composables * that hold their resolved workspace behind a `ComputedRef` (e.g. a regenerated workspace * swapped in via `shallowRef`/`effectScope`), so each key stays independently reactive * instead of forcing consumers to unwrap the whole workspace to read one field. * `getComponentProps` stays a plain callable function, matching the un-lifted composables. * * @example Recommended * ```ts * const workspace = computed(() => workspaceRef.value) * const { componentBindings, componentProps, getComponentProps } = liftWorkspaceComponentBindings(workspace) * ``` */ export declare function liftWorkspaceComponentBindings(workspace: ComputedRef): LiftedBioTemplateWorkspaceComponentBindings;