/* tslint:disable */
/* eslint-disable */
export function main(): void;
export function decode_png_to_rgba(png_bytes: Uint8Array): Array<any>;
export function encode_palette_to_png(palette_indices: Uint8Array, palette: Array<any>, width: number, height: number): Uint8Array;
export class ImageQuantizer {
  free(): void;
  constructor();
  setSpeed(speed: number): void;
  setQuality(min: number, target: number): void;
  setMaxColors(colors: number): void;
  setPosterization(posterization: number): void;
  quantizeImage(rgba_data: Uint8ClampedArray, width: number, height: number): QuantizationResult;
}
export class QuantizationResult {
  private constructor();
  free(): void;
  getPalette(): Array<any>;
  getPaletteLength(): number;
  getQuantizationQuality(): number;
  setDithering(dithering_level: number): void;
  remapImage(rgba_data: Uint8ClampedArray, width: number, height: number): Uint8ClampedArray;
  getPaletteIndices(rgba_data: Uint8ClampedArray, width: number, height: number): Uint8Array;
}

export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembly.Module;

export interface InitOutput {
  readonly memory: WebAssembly.Memory;
  readonly main: () => void;
  readonly __wbg_imagequantizer_free: (a: number, b: number) => void;
  readonly imagequantizer_new: () => number;
  readonly imagequantizer_setSpeed: (a: number, b: number) => [number, number];
  readonly imagequantizer_setQuality: (a: number, b: number, c: number) => [number, number];
  readonly imagequantizer_setMaxColors: (a: number, b: number) => [number, number];
  readonly imagequantizer_setPosterization: (a: number, b: number) => [number, number];
  readonly imagequantizer_quantizeImage: (a: number, b: any, c: number, d: number) => [number, number, number];
  readonly __wbg_quantizationresult_free: (a: number, b: number) => void;
  readonly quantizationresult_getPalette: (a: number) => any;
  readonly quantizationresult_getPaletteLength: (a: number) => number;
  readonly quantizationresult_getQuantizationQuality: (a: number) => number;
  readonly quantizationresult_setDithering: (a: number, b: number) => [number, number];
  readonly quantizationresult_remapImage: (a: number, b: any, c: number, d: number) => [number, number, number];
  readonly quantizationresult_getPaletteIndices: (a: number, b: any, c: number, d: number) => [number, number, number];
  readonly decode_png_to_rgba: (a: any) => [number, number, number];
  readonly encode_palette_to_png: (a: any, b: any, c: number, d: number) => [number, number, number];
  readonly __wbindgen_free: (a: number, b: number, c: number) => void;
  readonly __wbindgen_malloc: (a: number, b: number) => number;
  readonly __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number;
  readonly __wbindgen_export_3: WebAssembly.Table;
  readonly __externref_table_dealloc: (a: number) => void;
  readonly __wbindgen_start: () => void;
}

export type SyncInitInput = BufferSource | WebAssembly.Module;
/**
* Instantiates the given `module`, which can either be bytes or
* a precompiled `WebAssembly.Module`.
*
* @param {{ module: SyncInitInput }} module - Passing `SyncInitInput` directly is deprecated.
*
* @returns {InitOutput}
*/
export function initSync(module: { module: SyncInitInput } | SyncInitInput): InitOutput;

/**
* If `module_or_path` is {RequestInfo} or {URL}, makes a request and
* for everything else, calls `WebAssembly.instantiate` directly.
*
* @param {{ module_or_path: InitInput | Promise<InitInput> }} module_or_path - Passing `InitInput` directly is deprecated.
*
* @returns {Promise<InitOutput>}
*/
export default function __wbg_init (module_or_path?: { module_or_path: InitInput | Promise<InitInput> } | InitInput | Promise<InitInput>): Promise<InitOutput>;
