import type { Identifiable, Timestamped } from "./core";
import type { ChatMessage } from "./message";
export interface ChatSession extends Identifiable, Timestamped {
    isArchived?: boolean;
    summary?: string;
    tags?: string[];
    title: string;
    userId: string;
}
export interface ChatWithMessages extends ChatSession {
    lastMessageAt?: string;
    messageCount: number;
    messages: ChatMessage[];
}
export interface PaginationParams {
    page: number;
    pageSize: number;
    sortBy?: string;
    sortOrder?: "asc" | "desc";
}
export interface CursorPaginationParams {
    cursor?: string;
    direction?: "forward" | "backward";
    limit: number;
}
export interface LoadMessagesParams extends PaginationParams {
    after?: string;
    before?: string;
    chatId: string;
}
export interface PaginatedResult<T> {
    hasMore: boolean;
    items: T[];
    page: number;
    pageSize: number;
    total: number;
}
export interface CursorPaginatedResult<T> {
    hasMore: boolean;
    items: T[];
    nextCursor?: string;
    prevCursor?: string;
}
export type LoadMessagesResult = CursorPaginatedResult<ChatMessage> & {
    messages?: ChatMessage[];
    totalCount?: number;
};
