etebase
Version:
Etebase TypeScript API for the web and node
142 lines (141 loc) • 6.36 kB
TypeScript
import { CryptoManager, BoxCryptoManager, LoginCryptoManager } from "./Crypto";
import { base64 } from "./Helpers";
export declare type CollectionType = string;
export declare type ContentType = File | Blob | Uint8Array | string | null;
export declare type ItemMetadata<T = {}> = {
type?: string;
name?: string;
mtime?: number;
description?: string;
color?: string;
} & T;
export declare type ChunkJson = [base64, Uint8Array?];
export interface CollectionItemRevisionJsonWrite {
uid: base64;
meta: Uint8Array;
chunks: ChunkJson[];
deleted: boolean;
}
export declare type CollectionItemRevisionJsonRead = CollectionItemRevisionJsonWrite;
export interface CollectionItemJsonWrite {
uid: base64;
version: number;
encryptionKey?: Uint8Array;
content: CollectionItemRevisionJsonWrite;
etag: string | null;
}
export declare type CollectionItemJsonRead = CollectionItemJsonWrite;
export declare enum CollectionAccessLevel {
ReadOnly = 0,
Admin = 1,
ReadWrite = 2
}
export interface CollectionJsonWrite {
collectionKey: Uint8Array;
item: CollectionItemJsonWrite;
collectionType: Uint8Array;
}
export interface CollectionJsonRead extends CollectionJsonWrite {
accessLevel: CollectionAccessLevel;
stoken: string | null;
item: CollectionItemJsonRead;
}
export interface SignedInvitationWrite {
uid: base64;
version: number;
username: string;
collection: base64;
accessLevel: CollectionAccessLevel;
signedEncryptionKey: Uint8Array;
}
export interface SignedInvitationRead extends SignedInvitationWrite {
fromUsername?: string;
fromPubkey: Uint8Array;
}
export declare class MainCryptoManager extends CryptoManager {
protected Main: boolean;
constructor(key: Uint8Array, version?: number);
getLoginCryptoManager(): LoginCryptoManager;
getAccountCryptoManager(privkey: Uint8Array): AccountCryptoManager;
getIdentityCryptoManager(privkey: Uint8Array): BoxCryptoManager;
}
export declare class AccountCryptoManager extends CryptoManager {
protected Account: boolean;
private colTypePadSize;
constructor(key: Uint8Array, version?: number);
colTypeToUid(colType: string): Uint8Array;
colTypeFromUid(colTypeUid: Uint8Array): string;
}
export declare class MinimalCollectionCryptoManager extends CryptoManager {
protected Collection: boolean;
constructor(key: Uint8Array, version?: number);
}
export declare class CollectionCryptoManager extends MinimalCollectionCryptoManager {
readonly accountCryptoManager: AccountCryptoManager;
constructor(accountCryptoManager: AccountCryptoManager, key: Uint8Array, version?: number);
}
export declare class CollectionItemCryptoManager extends CryptoManager {
protected CollectionItem: boolean;
constructor(key: Uint8Array, version?: number);
}
export declare class StorageCryptoManager extends CryptoManager {
protected Storage: boolean;
constructor(key: Uint8Array, version?: number);
}
export declare function getMainCryptoManager(mainEncryptionKey: Uint8Array, version: number): MainCryptoManager;
export declare class EncryptedCollection {
private collectionKey;
private collectionType;
item: EncryptedCollectionItem;
accessLevel: CollectionAccessLevel;
stoken: string | null;
static create<T>(parentCryptoManager: AccountCryptoManager, collectionTypeName: string, meta: ItemMetadata<T>, content: Uint8Array): Promise<EncryptedCollection>;
static deserialize(json: CollectionJsonRead): EncryptedCollection;
serialize(): CollectionJsonWrite;
static cacheLoad(cached_: Uint8Array): EncryptedCollection;
cacheSave(saveContent: boolean): Uint8Array;
__markSaved(): void;
verify(cryptoManager: MinimalCollectionCryptoManager): boolean;
setMeta<T>(cryptoManager: MinimalCollectionCryptoManager, meta: ItemMetadata<T>): void;
getMeta<T>(cryptoManager: MinimalCollectionCryptoManager): ItemMetadata<T>;
setContent(cryptoManager: MinimalCollectionCryptoManager, content: Uint8Array): Promise<void>;
getContent(cryptoManager: MinimalCollectionCryptoManager): Promise<Uint8Array>;
delete(cryptoManager: MinimalCollectionCryptoManager, preserveContent: boolean): void;
get isDeleted(): boolean;
get uid(): string;
get etag(): string;
get lastEtag(): string | null;
get version(): number;
getCollectionType(parentCryptoManager: AccountCryptoManager): string;
createInvitation(parentCryptoManager: AccountCryptoManager, identCryptoManager: BoxCryptoManager, username: string, pubkey: Uint8Array, accessLevel: CollectionAccessLevel): Promise<SignedInvitationWrite>;
getCryptoManager(parentCryptoManager: AccountCryptoManager, version?: number): CollectionCryptoManager;
private getCollectionKey;
}
export declare class EncryptedCollectionItem {
uid: base64;
version: number;
private encryptionKey;
private content;
lastEtag: string | null;
static create<T>(parentCryptoManager: MinimalCollectionCryptoManager, meta: ItemMetadata<T>, content: Uint8Array): Promise<EncryptedCollectionItem>;
static deserialize(json: CollectionItemJsonRead): EncryptedCollectionItem;
serialize(): CollectionItemJsonWrite;
static cacheLoad(cached_: Uint8Array): EncryptedCollectionItem;
cacheSave(saveContent: boolean): Uint8Array;
__markSaved(): void;
__getPendingChunks(): ChunkJson[];
__getMissingChunks(): ChunkJson[];
private isLocallyChanged;
verify(cryptoManager: CollectionItemCryptoManager): boolean;
setMeta<T>(cryptoManager: CollectionItemCryptoManager, meta: ItemMetadata<T>): void;
getMeta<T>(cryptoManager: CollectionItemCryptoManager): ItemMetadata<T>;
setContent(cryptoManager: CollectionItemCryptoManager, content: Uint8Array): Promise<void>;
getContent(cryptoManager: CollectionItemCryptoManager): Promise<Uint8Array>;
delete(cryptoManager: CollectionItemCryptoManager, preserveContent: boolean): void;
get isDeleted(): boolean;
get etag(): string;
get isMissingContent(): boolean;
getCryptoManager(parentCryptoManager: MinimalCollectionCryptoManager): CollectionItemCryptoManager;
getHierarchicalCryptoManager(parentCryptoManager: MinimalCollectionCryptoManager): MinimalCollectionCryptoManager;
protected getAdditionalMacData(): Uint8Array;
}