export interface DebugControlAdapter { read(control: TControl): TValue; write(control: TControl, value: TValue): void; subscribe?(control: TControl, onValue: (value: TValue) => void): (() => void) | void; } export interface BindDebugControlOptions { /** UI control instance to bind. */ control: TControl; /** Optional explicit scene (auto-detected from control.scene when omitted). */ scene?: Phaser.Scene; /** Model object used with `path` for get/set. */ target?: Record; /** Dot/bracket path (e.g. "player.speed" / "items[0].enabled"). */ path?: string; /** Custom model getter (alternative to `target` + `path`). */ getValue?: () => TValue; /** Custom model setter (alternative to `target` + `path`). */ setValue?: (value: TValue) => void; /** Optional control adapter; inferred for known controls when omitted. */ adapter?: Partial>; /** Compare model/control values (default: Object.is). */ equals?: (a: TValue, b: TValue) => boolean; /** Sync model -> control once at bind time (default: true). */ syncFromModelOnBind?: boolean; /** Poll model each frame and push updates to control (default: true). */ syncFromModelEachFrame?: boolean; } export interface DebugControlBinding { syncFromModel(): void; syncFromControl(): void; getModelValue(): TValue; destroy(): void; isDestroyed(): boolean; } /** * Two-way data binding between a debug control and a model source. * * Control -> model updates happen via control events. * Model -> control updates happen on preupdate polling (or manual sync). */ export declare function bindDebugControl(options: BindDebugControlOptions): DebugControlBinding; //# sourceMappingURL=bindDebugControl.d.ts.map