///
import type { DB, DBTransaction, LevelPath } from '@matrixai/db';
import type { SessionToken } from './types.js';
import type KeyRing from '../keys/KeyRing.js';
import Logger from '@matrixai/logger';
import { createDestroyStartStop } from '@matrixai/async-init';
interface SessionManager extends createDestroyStartStop.CreateDestroyStartStop {
}
declare class SessionManager {
static createSessionManager({ db, keyRing, expiry, logger, fresh, }: {
db: DB;
keyRing: KeyRing;
expiry?: number;
logger?: Logger;
fresh?: boolean;
}): Promise;
readonly expiry?: number;
protected logger: Logger;
protected db: DB;
protected keyRing: KeyRing;
protected sessionsDbPath: LevelPath;
constructor({ db, keyRing, expiry, logger, }: {
db: DB;
keyRing: KeyRing;
expiry?: number;
logger: Logger;
});
start({ fresh, }?: {
fresh?: boolean;
}): Promise;
stop(): Promise;
destroy(): Promise;
resetKey(tran?: DBTransaction): Promise;
/**
* Creates session token
* This is not blocked by key reset
* @param expiry Seconds from now or default
* @param tran
*/
createToken(expiry?: number | undefined, tran?: DBTransaction): Promise;
verifyToken(token: SessionToken, tran?: DBTransaction): Promise;
protected setupKey(): Promise;
}
export default SessionManager;