import { microsoftTriggerDefinitions as triggerDefinitions } from "@automate.ax/catalog/triggers/microsoft" import { createTrigger } from "../../../automation/create-trigger" import type { IntegrationAccountReference } from "../../../automation/integrations" /** Options for subscribing to new Outlook Inbox messages. */ export interface OnOutlookNewEmailOptions { /** Microsoft account binding whose Inbox should be watched. */ account?: string | IntegrationAccountReference<"microsoft"> } /** Options for subscribing to Outlook message changes. */ export interface OnOutlookMessageEventOptions extends OnOutlookNewEmailOptions { /** Folder display path, ID, or well-known name. Omit for the mailbox. */ folder?: string } /** * Subscribes to messages created in the connected Outlook Inbox. * * @param options - Microsoft account selection. * @throws When the account selection is dynamic or belongs to another service. */ export const onOutlookNewEmail = createTrigger( triggerDefinitions.outlookEmailReceived, ) const outlookMessageOptions = (options: OnOutlookMessageEventOptions) => ({ account: options.account, folder: options.folder?.trim(), }) /** Subscribes to Outlook message creations, updates, and deletions. */ export const onOutlookMessageEvent = createTrigger( triggerDefinitions.outlookMessageEvent, outlookMessageOptions, ) /** Subscribes to Outlook message creations. */ export const onOutlookMessageCreated = createTrigger( triggerDefinitions.outlookMessageCreated, outlookMessageOptions, ) /** Subscribes to Outlook message updates. */ export const onOutlookMessageUpdated = createTrigger( triggerDefinitions.outlookMessageUpdated, outlookMessageOptions, ) /** Subscribes to Outlook message deletions. */ export const onOutlookMessageDeleted = createTrigger( triggerDefinitions.outlookMessageDeleted, outlookMessageOptions, )