import { Observable } from "rxjs"; import { UserKeyRotationDataProvider } from "@bitwarden/auth/common"; import { SymmetricCryptoKey } from "../../../platform/models/domain/symmetric-crypto-key"; import { UserId } from "../../../types/guid"; import { UserKey } from "../../../types/key"; import { FolderData } from "../../models/data/folder.data"; import { Folder } from "../../models/domain/folder"; import { FolderWithIdRequest } from "../../models/request/folder-with-id.request"; import { FolderView } from "../../models/view/folder.view"; export abstract class FolderService implements UserKeyRotationDataProvider { folders$: Observable; folderViews$: Observable; clearCache: () => Promise; encrypt: (model: FolderView, key?: SymmetricCryptoKey) => Promise; get: (id: string) => Promise; getDecrypted$: (id: string) => Observable; getAllFromState: () => Promise; /** * @deprecated Only use in CLI! */ getFromState: (id: string) => Promise; /** * @deprecated Only use in CLI! */ getAllDecryptedFromState: () => Promise; decryptFolders: (folders: Folder[]) => Promise; /** * Returns user folders re-encrypted with the new user key. * @param originalUserKey the original user key * @param newUserKey the new user key * @param userId the user id * @throws Error if new user key is null * @returns a list of user folders that have been re-encrypted with the new user key */ getRotatedData: ( originalUserKey: UserKey, newUserKey: UserKey, userId: UserId, ) => Promise; } export abstract class InternalFolderService extends FolderService { upsert: (folder: FolderData | FolderData[]) => Promise; replace: (folders: { [id: string]: FolderData }, userId: UserId) => Promise; clear: (userId?: string) => Promise; delete: (id: string | string[]) => Promise; }