import type { AnyAction } from 'redux';
import type { GroupPatch, SyncablePatch, GroupCreateWithUserIds, CustomGroupPatch, GroupSearchParams, GetGroupsParams, GetGroupsForUserParams, Group, GroupMember } from '@mattermost/types/groups';
import { SyncableType, GroupSource } from '@mattermost/types/groups';
import type { ActionFuncAsync } from 'mattermost-redux/types/actions';
export declare function linkGroupSyncable(groupID: string, syncableID: string, syncableType: SyncableType, patch: Partial<SyncablePatch>): ActionFuncAsync;
export declare function unlinkGroupSyncable(groupID: string, syncableID: string, syncableType: SyncableType): ActionFuncAsync;
export declare function getGroupSyncables(groupID: string, syncableType: SyncableType): ActionFuncAsync;
export declare function patchGroupSyncable(groupID: string, syncableID: string, syncableType: SyncableType, patch: Partial<SyncablePatch>): ActionFuncAsync;
export declare function getGroup(id: string, includeMemberCount?: boolean): ActionFuncAsync<Group, import("@mattermost/types/store").GlobalState, AnyAction>;
export declare function getGroups(opts: GetGroupsParams): ActionFuncAsync<Group[], import("@mattermost/types/store").GlobalState, AnyAction>;
export declare function getGroupsNotAssociatedToTeam(teamID: string, q?: string, page?: number, perPage?: number, source?: GroupSource | string, onlySyncableSources?: boolean): ActionFuncAsync<Group[], import("@mattermost/types/store").GlobalState, AnyAction>;
export declare function getGroupsNotAssociatedToChannel(channelID: string, q?: string, page?: number, perPage?: number, filterParentTeamPermitted?: boolean, source?: GroupSource | string, onlySyncableSources?: boolean): ActionFuncAsync<Group[], import("@mattermost/types/store").GlobalState, AnyAction>;
export declare function getAllGroupsAssociatedToTeam(teamID: string, filterAllowReference?: boolean, includeMemberCount?: boolean): ActionFuncAsync<import("@mattermost/types/groups").GroupsWithCount, import("@mattermost/types/store").GlobalState, AnyAction>;
export declare function getAllGroupsAssociatedToChannelsInTeam(teamID: string, filterAllowReference?: boolean): ActionFuncAsync<{
    groupsByChannelId: import("@mattermost/types/utilities").RelationOneToOne<import("@mattermost/types/channels").Channel, Group>;
}, import("@mattermost/types/store").GlobalState, AnyAction>;
export declare function getAllGroupsAssociatedToChannel(channelID: string, filterAllowReference?: boolean, includeMemberCount?: boolean): ActionFuncAsync<import("@mattermost/types/groups").GroupsWithCount, import("@mattermost/types/store").GlobalState, AnyAction>;
export declare function getGroupsAssociatedToTeam(teamID: string, q?: string, page?: number, perPage?: number, filterAllowReference?: boolean): ActionFuncAsync<{
    groups: Group[];
    totalGroupCount: number;
    teamID: any;
}, import("@mattermost/types/store").GlobalState, AnyAction>;
export declare function getGroupsAssociatedToChannel(channelID: string, q?: string, page?: number, perPage?: number, filterAllowReference?: boolean): ActionFuncAsync<{
    groups: Group[];
    totalGroupCount: number;
    channelID: any;
}, import("@mattermost/types/store").GlobalState, AnyAction>;
export declare function patchGroup(groupID: string, patch: GroupPatch | CustomGroupPatch): ActionFuncAsync<Group, import("@mattermost/types/store").GlobalState, AnyAction>;
export declare function getGroupsByUserId(userID: string): ActionFuncAsync<Group[], import("@mattermost/types/store").GlobalState, AnyAction>;
export declare function getGroupsByNames(names: string[]): ActionFuncAsync<Group[]>;
export declare function getGroupsByUserIdPaginated(opts: GetGroupsForUserParams): ActionFuncAsync<Group[], import("@mattermost/types/store").GlobalState, AnyAction>;
export declare function getGroupStats(groupID: string): ActionFuncAsync<import("@mattermost/types/groups").GroupStats, import("@mattermost/types/store").GlobalState, AnyAction>;
export declare function createGroupWithUserIds(group: GroupCreateWithUserIds): ActionFuncAsync<Group>;
export declare function addUsersToGroup(groupId: string, userIds: string[]): ActionFuncAsync<GroupMember[]>;
export declare function removeUsersFromGroup(groupId: string, userIds: string[]): ActionFuncAsync<GroupMember[]>;
export declare function searchGroups(params: GroupSearchParams): ActionFuncAsync<Group[]>;
export declare function archiveGroup(groupId: string): ActionFuncAsync<Group>;
export declare function restoreGroup(groupId: string): ActionFuncAsync<Group>;
export declare function createGroupTeamsAndChannels(userID: string): ActionFuncAsync<{
    user_id: string;
}>;
