/**
 * Friends DTOs - Chuẩn theo automation-web friend.dto.ts
 */
/**
 * DTO để lấy tất cả friends
 */
export interface GetAllFriendsDto {
    sessionId: string;
}
/**
 * DTO để tìm kiếm friends
 */
export interface SearchFriendsDto {
    sessionId: string;
    keyword: string;
    limit?: number;
}
/**
 * DTO để lấy thông tin chi tiết friends
 */
export interface GetFriendsInfoDto {
    sessionId: string;
    friendIds: string[];
}
/**
 * DTO để lấy friends đang online
 */
export interface GetOnlineFriendsDto {
    sessionId: string;
}
/**
 * DTO để gửi lời mời kết bạn
 */
export interface SendFriendRequestDto {
    sessionId: string;
    userId: string;
    message: string;
}
/**
 * DTO để chấp nhận lời mời kết bạn
 */
export interface AcceptFriendRequestDto {
    sessionId: string;
    userId: string;
}
/**
 * DTO để lấy danh sách lời mời nhận được
 */
export interface GetReceivedFriendRequestsDto {
    sessionId: string;
}
/**
 * DTO để lấy danh sách lời mời đã gửi
 */
export interface GetSentFriendRequestsDto {
    sessionId: string;
}
/**
 * DTO để hủy lời mời đã gửi
 */
export interface UndoFriendRequestDto {
    sessionId: string;
    userId: string;
}
/**
 * DTO để xóa bạn bè
 */
export interface RemoveFriendDto {
    sessionId: string;
    friendId: string;
}
/**
 * DTO để tìm kiếm user theo số điện thoại
 */
export interface FindUserDto {
    sessionId: string;
    phoneNumbers: string[];
}
/**
 * DTO để chặn user
 */
export interface BlockUserDto {
    sessionId: string;
    userId: string;
}
/**
 * DTO để bỏ chặn user
 */
export interface UnblockUserDto {
    sessionId: string;
    userId: string;
}
/**
 * DTO để thay đổi biệt danh friend
 */
export interface ChangeFriendAliasDto {
    sessionId: string;
    friendId: string;
    alias: string;
}
/**
 * DTO để xóa biệt danh friend
 */
export interface RemoveFriendAliasDto {
    sessionId: string;
    friendId: string;
}
/**
 * DTO để lấy danh sách biệt danh
 */
export interface GetAliasListDto {
    sessionId: string;
    count?: number;
    page?: number;
}
/**
 * DTO cho API lastOnline
 */
export interface GetLastOnlineDto {
    sessionId: string;
    userId: string;
}
/**
 * DTO cho API getOwnId
 */
export interface GetOwnIdDto {
    sessionId: string;
}
/**
 * DTO cho API fetchAccountInfo
 */
export interface FetchAccountInfoDto {
    sessionId: string;
}
/**
 * Friend object structure
 */
export interface FriendDto {
    userId: string;
    displayName: string;
    avatar: string;
    status: string;
    phoneNumber?: string;
    isFriend?: boolean;
    friendSince?: number;
}
/**
 * Response DTO cho getAllFriends
 */
export interface GetAllFriendsResponseDto {
    friends: FriendDto[];
    total: number;
    success: boolean;
    error?: string;
    timestamp: number;
}
/**
 * Response DTO cho search friends
 */
export interface SearchFriendsResponseDto {
    friends: FriendDto[];
    keyword: string;
    total: number;
    success: boolean;
    error?: string;
    timestamp: number;
}
/**
 * Simple operation result DTO
 */
export interface OperationResultDto {
    message: string;
}
/**
 * Friend request info DTO
 */
export interface FriendRequestInfoDto {
    userId: string;
    displayName: string;
    avatar: string;
    phoneNumber?: string;
    message?: string;
}
/**
 * Response DTO cho received friend requests
 */
export interface GetReceivedFriendRequestsResponseDto {
    requests: FriendRequestInfoDto[];
    total: number;
}
/**
 * Response DTO cho sent friend requests
 */
export interface GetSentFriendRequestsResponseDto {
    requests: FriendRequestInfoDto[];
    total: number;
}
/**
 * User search result DTO
 */
export interface UserSearchResultDto {
    userId: string;
    displayName: string;
    avatar: string;
    phoneNumber?: string;
    canAddFriend?: boolean;
}
/**
 * DTO cho kết quả tìm kiếm từng user
 */
export interface FindUserResultDto {
    phoneNumber: string;
    user: UserSearchResultDto | null;
    status: 'found' | 'not_found' | 'error';
}
/**
 * Response DTO cho find user
 */
export interface FindUserResponseDto {
    results: FindUserResultDto[];
    totalSearched: number;
    totalFound: number;
}
/**
 * Alias info DTO
 */
export interface AliasInfoDto {
    friendId: string;
    alias: string;
    createdAt?: number;
}
/**
 * Response DTO cho getLastOnline
 */
export interface GetLastOnlineResponseDto {
    settings: {
        show_online_status: boolean;
    };
    lastOnline: number;
}
/**
 * Response DTO cho getOwnId
 */
export interface GetOwnIdResponseDto {
    ownId: string;
}
/**
 * Account info DTO
 */
export interface AccountInfoDto {
    userId: string;
    username: string;
    displayName: string;
    zaloName: string;
    avatar: string;
    bgavatar: string;
    cover: string;
    gender: number;
    dob: number;
    sdob: string;
    status: string;
    phoneNumber: string;
    isFr: number;
    isBlocked: number;
    lastActionTime: number;
    lastUpdateTime: number;
    isActive: number;
    key: number;
    type: number;
    isActivePC: number;
    isActiveWeb: number;
    isValid: number;
    userKey: string;
    accountStatus: number;
    oaInfo: any;
    user_mode: number;
    globalId: string;
    bizPkg: {
        label: any;
        pkgId: number;
    };
    createdTs: number;
    oa_status: any;
}
/**
 * Response DTO cho fetchAccountInfo
 */
export interface FetchAccountInfoResponseDto {
    success: boolean;
    accountInfo: AccountInfoDto;
    timestamp: number;
    error?: string;
}
/**
 * Friend stats interface
 */
export interface FriendStats {
    totalFriends: number;
    onlineFriends: number;
    offlineFriends: number;
    unknownStatus: number;
    friendsWithPhone: number;
}
/**
 * User info response (for getFriendsInfo)
 */
export interface GetFriendsInfoResponse {
    [key: string]: any;
}
/**
 * Get online friends response
 */
export interface GetOnlineFriendsResponse {
    [key: string]: any;
}
/**
 * DTO để bỏ chặn user
 */
export interface UnblockUserRequest {
    sessionId: string;
    userId: string;
}
/**
 * DTO để thay đổi biệt danh friend
 */
export interface ChangeFriendAliasRequest {
    sessionId: string;
    friendId: string;
    alias: string;
}
/**
 * DTO để xóa biệt danh friend
 */
export interface RemoveFriendAliasRequest {
    sessionId: string;
    friendId: string;
}
/**
 * DTO để lấy danh sách biệt danh
 */
export interface GetAliasListRequest {
    sessionId: string;
    page?: number;
    count?: number;
}
/**
 * DTO để lấy thông tin last online
 */
export interface GetLastOnlineRequest {
    sessionId: string;
    userId: string;
}
/**
 * DTO để lấy ID của chính mình
 */
export interface GetOwnIdRequest {
    sessionId: string;
}
/**
 * DTO để lấy thông tin tài khoản
 */
export interface FetchAccountInfoRequest {
    sessionId: string;
}
/**
 * Friend DTO - thông tin cơ bản của friend
 */
export interface FriendInfo {
    userId: string;
    displayName: string;
    avatar: string;
    status: string;
    phoneNumber?: string;
    isFriend?: boolean;
    friendSince?: number;
}
/**
 * Response DTO cho getAllFriends
 */
export interface GetAllFriendsResponse {
    friends: FriendInfo[];
    total: number;
    success: boolean;
    timestamp: number;
}
/**
 * Response DTO cho searchFriends
 */
export interface SearchFriendsResponseDto {
    friends: FriendInfo[];
    total: number;
    keyword: string;
    success: boolean;
    timestamp: number;
    error?: string;
}
export declare enum Gender {
    Male = 0,
    Female = 1
}
export type ProfileInfo = {
    userId: string;
    username: string;
    displayName: string;
    zaloName: string;
    avatar: string;
    bgavatar: string;
    cover: string;
    gender: Gender;
    dob: number;
    sdob: string;
    status: string;
    phoneNumber: string;
    isFr: number;
    isBlocked: number;
    lastActionTime: number;
    lastUpdateTime: number;
    isActive: number;
    key: number;
    type: number;
    isActivePC: number;
    isActiveWeb: number;
    isValid: number;
    userKey: string;
    accountStatus: number;
    oaInfo: any;
    user_mode: number;
    globalId: string;
    bizPkg: {
        label: any;
        pkgId: number;
    };
    createdTs: number;
    oa_status: any;
};
export type UserInfoResponse = {
    unchanged_profiles: Record<string, any>;
    phonebook_version: number;
    changed_profiles: Record<string, ProfileInfo>;
};
/**
 * Response DTO cho getOnlineFriends
 */
export interface GetOnlineFriendsResponse {
    onlineFriends: FriendInfo[];
    total: number;
    success: boolean;
    timestamp: number;
}
/**
 * Response DTO cho getFriendsStats
 */
export interface GetFriendsStatsResponse {
    totalFriends: number;
    onlineFriends: number;
    offlineFriends: number;
    blockedUsers: number;
    pendingRequests: number;
    sentRequests: number;
    success: boolean;
    timestamp: number;
}
/**
 * Friend Request DTO
 */
export interface FriendRequestInfo {
    userId: string;
    displayName: string;
    avatar: string;
    message?: string;
    timestamp: number;
}
/**
 * Response DTO cho sendFriendRequest
 */
export interface SendFriendRequestResponse {
    userId: string;
    success: boolean;
    message: string;
    timestamp: number;
}
/**
 * Response DTO cho acceptFriendRequest
 */
export interface AcceptFriendRequestResponse {
    userId: string;
    success: boolean;
    message: string;
    timestamp: number;
}
/**
 * Response DTO cho getReceivedFriendRequests
 */
export interface GetReceivedFriendRequestsResponse {
    requests: FriendRequestInfo[];
    total: number;
    success: boolean;
    timestamp: number;
}
/**
 * Response DTO cho getSentFriendRequests
 */
export interface GetSentFriendRequestsResponse {
    requests: FriendRequestInfo[];
    total: number;
    success: boolean;
    timestamp: number;
}
/**
 * Response DTO cho undoFriendRequest
 */
export interface UndoFriendRequestResponse {
    message: string;
}
/**
 * Response DTO cho removeFriend
 */
export interface RemoveFriendResponse {
    friendId: string;
    success: boolean;
    message: string;
    timestamp: number;
}
/**
 * User search result DTO
 */
export interface UserSearchResult {
    userId: string;
    displayName: string;
    avatar: string;
    phoneNumber: string;
    isFriend: boolean;
    isBlocked: boolean;
}
/**
 * Response DTO cho findUser
 */
export interface FindUserResponse {
    results: UserSearchResult[];
    total: number;
    success: boolean;
    timestamp: number;
}
/**
 * Response DTO cho blockUser
 */
export interface BlockUserResponse {
    userId: string;
    success: boolean;
    message: string;
    timestamp: number;
}
/**
 * Response DTO cho unblockUser
 */
export interface UnblockUserResponse {
    userId: string;
    success: boolean;
    message: string;
    timestamp: number;
}
/**
 * Alias info DTO
 */
export interface AliasInfo {
    userId: string;
    displayName: string;
    alias: string;
    createdAt: number;
}
/**
 * Response DTO cho changeFriendAlias
 */
export interface ChangeFriendAliasResponse {
    friendId: string;
    alias: string;
    success: boolean;
    message: string;
    timestamp: number;
}
/**
 * Response DTO cho removeFriendAlias
 */
export interface RemoveFriendAliasResponse {
    friendId: string;
    success: boolean;
    message: string;
    timestamp: number;
}
/**
 * Response DTO cho getAliasList
 */
export interface GetAliasListResponse {
    aliases: AliasInfo[];
    total: number;
    meta: {
        totalItems: number;
        currentPage: number;
        itemsPerPage: number;
        totalPages: number;
    };
    success: boolean;
    timestamp: number;
}
/**
 * Response DTO cho getLastOnline
 */
export interface GetLastOnlineResponse {
    userId: string;
    lastOnline: number;
    isOnline: boolean;
    showOnlineStatus: boolean;
    success: boolean;
    timestamp: number;
}
/**
 * Response DTO cho getOwnId
 */
export interface GetOwnIdResponse {
    ownId: string;
    success: boolean;
    timestamp: number;
}
/**
 * Account info DTO
 */
export interface AccountInfo {
    userId: string;
    username: string;
    displayName: string;
    zaloName: string;
    avatar: string;
    bgavatar: string;
    cover: string;
    gender: number;
    dob: number;
    sdob: string;
    status: string;
    phoneNumber: string;
    isFr: number;
    isBlocked: number;
    lastActionTime: number;
    lastUpdateTime: number;
    isActive: number;
    key: number;
    type: number;
    isActivePC: number;
    isActiveWeb: number;
    isValid: number;
    userKey: string;
    accountStatus: number;
    oaInfo: any;
    user_mode: number;
    globalId: string;
    bizPkg: {
        label: any;
        pkgId: number;
    };
    createdTs: number;
    oa_status: any;
}
/**
 * Response DTO cho fetchAccountInfo
 */
export interface FetchAccountInfoResponse {
    accountInfo: AccountInfo;
    success: boolean;
    timestamp: number;
}
//# sourceMappingURL=friends.type.d.ts.map