package DirectedGraphJava;

import java.util.Iterator;

interface IDirectedGraph {
    public DirectedGraph reindex();
    public Integer numVertices();
    public Integer numEdges();
    public Iterator<Integer> vertices();
    public Iterator<Pair<Pair<Integer,Integer>,Integer>> edges();
    public boolean isEdge(Integer v1, Integer v2);
    public int inDegree(Integer v);
    public int outDegree(Integer v);
    public Iterator<Integer> inbounds(Integer v);
    public Iterator<Integer> outbounds(Integer v);
    public Integer weight(Integer v1, Integer v2);
    public void weight(Integer v1, Integer v2, Integer w);
    public void addVertex(Integer v);
    public void removeVertex(Integer v);
    public void addEdge(Integer v1, Integer v2, Integer w);
    public void removeEdge(Integer v1, Integer v2);
}
