import { Observable } from 'rxjs';
import { EntityMap, ID } from '../utils';
import { BaseModel } from './base.model';
import { LinkModel } from './link.model';
import { NodeModel } from './node.model';
export declare class PortModel extends BaseModel<NodeModel> {
    protected name: string;
    protected maximumLinks: number;
    protected linkType: string;
    protected links$: import("../state/state").EntityState<LinkModel>;
    protected x$: import("../state/state").ValueState<number>;
    protected y$: import("../state/state").ValueState<number>;
    protected width$: import("../state/state").ValueState<number>;
    protected height$: import("../state/state").ValueState<number>;
    protected magnetic$: import("../state/state").ValueState<boolean>;
    protected canCreateLinks$: import("../state/state").ValueState<boolean>;
    constructor(name: string, type?: string, id?: string, maximumLinks?: number, linkType?: string, magnetic?: boolean, logPrefix?: string);
    serialize(): {
        x: number;
        y: number;
        name: string;
        linkType: string;
        maximumLinks: number;
        type: string;
        magnetic: boolean;
        height: number;
        width: number;
        canCreateLinks: boolean;
        id: string;
        locked: boolean;
    };
    getNode(): NodeModel<PortModel>;
    getName(): string;
    getCanCreateLinks(): boolean;
    getCoords(): {
        x: number;
        y: number;
    };
    selectCanCreateLinks(): Observable<boolean>;
    setCanCreateLinks(value: boolean): void;
    getMagnetic(): boolean;
    selectMagnetic(): Observable<boolean>;
    setMagnetic(magnetic: boolean): void;
    selectX(): Observable<number>;
    selectY(): Observable<number>;
    getY(): number;
    getX(): number;
    getHeight(): number;
    getWidth(): number;
    getMaximumLinks(): number;
    setMaximumLinks(maximumLinks: number): void;
    getLinkType(): string;
    setLinkType(type: string): void;
    removeLink(linkOrId: ID | LinkModel): void;
    addLink(link: LinkModel): void;
    getLinks(): EntityMap<LinkModel>;
    getLinksArray(): LinkModel[];
    selectLinks(): Observable<EntityMap<LinkModel>>;
    updateCoords({ x, y, width, height }: {
        x: number;
        y: number;
        width: number;
        height: number;
    }): void;
    canLinkToPort(port: PortModel): boolean;
    isLocked(): boolean;
    createLinkModel(): LinkModel;
    destroy(): void;
}
