import { DigitalChannelMode, SimDevice } from "@wpilib/wpilib-ws-robot"; import { NetworkTable } from "node-ntcore"; import QueuedI2CBus from "../../../device-interfaces/i2c/queued-i2c-bus"; export interface IOInterfaces { numDioPorts?: number; numAnalogInPorts?: number; numPwmOutPorts?: number; simDevices?: SimDevice[]; } export interface RobotHardwareInterfaces { i2cBus: QueuedI2CBus; } export default abstract class CustomDevice { private _deviceType; private _isSingleton; private _deviceNetworkTable; protected _robotHWInterfaces: RobotHardwareInterfaces; constructor(deviceType: string, isSingleton: boolean, robotHW: RobotHardwareInterfaces, useNT?: boolean); get deviceType(): string; get isSingleton(): boolean; get identifier(): string; abstract get ioInterfaces(): IOInterfaces; protected get networkTable(): NetworkTable | null; abstract update(): void; setDigitalChannelMode(channel: number, mode: DigitalChannelMode): void; setDIOValue(channel: number, value: boolean): void; setPWMValue(channel: number, value: number): void; getAnalogInVoltage(channel: number): Promise; getDigitalInValue(channel: number): Promise; }