/// import { Handy } from './handy'; import { Status } from './enums'; import { BaseService, Connected, ConnectionKey, ErrorResponse, HampService, HAMPState, HdspService, HsspService, HSSPState, HstpService, InfoResponse, Looping, MaintenanceService, Mode, Offset, OtaLatestResponse, OtaService, PercentValue, PositionAbsolute, SlideService, SlideSettings, Timestamp, TimesyncService } from './_APICORE'; export type { Connected, ConnectedResponse, ConnectionKey, Duration, ErrorResponse, FirmwareVersion, FixedPos, GenericError, GenericResultResponse, HAMPResponse, HAMPStartResponse, HAMPStopResponse, HAMPVelocityPercent, HAMPVelocityPercentResponse, HardwareVersion, HDSPRequest, HDSPResponse, HDSPTimeRequest, HSSPPlay, HSSPPlayResponse, HSSPResponse, InfoResponse, Looping, LoopSettingResponse, LoopSettingUpdate, ModeUpdate, NextXAT, NextXAVA, NextXPT, NextXPVA, NextXPVP, Offset, OffsetResponse, OffsetUpdate, OtaLatest, OtaLatestResponse, Outliers, PercentValue, PositionAbsolute, PositionAbsoluteResponse, RPCResult, ServerTimeResponse, SettingsResponse, Setup, Sha256, SlideResponse, SlideResultResponse, SliderMaxResponse, SliderMinResponse, SlideSettings, SlideUpdateResponse, StatusResponse, SyncCount, SyncResponse, Timestamp, UpdatePerform, UpdateStatusResponse, Url, VelocityAbsolute, } from './_APICORE'; export declare type UUITheme = 'default' | 'dark'; export interface UUISettings { URL: string; theme: UUITheme; compact?: boolean; slim?: boolean; storeURL: string; errorAlign: 'left' | 'center' | 'right'; } export interface SyncSettings { syncCount: number; outliers: number; } export interface LSSettings { getItem: (key: string) => string | null | Promise; setItem: (key: string, value: string) => void | Promise; removeItem: (key: string) => void | Promise; } export interface HandyConfig { API: string; scriptAPI: string; UUI: UUISettings; syncClientServerTime: boolean; syncClient: SyncSettings; syncHandy: SyncSettings; videoPlayerDelayForSecondPlay: number; timeBetweenSyncs: number; throttleDelay: number; localStorage?: LSSettings; } declare type ServiceMethod any> = ReturnType[Exclude, 'httpRequest'>]>; export declare type Method = ServiceMethod | ServiceMethod | ServiceMethod | ServiceMethod | ServiceMethod | ServiceMethod | ServiceMethod | ServiceMethod | ServiceMethod; declare type Awaited = T extends PromiseLike ? U : T; export declare type Response = Exclude, ErrorResponse>; export interface HandyBuffer { callback: { res: (value: Response) => void; rej: (error: unknown) => void; }; request: () => T; timestamp: number; sub?: keyof Pick; skip?: boolean; handy?: Handy; noStateUpdate?: boolean; updateState?: (handy: Handy, change: Response) => void; } export interface ClientServerLatency { avgOffset: number; avgRtd: number; lastSyncTime: number; } export interface HandyState { connectionKey?: ConnectionKey; connected?: Connected; connecting?: boolean; status: Status; mode?: Mode; info?: InfoResponse; hamp?: { velocity?: PercentValue; state?: HAMPState; }; hssp?: { state?: HSSPState; loop?: Looping; scriptSet?: boolean; }; hstp?: { time?: Timestamp; offset?: Offset; rtd?: Timestamp; }; slide?: { min?: PercentValue; max?: PercentValue; position?: PositionAbsolute; }; ota?: OtaLatestResponse; latency?: ClientServerLatency; uuiOpen?: boolean; settingScript?: boolean; lastInfoUpdate: number; error?: string; } export interface Funscript { actions: Action[]; metadata?: FunscriptMetadata; inverted?: boolean; range?: number; version?: string; info?: string; } export interface FunscriptMetadata { duration?: number; average_speed?: number; creator?: string; description?: string; license?: string; notes?: string; performers?: string[]; script_url?: string; tags?: string[]; title?: string; type?: string; video_url?: string; } export interface Action { at: number; pos: number; subActions?: Action[]; type?: 'first' | 'last' | 'pause' | 'prepause' | 'apex'; } export interface LocalStorage { clientServerLatency: ClientServerLatency; handyStates: HandyState[]; } export declare type RecursivePartial = { [P in keyof T]?: T[P] extends (infer U)[] ? RecursivePartial[] : T[P] extends object ? RecursivePartial : T[P]; }; export declare type Events = { state: { state: HandyState; change: Partial; }; connect: undefined; disconnect: undefined; }; export declare type Actions = { action: 'init'; result: HandyState; data: undefined; } | { action: 'getStoredKey'; result: string | undefined; data: undefined; } | { action: 'connect'; result: undefined; data: string; } | { action: 'disconnect'; result: undefined; data: undefined; } | { action: 'setStrokeZone'; result: undefined; data: SlideSettings; } | { action: 'setOffset'; result: undefined; data: number; } | { action: 'sync'; result: undefined; data: undefined; } | { action: 'state'; result: HandyState; data: undefined; }; export interface Throttled { timer?: NodeJS.Timeout; promise?: Promise; }