import type { ChatMessage } from '@genesislcap/foundation-ai';
/** Max words kept from the first user turn when deriving a session title. */
export declare const COST_SESSION_TITLE_MAX_WORDS = 10;
/** Hard cap on derived title length (ellipsis included). */
export declare const COST_SESSION_TITLE_MAX_CHARS = 60;
/** Plain text from a chat message `content` field. */
export declare function getChatMessageText(content: ChatMessage['content']): string;
/**
 * Trim a raw user phrase to a display-friendly session title: first sentence,
 * then word cap, then character cap.
 */
export declare function truncateCostSessionTitle(text: string): string;
/** First non-empty user message in the thread, shortened for cost history. */
export declare function deriveCostSessionTitleFromMessages(messages: readonly ChatMessage[]): string | undefined;
export interface ResolveCostSessionTitleInput {
    explicit?: string;
    /** Host-provided label (e.g. Create `projectName`). */
    appTitle?: string;
    messages: readonly ChatMessage[];
    headerTitle?: string;
    fallback?: string;
}
/** Resolve the label stored on a finalized cost session record. */
export declare function resolveCostSessionTitle(input: ResolveCostSessionTitleInput): string;
//# sourceMappingURL=derive-cost-session-title.d.ts.map