///
import { Handler } from 'mitt';
import { ConnectionKey, Events, Funscript, HandyConfig, HandyState, Offset, PercentValue, RecursivePartial, SlideSettings, SyncSettings } from './types';
import { ConnectResult, GenericResult, Mode, ModeUpdateResponse } from './enums';
import APIWrapper from './api';
export declare class Handy {
#private;
API: ReturnType;
playingTimer?: NodeJS.Timeout;
videoPlayer?: HTMLVideoElement;
constructor(initialConfig?: RecursivePartial);
updateState(state: Partial): Promise;
getState(): HandyState;
updateConfig(config: RecursivePartial): void;
getConfig(): HandyConfig;
connect(connectionKey: ConnectionKey): Promise;
disconnect(all?: boolean): Promise;
on(event: T, handler: Handler): void;
off(event: T, handler: Handler): void;
attachUUI(uuiId?: string): void;
toggleUUI(open?: boolean): Promise;
getClientServerLatency(): {
avgOffset: number;
avgRtd: number;
lastSyncTime: number;
};
getStoredKey(): Promise;
setVideoPlayer(videoPlayer?: HTMLVideoElement): void;
setMode(mode: Mode): Promise;
getMode(): Promise;
syncClientServerTime(settings?: Partial): Promise;
syncHandyServerTime(settings?: Partial): Promise;
sync(clientSettings?: SyncSettings, handySettings?: SyncSettings): Promise;
getHandyRtd(): Promise;
setOffset(offset: Offset): Promise;
getOffset(): Promise;
setStrokeZone(slide?: SlideSettings): Promise;
getStrokeZone(): Promise;
getAbsolutePosition(): Promise;
hampPlay(): Promise;
hampStop(): Promise;
setHampVelocity(velocity: PercentValue): Promise;
getHampVelocity(): Promise;
setScript(scriptUrl: string): Promise<{
result: import("./enums").HSSPSetupResult;
}>;
setScriptFromData(script: Funscript | string): Promise<{
result: import("./enums").HSSPSetupResult;
}>;
hsspPlay(startTime?: number, estimatedServerTime?: number): Promise;
hsspStop(): Promise;
setHsspLoop(loop?: boolean): Promise;
getHsspLoop(): Promise<{
loop: boolean;
result: GenericResult;
}>;
hdsp(position: number, speed: number, positionType: 'absolute' | 'percent', speedType: 'time' | 'absolute' | 'percent', stopOnTarget: boolean, immediateResponse: boolean): Promise;
restartHandy(reconnect?: boolean): Promise;
}
export declare function init(config?: RecursivePartial): Handy;
export declare function uploadDataToServer(script: Funscript | string, scriptAPI?: string): Promise;
export declare function isValidCSV(data: string): boolean;
export declare function convertDataToCSV(script: Funscript | string, lineTerminator?: string): string;
export declare function getEstimatedServerTime(): number;