import { Message } from './MessageModel';
import { ObservableReactValue } from '../utils/observers';
import { ThreadModel, Thread } from './ThreadModel';
import { AdapterType } from '../views/adapter/AdapterType';
import { MessageSentParams } from './MessageSentParams';
import { ThreadListCache } from './ThreadListCache';
import { EventsEmitter } from './EventsEmitter';
export declare class Threads<DM extends Message, DD extends Thread<DM>> {
    readonly list: ObservableReactValue<ThreadModel<DM, DD>[]>;
    readonly currentThread: ObservableReactValue<ThreadModel<DM, DD> | undefined>;
    readonly listGroups: ThreadListCache;
    readonly menuDrawerOpen: ObservableReactValue<boolean>;
    readonly deleteItem: ObservableReactValue<Thread<any> | undefined>;
    readonly emitter: EventsEmitter;
    constructor(adapter: AdapterType, threads: Thread[], onUserMessageSent: (params: MessageSentParams) => void | Promise<void>);
    get: (id: DD['id']) => ThreadModel<DM, DD> | undefined;
    delete: (id: DD['id']) => void;
    /**
     * Populates a Thread instance from provided data parameters, or fetches the existing instance
     * if it already exists in the list.
     *
     * @param params - The arguments required to create a Thread instance, including data and a stream function.
     * @returns The existing or newly created Thread instance.
     */
    createFromData: (data: DD, streamMessage: (params: MessageSentParams<any>) => void | Promise<void>) => ThreadModel<any, DD>;
    setMenuDrawerOpen: (v: boolean) => void;
    setDeleteItem: (v: Thread | undefined) => void;
}
