/** * @license * Copyright 2026 Alibaba Group Holding Limited * SPDX-License-Identifier: Apache-2.0 */ import type { DatabaseSync } from 'node:sqlite'; import { type MemoryConfig, type MemoryLogger } from './config.js'; import { type LtmField } from './schema.js'; export { LTM_FIELDS, LTM_FIELD_NAMES, LTM_SINGLE_VALUE, LTM_TRIM_ORDER, } from './schema.js'; export type { LtmField } from './schema.js'; export interface StmRow { id: number; content: string; status: 'ongoing' | 'upcoming'; created_at: string; created_ts: number; event_date: string | null; expires_at: string | null; active: number; expired_at: string | null; } export interface SelectedStm { id: number; content: string; score: number; status: 'ongoing' | 'upcoming'; recorded_at: string; event_date: string | null; created_ts: number; } export interface DroppedStm { id: number; score: number; status: 'ongoing' | 'upcoming'; recorded_at: string; event_date: string | null; reason: 'over_max_items' | 'over_max_chars'; } export interface PreloadResult { userProfile: string; recent: string; ltmFields: LtmField[]; ltmTrimmed: LtmField[]; stmSelected: SelectedStm[]; stmDropped: DroppedStm[]; nExpiredThisRun: number; nActiveAfterExpiry: number; } export declare function refreshStmActive(database: DatabaseSync, config?: MemoryConfig['preload'], now?: Date, log?: MemoryLogger): number; export declare function loadLtm(database: DatabaseSync, config?: MemoryConfig['preload'], log?: MemoryLogger): { values: Partial>; present: LtmField[]; }; export declare function scoreStmItem(row: StmRow, now: Date, config: MemoryConfig['preload']): number; export declare function readStmRows(database: DatabaseSync): StmRow[]; export declare function selectStm(database: DatabaseSync, config?: MemoryConfig['preload'], now?: Date, log?: MemoryLogger): { selected: SelectedStm[]; dropped: DroppedStm[]; nActive: number; }; export declare function loadPreload(database: DatabaseSync, sessionId: string, config?: MemoryConfig['preload'], now?: Date, log?: MemoryLogger): PreloadResult;