import { type Socket } from 'socket.io-client'; import type { Environment } from './config.js'; export type PersonaChatMessageType = 'assistant' | 'memory' | 'reasoning_step' | 'system' | 'tool_call' | 'tool_result' | 'unknown' | 'user'; export interface PersonaChatMessage { content?: string | null; createdAt?: string; id?: string; isComplete?: boolean | null; isPending?: boolean | null; role?: string; type?: string; updatedAt?: string; } export interface PersonaChatThread { createdAt?: string; currentPersonaId?: string; description?: string | null; id: string; isHidden?: boolean; name?: string | null; organizationId?: string; shared?: boolean; updatedAt?: string; userId?: string; } export interface PersonaChatSocketConnectInput { organizationId: string; personaId: string; speakerEnabled: boolean; threadId: string; userId: string; } export interface PersonaChatSocketMessageInput { aiModel?: string; isComposeMode: false; message: string; model?: string; personaId: string; threadId: string; } export interface PersonaChatTurnWaitResult { assistant: PersonaChatMessage | null; error?: string; timedOut: boolean; } export declare function isRetryableApiError(error: unknown): boolean; export declare function withRetry(operation: () => Promise, options?: { attempts?: number; baseDelayMs?: number; maxDelayMs?: number; }): Promise; export declare function normalizeSocketUrl(env: Environment): string; export declare function classifyPersonaChatMessageType(message: PersonaChatMessage): PersonaChatMessageType; export declare function isAssistantMessage(message: PersonaChatMessage): boolean; export declare function parseIsoMs(value: string | undefined | null): number; export declare function sortMessagesByCreatedAt(messages: PersonaChatMessage[], direction?: 'asc' | 'desc'): PersonaChatMessage[]; export declare function connectPersonaChatSocket(input: { env: Environment; token: string; timeoutMs?: number; }): Promise; export declare function waitForSocketConnected(socket: Socket, timeoutMs: number): Promise; export declare function waitForOpenAiConnectionStatus(input: { socket: Socket; threadId: string; timeoutMs?: number; }): Promise<{ error?: string; status: 'connected' | 'failed' | 'timeout'; }>; export declare function waitForPersonaAssistantTurn(input: { socket: Socket; threadId: string; timeoutMs?: number; }): Promise; export declare function emitPersonaChatConnect(socket: Socket, data: PersonaChatSocketConnectInput): void; export declare function emitPersonaChatMessage(socket: Socket, data: PersonaChatSocketMessageInput): void; export declare function waitForPersonaResponseDone(input: { socket: Socket; threadId: string; timeoutMs?: number; }): Promise;