import * as kshoot from 'kshoot';
import type { LoadedKShootChartContext } from "./index";
export declare class CrossCorrelation {
    readonly data: Float32Array;
    readonly half_window_size: number;
    constructor(x: Float32Array, y: Float32Array, half_window_size?: number);
    peaks(prefer_center?: number): Generator<[offset: number, correlation: number]>;
    bestOffset(prefer_center?: number): number;
}
export declare class OffsetComputer {
    readonly chart_ctx: LoadedKShootChartContext;
    readonly chart: kshoot.Chart;
    readonly timing: kshoot.Timing;
    constructor(chart_ctx: LoadedKShootChartContext);
    getTimeByPulse(pulse: kshoot.Pulse): number;
    private _chart_energy_map;
    get chart_energy_map(): Map<kshoot.Pulse, number>;
    getChartEnergy(): [offset: number, chart_energy: Float32Array];
    getMusicAudioBuffer(in_audio_file_buffer?: Buffer): Promise<AudioBuffer | null>;
    computeCrossCorrelation(audio_file_buffer?: Buffer): Promise<CrossCorrelation | null>;
    computeCrossCorrelation(audio_buffer?: AudioBuffer): Promise<CrossCorrelation | null>;
    computeCrossCorrelation(audio?: Buffer | AudioBuffer): Promise<CrossCorrelation | null>;
    computeOffset(audio_file_buffer?: Buffer): Promise<number | null>;
    computeOffset(audio_buffer?: AudioBuffer): Promise<number | null>;
}
export declare function computeOffset(chart_ctx: LoadedKShootChartContext): Promise<number | null>;
export declare function computeCrossCorrelation(chart_ctx: LoadedKShootChartContext): Promise<CrossCorrelation | null>;
export declare function drawDebugImage(chart_ctx: LoadedKShootChartContext): Promise<Buffer | null>;
