export type StoredChatMessage = Record<string, unknown>;
/**
 * Generate a serverId scoped to an OpenClaw transcript entry.
 * Format: msg_<sessionId_short>_<seq>
 * Seq is monotonically increasing per session, good for cursor-based sync.
 */
export declare function serverIdFromSeq(sessionId: string, seq: number): string;
/** Generate a standalone serverId (for messages not yet in transcript). */
export declare function generateStandaloneServerId(): string;
type ContentBlock = {
    type?: string;
    text?: string;
    thinking?: string;
    id?: string;
    name?: string;
    input?: unknown;
    tool_use_id?: string;
    content?: unknown;
    is_error?: boolean;
};
type OpenClawMessage = {
    role?: string;
    content?: string | ContentBlock[];
    model?: string;
    provider?: string;
    usage?: {
        input?: number;
        output?: number;
        totalTokens?: number;
        total_tokens?: number;
    };
    __openclaw?: {
        seq?: number;
        id?: string;
    };
    timestamp?: number;
};
/** Translate a single OpenClaw transcript message to app ChatMessage format. */
export declare function translateOpenClawMessage(msg: OpenClawMessage, sessionId: string): StoredChatMessage | null;
/** Translate an array of OpenClaw messages, filtering out non-user/assistant roles. */
export declare function translateOpenClawMessages(messages: OpenClawMessage[], sessionId: string): StoredChatMessage[];
export {};
