import type { ButtonType, ControllerDefinition, EasingType, GetValueOptions, InputControl, MidiControllerOptions, RuntimeType } from './types'; export declare class MidiController { private _def; private _debugLogs; private _ccMap; private _nameToCC; /** The last-triggered control, with its metadata. */ input: InputControl | null; /** Value of the last-triggered control. */ value: number; private _values; private _prevValues; private _smoothed; private _rawMode; private _rawGlobal; private _defaultValue; private _smooth; private _smoothPerName; /** Per-button runtime type (default 'momentary'); sliders/knobs are excluded. */ private _buttonType; /** Latched state for toggle/radio buttons. */ private _toggled; /** Physical held state for buttons. */ private _pressed; /** Radio groups, keyed by each member name → the group's member list. */ private _radioGroup; /** Buttons whose LED has been taken over by an explicit setLed call. */ private _ledManual; /** Per-control custom value ranges (overrides RAW/NORMALIZED). */ private _range; /** WebMidi output port for LED control. */ private _output; private _onReady; /** Optional on-screen connection status banner (enabled via statusLabel). */ private _statusBanner; /** Reference to the owning p5 instance (set by the addon factory). */ _p5: any; _predrawLogged: boolean; constructor(definition: ControllerDefinition, { defaultValue, debugLogs, statusLabel, onReady }?: MidiControllerOptions); /** True when a MIDI output port for this device is available. */ get isConnected(): boolean; /** True if the named control is a button (not a continuous slider/knob). */ private _isButton; /** * The live runtime type of a control: 'continuous' for sliders/knobs, or the * last setType() value for buttons (default 'momentary'). undefined if unknown. */ getType(name: string): RuntimeType | undefined; /** Whether the named control has a hardware LED. undefined if unknown. */ hasLed(name: string): boolean | undefined; /** True while the named button is physically held down. */ isPressed(name: string): boolean; /** Library-managed latched state for a 'toggle'/'radio' button. */ isToggled(name: string): boolean; setType(name: string | string[], type: ButtonType): void; setToggled(name: string | string[], on: boolean): void; private _setToggled; valueMode(a: string, b?: string): void; setRange(name: string, min: number, max: number): void; setLed(name: string | string[], on: boolean): void; private _sendLed; private _applyAutoLed; setAllLeds(state: boolean): void; setSmooth(name: string | string[], easing: EasingType | boolean, duration?: number): void; smoothMode(easing: EasingType | boolean, duration?: number): void; statusLabel(on: boolean): void; private _smoothFor; getValue(name: string, { defaultValue, smoothed }?: GetValueOptions): number; private _update; private _onButtonPress; _interpolate(): void; private _initMidi; private _dispatchAction; private _onEnabled; private _listenTo; private _onControlChange; private _onOtherMessage; private _ledStartupSequence; private _refreshAutoLeds; }