import { Vertex, Edge, Prop, Offset, VertexRef, EdgeRef, PropRef, VertexType, EdgeType, PropType, KeyType, PropValue, Link, Block, RootIndex, IndexedValue, Index, IndexRef, IndexType, Version, Comment, Tag } from './types'; import { IndexStore } from './index-store'; import { PropPredicate } from './navigate'; import { Signer } from './trust'; interface ElementAccessor { getVertex: (ref: VertexRef) => Promise; getEdge: (ref: EdgeRef) => Promise; getProp: (ref: PropRef) => Promise; } declare class Graph implements ElementAccessor { vertices: Map; edges: Map; props: Map; indices: Map; versionSet: ({ version, index, }: { version: Version; index: RootIndex; }) => Promise; rootGet: () => Promise<{ root: Link; index: RootIndex; }>; vertexGet: ({ root, index }: { root: Link; index: RootIndex; }, offset: number) => Promise; vertexRange: ({ root, index }: { root: Link; index: RootIndex; }, offset: number, count: number) => Promise; edgeGet: ({ root, index }: { root: Link; index: RootIndex; }, offset: number) => Promise; edgeRange: ({ root, index }: { root: Link; index: RootIndex; }, offset: number, count: number) => Promise; propGet: ({ root, index }: { root: Link; index: RootIndex; }, offset: number) => Promise; propRange: ({ root, index }: { root: Link; index: RootIndex; }, offset: number, count: number) => Promise; indexGet: ({ root, index }: { root: Link; index: RootIndex; }, offset: number) => Promise; offsetsGet: ({ root, index }: { root: Link; index: RootIndex; }) => Promise<{ vertexOffset: Offset; edgeOffset: Offset; propOffset: Offset; indexOffset: Offset; }>; verticesAll: ({ root, index, }: { root: Link; index: RootIndex; }) => Promise; edgesAll: ({ root, index, }: { root: Link; index: RootIndex; }) => Promise; propsAll: ({ root, index, }: { root: Link; index: RootIndex; }) => Promise; commit: ({ root, index }: { root: Link; index: RootIndex; }, { vertices, edges, props, }: { vertices: { added: Map; updated: Map; }; edges: { added: Map; updated: Map; }; props: { added: Map; updated: Map; }; indices: { added: Map; updated: Map; }; }) => Promise<{ root: Link; index: RootIndex; blocks: Block[]; }>; packGraph: (versionRoot: Link) => Promise; packComputed: (versionRoot: Link, vertexOffsetStart: number, vertexCount: number, graphDepth: number) => Promise; indexCreate: (values: IndexedValue[]) => Promise; indexSearch: (link: Link, value: any) => Promise; constructor({ versionSet, rootGet, }: { versionSet: ({ version, index, }: { version: Version; index: RootIndex; }) => Promise; rootGet: () => Promise<{ root: Link; index: RootIndex; }>; }, { vertexGet, vertexRange, edgeGet, edgeRange, propGet, propRange, indexGet, offsetsGet, verticesAll, edgesAll, propsAll, commit, packGraph, packComputed, }: { vertexGet: ({ root, index }: { root: Link; index: RootIndex; }, offset: number) => Promise; vertexRange: ({ root, index }: { root: Link; index: RootIndex; }, offset: number, vertexCount: number) => Promise; edgeGet: ({ root, index }: { root: Link; index: RootIndex; }, offset: number) => Promise; edgeRange: ({ root, index }: { root: Link; index: RootIndex; }, offset: number, edgeCount: number) => Promise; propGet: ({ root, index }: { root: Link; index: RootIndex; }, offset: number) => Promise; propRange: ({ root, index }: { root: Link; index: RootIndex; }, offset: number, propCount: number) => Promise; indexGet: ({ root, index }: { root: Link; index: RootIndex; }, offset: number) => Promise; offsetsGet: ({ root, index, }: { root: Link; index: RootIndex; }) => Promise<{ vertexOffset: Offset; edgeOffset: Offset; propOffset: Offset; indexOffset: Offset; }>; verticesAll: ({ root, index, }: { root: Link; index: RootIndex; }) => Promise; edgesAll: ({ root, index, }: { root: Link; index: RootIndex; }) => Promise; propsAll: ({ root, index, }: { root: Link; index: RootIndex; }) => Promise; commit: ({ root, index }: { root: Link; index: RootIndex; }, { vertices, edges, props, }: { vertices: { added: Map; updated: Map; }; edges: { added: Map; updated: Map; }; props: { added: Map; updated: Map; }; indices: { added: Map; updated: Map; }; }) => Promise<{ root: Link; index: RootIndex; blocks: Block[]; }>; packGraph: (versionRoot: Link) => Promise; packComputed: (versionRoot: Link, vertexOffsetStart: number, vertexCount: number, graphDepth: number) => Promise; }, { indexCreate, indexSearch }?: IndexStore); getVertex(ref: VertexRef): Promise; getVertexRange(startRef: VertexRef, vertexCount: number): Promise; getEdge(ref: EdgeRef): Promise; getEdgeRange(startRef: EdgeRef, edgeCount: number): Promise; getProp(ref: PropRef): Promise; getPropRange(startRef: PropRef, propCount: number): Promise; getIndex(ref: IndexRef): Promise; allVertices(): Promise; allEdges(): Promise; allProps(): Promise; matchAnyEdgeProp(edge: Edge, predicate: PropPredicate): Promise; matchAnyVertexProp(vertex: Vertex, predicate: PropPredicate): Promise; matchNextProp(ref: PropRef, predicate: PropPredicate): Promise; matchAnyIndex(vertex: Vertex, key: KeyType): Promise; matchNextIndex(ref: IndexRef, key: KeyType): Promise; searchIndex(index: Index, predicate: PropPredicate): Promise; getVertexEdges(vertex: Vertex): Promise; getNextEdges(ref: EdgeRef, edges: Edge[]): Promise; getVertexProps(vertex: Vertex): Promise; getEdgeProps(edge: Edge): Promise; getNextProps(ref: PropRef, props: Prop[]): Promise; tx(): Tx; /** * Pack a complete graph * @param versionRoot - the version root * @returns - a block containing the packed graph */ packGraphVersion(versionRoot?: Link): Promise; /** * Pack a graph fragment * * @param vertexOffsetStart - the offset of the first vertex * @param vertexCount - the number of vertices, counting from the first vertex * @param graphDepth - the depth of the fragment * @param versionRoot - the version root * @returns - a block containing the packed graph fragment */ packGraphFragment(vertexOffsetStart: number, vertexCount: number, graphDepth: number, versionRoot?: Link): Promise; } declare class Tx implements ElementAccessor { graph: Graph; vertices: { added: Map; updated: Map; }; edges: { added: Map; updated: Map; }; props: { added: Map; updated: Map; }; indices: { added: Map; updated: Map; }; vertexOffsetInit: number; edgeOffsetInit: number; propOffsetInit: number; indexOffsetInit: number; vertexOffset: number; edgeOffset: number; propOffset: number; indexOffset: number; constructor(graph: Graph); start(): Promise; nextVertexOffset(): Offset; nextEdgeOffset(): Offset; nextPropOffset(): Offset; nextIndexOffset(): Offset; getVertex(ref: VertexRef): Promise; getEdge(ref: EdgeRef): Promise; getProp(ref: PropRef): Promise; getIndex(ref: IndexRef): Promise; notifyVertexUpdate(vertex: Vertex): void; notifyEdgeUpdate(edge: Edge): void; notifyPropUpdate(prop: Prop): void; notifyIndexUpdate(index: Index): void; addVertex(type?: VertexType): Vertex; addEdge(source: Vertex, target: Vertex, type?: EdgeType): Promise; linkVertexEdge(source: Vertex, edgeRef: EdgeRef): Promise; addVertexProp(vertex: Vertex, key: KeyType, value: PropValue, type?: PropType): Promise; linkVertexProp(source: Vertex, propRef: PropRef): Promise; addVertexIndex(vertex: Vertex, key: KeyType, value: Link, type?: IndexType): Promise; addEdgeProp(edge: Edge, key: KeyType, value: PropValue, type?: PropType): Promise; linkEdgeProp(edge: Edge, propRef: PropRef): Promise; linkEdge(currentEdge: Edge, edgeRef: EdgeRef): Promise; appendEdge(currentEdge: Edge, newEdge: Edge): Promise; linkProp(currentProp: Prop, propRef: PropRef): Promise; appendProp(currentProp: Prop, newProp: Prop): Promise; appendVertexIndex(currentRef: IndexRef, newIndex: Index): Promise; uniqueIndex(outgoingFrom: Vertex, key: KeyType, type?: IndexType): Promise; commit({ comment, tags, signer, }: { comment?: Comment; tags?: Tag[]; signer?: Signer; }): Promise<{ root: Link; index: RootIndex; blocks: Block[]; }>; fillTargetLinks(refs: Iterable): Promise; } export { Graph, Tx, ElementAccessor }; //# sourceMappingURL=graph.d.ts.map