declare module 'butterchurn' { interface VisualizerOptions { width?: number; height?: number; meshWidth?: number; meshHeight?: number; pixelRatio?: number; textureRatio?: number; outputFXAA?: boolean; } class Visualizer { constructor(audioContext: AudioContext, canvas: HTMLCanvasElement, opts: ButterchurnOptions); loseGLContext(): void; connectAudio(audioNode: AudioNode): void; disconnectAudio(audioNode: AudioNode): void; static overrideDefaultVars(baseValsDefaults: unknown, baseVals: unknown): unknown; createQVars(): Record; createTVars(): Record; createPerFramePool(baseVals: unknown): Record; createPerPixelPool(baseVals: unknown): Record; createCustomShapePerFramePool(baseVals: unknown): Record; createCustomWavePerFramePool(baseVals: unknown): Record; static makeShapeResetPool(pool: Record, variables: string[], idx: number): Record; static base64ToArrayBuffer(base64: string): ArrayBuffer; loadPreset(presetMap: unknown, blendTime?: number): Promise; async loadWASMPreset(preset: unknown, blendTime: number): Promise; loadJSPreset(preset: unknown, blendTime: number): void; loadExtraImages(imageData: unknown): void; setRendererSize(width: number, height: number, opts?: VisualizerOptions): void; setInternalMeshSize(width: number, height: number): void; setOutputAA(useAA: boolean): void; setCanvas(canvas: HTMLCanvasElement): void; render(opts?: VisualizerOptions): unknown; launchSongTitleAnim(text: string): void; toDataURL(): string; warpBufferToDataURL(): string; } interface ButterchurnOptions { width?: number; height?: number; onlyUseWASM?: boolean; } export default class Butterchurn { static createVisualizer(audioContext: AudioContext, canvas: HTMLCanvasElement, options?: ButterchurnOptions): Visualizer; } } declare module 'butterchurn-presets' { const presets: Record; export default presets; }