package mail import ( "context" "github.com/ultisuite/ulti-backend/internal/api/query" ) // ServiceAPI is the mail handler service boundary. *Service implements it in production. type ServiceAPI interface { ResolveUserID(ctx context.Context, externalID string) (string, error) ListAccounts(ctx context.Context, externalID string, params query.ListParams) (AccountsList, error) CreateAccount(ctx context.Context, externalID string, req *createAccountRequest) (string, error) GetAccount(ctx context.Context, externalID, accountID string) (map[string]any, error) DeleteAccount(ctx context.Context, externalID, accountID string) error ListMessages(ctx context.Context, externalID string, filter MessageListFilter, params query.ListParams) (MessagesList, error) GetMessage(ctx context.Context, externalID, messageID string) (map[string]any, error) UpdateLabels(ctx context.Context, userID, messageID string, labels []string) error UpdateFlags(ctx context.Context, userID, messageID string, flags []string) error DeleteMessage(ctx context.Context, externalID, userID, messageID string) error GetThread(ctx context.Context, externalID, threadID string) (map[string]any, error) SendMessage(ctx context.Context, userID string, req *sendMessageRequest) (id, status string, err error) ListRules(ctx context.Context, externalID string, params query.ListParams) (RulesList, error) CreateRule(ctx context.Context, userID string, req *createRuleRequest) (string, error) UpdateRule(ctx context.Context, userID, ruleID string, req *updateRuleRequest) error DeleteRule(ctx context.Context, externalID, userID, ruleID string) error ListWebhooks(ctx context.Context, externalID string, params query.ListParams) (WebhooksList, error) CreateWebhook(ctx context.Context, externalID string, req *createWebhookRequest, method string) (string, error) DeleteWebhook(ctx context.Context, externalID, userID, webhookID string) error } var _ ServiceAPI = (*Service)(nil)