import { DecryptedItemInterface, KeySystemIdentifier, KeySystemRootKeyStorageMode, VaultListingInterface, } from '@standardnotes/models' import { AbstractService } from '../Service/AbstractService' import { VaultServiceEvent, VaultServiceEventPayload } from './VaultServiceEvent' import { ChangeVaultKeyOptionsDTO } from './UseCase/ChangeVaultKeyOptionsDTO' import { Result } from '@standardnotes/domain-core' export interface VaultServiceInterface extends AbstractService { createRandomizedVault(dto: { name: string; description?: string }): Promise createUserInputtedPasswordVault(dto: { name: string description?: string userInputtedPassword: string storagePreference: KeySystemRootKeyStorageMode }): Promise getVaults(): VaultListingInterface[] getVault(dto: { keySystemIdentifier: KeySystemIdentifier }): VaultListingInterface | undefined deleteVault(vault: VaultListingInterface): Promise moveItemToVault( vault: VaultListingInterface, item: DecryptedItemInterface, ): Promise removeItemFromVault(item: DecryptedItemInterface): Promise isItemInVault(item: DecryptedItemInterface): boolean getItemVault(item: DecryptedItemInterface): VaultListingInterface | undefined changeVaultNameAndDescription( vault: VaultListingInterface, params: { name: string; description: string }, ): Promise rotateVaultRootKey(vault: VaultListingInterface, vaultPassword?: string): Promise changeVaultOptions(dto: ChangeVaultKeyOptionsDTO): Promise> }