/** * El trigger de Microsoft To Do (`serviceConfig.microsoft_todo`, 2026-10-12): * qué lo dispara. En un solo sitio para el DTO del api y la pantalla del * dashboard. * * ## De dónde llegan (lo que eligió Ariel: «una lista, 4 eventos») * * Por una SUSCRIPCIÓN de Microsoft Graph a las tareas de UNA lista * (`/me/todo/lists/{id}/tasks`), con su renovación: Graph la deja vivir menos * de tres días (4.230 minutos) y la cron común la alarga, como las de Outlook. * Graph avisa en menos de 2 minutos de media (15 como mucho). * * Graph sólo dice `created`, `updated` o `deleted`: «completada» la deduce el * api (la tarea pasó a `completed`), y una tarea completada no avisa además * como «cambiada». * * ## Nada viene elegido * * Ni la lista ni los eventos tienen defecto: Activate no se deja pulsar hasta * que haya una lista y al menos un evento ({@link microsoftTodoTriggerSinContestar}). */ /** El `service` del trigger. */ export declare const MICROSOFT_TODO_TRIGGER_SERVICE = "microsoft_todo"; export interface MicrosoftTodoTriggerEventSpec { /** El `event` que lleva cada entrega. */ type: string; label: string; description: string; } /** Los eventos que se pueden elegir, en el orden de la pantalla. */ export declare const MICROSOFT_TODO_TRIGGER_EVENT_SPECS: ReadonlyArray; /** Todos los tipos, en el orden de la pantalla. */ export declare const MICROSOFT_TODO_TRIGGER_EVENTS: ReadonlyArray; /** El spec de cada tipo, para el nombre en pantalla y los logs. */ export declare const MICROSOFT_TODO_TRIGGER_EVENT_BY_TYPE: Readonly>; /** «Only tasks containing»: lo más largo que se acepta. */ export declare const MICROSOFT_TODO_TRIGGER_CONTIENE_MAXIMO = 255; /** Lo más largo que se acepta en el id de una lista. */ export declare const MICROSOFT_TODO_TRIGGER_ID_MAXIMO = 512; export interface MicrosoftTodoTriggerConfig { /** La lista que se vigila (su id). Sin defecto: vacío = sin contestar. */ listId: string | null; /** Su nombre, sólo para enseñarlo. */ listName?: string | null; /** Sin defecto: `null` o vacío = sin contestar. */ events: string[] | null; /** Sólo las tareas cuyo título contiene esto (sin mayúsculas). */ titleContains?: string | null; } /** * Lo que falta por contestar antes de activar, por nombre de campo y en el * orden de la pantalla. Vacío = se puede activar. Un evento que no está en la * lista no cuenta como contestado: no llegaría nunca. */ export declare function microsoftTodoTriggerSinContestar(cfg: Partial | null | undefined): string[];