import { JSX } from "react";
import { GroupMembersManager } from "./controller";
import { SelectionMode, States } from "../../Enums/Enums";
import { CometChatOption } from "../../modals";
interface GroupMembersProps {
    /**
     * Hides the default search bar.
     *
     * @defaultValue `false`
     */
    hideSearch?: boolean;
    /**
     * Hides the default and custom error view passed in `errorView` prop.
     *
     * @defaultValue `false`
     */
    hideError?: boolean;
    /**
     * Disables the loading state while fetching users.
     *
     * @defaultValue `false`
     */
    disableLoadingState?: boolean;
    /**
     * Hides the option to kick a member from the group.
     *
     * @defaultValue `false`
     */
    hideKickMemberOption?: boolean;
    /**
     * Hides the option to ban a member from the group.
     *
     * @defaultValue `false`
     */
    hideBanMemberOption?: boolean;
    /**
     * Hides the option to change the scope of a group member.
     *
     * @defaultValue `false`
     */
    hideScopeChangeOption?: boolean;
    /**
     * Hides the user's online/offline status indicator.
     *
     * @defaultValue `false`
     */
    hideUserStatus?: boolean;
    /**
     * The group for which members are being fetched.
     */
    group: CometChat.Group;
    /**
     * Request builder to fetch group members.
     *
     * @defaultValue Default request builder having the limit set to `30`.
     */
    groupMemberRequestBuilder?: CometChat.GroupMembersRequestBuilder;
    /**
     * Request builder with search parameters to fetch group members.
     *
     * @remarks If the search input is not empty, the search keyword of this request builder is set to the text in the search input.
     */
    searchRequestBuilder?: CometChat.GroupMembersRequestBuilder;
    /**
     * The keyword used to filter the group members list.
     *
     * @defaultValue `""`
     */
    searchKeyword?: string;
    /**
     * A function that returns a list of actions available when hovering over a group member item.
     *
     * @param group - The group instance.
     * @param groupMember - An instance of `CometChat.GroupMember` representing the group member.
     * @returns An array of `CometChatOption`.
     */
    options?: (group: CometChat.Group, groupMember: CometChat.GroupMember) => CometChatOption[];
    /**
     * Selection mode to use for the default list item view.
     *
     * @defaultValue `SelectionMode.none`
     */
    selectionMode?: SelectionMode;
    /**
     * Callback function invoked when an error occurs in the component.
     */
    onError?: ((error: CometChat.CometChatException) => void) | null;
    /**
     * Callback function invoked when a group member item is clicked.
     *
     * @param groupMember - An instance of `CometChat.GroupMember` representing the group member.
     * returns void
     */
    onItemClick?: (groupMember: CometChat.GroupMember) => void;
    /**
     * Callback function invoked when a group member is selected or deselected.
     *
     * @param groupMember - An instance of `CometChat.GroupMember` representing the group member.
     * @param selected - Boolean value to identify if the member is selected or removed.
     * @returns void
     */
    onSelect?: (groupMember: CometChat.GroupMember, selected: boolean) => void;
    /**
     * Callback function invoked when the group members list is empty.
     * @returns void
     */
    onEmpty?: () => void;
    /**
     * A custom component to render in the top-right corner of the group members list.
     */
    headerView?: JSX.Element;
    /**
     * A custom view to display during the loading state.
     */
    loadingView?: JSX.Element;
    /**
     * Custom view for the error state of the component.
     */
    errorView?: JSX.Element;
    /**
     * A custom view to display when no group members are available in the list.
     */
    emptyView?: JSX.Element;
    /**
     * A custom view to render for each group member in the fetched list.
     *
     * @param groupMember - An instance of `CometChat.GroupMember` representing the group member.
     * @returns A JSX element to be rendered as the group member item.
     */
    itemView?: (groupMember: CometChat.GroupMember) => JSX.Element;
    /**
     * A function that renders a JSX element to display the leading view.
     *
     * @param groupMember - An instance of `CometChat.GroupMember` representing the group member.
     * @returns A JSX element to be rendered as the leading view.
     */
    leadingView?: (groupMember: CometChat.GroupMember) => JSX.Element;
    /**
     * A function that renders a JSX element to display the title view.
     *
     * @param groupMember - An instance of `CometChat.GroupMember` representing the group member.
     * @returns A JSX element to be rendered as the title view.
     */
    titleView?: (groupMember: CometChat.GroupMember) => JSX.Element;
    /**
     * A function that renders a JSX element to display the subtitle view.
     *
     * @param groupMember - An instance of `CometChat.GroupMember` representing the group member.
     * @returns A JSX element to be rendered as the subtitle view.
     */
    subtitleView?: (groupMember: CometChat.GroupMember) => JSX.Element;
    /**
     * A function that renders a JSX element to display the trailing view.
     *
     * @param groupMember - An instance of `CometChat.GroupMember` representing the group member.
     * @returns A JSX element to be rendered as the trailing view.
     */
    trailingView?: (groupMember: CometChat.GroupMember) => JSX.Element;
}
export type Action = {
    type: "appendGroupMembers";
    groupMembers: CometChat.GroupMember[];
    groupMembersManager?: GroupMembersManager | null;
    onEmpty?: () => void;
    disableLoadingState?: boolean;
} | {
    type: "setGroupMemberList";
    groupMemberList: CometChat.GroupMember[];
} | {
    type: "setSearchText";
    searchText: string;
} | {
    type: "setFetchState";
    fetchState: States;
} | {
    type: "removeGroupMemberIfPresent";
    groupMemberUid: string;
} | {
    type: "setGroupMemberToChangeScopeOf";
    groupMember: CometChat.GroupMember | null;
} | {
    type: "replaceGroupMemberIfPresent";
    updatedGroupMember: CometChat.GroupMember;
} | {
    type: "updateGroupMemberStatusIfPresent";
    user: CometChat.User;
} | {
    type: "updateGroupMemberScopeIfPresent";
    groupMemberUid: string;
    newScope: CometChat.GroupMemberScope;
} | {
    type: "appendGroupMember";
    groupMember: CometChat.GroupMember;
};
export declare function CometChatGroupMembers(props: GroupMembersProps): import("react/jsx-runtime").JSX.Element;
export {};
