import { Getter } from '../types/getter.js'; import type { ILabel, IValueModel } from './types.js'; export declare function withLabel, TLabel = string>(model: TModel, label: Getter): TModel & ILabel; export declare function inject>(model: TModel, source: IValueModel): TModel; /** * Adds callbacks to setter and getter of the 'value' property of a model. DOES NOT override previous spies (all spies are in charge). * * Useful mostly for debugging. * */ export declare function spyModel & object)>(model: TModel, spySetter: (v: T) => void, spyGetter?: (v: T) => void): void; export declare function wrap(model: TSource, getter: (m: TSource) => TRes, setter: (v: TRes, model: TSource) => void): IValueModel; type LabeledModel, TLabel = string> = TModel & ILabel; interface LabeledModelCtor, TLabel = string> { new (label?: Getter, initial?: T): LabeledModel; } export declare function mixinLabel, TLabel = string>(Superclass: new (initial?: T) => TModel): LabeledModelCtor; export {};