/**
 * Copyright 2023 Impulse Innovations Limited
 *
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
import { EventEmitter } from 'eventemitter3';
import type { ZoomState } from '../../../types';
import type { TextureCache } from '../texture-cache';
import { MOUSE_EVENTS } from '../utils';
import type { EdgeState, PixiEdgeStyle } from './definitions';
export declare class EdgeObject extends EventEmitter<(typeof MOUSE_EVENTS)[number]> {
    edgeGfx: PIXI.Container;
    edgeSymbolsGfx: PIXI.Container;
    /**
     * Current edge state
     */
    state: EdgeState;
    private temporary;
    constructor(temporary?: boolean);
    private createEdge;
    /**
     * Create a new edge symbols container, including sprites for:
     * - top symbol - e.g. different arrows
     * - center symbol - e.g. question mark/cross
     * - bottom symbol - e.g. arrows
     * - strength symbol - strength marker circles
     */
    private createEdgeSymbols;
    /**
     * Update edge style of a given edgeGfx container
     *
     * @param edgeGfx edge graphics container
     * @param edgeStyle current edge style
     * @param textureCache texture cache instance
     */
    static updateEdgeStyle(edgeGfx: PIXI.Container, edgeStyle: PixiEdgeStyle, textureCache: TextureCache): void;
    /**
     * Update edge style of a given edgeSymbolsGfx container
     *
     * @param edgeGfx edge graphics container
     * @param edgeSymbolsGfx edge symbols graphics container
     * @param edgeStyle current edge style
     * @param textureCache texture cache instance
     */
    static updateEdgeSymbolsStyle(edgeGfx: PIXI.Container, edgeSymbolsGfx: PIXI.Container, edgeStyle: PixiEdgeStyle, textureCache: TextureCache): void;
    /**
     * Update visibility of edge elements based on zoomstep
     *
     * @param edgeGfx edge graphics container
     * @param zoomStep zoom step
     */
    static updateEdgeVisibility(edgeGfx: PIXI.Container, zoomState: ZoomState, state: EdgeState): void;
    /**
     * Update visibility of edge symbol elements based on zoomstep
     *
     * @param edgeSymbolsGfx edge symbol graphics container
     * @param zoomStep zoom step
     */
    static updateEdgeSymbolVisibility(edgeSymbolsGfx: PIXI.Container, zoomState: ZoomState, hasPoints: boolean): void;
    /**
     * Update position of the edge
     *
     * @param edgeStyle current edge style
     * @param sourceNodePosition source node center position
     * @param targetNodePosition target node center position
     * @param sourceSize source node diameter
     * @param targetSize target node diameter
     * @param viewport viewport
     * @param textureCache texture cache
     */
    updatePosition(edgeStyle: PixiEdgeStyle, sourceNodePosition: PIXI.PointData, targetNodePosition: PIXI.PointData, sourceSize: number, targetSize: number, viewport: pixi_viewport.Viewport, textureCache: TextureCache, isSourceSquare?: boolean, isTargetSquare?: boolean): void;
    /**
     * Render a curved edge.
     *
     * Should be called on each render.
     *
     * @param edgeStyle current edge style
     * @param sourceBoundPosition source node bound position
     * @param targetBoundPosition target node bound position
     * @param viewport viewport
     */
    private renderCurvedEdge;
    /**
     * Update styles of all edge graphics
     *
     * @param edgeStyle current edge style
     * @param textureCache texture cache instance
     */
    updateStyle(edgeStyle: PixiEdgeStyle, textureCache: TextureCache): void;
    /**
     * Update visibility of edge graphics
     *
     * @param zoomStep current zoom step
     */
    updateVisibility(zoomState: ZoomState, hasPoints: boolean): void;
}
//# sourceMappingURL=edge-object.d.ts.map