/** * Copyright (c) 2020 Gitpod GmbH. All rights reserved. * Licensed under the GNU Affero General Public License (AGPL). * See License-AGPL.txt in the project root for license information. */ export const OneTimeSecretDB = Symbol("OneTimeSecretDB"); export interface OneTimeSecretDB { /** * Register registers a secret for one-time retrieval until a certain time. * * @param secret value to provide once * @param expirationTime until which the secret is available * @returns the key using which the secret can be retrieved */ register(secret: string, expirationTime: Date): Promise; /** * Get retrieves a secret and deletes it. * A secret can be retrieved only once. * * @param key by which to retrieve the secret * @returns the secret if available */ get(key: string): Promise; /** * Remove deletes a previously registered one-time-secret. * * @param key of the secret to remove */ remove(key: string): Promise; /** * Prune delets all expired one-time secretes. */ pruneExpired(): Promise; }