@atproto/repo
Version:
atproto repo and MST implementation
46 lines • 1.79 kB
TypeScript
import stream from 'node:stream';
import { CID } from 'multiformats/cid';
import { check } from '@atproto/common';
import { RepoRecord } from '@atproto/lexicon';
import { BlockMap } from '../block-map';
import { CommitData } from '../types';
export interface RepoStorage {
getRoot(): Promise<CID | null>;
putBlock(cid: CID, block: Uint8Array, rev: string): Promise<void>;
putMany(blocks: BlockMap, rev: string): Promise<void>;
updateRoot(cid: CID, rev: string): Promise<void>;
applyCommit(commit: CommitData): any;
getBytes(cid: CID): Promise<Uint8Array | null>;
has(cid: CID): Promise<boolean>;
getBlocks(cids: CID[]): Promise<{
blocks: BlockMap;
missing: CID[];
}>;
attemptRead<T>(cid: CID, def: check.Def<T>): Promise<{
obj: T;
bytes: Uint8Array;
} | null>;
readObjAndBytes<T>(cid: CID, def: check.Def<T>): Promise<{
obj: T;
bytes: Uint8Array;
}>;
readObj<T>(cid: CID, def: check.Def<T>): Promise<T>;
attemptReadRecord(cid: CID): Promise<RepoRecord | null>;
readRecord(cid: CID): Promise<RepoRecord>;
}
export interface BlobStore {
putTemp(bytes: Uint8Array | stream.Readable): Promise<string>;
makePermanent(key: string, cid: CID): Promise<void>;
putPermanent(cid: CID, bytes: Uint8Array | stream.Readable): Promise<void>;
quarantine(cid: CID): Promise<void>;
unquarantine(cid: CID): Promise<void>;
getBytes(cid: CID): Promise<Uint8Array>;
getStream(cid: CID): Promise<stream.Readable>;
hasTemp(key: string): Promise<boolean>;
hasStored(cid: CID): Promise<boolean>;
delete(cid: CID): Promise<void>;
deleteMany(cid: CID[]): Promise<void>;
}
export declare class BlobNotFoundError extends Error {
}
//# sourceMappingURL=types.d.ts.map