import { DockerOptions , Container as ContainerInterface , ContainerInspectInfo , ContainerCreateOptions , ImageInspectInfo , ImageInfo , } from 'dockerode' ; import { SendMailOptions , SentMessageInfo } from 'nodemailer' ; import { SmtpOptions } from 'nodemailer-smtp-transport' ; export type DockerInitOptions = DockerOptions ; export interface CliArgumentsInterface { [ x ] : unknown ; runonce : boolean ; cleanup : boolean ; host : string | undefined ; interval : number | undefined ; monitor : string | null ; ignore : string | null ; user : string | null ; pass : string | null ; $0 : string ; smtpHost ? : string | null ; smtpPort ? : number | null ; smtpUsername ? : string | null ; smtpPassword ? : string | null ; smtpSender ? : string | null ; smtpRecipients ? : string | null ; webhookUrls ? : string | null ; pushoverToken ? : string | null ; pushoverUser ? : string | null ; pushoverDevice ? : string | null ; telegramToken ? : string | null ; telegramChat ? : string | null ; prometheusHost ? : string | null ; prometheusPort ? : number | null ; influxUrl ? : string | null ; influxToken ? : string | null ; influxOrg ? : string | null ; influxBucket ? : string | null ; privateRegistry ? : string | undefined ; semverUpdate ? : boolean ; allowMajorUpdates ? : boolean ; allowPatchOnly ? : boolean ; allowPrereleaseUpdates ? : boolean ; } export interface ConfigInterface { runOnce : boolean ; cleanImage : boolean ; dockerHost : string | undefined ; watchInterval : number | undefined ; containersToMonitor : string [ ] | null ; containersToIgnore : string [ ] | null ; repoUser : string | null ; repoPass : string | null ; emailConfig ? : SmtpOptions ; emailOptions ? : SendMailOptions ; webhookUrls ? : string [ ] | undefined ; pushoverAppToken ? : string | undefined ; pushoverUserKey ? : string | undefined ; pushoverDevice ? : string | undefined ; telegramBotToken ? : string | undefined ; telegramChatId ? : string | undefined ; prometheusConfig ? : PromOptions ; influxConfig ? : InfluxOptions ; privateRegistry ? : string | undefined ; semverUpdate ? : boolean ; allowMajorUpdates ? : boolean ; allowPatchOnly ? : boolean ; allowPrereleaseUpdates ? : boolean ; extractDockerConfig ( ) : DockerInitOptions ; } export interface ContainerClientInterface { client : any ; create ( createOpts ) : Promise < ContainerInterface | undefined > ; getRunningContainers ( ) : Promise < RunningContainerInfo [ ] | undefined > ; } export interface ImageClientInterface { client : any ; listAll ( ) : Promise < ImageInfo [ ] | undefined > ; inspect ( name ) : Promise < ImageInspectInfo | undefined > ; pullLatestImage ( imageName , imageTag , config ) : Promise < ImageInspectInfo | undefined > ; remove ( image ) : Promise < void > ; getUntaggedImageName ( name ) : string | undefined ; getImageTag ( name ) : string | undefined ; } export interface ArgusClientInterface { DockerClient : any ; ContainerClient : ContainerClientInterface ; ImageClient : ImageClientInterface ; NotificationClient : NotificationInterface ; DataClient : DataServiceInterface ; execute ( ) : Promise < void > ; } export interface RunningContainerInfo { inspectObject ? : ContainerInspectInfo ; interfaceObject ? : ContainerInterface ; } export interface PullAuthInterface { username : string ; password : string ; auth ? : string ; email ? : string ; serveraddress ? : string ; } export interface NotificationInterface { emailOpts : SendMailOptions ; emailNotifier : EmailServiceInterface | undefined ; webhookNotifier : WebhookInterface | undefined ; dataClient : DataServiceInterface | undefined ; sendNotifications ( monitoredContainers , updatedContainers , updatedContainerObjects ) : Promise < [ any , void ] > ; } export interface EmailServiceInterface { emailOptions : SendMailOptions ; sendEmail ( dockerHost , monitoredContainers , updatedContainers , updatedContainerObjects ) : Promise < SentMessageInfo | undefined > ; } export interface WebhookInterface { webhookUrls : string [ ] | undefined ; pushoverAppToken : string | undefined ; pushoverUserKey : string | undefined ; pushoverDevice : string | undefined ; telegramBotToken : string | undefined ; telegramChatId : string | undefined ; sendWebhookNotifications ( dockerHost , monitoredContainers , updatedContainers , updatedContainerObjects ) : Promise < void | undefined > ; modelWebhookPayload ( webhookType , dockerHost , monitoredContainers , updatedContainers , updatedContainerObjects ) : string ; postToWebhooks ( dispatchUrlPayloadPairs ) : Promise < void | undefined > ; } export interface DataServiceInterface { monitoredContainers : Map < string , number > ; updatedContainers : Map < string , number > ; updatedContainerObjects : [ ImageInspectInfo , ImageInspectInfo , ContainerInspectInfo ] [ ] ; setGauges ( socket ) : void ; addMetric ( containerLabel , socket ) : void ; } export interface PromOptions { host : string | null ; port : number | null ; } export interface InfluxOptions { url : string | null ; token : string | null ; org : string | null ; bucket : string | null ; } export interface PrometheusInterface { setMonitoredContainersGauge ( socket , monitoredContainers ) : void ; updateContainersCounter ( containerLabel , socket , updatedContainers ) : void ; startPrometheusServer ( ) : void ; } export interface InfluxInterface { writePoints ( containerLabel , socket , monitoredContainers , updatedContainers ) : void ; } export interface RegistryInterface { getRepositoryTags ( repoName ) : Promise < string [ ] | undefined > ; } export interface RegistryOpts { registryBase : string | null ; repoUser ? : string | null ; repoPass ? : string | null ; }