export interface Webcam { (this: Webcam, config: Config): Inst; _init(config: Config): Inst | void; get_device_list(): Promise; get_inst_by_guid(guid: Guid): Inst | void; get_insts(): Inst[] | void; destroy(): void; fn: WebcamFn; v: string; } export interface WebcamFn { init: Init; [s: string]: any; } export interface Init { new (config: Config): Inst; (this: Inst, config: Config): Inst; fn: InitFn; } export declare const Webcam: Webcam; export declare type Guid = number; export declare type CamIdx = number; export declare type StreamIdx = number; export declare type DevLabel = string; export declare type stor = string | HTMLElement; export declare type ImgDataType = 'dataURL' | 'dataurl' | 'objectURL' | 'objecturl'; export interface BaseConfig { debug: boolean; useDefault: boolean; ctx: stor; fps: number; previewWidth: number; previewHeight: number; flipHoriz: boolean; width: number; height: number; imageFormat: 'jpeg' | 'png'; jpegQuality: number; dataType: ImgDataType; switchDelay: number; snapDelay: number; devLabels: string[] | null; } export interface Config extends BaseConfig { multiOptions?: StreamConfig[] | null; } export interface StreamConfig extends BaseConfig { streamIdx: StreamIdx; deviceName?: string; deviceId?: string; [prop: string]: any; } export interface SnapParams { streamIdx: StreamIdx; width: number; height: number; flipHoriz: boolean; imageFormat: 'jpeg' | 'png'; jpegQuality: number; dataType: ImgDataType; switchDelay: number; snapDelay: number; } export interface VideoConstraints { width: { ideal: number; }; height: { ideal: number; }; deviceId?: { exact: string; }; } export interface InitFn { reset(this: Inst): Inst; _reset(this: Inst, sidx: StreamIdx): Inst; set(this: Inst, sconfig: StreamConfig | StreamConfig[]): Inst; _set(this: Inst, sconfig: StreamConfig): void; _set_stream_device_label(this: Inst, sconfig: StreamConfig): Inst; sidx_exists(this: Inst, sidx: StreamIdx): boolean; get_stream_config(this: Inst, sidx: StreamIdx): StreamConfig | void; get_all_stream_idx(this: Inst): StreamIdx[]; release_stream(this: Inst, sidx: StreamIdx): Inst; stop_media(this: Inst, sidx: StreamIdx): Inst; connect(this: Inst, sidx: StreamIdx): Promise; connect_next(this: Inst, sidx?: StreamIdx): Promise; snap(this: Inst, opts?: StreamIdx | SnapParams): Promise; prepare_snap_opts(this: Inst, opts: SnapParams | undefined | null): SnapParams | void; get_next_sidx(this: Inst, sidx: StreamIdx): StreamIdx; get_first_sidx(this: Inst): StreamIdx | void; } export interface Inst extends InitFn { guid: Guid; ctx: HTMLElement | null; holder: HTMLDivElement | null; video: HTMLVideoElement | null; streamMap: Map; streamConfigMap: Map; config: Config; inited: boolean; live: boolean; currStreamIdx: number; retryCount: number; } export default Webcam;