export declare const ECG_SECONDS_WIDTH = 150;
export declare const ECG_CHANNEL_SPACING = 5;
export declare const ECG_RENDERING_COLORS: {
    readonly gridMajor: "#7f0000";
    readonly gridMinor: "#3f0000";
    readonly baseline: "#7f4c00";
    readonly trace: "#ffffff";
    readonly label: "#ffff00";
    readonly background: "#000000";
};
export interface ECGChannelLike {
    name: string;
    data: Int16Array;
    min: number;
    max: number;
    visible?: boolean;
}
export interface ECGWaveformLike<TChannel extends ECGChannelLike = ECGChannelLike> {
    channels: TChannel[];
    numberOfChannels: number;
    numberOfSamples: number;
    samplingFrequency: number;
    bitsAllocated: number;
    sampleInterpretation: string;
    multiplexGroupLabel?: string;
    calibration?: unknown;
}
export interface ECGChannelLayout<TChannel extends ECGChannelLike = ECGChannelLike> {
    channel: TChannel;
    itemHeight: number;
    yOffset: number;
    baseline: number;
}
export interface ECGRenderMetrics {
    ecgWidth: number;
    ecgHeight: number;
    channelScale: number;
    worldToCanvasRatio: number;
    xOffsetCanvas: number;
    yOffsetCanvas: number;
}
export interface ECGGridMetrics {
    ecgWidth: number;
    ecgHeight: number;
    channelScale: number;
}
export declare function loadECGWaveform(dataId: string): Promise<{
    waveform: ECGWaveformLike;
    calibration: unknown;
}>;
export declare function computeECGMinMax(data: Int16Array): {
    min: number;
    max: number;
};
export declare function getDefaultECGValueRange(waveform: ECGWaveformLike): [number, number];
export declare function getVisibleECGChannels<TChannel extends ECGChannelLike>(channels: TChannel[], visibleChannels?: number[]): TChannel[];
export declare function getVisibleECGChannelsByFlag<TChannel extends ECGChannelLike>(channels: TChannel[]): TChannel[];
export declare function computeECGHeight<TChannel extends ECGChannelLike>(visibleChannels: TChannel[], channelScale: number): number;
export declare function computeECGChannelLayouts<TChannel extends ECGChannelLike>(args: {
    visibleChannels: TChannel[];
    channelScale: number;
}): ECGChannelLayout<TChannel>[];
export declare function computeECGRenderMetrics<TChannel extends ECGChannelLike>(args: {
    canvas: HTMLCanvasElement;
    visibleChannels: TChannel[];
    windowMs: number;
    valueRange: [number, number];
}): ECGRenderMetrics;
export declare function drawECGGrid(ctx: CanvasRenderingContext2D, metrics: ECGGridMetrics, options?: {
    showGrid?: boolean;
}): void;
export declare function drawECGTraces<TChannel extends ECGChannelLike>(args: {
    ctx: CanvasRenderingContext2D;
    layouts: ECGChannelLayout<TChannel>[];
    ecgWidth: number;
    channelScale: number;
    startIndex?: number;
    endIndex?: number;
    lineWidth?: number;
    amplitudeScale?: number;
}): void;
export declare function drawECGLabels<TChannel extends ECGChannelLike>(ctx: CanvasRenderingContext2D, layouts: ECGChannelLayout<TChannel>[], worldToCanvasRatio: number): void;
export declare function ensureECGCanvasSize(canvas: HTMLCanvasElement): void;
