import type { HexColor, Position, Size } from "./types.js"; export interface SwitchButtonOption { key: K; value: string; } export type SwitchOptions = Array>; export interface CreateDebugSwitchButtonOptions { /** Array of switch options with key-value pairs. */ options: SwitchOptions; /** Initial selected option index (default: 0). */ optionInitialIndex?: number; /** Wrap around at ends (default: true). */ optionsWrap?: boolean; /** Size (default: 200×40). */ size?: Size; /** Background color (default: "#ffffff"). */ bgColor?: HexColor; /** Stroke color (default: "#000000"). */ strokeColor?: HexColor; /** Stroke thickness (default: 1). */ strokeThickness?: number; /** Text color (default: "#000000"). */ textColor?: HexColor; /** Arrow color (default: "#ffffff"). */ arrowColor?: HexColor; /** Arrow size in px (default: auto from height). */ arrowSize?: number; /** Arrow margin from edges (default: 10). */ arrowMargin?: number; /** Font size in px (default: 16). */ fontSize?: number; /** Font family (default: "Verdana"). */ fontFamily?: string; /** Enabled (default: true). */ enabled?: boolean; /** Position (optional). */ position?: Position; } /** * A cycling switch button for debug HUD. * * Displays a list of key-value options with left/right arrow navigation. * Supports wrap-around, enabled/disabled states, and emits "option-changed" events. * Chainable API. */ export declare class DebugSwitchButton extends Phaser.GameObjects.Container { private _bg; private _label; private _leftArrow; private _rightArrow; private _leftZone; private _rightZone; private _options; private _currentIndex; private _optionsWrap; private _isEnabled; private _panelWidth; private _panelHeight; private _cornerRadius; private _bgColor; private _strokeColor; private _strokeThickness; private _textColor; private _arrowColor; private _arrowSize; private _arrowMargin; private _fontSize; private _fontFamily; constructor(scene: Phaser.Scene, options: CreateDebugSwitchButtonOptions); nextOption(): this; previousOption(): this; setOptionIndex(index: number): this; setOptionByKey(key: K): this; getCurrentOption(): SwitchButtonOption | null; getCurrentIndex(): number; getOptions(): SwitchOptions; setOptions(options: SwitchOptions): this; setEnabled(enabled: boolean): this; isEnabled(): boolean; setOptionsWrap(wrap: boolean): this; setBgColor(color: HexColor): this; setTextColor(color: HexColor): this; setArrowColor(color: HexColor): this; setSwitchSize(width: number, height: number): this; setFontSize(size: number): this; setFontFamily(family: string): this; setStyle(options: { size?: Size; bgColor?: HexColor; strokeColor?: HexColor; strokeThickness?: number; textColor?: HexColor; arrowColor?: HexColor; arrowSize?: number; arrowMargin?: number; fontSize?: number; fontFamily?: string; }): this; /** Listen for option changes. */ onOptionChanged(handler: (option: SwitchButtonOption, index: number, prevOption: SwitchButtonOption | null, prevIndex: number) => void): this; private redraw; private redrawBg; private redrawArrows; private positionArrows; private updateDisplay; private updateArrowStates; private updateEnabledVisuals; private emitChanged; } export declare function createDebugSwitchButton(scene: Phaser.Scene, options: CreateDebugSwitchButtonOptions): DebugSwitchButton; //# sourceMappingURL=DebugSwitchButton.d.ts.map