import { EventEmitter, h } from '../../stencil-public-runtime';
import { Node } from '@vertexvis/scene-tree-protos/scenetree/protos/domain_pb';
import { SceneTreeOperationHandler } from '../scene-tree/lib/handlers';
import { SceneTreeCellHoverController } from '../scene-tree-table-layout/lib/hover-controller';
export interface SceneTreeTableCellEventDetails {
    node?: Node.AsObject;
    originalEvent: PointerEvent;
}
export declare class SceneTreeTableCell {
    /**
     * The node data that is associated to the row that this cell belongs to.
     * Contains information related to if the node is expanded, visible, etc.
     */
    node?: Node.AsObject;
    /**
     * A reference to the scene tree to perform operations for interactions. Such
     * as expansion, visibility and selection.
     */
    tree?: HTMLVertexSceneTreeElement;
    /**
     * The value to display in this cell.
     */
    value?: string;
    /**
     * The value to display in this cell if the `value` specified is
     * undefined. Defaults to "--".
     */
    placeholder: string;
    /**
     * Whether to always show the requested icons in the cell. If false,
     * the icons will only appear when hovering over the cell.
     */
    alwaysShowIcons: boolean;
    /**
     * @internal
     */
    hovered: boolean;
    /**
     * @internal
     */
    isScrolling?: boolean;
    /**
     * Indicates whether to display a button for toggling the expanded state of
     * the node associated with this cell.
     */
    expandToggle?: boolean;
    /**
     * Indicates whether to display an indicator that the node associated with
     * this cell is an end item.
     */
    endItemIndicator?: boolean;
    /**
     * Indicates whether to display a button for toggling the visibility state of
     * the node associated with this cell.
     */
    visibilityToggle?: boolean;
    /**
     * Indicates whether to display a button for isolating (show only + fly to)
     * the node associated with this cell.
     */
    isolateButton?: boolean;
    /**
     * An optional handler that will override this cell's default selection
     * behavior. The registered handler will receive the `pointerup` event,
     * the node data for the row this cell is associated with, and a reference
     * to the parent `<vertex-scene-tree>` element for performing operations.
     */
    selectionHandler?: SceneTreeOperationHandler;
    /**
     * An optional handler that will override this cell's default visibility
     * behavior. The registered handler will receive the `pointerup` event,
     * the node data for the row this cell is associated with, and a reference
     * to the parent `<vertex-scene-tree>` element for performing operations.
     */
    visibilityHandler?: SceneTreeOperationHandler;
    /**
     * An optional handler that will override this cell's default expansion
     * behavior. The registered handler will receive the `pointerup` event,
     * the node data for the row this cell is associated with, and a reference
     * to the parent `<vertex-scene-tree>` element for performing operations.
     */
    expansionHandler?: SceneTreeOperationHandler;
    /**
     * An optional handler that will override this cell's default isolate
     * behavior. The registered handler will receive the `pointerup` event,
     * the node data for the row this cell is associated with, and a reference
     * to the parent `<vertex-scene-tree>` element for performing operations.
     */
    isolateHandler?: SceneTreeOperationHandler;
    /**
     * @internal
     */
    hoverController?: SceneTreeCellHoverController;
    /**
     * An event that is emitted when a user requests to expand the node. This is
     * emitted even if interactions are disabled.
     */
    expandToggled: EventEmitter<SceneTreeTableCellEventDetails>;
    /**
     * An event that is emitted when a user requests to change the node's
     * visibility. This event is emitted even if interactions are disabled.
     */
    visibilityToggled: EventEmitter<SceneTreeTableCellEventDetails>;
    /**
     * An event that is emitted when a user requests to change the node's selection
     * state. This event is emitted even if interactions are disabled.
     */
    selectionToggled: EventEmitter<SceneTreeTableCellEventDetails>;
    /**
     * An event that is emitted when a user requests to isolate the node.
     * This event is emitted even if interactions are disabled.
     */
    isolatePressed: EventEmitter<SceneTreeTableCellEventDetails>;
    /**
     * Used for internals or testing.
     *
     * @private
     */
    cellLoaded: EventEmitter<void>;
    private hostEl;
    private hoverListener?;
    private longPressTimer?;
    componentDidLoad(): void;
    disconnectedCallback(): void;
    componentWillRender(): void;
    render(): h.JSX.IntrinsicElements;
    private displayValue;
    private handleCellPointerEnter;
    private handleCellPointerLeave;
    private handleCellPointerUp;
    private handleCellPointerDown;
    private createActionPointerUpHandler;
    private toggleExpansion;
    private toggleVisibility;
    private toggleAttribute;
    private isolate;
    private performDefaultSelectionOperation;
    private performDefaultVisibilityOperation;
    private performDefaultIsolateOperation;
    private performDefaultExpansionOperation;
    private clearLongPressTimer;
    private restartLongPressTimer;
    private getBackgroundColorStyle;
    private getCssVariableWithFallbacks;
    private getIsolateIcon;
    private getExpansionIcon;
    private getEndItemIcon;
    private getVisibilityIcon;
}
