import Pino from 'pino'; import { IGunChainReference } from 'gun/types/chain'; import { BucketMetadata, FileMetadata, SharedFileMetadata, ShareUserMetadata, UserMetadataStore } from './metadataStore'; export declare type GunChainReference = Omit, 'then'>; declare type GunFileMetadata = { data: string; }; declare type EncryptedMetadata = { data: string; }; interface LookupDataState { [dbIdBucket: string]: EncryptedMetadata; } interface LookupFileMetadataState { [lookupId: string]: GunFileMetadata; } interface ListDataState { [collectionName: string]: EncryptedMetadata[]; } export declare type GunDataState = LookupDataState | ListDataState | LookupFileMetadataState; declare type GunInit = (() => GunChainReference); /** * A Users Storage Metadata store backed by gundsdb. * * This is the default MetadataStore used by {@link @spacehq/sdk#UserStorage}. * */ export declare class GundbMetadataStore implements UserMetadataStore { private readonly username; private readonly userpass; private gunInit; private readonly bucketsListCache; private readonly sharedFilesListCache; private readonly sharedByMeFilesListCache; private readonly recentlySharedWithListCache; private _user?; private _publicUser?; private logger?; /** * Creates a new instance of this metadata store for users identity. * */ private constructor(); /** * Creates a new instance of this metadata store for users identity. * * @param username - Username of user * @param userpass - Password of user * @param gunOrServer - initialized gun instance or peer server * @param logger - Optional pino logger instance for debug mode */ static fromIdentity(username: string, userpass: string, gunOrServer?: GunInit | string | string[], logger?: Pino.Logger | boolean): Promise; /** * {@inheritDoc @spacehq/sdk#UserMetadataStore.createBucket} */ createBucket(bucketSlug: string, dbId: string, bucketKey: string): Promise; /** * {@inheritDoc @spacehq/sdk#UserMetadataStore.setNotificationsLastSeenAt} */ setNotificationsLastSeenAt(timestamp: number): Promise; /** * {@inheritDoc @spacehq/sdk#UserMetadataStore.getNotificationsLastSeenAt} */ getNotificationsLastSeenAt(): Promise; /** * {@inheritDoc @spacehq/sdk#UserMetadataStore.findBucket} */ findBucket(bucketSlug: string): Promise; /** * {@inheritDoc @spacehq/sdk#UserMetadataStore.listBuckets} */ listBuckets(): Promise; /** * {@inheritDoc @spacehq/sdk#UserMetadataStore.upsertFileMetadata} */ upsertFileMetadata(metadata: FileMetadata): Promise; /** * {@inheritDoc @spacehq/sdk#UserMetadataStore.findFileMetadata} */ findFileMetadata(bucketSlug: string, dbId: string, path: string): Promise; /** * {@inheritDoc @spacehq/sdk#UserMetadataStore.findFileMetadataByUuid} */ findFileMetadataByUuid(uuid: string): Promise; /** * {@inheritDoc @spacehq/sdk#UserMetadataStore.setFilePublic} */ setFilePublic(metadata: FileMetadata): Promise; /** * {@inheritDoc @spacehq/sdk#UserMetadataStore.upsertSharedWithMeFile} */ upsertSharedWithMeFile(fileData: SharedFileMetadata): Promise; /** * {@inheritDoc @spacehq/sdk#UserMetadataStore.findSharedFilesByInvitation} */ findSharedFilesByInvitation(invitationId: string): Promise; /** * {@inheritDoc @spacehq/sdk#UserMetadataStore.listSharedWithMeFiles} */ listSharedWithMeFiles(): Promise; /** * {@inheritDoc @spacehq/sdk#UserMetadataStore.upsertSharedByMeFile} */ upsertSharedByMeFile(fileData: SharedFileMetadata): Promise; /** * {@inheritDoc @spacehq/sdk#UserMetadataStore.listSharedByMeFiles} */ listSharedByMeFiles(): Promise; /** * {@inheritDoc @spacehq/sdk#UserMetadataStore.addUserRecentlySharedWith} */ addUserRecentlySharedWith(user: ShareUserMetadata): Promise; /** * {@inheritDoc @spacehq/sdk#UserMetadataStore.listUsersRecentlySharedWith} */ listUsersRecentlySharedWith(): Promise; private lookupUserData; private lookupPublicFileMetadata; private startCachingBucketsList; private startCachingList; private static getNotificationsLastSeenAtLookupKey; private getBucketsLookupKey; private static getFilesLookupKey; private static getFilesInvitationLookupKey; private static getSharedByMeLookupKey; private static getRecentSharedLookupKey; private static getFilesUuidLookupKey; private get user(); private get publicUser(); private get lookupUser(); private get listUser(); private get publicLookupChain(); private authenticateUser; private encrypt; private decrypt; private encryptBucketSchema; private decryptBucketSchema; } export {};