import { type Reducer } from "@reduxjs/toolkit";
import type { AdvancedTab } from "../../utils";
import type { Message } from "../../hooks/chat/use-chat-v2";
export type ChatState = Record<AdvancedTab, Message[]>;
export type SessionIds = Record<AdvancedTab, string>;
export type StreamingMessage = {
    id: string;
    content: string;
};
export type StreamingArtifact = {
    id?: number;
    title: string;
    fileExtension: string;
    content: string;
    isUpdate: boolean;
    isPartial: boolean;
    startIndex?: number;
    endIndex?: number;
    org?: string;
    userId?: string;
    sessionId?: string;
    versionNumber?: number;
    metadata?: Record<string, unknown>;
};
export declare const STREAMING_CONTENT_BUFFER_THRESHOLD = 300;
export declare const STREAMING_CONTENT_FLUSH_INTERVAL = 300;
export declare const defaultSessionIds: SessionIds;
export type ChatStatus = "idle" | "pending" | "streaming" | "stopped" | "error";
export type ChatSliceState = {
    chats: ChatState;
    isTyping: boolean;
    streaming: boolean;
    currentStreamingMessage: StreamingMessage;
    currentStreamingArtifact: StreamingArtifact | null;
    activeTab: AdvancedTab;
    sessionId: string;
    sessionIds: SessionIds;
    status: ChatStatus;
    tools: string[];
    token: string | null;
    tokenEnabled: boolean;
    iframeContext: {
        hostInfo: {
            title: string;
            href: string;
        };
        pageContent: string;
    };
    documentFilter: Record<string, unknown> | null;
    shouldStartNewChat: boolean;
    showingSharedChat: boolean;
    artifactsEnabled: boolean;
    streamingArtifactContentBuffer: string;
    lastArtifactContentFlushTime: number;
};
export declare const chatActions: import("@reduxjs/toolkit").CaseReducerActions<import("@reduxjs/toolkit").SliceCaseReducers<ChatSliceState>, string>;
export declare const chatSliceReducerShared: Reducer<ChatSliceState>;
export declare const selectChats: (state: {
    chatSliceShared: ChatSliceState;
}) => ChatState;
export declare const selectIsTyping: (state: {
    chatSliceShared: ChatSliceState;
}) => boolean;
export declare const selectStreaming: (state: {
    chatSliceShared: ChatSliceState;
}) => boolean;
export declare const selectStatus: (state: {
    chatSliceShared: ChatSliceState;
}) => ChatStatus;
export declare const selectIsPending: (state: {
    chatSliceShared: ChatSliceState;
}) => boolean;
export declare const selectIsStopped: (state: {
    chatSliceShared: ChatSliceState;
}) => boolean;
export declare const selectIsError: (state: {
    chatSliceShared: ChatSliceState;
}) => boolean;
export declare const selectCurrentStreamingMessage: (state: {
    chatSliceShared: ChatSliceState;
}) => StreamingMessage;
export declare const selectActiveTab: (state: {
    chatSliceShared: ChatSliceState;
}) => "chat" | "summarize" | "translate" | "expand";
export declare const selectSessionId: (state: {
    chatSliceShared: ChatSliceState;
}) => string;
export declare const selectSessionIds: (state: {
    chatSliceShared: ChatSliceState;
}) => SessionIds;
export declare const selectIframeContext: (state: {
    chatSliceShared: ChatSliceState;
}) => {
    hostInfo: {
        title: string;
        href: string;
    };
    pageContent: string;
};
export declare const selectDocumentFilter: (state: {
    chatSliceShared: ChatSliceState;
}) => Record<string, unknown> | null;
export declare const selectTools: (state: {
    chatSliceShared: ChatSliceState;
}) => string[];
export declare const selectToken: (state: {
    chatSliceShared: ChatSliceState;
}) => string | null;
export declare const selectTokenEnabled: (state: {
    chatSliceShared: ChatSliceState;
}) => boolean;
export declare const selectActiveChatMessages: (state: {
    chatSliceShared: ChatSliceState;
}) => Message[];
export declare const selectNumberOfActiveChatMessages: (state: {
    chatSliceShared: ChatSliceState;
}) => number;
export declare const selectShouldStartNewChat: (state: {
    chatSliceShared: ChatSliceState;
}) => boolean;
export declare const selectShowingSharedChat: (state: {
    chatSliceShared: ChatSliceState;
}) => boolean;
export declare const selectArtifactsEnabled: (state: {
    chatSliceShared: ChatSliceState;
}) => boolean;
export declare const selectCurrentStreamingArtifact: (state: {
    chatSliceShared: ChatSliceState;
}) => StreamingArtifact | null;
export declare const selectStreamingArtifactContentBuffer: (state: {
    chatSliceShared: ChatSliceState;
}) => string;
export declare const selectLastArtifactContentFlushTime: (state: {
    chatSliceShared: ChatSliceState;
}) => number;
export declare const selectStreamingArtifactFullContent: (state: {
    chatSliceShared: ChatSliceState;
}) => string | null;
