package ports import ( "context" "time" "Yimaru-Backend/internal/domain" ) type TeamStore interface { CreateTeamMember(ctx context.Context, member domain.TeamMember) (domain.TeamMember, error) GetTeamMemberByID(ctx context.Context, id int64) (domain.TeamMember, error) GetTeamMemberByEmail(ctx context.Context, email string) (domain.TeamMember, error) GetAllTeamMembers( ctx context.Context, teamRole, department, status *string, limit, offset int32, ) ([]domain.TeamMember, int64, error) SearchTeamMembers( ctx context.Context, search string, teamRole, status *string, ) ([]domain.TeamMember, error) UpdateTeamMember(ctx context.Context, req domain.UpdateTeamMemberReq) error UpdateTeamMemberStatus(ctx context.Context, req domain.UpdateTeamMemberStatusReq) error UpdateTeamMemberPassword(ctx context.Context, memberID int64, password string) error UpdateTeamMemberLastLogin(ctx context.Context, memberID int64) error DeleteTeamMember(ctx context.Context, memberID int64) error CheckTeamMemberEmailExists(ctx context.Context, email string) (bool, error) GetTeamMembersByDepartment(ctx context.Context, department string) ([]domain.TeamMember, error) GetTeamMembersByRole(ctx context.Context, role string) ([]domain.TeamMember, error) CountTeamMembersByStatus(ctx context.Context) (domain.TeamMemberStats, error) UpdateTeamMemberEmailVerified(ctx context.Context, memberID int64, verified bool) error RevokeAllActiveTeamRefreshTokensForMember(ctx context.Context, memberID int64) error CreateTeamRefreshToken(ctx context.Context, memberID int64, token string, expiresAt, createdAt time.Time) error GetTeamRefreshTokenByToken(ctx context.Context, token string) (domain.TeamRefreshToken, error) RevokeTeamRefreshTokenByToken(ctx context.Context, token string) error BulkDeactivateTeamMembersByRole(ctx context.Context, teamRole string, excludeTeamMemberID *int64) (int64, error) BulkReactivateTeamMembersByRole(ctx context.Context, teamRole string, excludeTeamMemberID *int64) (int64, error) CreateTeamInvitation(ctx context.Context, invitation domain.TeamInvitation) (domain.TeamInvitation, error) GetTeamInvitationByToken(ctx context.Context, token string) (domain.TeamInvitation, error) GetTeamInvitationByID(ctx context.Context, id int64) (domain.TeamInvitation, error) GetPendingTeamInvitationByMemberID(ctx context.Context, memberID int64) (domain.TeamInvitation, error) RevokePendingTeamInvitationsForMember(ctx context.Context, memberID int64) error AcceptTeamInvitation(ctx context.Context, invitationID int64) (domain.TeamInvitation, error) RevokeTeamInvitation(ctx context.Context, invitationID int64) (domain.TeamInvitation, error) ExpireTeamInvitation(ctx context.Context, invitationID int64) error ListTeamInvitations(ctx context.Context, status *string, limit, offset int32) ([]domain.TeamInvitationWithMember, int64, error) }