import { Permission } from '@pickerjs/common/lib/generated-types'; import { ID } from '@pickerjs/common/lib/shared-types'; import { InjectableStrategy } from '../../common/types/injectable-strategy'; export interface CachedSessionUser { id: ID; identifier: string; verified: boolean; permissions: Permission[]; } export interface CachedSession { cacheExpiry: number; id: ID; token: string; expires: Date; authenticationStrategy?: string; user?: CachedSessionUser; } export interface SessionCacheStrategy extends InjectableStrategy { set(session: CachedSession): void | Promise; get(sessionToken: string): CachedSession | undefined | Promise; delete(sessionToken: string): void | Promise; clear(): void | Promise; }