import { Serialized, NodeID, Adjacents, EdgeID, EdgeWeight, GraphEdge } from './Graph.interface';
declare class Graph {
    private edges;
    private edgeWeights;
    static encodeEdge(u: NodeID, v: NodeID): EdgeID;
    constructor(serialized?: Serialized);
    adjacent(nid: NodeID): Adjacents;
    nodes(): NodeID[];
    addNode(nid: NodeID): Graph;
    removeNode(nid: NodeID): Graph;
    addEdge(u: NodeID, v: NodeID, weight?: EdgeWeight): Graph;
    removeEdge(u: NodeID, v: NodeID): Graph;
    getEdgeWeight(u: NodeID, v: NodeID): EdgeWeight | undefined;
    setEdgeWeight(u: NodeID, v: NodeID, weight?: EdgeWeight): Graph;
    wrapEdgeWeight(u: NodeID, v: NodeID): GraphEdge;
    serialize(): Serialized;
    deserialize(serialized: Serialized): Graph;
    indegree(nid: NodeID): number;
    outdegree(nid: NodeID): number;
}
export default Graph;
