// License: GPL. For details, see LICENSE file.
package org.openstreetmap.josm.plugins.graphview.core.graph;

import java.util.Collection;

import org.openstreetmap.josm.plugins.graphview.core.property.GraphEdgePropertyType;

/**
 * directed connection between two nodes in a {@link WayGraph}
 */
public interface GraphEdge {

    /** returns the node this edge starts at; != null */
    GraphNode getStartNode();

    /** returns the node this edge leads to; != null */
    GraphNode getTargetNode();

    /** returns all property types for which property values are available */
    Collection<GraphEdgePropertyType<?>> getAvailableProperties();

    /** TODO */
    <V> V getPropertyValue(GraphEdgePropertyType<V> property);

}
