import type { Unsubscribe } from "../../types/unsubscribe.js";
import type { ThreadListRuntimeCore } from "../interfaces/thread-list-runtime-core.js";
import { type ThreadListItemRuntime, ThreadListItemRuntimeImpl, type ThreadListItemState } from "./thread-list-item-runtime.js";
import { type ThreadListItemRuntimeBinding, type ThreadRuntime, type ThreadRuntimeCoreBinding } from "./thread-runtime.js";
export type ThreadListState = {
    readonly mainThreadId: string;
    readonly newThreadId: string | undefined;
    readonly threadIds: readonly string[];
    readonly archivedThreadIds: readonly string[];
    readonly isLoading: boolean;
    readonly threadItems: Readonly<Record<string, Omit<ThreadListItemState, "isMain" | "threadId">>>;
};
export type ThreadListRuntime = {
    getState(): ThreadListState;
    subscribe(callback: () => void): Unsubscribe;
    readonly main: ThreadRuntime;
    getById(threadId: string): ThreadRuntime;
    readonly mainItem: ThreadListItemRuntime;
    getItemById(threadId: string): ThreadListItemRuntime;
    getItemByIndex(idx: number): ThreadListItemRuntime;
    getArchivedItemByIndex(idx: number): ThreadListItemRuntime;
    switchToThread(threadId: string): Promise<void>;
    switchToNewThread(): Promise<void>;
    getLoadThreadsPromise(): Promise<void>;
    reload(): Promise<void>;
};
export type ThreadListRuntimeCoreBinding = ThreadListRuntimeCore;
export declare class ThreadListRuntimeImpl implements ThreadListRuntime {
    private _core;
    private _runtimeFactory;
    private _getState;
    constructor(_core: ThreadListRuntimeCoreBinding, _runtimeFactory?: new (binding: ThreadRuntimeCoreBinding, threadListItemBinding: ThreadListItemRuntimeBinding) => ThreadRuntime);
    protected __internal_bindMethods(): void;
    switchToThread(threadId: string): Promise<void>;
    switchToNewThread(): Promise<void>;
    getLoadThreadsPromise(): Promise<void>;
    reload(): Promise<void>;
    getState(): ThreadListState;
    subscribe(callback: () => void): Unsubscribe;
    private _mainThreadListItemRuntime;
    readonly main: ThreadRuntime;
    get mainItem(): ThreadListItemRuntimeImpl;
    getById(threadId: string): ThreadRuntime;
    getItemByIndex(idx: number): ThreadListItemRuntimeImpl;
    getArchivedItemByIndex(idx: number): ThreadListItemRuntimeImpl;
    getItemById(threadId: string): ThreadListItemRuntimeImpl;
}
//# sourceMappingURL=thread-list-runtime.d.ts.map