/** * PlayerSession entity data for creation */ export interface PlayerSessionProps { /** Row id once persisted; undefined for a session not yet saved. */ id?: number; serverName: string; playerName: string; joinedAt: Date; /** null while the player is still connected. */ leftAt: Date | null; } /** * Plain-serializable representation of a PlayerSession. */ export interface PlayerSessionJson { id?: number; serverName: string; playerName: string; joinedAt: string; leftAt: string | null; } /** * PlayerSession entity * A single join→leave connection window for a player on a server, derived * from parsed server log lines (#528, Phase 4). An open session (`leftAt === * null`) counts as ongoing up to whatever `now` is passed to * `durationSeconds`. */ export declare class PlayerSession { private readonly _id?; private readonly _serverName; private readonly _playerName; private readonly _joinedAt; private readonly _leftAt; private constructor(); get id(): number | undefined; get serverName(): string; get playerName(): string; get joinedAt(): Date; get leftAt(): Date | null; /** Session length in seconds; an open session (`leftAt === null`) counts up to `now`. */ durationSeconds(now: Date): number; static create(data: PlayerSessionProps): PlayerSession; toJSON(): PlayerSessionJson; } //# sourceMappingURL=PlayerSession.d.ts.map