/**
 * Autoblow Device Implementation
 *
 * Implements the HapticDevice interface for Autoblow devices (Ultra and Vacuglide)
 * Focused on sync script playback functionality
 */
import { DeviceCapability, DeviceInfo, DeviceScriptLoadResult, Funscript, HapticDevice } from '../../core/device-interface';
import { EventEmitter } from '../../core/events';
import { AutoblowSettings, AutoblowDeviceType } from './types';
import type * as AutoblowSdkTypes from '@xsense/autoblow-sdk';
/**
 * Autoblow device implementation
 */
export declare class AutoblowDevice extends EventEmitter implements HapticDevice {
    private _config;
    private _connectionState;
    private _deviceInfo;
    private _device;
    private _deviceType;
    private _isPlaying;
    private _scriptPrepared;
    readonly id: string;
    readonly name: string;
    readonly type: string;
    readonly capabilities: DeviceCapability[];
    constructor(config?: Partial<AutoblowSettings>);
    /**
     * Get connected state
     */
    get isConnected(): boolean;
    /**
     * Get playing state
     */
    get isPlaying(): boolean;
    /**
     * Get the device type (ultra or vacuglide)
     */
    get deviceType(): AutoblowDeviceType | null;
    /**
     * Connect to the Autoblow device
     */
    connect(config?: Partial<AutoblowSettings>): Promise<boolean>;
    /**
     * Disconnect from the device
     */
    disconnect(): Promise<boolean>;
    /**
     * Get current configuration
     */
    getConfig(): AutoblowSettings;
    /**
     * Update configuration
     */
    updateConfig(config: Partial<AutoblowSettings>): Promise<boolean>;
    /**
     * Prepare a script for playback (upload to device)
     * The funscript is already parsed - we just need to upload it
     *
     * @param funscript The parsed funscript content
     */
    prepareScript(funscript: Funscript): Promise<DeviceScriptLoadResult>;
    /**
     * Start playback at the specified time
     */
    play(timeMs: number, _playbackRate?: number, _loop?: boolean): Promise<boolean>;
    /**
     * Stop playback
     */
    stop(): Promise<boolean>;
    /**
     * Sync time - Autoblow handles this via syncScriptStart
     * We restart playback at the new time position
     */
    syncTime(timeMs: number, _filter?: number): Promise<boolean>;
    /**
     * Set the sync script offset
     */
    setOffset(offsetMs: number): Promise<boolean>;
    /**
     * Get device state
     */
    getState(): Promise<AutoblowSdkTypes.UltraDeviceState | AutoblowSdkTypes.VacuglideDeviceState | null>;
    /**
     * Get device information
     */
    getDeviceInfo(): DeviceInfo | null;
}
