import type { mat4 } from 'gl-matrix';
import type { Point3, Point2, ICamera, ECGViewportInput, ECGWaveformData, ECGViewportProperties, ViewReferenceSpecifier } from '../types/index.js';
import { Transform } from './helpers/cpuFallback/rendering/transform.js';
import Viewport from './Viewport.js';
declare class ECGViewport extends Viewport {
    readonly uid: string;
    readonly renderingEngineId: string;
    readonly canvasContext: CanvasRenderingContext2D;
    private imageId;
    private channels;
    private waveformData;
    private ecgWidth;
    private ecgHeight;
    private channelScale;
    private ecgCamera;
    constructor(props: ECGViewportInput);
    static get useCustomRenderingPipeline(): boolean;
    private addEventListeners;
    private removeEventListeners;
    private elementDisabledHandler;
    setEcg(imageId: string): Promise<void>;
    setDisplaySets(...entries: Array<{
        displaySetId: string;
        options?: unknown;
    }>): Promise<void>;
    setChannelVisibility(index: number, visible: boolean): void;
    getVisibleChannels(): {
        name: string;
        visible: boolean;
    }[];
    getWaveformData(): ECGWaveformData | null;
    getContentDimensions(): {
        width: number;
        height: number;
    };
    private computeChannelScale;
    private recalculateHeight;
    private computeChannelLayouts;
    setProperties(props: ECGViewportProperties): void;
    getProperties: () => ECGViewportProperties;
    resetProperties(): void;
    setCamera(camera: ICamera): void;
    getCamera(): ICamera;
    resetCamera: () => boolean;
    getFrameOfReferenceUID: () => string;
    resize: () => void;
    canvasToWorld: (canvasPos: Point2, destPos?: Point3) => Point3;
    worldToCanvas: (worldPos: Point3) => Point2;
    getPan(): Point2;
    getRotation: () => number;
    getNumberOfSlices: () => number;
    getCurrentImageIdIndex: () => number;
    getCurrentImageId: () => string | undefined;
    getViewReferenceId(_specifier?: ViewReferenceSpecifier): string;
    hasImageURI(imageURI: string): boolean;
    isReferenceViewable(viewRef: {
        FrameOfReferenceUID?: string;
    }): boolean;
    getSliceIndex: () => number;
    getImageIds: () => string[];
    scroll: () => void;
    customRenderViewportToCanvas: () => void;
    updateCameraClippingPlanesAndRange(): void;
    private refreshRenderValues;
    private getWorldToCanvasRatio;
    protected getTransform(): Transform;
    private renderFrame;
    private drawGrid;
    private drawTraces;
    private drawLabels;
    getImageData(): {
        dimensions: number[];
        spacing: number[];
        origin: number[];
        direction: number[];
        imageData: {
            getDirection: () => number[];
            getDimensions: () => number[];
            getRange: () => Point2;
            getSpacing: () => number[];
            worldToIndex: (point: Point3) => Point3;
            indexToWorld: (point: Point3) => Point3;
        };
        hasPixelSpacing: boolean;
        calibration: import("packages/metadata/dist/esm").IImageCalibration;
        preScale: {
            scaled: boolean;
        };
        metadata: {
            Modality: string;
        };
    };
    getSliceViewInfo(): {
        width: number;
        height: number;
        sliceIndex: number;
        slicePlane: number;
        sliceToIndexMatrix: mat4;
        indexToSliceMatrix: mat4;
    };
    getMiddleSliceData: () => never;
}
export default ECGViewport;
