import { CompressedImage, type CompressParameters } from './encode/types'; export type WorkerInterface = { compress: { request: { type: 'compress'; payload: CompressParameters; }; result: Awaited & { source: Uint8ClampedArray; }; }; }; /** * Transferable */ export type Transferable = ArrayBufferLike | ImageBitmap; export type WorkerInterfaceImplementation = { [k in keyof WorkerInterface]: (payload: WorkerInterface[k]['request']['payload']) => Promise; }; export type WorkerRequest = WorkerInterface[keyof WorkerInterface]['request']; export type WithTransferListFunction = (payload: T, transferList: Transferable[]) => T; export type PromiseWorkerType = { postMessage: (message: any, transferables?: Transferable[]) => Promise; };