import type { DeviceCommand, DeviceCommandResult, DeviceState } from '@dg-kit/core'; import { type StateListener, type WebBluetoothConnectionContext, type WebBluetoothProtocolAdapter } from './base.js'; /** * Auto-routing protocol adapter — Coyote only. Picks the V2 or V3 * implementation based on the connecting device's name prefix. * * This does NOT route paw-prints/civet-edging/opossum devices, even though * `DG_LAB_REQUEST_DEVICE_OPTIONS`'s broader scan filter will surface them in * the same chooser as Coyote units. Those three device kinds share Coyote * V3's exact GATT skeleton but speak a completely different command * vocabulary — silently defaulting an unrecognized device to * `CoyoteV3ProtocolAdapter` (the previous behavior) would send Coyote B0/BF * stim frames to, say, a pressure sensor. `createProtocol()` now throws * instead: callers that scan with the broader filter must classify the * result with `detectDeviceKind()` first and only hand Coyote-kind devices * to this facade, using `PawPrintsSensorAdapter`/`CivetPressureSensorAdapter`/ * `OpossumVibrateAdapter` directly for the other three kinds. */ export declare class CoyoteProtocolAdapter implements WebBluetoothProtocolAdapter { private readonly listeners; private activeProtocol; private unsubscribeActiveProtocol; constructor(); subscribe(listener: StateListener): () => void; onConnected(context: WebBluetoothConnectionContext): Promise; onDisconnected(): Promise; getState(): DeviceState; execute(command: DeviceCommand): Promise; emergencyStop(): Promise; setLimits(limitA: number, limitB: number): Promise; private createProtocol; private bindActiveProtocol; private emit; } //# sourceMappingURL=facade.d.ts.map