package model

import "time"

// WorkspaceTeam stores a workspace-scoped Team identity.
type WorkspaceTeam struct {
	ID                string
	WorkspaceID       string
	Handle            string
	DisplayName       string
	Description       string
	AvatarURL         string
	Visibility        string
	Status            string
	ChannelID         string
	CreatedByMemberID string
	CreatedAt         time.Time
	UpdatedAt         time.Time
	ArchivedAt        *time.Time
}

// WorkspaceTeamMember links a team to one assigned agent.
type WorkspaceTeamMember struct {
	ID                 string
	WorkspaceID        string
	TeamID             string
	ActorKind          string
	ActorID            string
	Role               string
	RoleLabel          string
	RoleOverlayPrompt  string
	RoleOverlayVersion int64
	WakeOnTeamMention  bool
	SortOrder          int64
	AddedByMemberID    string
	AddedAt            time.Time
	UpdatedAt          time.Time
	RemovedAt          *time.Time
}

// WorkspaceTeamTemplate stores a workspace-scoped Team creation blueprint.
type WorkspaceTeamTemplate struct {
	ID                string
	WorkspaceID       string
	Name              string
	Description       string
	Visibility        string
	Source            string
	Scope             string
	CreatedByMemberID string
	CreatedFromTeamID string
	CreatedAt         time.Time
	UpdatedAt         time.Time
}

// WorkspaceTeamTemplateMember stores one actor slot copied when a template is
// instantiated into a real Team.
type WorkspaceTeamTemplateMember struct {
	ID                string
	WorkspaceID       string
	TemplateID        string
	ActorKind         string
	ActorID           string
	Role              string
	RoleLabel         string
	RoleOverlayPrompt string
	WakeOnTeamMention bool
	SortOrder         int64
}
