// Generated by dts-bundle-generator v9.5.1

export interface ProgressLineOptions {
	color?: string;
	heightPercent?: number;
	position?: RenderMode;
	style?: "dashed" | "dotted" | "solid";
	width?: number;
}
export type RenderMode = "bottom" | "center" | "top";
export interface WaveformEvents {
	destroy: void;
	error: Error;
	progressChange: number;
	ready: void;
	renderComplete: void;
	renderStart: void;
	resize: {
		height: number;
		width: number;
	};
	seek: number;
}
export interface WaveformOptions {
	amplitude?: number;
	backgroundColor?: string;
	barWidth?: number;
	borderColor?: string;
	borderRadius?: number;
	borderWidth?: number;
	color?: string;
	gap?: number;
	minPixelRatio?: number;
	position?: RenderMode;
	progress?: number;
	progressLine?: null | ProgressLineOptions;
	smoothing?: boolean;
}
declare class EventEmitter<Events extends Record<string, any>> {
	private events;
	off<E extends keyof Events>(event: E, callback: (args: Events[E]) => void): void;
	on<E extends keyof Events>(event: E, callback: (args: Events[E]) => void): void;
	once<E extends keyof Events>(event: E, callback: (args: Events[E]) => void): void;
	removeAllListeners<E extends keyof Events>(event?: E): void;
	protected emit<E extends keyof Events>(event: E, args: Events[E]): void;
	protected hasListeners<E extends keyof Events>(event: E): boolean;
}
export declare class WaveformRenderer extends EventEmitter<WaveformEvents> {
	private readonly canvas;
	private readonly ctx;
	private devicePixelRatio;
	private frameRequest?;
	private isDestroyed;
	private options;
	private peaks;
	private readonly resizeObserver;
	constructor(canvas: HTMLCanvasElement, peaks: number[], options?: Partial<WaveformOptions>);
	destroy(): void;
	setOptions(options: Partial<WaveformOptions>): void;
	setPeaks(peaks: number[]): void;
	setProgress(progress: number): void;
	setProgressLineOptions(options: null | Partial<ProgressLineOptions>): void;
	private calculateProgressFromEvent;
	private calculateProgressFromTouch;
	private drawWaveform;
	private drawWaveformWithColor;
	private handleClick;
	private handleError;
	private handleResize;
	private handleTouch;
	private resizeCanvas;
	private scheduleRender;
	private setupContext;
}
/**
 * Calculates peaks from an AudioBuffer
 */
export declare function getPeaksFromAudioBuffer(audioBuffer: AudioBuffer, numberOfPeaks: number): number[];

export {};
