*/ public function findBySessionId(int $sessionId): array; /** * Save a message entity. */ public function saveEntity(ChatMessage $message): int; /** * Save a message (legacy - use saveEntity() instead). * * @param array|null $sources * @deprecated Use saveEntity() with ChatMessage entity */ public function save( int $sessionId, string $role, string $content, string $model, ?int $tokensInput = null, ?int $tokensOutput = null, ?array $sources = null, ?float $startMicrotime = null, ?float $endMicrotime = null, ?int $authorProfileId = null, ?int $systemPromptId = null, ?string $collectionsJson = null, ?int $contextLimit = null ): int; /** * Delete message by ID. */ public function delete(int $id): void; /** * Delete all messages for a session. */ public function deleteBySessionId(int $sessionId): void; /** * Get message statistics for a session. * * @return array{message_count: int, total_input_tokens: int, total_output_tokens: int, total_duration: float} */ public function getSessionStats(int $sessionId): array; }