/**
 * Slow Lane Client: Backend context encoding for autocomplete.
 *
 * Fires a BE request on word boundaries to encode document context.
 * Expects the typeahead-encodings API format:
 *   Request:  { text, session_id }
 *   Response: { semantic_vector: number[], lm_logits: Record<string, number> }
 */
/** Request payload for typeahead-encodings endpoint. */
export interface TypeaheadEncodingsRequest {
    session_id: string;
    text: string;
}
/** Response from typeahead-encodings endpoint. */
export interface TypeaheadEncodingsResponse {
    lm_logits: Record<string, number>;
    semantic_vector: number[];
}
/**
 * Check if text ends with a word boundary character (space or punctuation).
 */
export declare const isWordBoundary: (text: string) => boolean;
export interface SlowLaneClientConfig {
    baseUrl: string;
    debounceMs?: number;
    endpoint?: string;
    fetchFn?: typeof fetch;
    onUpdate?: (opts: {
        hasLmLogits: boolean;
        hasVector: boolean;
        textLength: number;
    }) => void;
    productKey?: string;
    sessionId?: string;
}
export declare const createSlowLaneClient: (config: SlowLaneClientConfig) => {
    getContextVector: () => Float32Array | null;
    getLmLogits: () => Record<string, number> | null;
    isWordBoundary: (text: string) => boolean;
    setContextVector: (vector: Float32Array | null) => void;
    setLmLogits: (logits: Record<string, number> | null) => void;
    updateContext: (text: string) => void;
};
export declare const setDefaultSlowLaneClient: (client: ReturnType<typeof createSlowLaneClient> | null) => void;
export declare const getStoredContextVector: () => Float32Array | null;
export declare const getStoredLmLogits: () => Record<string, number> | null;
