@useorbis/db-sdk
Version:
Orbis' Typescript SDK for building open-data experiences.
49 lines (48 loc) • 1.8 kB
TypeScript
import { StreamID } from "@ceramicnetwork/streamid";
import { DIDAny } from "./common.js";
import { ModelInstanceDocument } from "@ceramicnetwork/stream-model-instance";
import { SupportedChains } from "./providers.js";
import { ISiwxAuth, AuthUserInformation, IDidAuth } from "./auth.js";
import { SiwxMessage } from "@didtools/cacao";
import { KeyDidSession } from "../auth/keyDid.js";
import { DIDSession } from "did-session";
export type CeramicDocument = {
id: string;
content: Record<string, any>;
controller: DIDAny;
model: string;
context?: string;
metadata: Record<string, any>;
};
export type NewCeramicDocument = {
content: Record<string, any>;
model: StreamID | string;
context?: StreamID | string;
metadata?: Record<string, any>;
};
export interface ICeramicStorage {
id: string;
userFriendlyName: string;
supportedChains: Array<SupportedChains>;
user?: AuthUserInformation;
session: KeyDidSession | DIDSession | false;
connect(params?: any): Promise<void>;
authorize({ authenticator, siwxOverwrites, }: {
authenticator: ISiwxAuth | IDidAuth;
siwxOverwrites?: Partial<SiwxMessage>;
}): Promise<any>;
setSession({ session, did, }: {
session: string;
did?: DIDAny;
}): Promise<KeyDidSession | DIDSession>;
clearSession(): Promise<void>;
assertCurrentUser(did: DIDAny): Promise<boolean>;
getDocument(id: string): Promise<CeramicDocument>;
createDocument(params: NewCeramicDocument): Promise<{
id: string;
}>;
updateDocument(id: string, params: Record<string, any>): Promise<{
id: string;
}>;
updateDocumentBySetter(id: string, setter: (document: ModelInstanceDocument) => Promise<Record<string, any>>): Promise<CeramicDocument>;
}