package app

import (
	"context"

	"github.com/tidbcloud/AgentTeam/internal/store/message"
)

const (
	MessageDeliveryRoutingModeSilent                      = message.MessageDeliveryRoutingModeSilent
	MessageDeliveryRoutingModeDirectMentions              = message.MessageDeliveryRoutingModeDirectMentions
	MessageDeliveryRoutingModeBroadcastAll                = message.MessageDeliveryRoutingModeBroadcastAll
	MessageDeliveryRoutingModeBroadcastOnline             = message.MessageDeliveryRoutingModeBroadcastOnline
	MessageDeliveryRoutingModeThreadReply                 = message.MessageDeliveryRoutingModeThreadReply
	MessageDeliveryRoutingModeDM                          = message.MessageDeliveryRoutingModeDM
	MessageDeliveryRoutingModeTaskCommandNotify           = message.MessageDeliveryRoutingModeTaskCommandNotify
	MessageDeliveryRoutingModeOwnerQuote                  = message.MessageDeliveryRoutingModeOwnerQuote
	MessageDeliveryContextScopeChannelMainline            = message.MessageDeliveryContextScopeChannelMainline
	MessageDeliveryContextScopeThread                     = message.MessageDeliveryContextScopeThread
	MessageDeliveryContextScopeDM                         = message.MessageDeliveryContextScopeDM
	MessageDeliveryWakeInferenceCurrentRuntime            = message.MessageDeliveryWakeInferenceCurrentRuntime
	MessageDeliveryWakeInferenceOutboxState               = message.MessageDeliveryWakeInferenceOutboxState
	MessageDeliveryScopeStatusCurrentScope                = message.MessageDeliveryScopeStatusCurrentScope
	MessageDeliveryScopeStatusPreviousScopeMember         = message.MessageDeliveryScopeStatusPreviousScopeMember
	MessageDeliveryStatusTargeted                         = message.MessageDeliveryStatusTargeted
	MessageDeliveryStatusExcluded                         = message.MessageDeliveryStatusExcluded
	MessageDeliveryExclusionNoAgentScope                  = message.MessageDeliveryExclusionNoAgentScope
	MessageDeliveryExclusionNotDirectlyMentioned          = message.MessageDeliveryExclusionNotDirectlyMentioned
	MessageDeliveryExclusionNotInOnlineSnapshot           = message.MessageDeliveryExclusionNotInOnlineSnapshot
	MessageDeliveryExclusionNotThreadParticipant          = message.MessageDeliveryExclusionNotThreadParticipant
	MessageDeliveryExclusionNotTaskNotifyTarget           = message.MessageDeliveryExclusionNotTaskNotifyTarget
	MessageDeliveryExclusionNotDMPeer                     = message.MessageDeliveryExclusionNotDMPeer
	MessageDeliveryExclusionAuthorExcluded                = message.MessageDeliveryExclusionAuthorExcluded
	MessageDeliveryExclusionNoCurrentScopeMembership      = message.MessageDeliveryExclusionNoCurrentScopeMembership
	MessageDeliveryWakeWouldDeliverRunningAgent           = message.MessageDeliveryWakeWouldDeliverRunningAgent
	MessageDeliveryWakeWouldStartAgent                    = message.MessageDeliveryWakeWouldStartAgent
	MessageDeliveryWakeSkippedNotTargeted                 = message.MessageDeliveryWakeSkippedNotTargeted
	MessageDeliveryWakeSkippedAutoWakeDisabled            = message.MessageDeliveryWakeSkippedAutoWakeDisabled
	MessageDeliveryWakeSkippedNoWakeSubscription          = message.MessageDeliveryWakeSkippedNoWakeSubscription
	MessageDeliveryWakeSkippedMachineOffline              = message.MessageDeliveryWakeSkippedMachineOffline
	MessageDeliveryOwnerPrivateStateDeliveredByOwnerQuote = message.MessageDeliveryOwnerPrivateStateDeliveredByOwnerQuote
	MessageDeliveryOwnerPrivateStateOwnerQuoteRequired    = message.MessageDeliveryOwnerPrivateStateOwnerQuoteRequired
)

func (store *Store) GetMessageDeliveryDiagnosticsForUser(ctx context.Context, userID string, workspaceID string, messageID string) (message.MessageDeliveryDiagnostics, error) {
	return store.messageStore().GetMessageDeliveryDiagnosticsForUser(ctx, userID, workspaceID, messageID)
}
