/**
 * DTO để lấy tất cả groups
 */
export interface GetAllGroupsDto {
    sessionId: string;
}
/**
 * DTO để lấy thông tin chi tiết của group
 */
export interface GetGroupInfoRequest {
    sessionId: string;
    groupId: string;
}
/**
 * DTO để tạo group mới
 */
export interface CreateGroupRequest {
    sessionId: string;
    name: string;
    members: string[];
}
/**
 * DTO để thêm member vào group
 */
export interface AddMemberToGroupRequest {
    sessionId: string;
    groupId: string;
    memberIds: string[];
}
/**
 * DTO để remove member khỏi group
 */
export interface RemoveMemberFromGroupRequest {
    sessionId: string;
    groupId: string;
    memberId: string;
    banDuration?: number;
}
/**
 * DTO để đổi tên group
 */
export interface ChangeGroupNameRequest {
    sessionId: string;
    groupId: string;
    newName: string;
}
/**
 * DTO để lấy danh sách members của group
 * Nếu không truyền page/limit thì sẽ lấy tất cả members
 */
export interface GetGroupMembersRequest {
    sessionId: string;
    groupId: string;
    page?: number;
    limit?: number;
}
/**
 * DTO để rời nhóm
 */
export interface LeaveGroupRequest {
    sessionId: string;
    groupId: string;
}
/**
 * DTO để giải tán nhóm
 */
export interface DisperseGroupRequest {
    sessionId: string;
    groupId: string;
}
/**
 * DTO để tham gia nhóm qua link
 */
export interface JoinGroupRequest {
    sessionId: string;
    groupLink: string;
}
/**
 * DTO để đổi avatar nhóm
 */
export interface ChangeGroupAvatarRequest {
    sessionId: string;
    groupId: string;
    avatarPath: string;
}
/**
 * DTO để cập nhật cài đặt nhóm
 */
export interface UpdateGroupSettingsRequest {
    sessionId: string;
    groupId: string;
    settings: {
        blockName: number;
        signAdminMsg: number;
        addMemberOnly: number;
        setTopicOnly: number;
        enableMsgHistory: number;
        joinAppr: number;
        lockCreatePost: number;
        lockCreatePoll: number;
        lockSendMsg: number;
        lockViewMember: number;
    };
}
/**
 * DTO để chuyển quyền owner nhóm
 */
export interface ChangeGroupOwnerRequest {
    sessionId: string;
    groupId: string;
    newOwnerId: string;
}
/**
 * DTO để thêm phó admin
 */
export interface AddGroupDeputyRequest {
    sessionId: string;
    groupId: string;
    memberIds: string[];
}
/**
 * DTO để xóa phó admin
 */
export interface RemoveGroupDeputyRequest {
    sessionId: string;
    groupId: string;
    memberIds: string[];
}
/**
 * DTO để enable group link
 */
export interface EnableGroupLinkRequest {
    sessionId: string;
    groupId: string;
}
/**
 * DTO để disable group link
 */
export interface DisableGroupLinkRequest {
    sessionId: string;
    groupId: string;
}
/**
 * DTO để lấy thông tin group từ link
 */
export interface GetGroupLinkInfoRequest {
    sessionId: string;
    groupLink: string;
}
/**
 * DTO để mời user vào nhiều groups
 */
export interface InviteUserToGroupsRequest {
    sessionId: string;
    memberId: string;
    groupIds: string[];
}
/**
 * Group DTO - thông tin cơ bản của group
 */
export interface GroupInfo {
    groupId: string;
    name: string;
    desc: string;
    avt: string;
    fullAvt: string;
    creatorId: string;
    totalMember: number;
    maxMember: number;
    createdTime: number;
}
/**
 * Response DTO cho getAllGroups
 */
export interface GetAllGroupsResponse {
    groups: GroupInfo[];
    total: number;
    success: boolean;
    error: string;
    timestamp: number;
}
/**
 * Response DTO cho getGroupInfo
 */
export interface GetGroupInfoResponse {
    group: GroupInfo;
    success: boolean;
    timestamp: number;
    error: string;
}
/**
 * Response DTO cho createGroup
 */
export interface CreateGroupResponse {
    groupId: string;
    groupName: string;
    addedMembers: number;
    successfulMemberIds: string[];
    failedMemberIds: string[];
    success: boolean;
    timestamp: number;
}
/**
 * Response DTO cho addMember
 */
export interface AddMemberResponse {
    groupId: string;
    addedMembers: number;
    successfulMemberIds: string[];
    failedMemberIds: string[];
    success: boolean;
    timestamp: number;
}
/**
 * Response DTO cho removeMember
 */
export interface RemoveMemberResponse {
    groupId: string;
    removedMemberId: string;
    success: boolean;
    timestamp: number;
}
/**
 * Response DTO cho changeGroupName
 */
export interface ChangeGroupNameResponse {
    groupId: string;
    oldName: string;
    newName: string;
    success: boolean;
    timestamp: number;
}
/**
 * Group Member Detail DTO - thông tin chi tiết của member
 */
export interface GroupMemberDetail {
    id: string;
    displayName: string;
    zaloName: string;
    avatar: string;
    accountStatus: number;
    type: number;
    lastUpdateTime: number;
    globalId: string;
    isAdmin: boolean;
}
/**
 * Response DTO cho getGroupMembers
 */
export interface GetGroupMembersResponse {
    groupId: string;
    members: GroupMemberDetail[];
    adminIds: string[];
    total: number;
    limit: number;
    offset: number;
    note: string;
}
/**
 * Response DTO cho các group actions (leave, disperse, join)
 */
export interface GroupActionResponse {
    groupId: string;
    action: 'leave' | 'disperse' | 'join';
    success: boolean;
    message: string;
    timestamp: number;
}
/**
 * Response DTO cho changeGroupAvatar
 */
export interface ChangeGroupAvatarResponse {
    groupId: string;
    newAvatarUrl: string;
}
/**
 * Response DTO cho updateGroupSettings
 */
export interface UpdateGroupSettingsResponse {
    groupId: string;
    updatedSettings: {
        blockName: number;
        signAdminMsg: number;
        addMemberOnly: number;
        setTopicOnly: number;
        enableMsgHistory: number;
        joinAppr: number;
        lockCreatePost: number;
        lockCreatePoll: number;
        lockSendMsg: number;
        lockViewMember: number;
        bannFeature: number;
        dirtyMedia: number;
    };
}
/**
 * Response DTO cho changeGroupOwner
 */
export interface ChangeGroupOwnerResponse {
    groupId: string;
    newOwnerId: string;
    time: number;
}
/**
 * Response DTO cho addGroupDeputy
 */
export interface AddGroupDeputyResponse {
    groupId: string;
    addedAdmins: string[];
}
/**
 * Response DTO cho removeGroupDeputy
 */
export interface RemoveGroupDeputyResponse {
    groupId: string;
    removedAdmins: string[];
}
/**
 * Response DTO cho enableGroupLink
 */
export interface EnableGroupLinkResponse {
    groupId: string;
    link: string;
    expirationDate: number;
    enabled: boolean;
}
/**
 * Response DTO cho disableGroupLink
 */
export interface DisableGroupLinkResponse {
    groupId: string;
}
/**
 * Response DTO cho getGroupLinkInfo
 */
export interface GetGroupLinkInfoResponse {
    groupId: string;
    groupName: string;
    groupAvatar: string;
    memberCount: number;
    description: string;
    isJoined: boolean;
    success: boolean;
    timestamp: number;
}
/**
 * Response DTO cho inviteUserToGroups
 */
export interface InviteUserToGroupsResponse {
    memberId: string;
    results: Array<{
        groupId: string;
        success: boolean;
        message: string;
    }>;
}
//# sourceMappingURL=groups.type.d.ts.map