@atproto/repo
Version:
atproto repo and MST implementation
158 lines • 5.53 kB
TypeScript
import { CID } from 'multiformats';
import { z } from 'zod';
import { BlockMap } from '../block-map';
import { CidSet } from '../cid-set';
import { ReadableBlockstore } from '../storage';
import { CarBlock } from '../types';
declare const nodeData: z.ZodObject<{
l: z.ZodNullable<z.ZodEffects<z.ZodUnknown, CID, unknown>>;
e: z.ZodArray<z.ZodObject<{
p: z.ZodNumber;
k: z.ZodType<Uint8Array<ArrayBuffer>, z.ZodTypeDef, Uint8Array<ArrayBuffer>>;
v: z.ZodEffects<z.ZodUnknown, CID, unknown>;
t: z.ZodNullable<z.ZodEffects<z.ZodUnknown, CID, unknown>>;
}, "strip", z.ZodTypeAny, {
p: number;
k: Uint8Array<ArrayBuffer>;
v: CID;
t: CID | null;
}, {
p: number;
k: Uint8Array<ArrayBuffer>;
v?: unknown;
t?: unknown;
}>, "many">;
}, "strip", z.ZodTypeAny, {
l: CID | null;
e: {
p: number;
k: Uint8Array<ArrayBuffer>;
v: CID;
t: CID | null;
}[];
}, {
e: {
p: number;
k: Uint8Array<ArrayBuffer>;
v?: unknown;
t?: unknown;
}[];
l?: unknown;
}>;
export type NodeData = z.infer<typeof nodeData>;
export declare const nodeDataDef: {
name: string;
schema: z.ZodObject<{
l: z.ZodNullable<z.ZodEffects<z.ZodUnknown, CID, unknown>>;
e: z.ZodArray<z.ZodObject<{
p: z.ZodNumber;
k: z.ZodType<Uint8Array<ArrayBuffer>, z.ZodTypeDef, Uint8Array<ArrayBuffer>>;
v: z.ZodEffects<z.ZodUnknown, CID, unknown>;
t: z.ZodNullable<z.ZodEffects<z.ZodUnknown, CID, unknown>>;
}, "strip", z.ZodTypeAny, {
p: number;
k: Uint8Array<ArrayBuffer>;
v: CID;
t: CID | null;
}, {
p: number;
k: Uint8Array<ArrayBuffer>;
v?: unknown;
t?: unknown;
}>, "many">;
}, "strip", z.ZodTypeAny, {
l: CID | null;
e: {
p: number;
k: Uint8Array<ArrayBuffer>;
v: CID;
t: CID | null;
}[];
}, {
e: {
p: number;
k: Uint8Array<ArrayBuffer>;
v?: unknown;
t?: unknown;
}[];
l?: unknown;
}>;
};
export type NodeEntry = MST | Leaf;
export type MstOpts = {
layer: number;
};
export declare class MST {
storage: ReadableBlockstore;
entries: NodeEntry[] | null;
layer: number | null;
pointer: CID;
outdatedPointer: boolean;
constructor(storage: ReadableBlockstore, pointer: CID, entries: NodeEntry[] | null, layer: number | null);
static create(storage: ReadableBlockstore, entries?: NodeEntry[], opts?: Partial<MstOpts>): Promise<MST>;
static fromData(storage: ReadableBlockstore, data: NodeData, opts?: Partial<MstOpts>): Promise<MST>;
static load(storage: ReadableBlockstore, cid: CID, opts?: Partial<MstOpts>): MST;
newTree(entries: NodeEntry[]): Promise<MST>;
getEntries(): Promise<NodeEntry[]>;
getPointer(): Promise<CID>;
serialize(): Promise<{
cid: CID;
bytes: Uint8Array;
}>;
getLayer(): Promise<number>;
attemptGetLayer(): Promise<number | null>;
getUnstoredBlocks(): Promise<{
root: CID;
blocks: BlockMap;
}>;
add(key: string, value: CID, knownZeros?: number): Promise<MST>;
get(key: string): Promise<CID | null>;
update(key: string, value: CID): Promise<MST>;
delete(key: string): Promise<MST>;
deleteRecurse(key: string): Promise<MST>;
updateEntry(index: number, entry: NodeEntry): Promise<MST>;
removeEntry(index: number): Promise<MST>;
append(entry: NodeEntry): Promise<MST>;
prepend(entry: NodeEntry): Promise<MST>;
atIndex(index: number): Promise<NodeEntry | null>;
slice(start?: number | undefined, end?: number | undefined): Promise<NodeEntry[]>;
spliceIn(entry: NodeEntry, index: number): Promise<MST>;
replaceWithSplit(index: number, left: MST | null, leaf: Leaf, right: MST | null): Promise<MST>;
trimTop(): Promise<MST>;
splitAround(key: string): Promise<[MST | null, MST | null]>;
appendMerge(toMerge: MST): Promise<MST>;
createChild(): Promise<MST>;
createParent(): Promise<MST>;
findGtOrEqualLeafIndex(key: string): Promise<number>;
walkFrom(key: string): AsyncIterable<NodeEntry>;
walkLeavesFrom(key: string): AsyncIterable<Leaf>;
list(count?: number, after?: string, before?: string): Promise<Leaf[]>;
listWithPrefix(prefix: string, count?: number): Promise<Leaf[]>;
walk(): AsyncIterable<NodeEntry>;
paths(): Promise<NodeEntry[][]>;
allNodes(): Promise<NodeEntry[]>;
allCids(): Promise<CidSet>;
leaves(): Promise<Leaf[]>;
leafCount(): Promise<number>;
walkReachable(): AsyncIterable<NodeEntry>;
reachableLeaves(): Promise<Leaf[]>;
carBlockStream(): AsyncIterable<CarBlock>;
cidsForPath(key: string): Promise<CID[]>;
getCoveringProof(key: string): Promise<BlockMap>;
proofForKey(key: string): Promise<BlockMap>;
proofForLeftSib(key: string): Promise<BlockMap>;
proofForRightSib(key: string): Promise<BlockMap>;
isTree(): this is MST;
isLeaf(): this is Leaf;
equals(other: NodeEntry): Promise<boolean>;
}
export declare class Leaf {
key: string;
value: CID;
constructor(key: string, value: CID);
isTree(): this is MST;
isLeaf(): this is Leaf;
equals(entry: NodeEntry): boolean;
}
export {};
//# sourceMappingURL=mst.d.ts.map