/** * Options for the set operation on a state */ export type TSetOptions = { /** * When true, subscribers will not be notified of the change */ silent?: boolean; /** * Specific subscriber(s) to notify about the change */ target?: string | Array; }; /** * Reactive state interface */ export type TState = { /** * Sets a new value for the state * @param newData New value or function that returns a new value based on current state * @param options Configuration options for the update operation */ set: (newData: T | ((currentState: T) => T), options?: TSetOptions) => void; /** * Gets the current state value * @param callback Optional function to run with the current value * @returns Current state value */ get: (callback?: (value: T) => void) => T; /** * Subscribes to state changes * @param id Unique identifier for this subscription * @param effect Function to call when state changes * @param run Whether to immediately run the effect with current state */ sub: (id: string, effect: (value: T) => void, run?: boolean) => void; /** * Unsubscribes from state changes * @param id ID of the subscription to remove */ unsub: (id: string) => void; /** * Manually triggers subscribers * @param ids Specific subscriber IDs to trigger, if none provided all subscribers will be notified */ trigger: (...ids: string[]) => void; /** * Clears all subscriptions and optionally sets new value * @param newData Optional new value for the state */ clear: (newData?: T | ((currentState: T) => T)) => void; /** * Accessor property for the state value */ value: T; }; /** * Interface for setValue function used by Values helper */ export interface ISetValue { (): void; _object_ref: any; _path: string[]; _fn: () => any; _element?: HTMLElement; }