import type { Post } from '@mattermost/types/posts';
import type { GlobalState } from '@mattermost/types/store';
import type { Team } from '@mattermost/types/teams';
import type { UserThread, ThreadsState, UserThreadSynthetic } from '@mattermost/types/threads';
import type { IDMappedObjects, RelationOneToMany } from '@mattermost/types/utilities';
export declare function getThreadsInTeam(state: GlobalState): RelationOneToMany<Team, UserThread>;
export declare function getUnreadThreadsInTeam(state: GlobalState): RelationOneToMany<Team, UserThread>;
export declare const getThreadsInCurrentTeam: (state: GlobalState) => Array<UserThread['id']>;
export declare const getUnreadThreadsInCurrentTeam: (state: GlobalState) => Array<UserThread['id']>;
export declare function getThreadCounts(state: GlobalState): ThreadsState['counts'];
export declare function getThreadCountsIncludingDirect(state: GlobalState): ThreadsState['counts'];
export declare const getThreadCountsInCurrentTeam: (state: GlobalState) => ThreadsState['counts'][Team['id']];
export declare function getThreads(state: GlobalState): IDMappedObjects<UserThread>;
export declare function getThread(state: GlobalState, threadId?: UserThread['id']): UserThread | null;
export declare function makeGetThreadOrSynthetic(): (state: GlobalState, rootPost: Post) => UserThread | UserThreadSynthetic;
export declare const getThreadOrderInCurrentTeam: (state: GlobalState) => Array<UserThread['id']>;
export declare const getNewestThreadInTeam: (state: GlobalState, teamID: string) => (UserThread | null);
export declare const getUnreadThreadOrderInCurrentTeam: (state: GlobalState) => Array<UserThread['id']>;
export declare const getThreadsInChannel: (state: GlobalState, channelID: string) => UserThread[];
