package config

import "github.com/tidbcloud/jiraport/pkg/entity"

type NotificationTransitionEvent string

const (
	CreatedEvent                      NotificationTransitionEvent = "CreatedEvent"
	NotifyEvent                       NotificationTransitionEvent = "NotifyEvent"
	TimeoutEvent                      NotificationTransitionEvent = "TimeoutEvent"
	AcknowledgeEvent                  NotificationTransitionEvent = "AcknowledgeEvent"
	UpdatedAssigneeEvent              NotificationTransitionEvent = "UpdatedAssigneeEvent"
	UrgentUpdatedPriorityEvent        NotificationTransitionEvent = "UrgentUpdatedPriorityEvent"
	UpdatedPriorityEvent              NotificationTransitionEvent = "UpdatedPriorityEvent"
	UpdatedFixVersionEvent            NotificationTransitionEvent = "UpdatedFixVersionEvent"
	UpdatedStatusToIndeterminateEvent NotificationTransitionEvent = "UpdatedStatusToIndeterminateEvent"
	UpdatedStatusToDoneEvent          NotificationTransitionEvent = "UpdatedStatusToDoneEvent"
	UpdatedStatusToNewEvent           NotificationTransitionEvent = "UpdatedStatusToNewEvent"
	InnerUpdatedAssigneeEvent         NotificationTransitionEvent = "InnerUpdatedAssigneeEvent"
	AutoRecoveredEvent                NotificationTransitionEvent = "AutoRecoveredEvent"
	UpdateAssigneeWhenInProgressEvent NotificationTransitionEvent = "UpdateAssigneeWhenInProgressEvent"
)

type TransitionEndpoint struct {
	State  entity.NotificationState  `yaml:"state"`
	Action entity.NotificationAction `yaml:"action"`
}

type NotificationPolicy map[entity.NotificationState]map[NotificationTransitionEvent]TransitionEndpoint
