import { ElementRef, OnInit } from '@angular/core';
import { Subscription } from 'rxjs';
import { Coordinates, RelationsEndpoint, RelationsNode } from '../interfaces';
import { NodeRelationPath } from '../misc/nodeRelationPath';
import { RelationsNodeManager } from '../services';
import { RelationsCanvasSAComponent } from './relationsCanvas/relationsCanvas.component';
import * as i0 from "@angular/core";
/**
 * Base class for relations node endpoints (inputs/outputs)
 */
export declare abstract class RelationNodeEndpointBase implements RelationsEndpoint, OnInit {
    protected element: ElementRef<HTMLElement>;
    protected relationManager: RelationsNodeManager;
    protected canvas: RelationsCanvasSAComponent;
    /**
     * Canvas position change subscription
     */
    protected canvasPositionChangeSubscription: Subscription | null;
    /**
     * Node relation
     */
    protected relation: NodeRelationPath | null | undefined;
    /**
     * Indication whether component is dragging
     */
    protected isDragging: boolean;
    /**
     * Indication whether node endpoint is highlighted
     */
    protected isHighlighted: boolean;
    /**
     * Last mouse move position
     */
    protected lastMouseMovePosition: Coordinates;
    /**
     * @inheritdoc
     */
    name: string | undefined | null;
    /**
     * @inheritdoc
     */
    get parentId(): string;
    /**
     * Parent zoom level
     */
    zoomLevel: number;
    /**
     * Parent node coordinates
     */
    parentCoordiantes: Coordinates;
    /**
     * Instance of parent node
     */
    parent: RelationsNode | undefined | null;
    constructor(element: ElementRef<HTMLElement>, relationManager: RelationsNodeManager, canvas: RelationsCanvasSAComponent);
    /**
     * Initialize component
     */
    ngOnInit(): void;
    /**
     * @inheritdoc
     */
    getCoordinates(): Coordinates;
    /**
     * Highlight node endpoit
     */
    highlight(): void;
    /**
     * Cancel highlight for node endpoint
     */
    cancelHighlight(): void;
    /**
     * Updates relation coordinates
     */
    abstract updateRelation(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<RelationNodeEndpointBase, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<RelationNodeEndpointBase, never, never, { "name": { "alias": "name"; "required": false; }; "zoomLevel": { "alias": "zoomLevel"; "required": false; }; "parentCoordiantes": { "alias": "parentCoordiantes"; "required": false; }; "parent": { "alias": "parent"; "required": false; }; }, {}, never, never, false, never>;
}
//# sourceMappingURL=relationsNodeEndpointBase.d.ts.map