// Code generated by sqlc. DO NOT EDIT.
// versions:
//   sqlc v1.30.0

package db

import (
	"github.com/jackc/pgx/v5/pgtype"
)

type ActivityLog struct {
	ID          pgtype.UUID        `json:"id"`
	WorkspaceID pgtype.UUID        `json:"workspace_id"`
	IssueID     pgtype.UUID        `json:"issue_id"`
	ActorType   pgtype.Text        `json:"actor_type"`
	ActorID     pgtype.UUID        `json:"actor_id"`
	Action      string             `json:"action"`
	Details     []byte             `json:"details"`
	CreatedAt   pgtype.Timestamptz `json:"created_at"`
}

type Agent struct {
	ID                 pgtype.UUID        `json:"id"`
	WorkspaceID        pgtype.UUID        `json:"workspace_id"`
	Name               string             `json:"name"`
	AvatarUrl          pgtype.Text        `json:"avatar_url"`
	RuntimeMode        string             `json:"runtime_mode"`
	RuntimeConfig      []byte             `json:"runtime_config"`
	Visibility         string             `json:"visibility"`
	Status             string             `json:"status"`
	MaxConcurrentTasks int32              `json:"max_concurrent_tasks"`
	OwnerID            pgtype.UUID        `json:"owner_id"`
	CreatedAt          pgtype.Timestamptz `json:"created_at"`
	UpdatedAt          pgtype.Timestamptz `json:"updated_at"`
	Description        string             `json:"description"`
	Tools              []byte             `json:"tools"`
	Triggers           []byte             `json:"triggers"`
	RuntimeID          pgtype.UUID        `json:"runtime_id"`
	Instructions       string             `json:"instructions"`
	ArchivedAt         pgtype.Timestamptz `json:"archived_at"`
	ArchivedBy         pgtype.UUID        `json:"archived_by"`
}

type AgentRuntime struct {
	ID          pgtype.UUID        `json:"id"`
	WorkspaceID pgtype.UUID        `json:"workspace_id"`
	DaemonID    pgtype.Text        `json:"daemon_id"`
	Name        string             `json:"name"`
	RuntimeMode string             `json:"runtime_mode"`
	Provider    string             `json:"provider"`
	Status      string             `json:"status"`
	DeviceInfo  string             `json:"device_info"`
	Metadata    []byte             `json:"metadata"`
	LastSeenAt  pgtype.Timestamptz `json:"last_seen_at"`
	CreatedAt   pgtype.Timestamptz `json:"created_at"`
	UpdatedAt   pgtype.Timestamptz `json:"updated_at"`
}

type AgentSkill struct {
	AgentID   pgtype.UUID        `json:"agent_id"`
	SkillID   pgtype.UUID        `json:"skill_id"`
	CreatedAt pgtype.Timestamptz `json:"created_at"`
}

type AgentTaskQueue struct {
	ID               pgtype.UUID        `json:"id"`
	AgentID          pgtype.UUID        `json:"agent_id"`
	IssueID          pgtype.UUID        `json:"issue_id"`
	Status           string             `json:"status"`
	Priority         int32              `json:"priority"`
	DispatchedAt     pgtype.Timestamptz `json:"dispatched_at"`
	StartedAt        pgtype.Timestamptz `json:"started_at"`
	CompletedAt      pgtype.Timestamptz `json:"completed_at"`
	Result           []byte             `json:"result"`
	Error            pgtype.Text        `json:"error"`
	CreatedAt        pgtype.Timestamptz `json:"created_at"`
	Context          []byte             `json:"context"`
	RuntimeID        pgtype.UUID        `json:"runtime_id"`
	SessionID        pgtype.Text        `json:"session_id"`
	WorkDir          pgtype.Text        `json:"work_dir"`
	TriggerCommentID pgtype.UUID        `json:"trigger_comment_id"`
}

type Attachment struct {
	ID           pgtype.UUID        `json:"id"`
	WorkspaceID  pgtype.UUID        `json:"workspace_id"`
	IssueID      pgtype.UUID        `json:"issue_id"`
	CommentID    pgtype.UUID        `json:"comment_id"`
	UploaderType string             `json:"uploader_type"`
	UploaderID   pgtype.UUID        `json:"uploader_id"`
	Filename     string             `json:"filename"`
	Url          string             `json:"url"`
	ContentType  string             `json:"content_type"`
	SizeBytes    int64              `json:"size_bytes"`
	CreatedAt    pgtype.Timestamptz `json:"created_at"`
}

type Comment struct {
	ID          pgtype.UUID        `json:"id"`
	IssueID     pgtype.UUID        `json:"issue_id"`
	AuthorType  string             `json:"author_type"`
	AuthorID    pgtype.UUID        `json:"author_id"`
	Content     string             `json:"content"`
	Type        string             `json:"type"`
	CreatedAt   pgtype.Timestamptz `json:"created_at"`
	UpdatedAt   pgtype.Timestamptz `json:"updated_at"`
	ParentID    pgtype.UUID        `json:"parent_id"`
	WorkspaceID pgtype.UUID        `json:"workspace_id"`
}

type CommentReaction struct {
	ID          pgtype.UUID        `json:"id"`
	CommentID   pgtype.UUID        `json:"comment_id"`
	WorkspaceID pgtype.UUID        `json:"workspace_id"`
	ActorType   string             `json:"actor_type"`
	ActorID     pgtype.UUID        `json:"actor_id"`
	Emoji       string             `json:"emoji"`
	CreatedAt   pgtype.Timestamptz `json:"created_at"`
}

type DaemonConnection struct {
	ID              pgtype.UUID        `json:"id"`
	AgentID         pgtype.UUID        `json:"agent_id"`
	DaemonID        string             `json:"daemon_id"`
	Status          string             `json:"status"`
	LastHeartbeatAt pgtype.Timestamptz `json:"last_heartbeat_at"`
	RuntimeInfo     []byte             `json:"runtime_info"`
	CreatedAt       pgtype.Timestamptz `json:"created_at"`
	UpdatedAt       pgtype.Timestamptz `json:"updated_at"`
}

type DaemonToken struct {
	ID          pgtype.UUID        `json:"id"`
	TokenHash   string             `json:"token_hash"`
	WorkspaceID pgtype.UUID        `json:"workspace_id"`
	DaemonID    string             `json:"daemon_id"`
	ExpiresAt   pgtype.Timestamptz `json:"expires_at"`
	CreatedAt   pgtype.Timestamptz `json:"created_at"`
}

type InboxItem struct {
	ID            pgtype.UUID        `json:"id"`
	WorkspaceID   pgtype.UUID        `json:"workspace_id"`
	RecipientType string             `json:"recipient_type"`
	RecipientID   pgtype.UUID        `json:"recipient_id"`
	Type          string             `json:"type"`
	Severity      string             `json:"severity"`
	IssueID       pgtype.UUID        `json:"issue_id"`
	Title         string             `json:"title"`
	Body          pgtype.Text        `json:"body"`
	Read          bool               `json:"read"`
	Archived      bool               `json:"archived"`
	CreatedAt     pgtype.Timestamptz `json:"created_at"`
	ActorType     pgtype.Text        `json:"actor_type"`
	ActorID       pgtype.UUID        `json:"actor_id"`
	Details       []byte             `json:"details"`
}

type Issue struct {
	ID                 pgtype.UUID        `json:"id"`
	WorkspaceID        pgtype.UUID        `json:"workspace_id"`
	Title              string             `json:"title"`
	Description        pgtype.Text        `json:"description"`
	Status             string             `json:"status"`
	Priority           string             `json:"priority"`
	AssigneeType       pgtype.Text        `json:"assignee_type"`
	AssigneeID         pgtype.UUID        `json:"assignee_id"`
	CreatorType        string             `json:"creator_type"`
	CreatorID          pgtype.UUID        `json:"creator_id"`
	ParentIssueID      pgtype.UUID        `json:"parent_issue_id"`
	AcceptanceCriteria []byte             `json:"acceptance_criteria"`
	ContextRefs        []byte             `json:"context_refs"`
	Position           float64            `json:"position"`
	DueDate            pgtype.Timestamptz `json:"due_date"`
	CreatedAt          pgtype.Timestamptz `json:"created_at"`
	UpdatedAt          pgtype.Timestamptz `json:"updated_at"`
	Number             int32              `json:"number"`
}

type IssueDependency struct {
	ID               pgtype.UUID `json:"id"`
	IssueID          pgtype.UUID `json:"issue_id"`
	DependsOnIssueID pgtype.UUID `json:"depends_on_issue_id"`
	Type             string      `json:"type"`
}

type IssueLabel struct {
	ID          pgtype.UUID `json:"id"`
	WorkspaceID pgtype.UUID `json:"workspace_id"`
	Name        string      `json:"name"`
	Color       string      `json:"color"`
}

type IssueReaction struct {
	ID          pgtype.UUID        `json:"id"`
	IssueID     pgtype.UUID        `json:"issue_id"`
	WorkspaceID pgtype.UUID        `json:"workspace_id"`
	ActorType   string             `json:"actor_type"`
	ActorID     pgtype.UUID        `json:"actor_id"`
	Emoji       string             `json:"emoji"`
	CreatedAt   pgtype.Timestamptz `json:"created_at"`
}

type IssueSubscriber struct {
	IssueID   pgtype.UUID        `json:"issue_id"`
	UserType  string             `json:"user_type"`
	UserID    pgtype.UUID        `json:"user_id"`
	Reason    string             `json:"reason"`
	CreatedAt pgtype.Timestamptz `json:"created_at"`
}

type IssueToLabel struct {
	IssueID pgtype.UUID `json:"issue_id"`
	LabelID pgtype.UUID `json:"label_id"`
}

type Member struct {
	ID          pgtype.UUID        `json:"id"`
	WorkspaceID pgtype.UUID        `json:"workspace_id"`
	UserID      pgtype.UUID        `json:"user_id"`
	Role        string             `json:"role"`
	CreatedAt   pgtype.Timestamptz `json:"created_at"`
}

type PersonalAccessToken struct {
	ID          pgtype.UUID        `json:"id"`
	UserID      pgtype.UUID        `json:"user_id"`
	Name        string             `json:"name"`
	TokenHash   string             `json:"token_hash"`
	TokenPrefix string             `json:"token_prefix"`
	ExpiresAt   pgtype.Timestamptz `json:"expires_at"`
	LastUsedAt  pgtype.Timestamptz `json:"last_used_at"`
	Revoked     bool               `json:"revoked"`
	CreatedAt   pgtype.Timestamptz `json:"created_at"`
}

type RuntimeUsage struct {
	ID               pgtype.UUID        `json:"id"`
	RuntimeID        pgtype.UUID        `json:"runtime_id"`
	Date             pgtype.Date        `json:"date"`
	Provider         string             `json:"provider"`
	Model            string             `json:"model"`
	InputTokens      int64              `json:"input_tokens"`
	OutputTokens     int64              `json:"output_tokens"`
	CacheReadTokens  int64              `json:"cache_read_tokens"`
	CacheWriteTokens int64              `json:"cache_write_tokens"`
	CreatedAt        pgtype.Timestamptz `json:"created_at"`
	UpdatedAt        pgtype.Timestamptz `json:"updated_at"`
}

type Skill struct {
	ID          pgtype.UUID        `json:"id"`
	WorkspaceID pgtype.UUID        `json:"workspace_id"`
	Name        string             `json:"name"`
	Description string             `json:"description"`
	Content     string             `json:"content"`
	Config      []byte             `json:"config"`
	CreatedBy   pgtype.UUID        `json:"created_by"`
	CreatedAt   pgtype.Timestamptz `json:"created_at"`
	UpdatedAt   pgtype.Timestamptz `json:"updated_at"`
}

type SkillFile struct {
	ID        pgtype.UUID        `json:"id"`
	SkillID   pgtype.UUID        `json:"skill_id"`
	Path      string             `json:"path"`
	Content   string             `json:"content"`
	CreatedAt pgtype.Timestamptz `json:"created_at"`
	UpdatedAt pgtype.Timestamptz `json:"updated_at"`
}

type TaskMessage struct {
	ID        pgtype.UUID        `json:"id"`
	TaskID    pgtype.UUID        `json:"task_id"`
	Seq       int32              `json:"seq"`
	Type      string             `json:"type"`
	Tool      pgtype.Text        `json:"tool"`
	Content   pgtype.Text        `json:"content"`
	Input     []byte             `json:"input"`
	Output    pgtype.Text        `json:"output"`
	CreatedAt pgtype.Timestamptz `json:"created_at"`
}

type User struct {
	ID        pgtype.UUID        `json:"id"`
	Name      string             `json:"name"`
	Email     string             `json:"email"`
	AvatarUrl pgtype.Text        `json:"avatar_url"`
	CreatedAt pgtype.Timestamptz `json:"created_at"`
	UpdatedAt pgtype.Timestamptz `json:"updated_at"`
}

type VerificationCode struct {
	ID        pgtype.UUID        `json:"id"`
	Email     string             `json:"email"`
	Code      string             `json:"code"`
	ExpiresAt pgtype.Timestamptz `json:"expires_at"`
	Used      bool               `json:"used"`
	CreatedAt pgtype.Timestamptz `json:"created_at"`
	Attempts  int32              `json:"attempts"`
}

type Workspace struct {
	ID           pgtype.UUID        `json:"id"`
	Name         string             `json:"name"`
	Slug         string             `json:"slug"`
	Description  pgtype.Text        `json:"description"`
	Settings     []byte             `json:"settings"`
	CreatedAt    pgtype.Timestamptz `json:"created_at"`
	UpdatedAt    pgtype.Timestamptz `json:"updated_at"`
	Context      pgtype.Text        `json:"context"`
	Repos        []byte             `json:"repos"`
	IssuePrefix  string             `json:"issue_prefix"`
	IssueCounter int32              `json:"issue_counter"`
}
