import { FoundationElement } from '@ni/fast-foundation';
import { ZoomTransform } from 'd3-zoom';
import { type Table, tableFromIPC } from 'apache-arrow';
import { DataManager } from './modules/data-manager';
import { RenderingModule } from './modules/rendering';
import { type HoverDie, HoverDieOpacity, type WaferMapColorScale, WaferMapColorScaleMode, type WaferMapDie, WaferMapOrientation, WaferMapOriginLocation, type WaferMapValidity, type WaferRequiredFields } from './types';
import { WaferMapUpdateTracker } from './modules/wafer-map-update-tracker';
import { WorkerRenderer } from './experimental/worker-renderer';
import { Computations } from './experimental/computations';
declare global {
    interface HTMLElementTagNameMap {
        'nimble-wafer-map': WaferMap;
    }
}
/**
 * A nimble-styled WaferMap
 */
export declare class WaferMap<T extends WaferRequiredFields = WaferRequiredFields> extends FoundationElement {
    static readonly Arrow: {
        tableFromIPC: typeof tableFromIPC;
    };
    /**
     * @internal
     * needs to be initialized before the properties trigger changes
     */
    readonly waferMapUpdateTracker: WaferMapUpdateTracker;
    originLocation: WaferMapOriginLocation;
    gridMinX?: number;
    gridMaxX?: number;
    gridMinY?: number;
    gridMaxY?: number;
    orientation: WaferMapOrientation;
    maxCharacters: number;
    dieLabelsHidden: boolean;
    dieLabelsSuffix: string;
    colorScaleMode: WaferMapColorScaleMode;
    /**
     * @internal
     */
    currentTask: Promise<void> | undefined;
    /**
     * @internal
     */
    workerCanvas: HTMLCanvasElement;
    /**
     * @internal
     */
    readonly canvas: HTMLCanvasElement;
    /**
     * @internal
     */
    canvasContext: CanvasRenderingContext2D;
    /**
     * @internal
     */
    readonly zoomContainer: HTMLElement;
    readonly computations: Computations;
    dataManager: DataManager;
    readonly workerRenderer: WorkerRenderer;
    renderer: RenderingModule;
    /**
     * @internal
     */
    renderQueued: boolean;
    /**
     * @internal
     */
    canvasWidth: number;
    /**
     * @internal
     */
    canvasHeight: number;
    /**
     * @internal
     */
    transform: ZoomTransform;
    /**
     * @internal
     */
    hoverTransform: string;
    /**
     * @internal
     */
    hoverOpacity: HoverDieOpacity;
    /**
     * @internal
     */
    hoverWidth: number;
    /**
     * @internal
     */
    hoverHeight: number;
    /**
     * @internal
     */
    hoverDie: WaferMapDie | HoverDie | undefined;
    highlightedTags: string[];
    dies: WaferMapDie[];
    diesTable: Table<T> | undefined;
    colorScale: WaferMapColorScale;
    private readonly hoverHandler;
    private readonly experimentalHoverHandler;
    private readonly zoomHandler;
    private readonly resizeObserver;
    private readonly waferMapValidator;
    get validity(): WaferMapValidity;
    connectedCallback(): void;
    disconnectedCallback(): void;
    /**
     * @internal
     * Experimental update function called when an update is queued.
     */
    experimentalUpdate(): Promise<void>;
    /**
     * @internal
     * Update function called when an update is queued.
     * It will check which updates are needed based on which properties have changed.
     * Each update represents a different starting point of the same sequential update flow.
     * The updates snowball one after the other, this function only choses the 'altitude'.
     * The hover does not require an event update, but it's also the last update in the sequence.
     */
    update(): void;
    /**
     * @internal
     */
    isExperimentalUpdate(): boolean;
    setData(data: Table | WaferMapDie[]): Promise<void>;
    private createSnapshot;
    private validate;
    private createResizeObserver;
    private originLocationChanged;
    private gridMinXChanged;
    private gridMaxXChanged;
    private gridMinYChanged;
    private gridMaxYChanged;
    private maxCharactersChanged;
    private dieLabelsHiddenChanged;
    private dieLabelsSuffixChanged;
    private colorScaleModeChanged;
    private highlightedTagsChanged;
    private diesChanged;
    private diesTableChanged;
    private colorScaleChanged;
    private transformChanged;
    private canvasWidthChanged;
    private canvasHeightChanged;
    private hoverDieChanged;
    private get asRequiredFieldsWaferMap();
}
export declare const waferMapTag = "nimble-wafer-map";
