package events

// Subject constants for all platform events.
// Wildcards: ">" matches one or more tokens, "*" matches exactly one token.
const (
	// Repository lifecycle
	SubjectRepoCreated = "repo.created"
	SubjectRepoDeleted = "repo.deleted"
	SubjectRepoUpdated = "repo.updated"

	// Git push
	SubjectPushReceived = "push.received"

	// Pull requests
	SubjectPROpened   = "pr.opened"
	SubjectPRMerged   = "pr.merged"
	SubjectPRClosed   = "pr.closed"
	SubjectPRReopened = "pr.reopened"
	SubjectPRUpdated  = "pr.updated"

	// Issues
	SubjectIssueOpened  = "issue.opened"
	SubjectIssueClosed  = "issue.closed"
	SubjectIssueReopened = "issue.reopened"

	// CI/CD (Phase 2B)
	SubjectPipelineTriggered  = "pipeline.triggered"
	SubjectPipelineStarted    = "pipeline.started"
	SubjectPipelineCompleted  = "pipeline.completed"
	SubjectPipelineFailed     = "pipeline.failed"
	SubjectJobQueued          = "job.queued"
	SubjectJobStarted         = "job.started"
	SubjectJobCompleted       = "job.completed"
	SubjectJobFailed          = "job.failed"
	SubjectArtifactPublished  = "artifact.published"
	SubjectPipelineLog        = "pipeline.log"

	// Deployments (Phase 3A)
	SubjectDeploymentStarted   = "deployment.started"
	SubjectDeploymentSucceeded = "deployment.succeeded"
	SubjectDeploymentFailed    = "deployment.failed"
	SubjectDeploymentRolledBack = "deployment.rolled_back"

	// Environments (Phase 3D)
	SubjectEnvironmentDriftDetected = "environment.drift_detected"

	// Audit
	SubjectAuditEvent = "audit.event"
)
