import { Dict } from '@_unit/unit/lib/types/Dict'; import { Unlisten } from '@_unit/unit/lib/types/Unlisten'; import { MenuOption } from './menu'; export type MetadataColorMap = Dict; export type MusemeEvents = 'connecting' | 'connected' | 'error'; export type MusemeOverlayAPI = { setSetting(name: string, value: any): void; getSettings(): MusemeOverlaySettings; getSetting(name: K): MusemeOverlaySettings[K]; getPlayer(): any; getCurrentColorMap(): MetadataColorMap; addListener(event: MusemeEvents, listener: () => void): Unlisten; }; export declare const labelToIcon: { Open: string; Close: string; Talk: string; Give: string; Buy: string; Sell: string; Fight: string; Run: string; Escape: string; }; export declare const randomMenuOptions: () => { value: any; label: string; icon: any; url: string; }[]; export declare const DEFAULT_OVERLAY_SETTINGS: MusemeOverlaySettings; export type RGBA = [number, number, number, number]; export declare const rgbaToHex: (rgba: RGBA) => string; export declare const isBlackPixel: (r: number, g: number, b: number) => boolean; export type MusemeSourceVideo = { play(): void; pause(): void; getCurrentTime(): number; getRect(): { width: number; height: number; top: number; left: number; }; isPaused(): boolean; addEventListener(event: string, callback: (event: Event) => void): void; removeEventListener(event: string, callback: (event: Event) => void): void; }; export type MusemeOrigins = { apiHostname: string; liveHostname: string; pollHostname: string; }; export type LiveProtocol = 'ws' | 'rtc'; export type LiveMode = 'vote' | 'link'; export type MusemeOverlaySettings = { enabled: boolean; pauseOnClick: boolean; showMasksOnPause: boolean; showMasksOnTouch: boolean; showMarkers: boolean; showOverlay: boolean; liveProtocol: LiveProtocol; liveMode: LiveMode; debug: boolean; }; export type DetectedObject = { Class: string; Color: [number, number, number]; SceneId: string; Id: string; Rect: { x: number; y: number; w: number; h: number; }; Score: number; Actions: string; PrevSceneId?: number; PrevObjectId?: number; Metadata: { menu: string; metadata: string; name: string; }; }; export type MusemeObjectMetadata = DetectedObject & { Hex: string; ActionList?: string[]; metadata?: string; }; export type Config = { getObjectMenu?(videoId: string, metadata: MusemeObjectMetadata, signal: AbortSignal): Promise; getOverlayVideoUrl?(): string; getSocket?(): WebSocket; getMetadataUrl?(): string | Promise; getPixelColor?(x: number, y: number, width: number, height: number): [number, number, number, number]; onActionSelected?(metadata: MusemeObjectMetadata, icon: string, options: MenuOption[]): boolean | void; onEmptyMenuClick?(metadata: MusemeObjectMetadata): void; getCurrentLatency?(ccTime: number): number; getOrigins?: () => MusemeOrigins; getSettings?: () => Partial; }; export declare function renderOverlay(video: MusemeSourceVideo, videoId: string, config?: Config, live?: boolean): [MusemeOverlayAPI, () => void];