using System;

namespace Infineon.Monitoring.MonA;

public interface IMonIn
{
    string SendStatus(string site, string resource, string stateName, State state);

    string SendStatus(
      string site,
      DateTime timeStamp,
      string resource,
      string stateName,
      State state);

    string SendStatus(
      string site,
      string resource,
      string stateName,
      State state,
      string description);

    string SendStatus(
      string site,
      DateTime timeStamp,
      string resource,
      string stateName,
      State state,
      string description);

    string SendStatus(
      string site,
      string resource,
      string subresource,
      string stateName,
      State state);

    string SendStatus(
      string site,
      DateTime timeStamp,
      string resource,
      string subresource,
      string stateName,
      State state);

    string SendStatus(
      string site,
      string resource,
      string subresource,
      string stateName,
      State state,
      string description);

    string SendStatus(
      string site,
      DateTime? timeStamp,
      string resource,
      string subresource,
      string stateName,
      State state,
      string description);

    string SendPerformanceMessage(
      string site,
      string resource,
      string performanceName,
      double value);

    string SendPerformanceMessage(
      string site,
      DateTime? timeStamp,
      string resource,
      string performanceName,
      double value);

    string SendPerformanceMessage(
      string site,
      string resource,
      string performanceName,
      double value,
      string description);

    string SendPerformanceMessage(
      string site,
      DateTime? timeStamp,
      string resource,
      string performanceName,
      double value,
      string description);

    string SendPerformanceMessage(
      string site,
      DateTime? timeStamp,
      string resource,
      string performanceName,
      double value,
      int? interval);

    string SendPerformanceMessage(
      string site,
      string resource,
      DateTime? timeStamp,
      string performanceName,
      double value,
      string unit);

    string SendPerformanceMessage(
      string site,
      DateTime? timeStamp,
      string resource,
      string performanceName,
      double value,
      string unit,
      int? interval);

    string SendPerformanceMessage(
      string site,
      string resource,
      string subresource,
      string performanceName,
      double value);

    string SendPerformanceMessage(
      string site,
      DateTime? timeStamp,
      string resource,
      string subresource,
      string performanceName,
      double value);

    string SendPerformanceMessage(
      string site,
      string resource,
      string subresource,
      string performanceName,
      double value,
      string description);

    string SendPerformanceMessage(
      string site,
      DateTime? timeStamp,
      string resource,
      string subresource,
      string performanceName,
      double value,
      int? interval);

    string SendPerformanceMessage(
      string site,
      DateTime? timeStamp,
      string resource,
      string subresource,
      string performanceName,
      double value,
      string unit);

    string SendPerformanceMessage(
      string site,
      DateTime? timeStamp,
      string resource,
      string subresource,
      string performanceName,
      double value,
      string description,
      string unit,
      int? interval);
}