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;