import { GroupSyncWrite } from './sync/group-sync-write';
import { GroupSyncRead } from './sync/group-sync-read';
import { SerialOptions, PingResult, ServoStatus, MotorsConfig } from './types';

export * from './types';
export * from './core/constants';
export * as helpers from './utils/helpers';
export interface FeetechServoConfig {
    port?: SerialOptions;
    motors?: MotorsConfig;
    defaultModel?: string;
    timeout?: number;
}
export declare class FeetechServo {
    private portHandler;
    private protocolHandler;
    private isConnected;
    private motors;
    private defaultModel;
    private getModelByServoId;
    constructor(config?: FeetechServoConfig);
    setMotors(motors: MotorsConfig): void;
    getMotorModel(motorName: string): string;
    setDefaultModel(model: string): void;
    connect(): Promise<void>;
    disconnect(): Promise<void>;
    getConnectionStatus(): boolean;
    ping(id: number): Promise<PingResult>;
    scan(startId?: number, endId?: number): Promise<PingResult[]>;
    readPosition(id: number): Promise<number>;
    writePosition(id: number, position: number, speed?: number): Promise<void>;
    setPositionInDegrees(id: number, degrees: number, speed?: number): Promise<void>;
    getPositionInDegrees(id: number): Promise<number>;
    enableTorque(id: number): Promise<void>;
    disableTorque(id: number): Promise<void>;
    readStatus(id: number): Promise<ServoStatus>;
    setID(id: number, newId: number): Promise<void>;
    setBaudRate(id: number, baudRate: number): Promise<void>;
    factoryReset(id: number): Promise<void>;
    reboot(id: number): Promise<void>;
    createSyncWrite(address: number, dataLength: number): GroupSyncWrite;
    createSyncRead(address: number, dataLength: number): GroupSyncRead;
    syncWritePosition(positions: Array<{
        id: number;
        position: number;
    }>): Promise<void>;
    syncReadPosition(ids: number[]): Promise<Map<number, number>>;
    readByte(id: number, address: number): Promise<number>;
    writeByte(id: number, address: number, value: number): Promise<void>;
    readWord(id: number, address: number): Promise<number>;
    writeWord(id: number, address: number, value: number): Promise<void>;
    readData(id: number, address: number, length: number): Promise<Uint8Array>;
    writeData(id: number, address: number, data: Uint8Array): Promise<void>;
    private ensureConnected;
}
export default FeetechServo;
//# sourceMappingURL=index.d.ts.map