package com.mzh.library.service;

import com.mzh.library.entity.AuthenticatedUser;
import com.mzh.library.entity.User;
import com.mzh.library.entity.UserSearchCriteria;

import java.util.List;
import java.util.Optional;

public interface UserAccountService {
    ServiceResult<List<User>> searchUsers(AuthenticatedUser actor, UserSearchCriteria criteria);

    ServiceResult<Optional<User>> findUser(AuthenticatedUser actor, long id);

    ServiceResult<Long> createUser(AuthenticatedUser actor, User user, String password, String requestIp);

    ServiceResult<Void> updateUser(AuthenticatedUser actor, User user, String password, String requestIp);

    ServiceResult<Void> deactivateUser(AuthenticatedUser actor, long id, String requestIp);
}
