import ICyclingMode, { CyclingMode, UpdateRequest } from "../modes/types.js"; import { DeviceProperties, DeviceSettings, ControllerConfig, IAdapter, OnDeviceDataCallback, IncyclistCapability, IncyclistAdapterData, User, UpdateRequestInput } from "../types/index.js"; import { EventLogger } from "gd-eventlog"; import { EventEmitter } from "node:events"; export default class IncyclistDevice

extends EventEmitter implements IAdapter { onDataFn: OnDeviceDataCallback; settings: DeviceSettings; lastUpdate?: number; updateFrequency: number; capabilities: IncyclistCapability[]; started: boolean; stopped: boolean; paused: boolean; scanning: boolean; protected props: P; protected cyclingMode: ICyclingMode; protected modes: Record; protected logger: EventLogger; protected static controllers: ControllerConfig; protected user: User; protected data: IncyclistAdapterData; protected debugLogEnabled: boolean; protected logPaused: any; constructor(settings: DeviceSettings, props?: P); supportsVirtualShifting(): boolean; getLogger(): EventLogger; isDebugEnabled(): boolean; pauseLogging(): void; resumeLogging(): void; isLogPaused(): boolean; logEvent(event: any): void; getName(): string; getID(): string; getUniqueName(): string; getDisplayName(): string; getSettings(): DeviceSettings; isSame(adapter: IAdapter): boolean; isEqual(settings: DeviceSettings): boolean; getInterface(): string; restart(pause?: number): Promise; check(): Promise; start(props?: DeviceProperties): Promise; stop(): Promise; pause(): Promise; resume(): Promise; connect(): Promise; close(): Promise; resetData(): void; getControllerInfo(): ControllerConfig | undefined; isControllable(): boolean; getCapabilities(): IncyclistCapability[]; hasCapability(capability: IncyclistCapability): boolean; addCapability(capability: IncyclistCapability): void; getMaxUpdateFrequency(): number; setMaxUpdateFrequency(value: number): void; update(): void; setCyclingMode(mode: string | ICyclingMode, settings?: any, sendInitCommands?: boolean): void; createMode(ModeClass: typeof CyclingMode): ICyclingMode; protected createOrGetMode(mode: string | ICyclingMode, useCurrent?: boolean): ICyclingMode; getSupportedCyclingModes(): Array; getCyclingMode(): ICyclingMode; getDefaultCyclingMode(): ICyclingMode; setBikeProps(props: P): void; sendInitCommands(): Promise; sendUpdate(request: UpdateRequestInput): Promise; setUser(user: User): void; getUser(): User; getWeight(): number; isUpdateWithinFrequency(): boolean; canEmitData(): boolean; emitData(data: IncyclistAdapterData): void; isStopped(): boolean; isStarted(): boolean; isPaused(): boolean; getData(): IncyclistAdapterData; getStartProps(startProps?: P): P; hasDataListeners(): boolean | OnDeviceDataCallback; onData(callback: OnDeviceDataCallback): void; onScanStart(): void; onScanStop(): void; protected initDebugLog(): void; } export type IncyclistDeviceAdapter = IncyclistDevice;