import type { AnyMap } from '@travetto/runtime'; /** * A user principal, including permissions and details * @concrete */ export interface Principal { /** * Primary identifier for a user */ readonly id: string; /** * Unique identifier for the principal's lifecycle */ readonly sessionId?: string; /** * Date of expiration */ expiresAt?: Date; /** * Date of issuance */ issuedAt?: Date; /** * The source of the issuance */ readonly issuer?: string; /** * Supplemental details */ readonly details: D; /** * List of all provided permissions */ readonly permissions?: string[]; }