export declare const getSize: (elm: HTMLElement) => {
width: number;
height: number;
};
export type QRCanvasOpts = {
resultBlockSize: number;
overlayMainColor: string;
overlayFinderColor: string;
overlaySideColor: string;
overlayTimeout: number;
cropToSquare: boolean;
};
export type QRCanvasElements = {
overlay?: HTMLCanvasElement;
bitmap?: HTMLCanvasElement;
resultQR?: HTMLCanvasElement;
};
/**
* Handles canvases for QR code decoding
*/
export declare class QRCanvas {
private opts;
private lastDetect;
private main;
private overlay?;
private bitmap?;
private resultQR?;
constructor({ overlay, bitmap, resultQR }?: QRCanvasElements, opts?: Partial);
private setSize;
private drawBitmap;
private drawResultQr;
private drawOverlay;
drawImage(image: CanvasImageSource, height: number, width: number): string | undefined;
clear(): void;
}
declare class QRCamera {
private stream;
private player;
constructor(stream: MediaStream, player: HTMLVideoElement);
private setStream;
/**
* Returns list of cameras
* NOTE: available only after first getUserMedia request, so cannot be additional method
*/
listDevices(): Promise<{
deviceId: string;
label: string;
}[]>;
/**
* Change stream to different camera
* @param deviceId - devideId from '.listDevices'
*/
setDevice(deviceId: string): Promise;
readFrame(canvas: QRCanvas, fullSize?: boolean): string | undefined;
stop(): void;
}
/**
* Creates new QRCamera from frontal camera
* @param player - HTML Video element
* @example
* const canvas = new QRCanvas();
* const camera = frontalCamera();
* const devices = await camera.listDevices();
* await camera.setDevice(devices[0].deviceId); // Change camera
* const res = camera.readFrame(canvas);
*/
export declare function frontalCamera(player: HTMLVideoElement): Promise;
/**
* Run callback in a loop with requestAnimationFrame
* @param cb - callback
* @example
* const cancel = frameLoop((ns) => console.log(ns));
* cancel();
*/
export declare function frameLoop(cb: FrameRequestCallback): () => void;
export declare function svgToPng(svgData: string, width: number, height: number): Promise;
export {};
//# sourceMappingURL=dom.d.ts.map