import {Domain, EmailAddress, JSONObject, MonitoringToken, OnlineState, Site, toIsEnum} from "./shared"; export * from "./config"; export * from "./logger"; export * from "./shared"; export type NodeStateData = { site: Site, domain: Domain, state: OnlineState, } // TODO: Complete interface / class declaration. export type NodeSecrets = { monitoringToken?: MonitoringToken, }; export type MailId = number & { readonly __tag: unique symbol }; export type MailData = JSONObject; export enum MailType { MONITORING_OFFLINE_1 = "monitoring-offline-1", MONITORING_OFFLINE_2 = "monitoring-offline-2", MONITORING_OFFLINE_3 = "monitoring-offline-3", MONITORING_ONLINE_AGAIN = "monitoring-online-again", MONITORING_CONFIRMATION = "monitoring-confirmation", } export const isMailType = toIsEnum(MailType); export interface Mail { id: MailId, email: MailType, sender: EmailAddress, recipient: EmailAddress, data: MailData, failures: number, }