import { DialSchema, GroupSchema } from '@vuer-ai/vuer-uikit'; /** * Schema configuration for dial controls */ export interface DialControlSchema { schemas: DialSchema[]; groups?: GroupSchema[]; } /** * Meta information passed to onChange callback */ export interface OnChangeMeta { /** Where the change originated */ source: 'panel' | 'set'; /** Registration ID that triggered the change (null if from panel) */ triggerRegistrationId: string | null; /** The displayKey of the changed value */ displayKey: string; /** Whether this registration owns the changed schema */ isSchemaOwner: boolean; } /** * Callback type for value changes */ export type OnChangeCallback = (name: string, value: any, values: Record, meta: OnChangeMeta) => void; /** * A single registration instance from a hook */ export interface DialRegistration { registrationId: string; displayKey: string; category: string; tags: string[]; schemas: DialSchema[]; groups?: GroupSchema[]; onChange?: OnChangeCallback; } /** * Merged entry for rendering (combines all registrations with same displayKey) */ export interface MergedDialEntry { displayKey: string; schemas: DialSchema[]; groups?: GroupSchema[]; values: Record; category: string; } /** * Global store for dial controls */ interface DialControlsStore { registrations: Map; values: Map>; register: (displayKey: string, schemaConfig: DialControlSchema, category: string, tags?: string[], onChange?: OnChangeCallback) => string; unregister: (registrationId: string) => void; getValues: (displayKey: string) => Record | undefined; setValue: (displayKey: string, name: string, value: any) => void; getValue: (displayKey: string, name: string) => any; clearValues: (displayKey: string) => void; getAllDisplayKeys: () => string[]; getMergedEntry: (displayKey: string) => MergedDialEntry | undefined; getDisplayKeysByCategory: (categories: string[]) => string[]; getDisplayKeysByTags: (tags: string[]) => string[]; getDisplayKeysByCategoryAndTags: (categories: string[], tags: string[]) => string[]; triggerOnChange: (displayKey: string, name: string, value: any, triggerRegistrationId: string | null, source: 'panel' | 'set' | 'drag') => void; } /** * Global zustand store for dial controls */ export declare const useDialControlsStore: import('zustand').UseBoundStore>; export {};