<?php
declare(strict_types=1);
namespace Domain\Repository;
// @responsibility: Vertrag für Chat-Session-Persistenz
interface ChatSessionRepositoryInterface
{
/**
* Find session by UUID.
*
* @return array<string, mixed>|null
*/
public function findByUuid(string $uuid): ?array;
/**
* Get all sessions with statistics.
*
* @return array<int, array<string, mixed>>
*/
public function findAll(int $limit = 50): array;
/**
* Create a new session.
*/
public function create(string $uuid, string $model, string $collections, int $contextLimit): int;
/**
* Update session title.
*/
public function updateTitle(int $sessionId, string $title): void;
/**
* Update session settings.
*
* @param array<string> $collections
*/
public function updateSettings(
int $sessionId,
string $model,
array $collections,
int $contextLimit,
?int $authorProfileId,
float $temperature,
int $maxTokens
): void;
/**
* Update system prompt.
*/
public function updateSystemPrompt(int $sessionId, ?string $systemPrompt): void;
/**
* Delete session by ID.
*/
public function delete(int $sessionId): void;
/**
* Touch session (update last_activity timestamp).
*/
public function touch(int $sessionId): void;
/**
* Generate UUID v4.
*/
public function generateUuid(): string;
}