using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using InfluxDB.Client.Api.Domain;
using InfluxDB.Client.Api.Service;
using InfluxDB.Client.Core;
using InfluxDB.Client.Domain;
namespace InfluxDB.Client
{
public interface IChecksApi
{
///
/// Add new Threshold check.
///
/// the check name
/// The text of the flux query
/// Check repetition interval
/// template that is used to generate and write a status message
/// condition for that specific status
/// the organization that owns this check
/// Cancellation token
/// ThresholdCheck created
Task CreateThresholdCheckAsync(string name, string query, string every,
string messageTemplate, Threshold threshold, string orgId, CancellationToken cancellationToken = default);
///
/// Add new Threshold check.
///
/// the check name
/// The text of the flux query
/// Check repetition interval
/// template that is used to generate and write a status message
/// conditions for that specific status
/// the organization that owns this check
/// Cancellation token
/// ThresholdCheck created
Task CreateThresholdCheckAsync(string name, string query, string every,
string messageTemplate, List thresholds, string orgId,
CancellationToken cancellationToken = default);
///
/// Add new Deadman check.
///
/// the check name
/// The text of the flux query
/// Check repetition interval
/// string duration before deadman triggers
/// string duration for time that a series is considered stale and should not trigger deadman
/// template that is used to generate and write a status message
/// the state to record if check matches a criteria
/// the organization that owns this check
/// Cancellation token
/// DeadmanCheck created
Task CreateDeadmanCheckAsync(string name, string query, string every,
string timeSince, string staleTime, string messageTemplate, CheckStatusLevel level, string orgId,
CancellationToken cancellationToken = default);
///
/// Add new check.
///
/// check to create
/// Cancellation token
/// Check created
Task CreateCheckAsync(Check check, CancellationToken cancellationToken = default);
///
/// Update a check.
///
/// check update to apply
/// Cancellation token
/// An updated check
Task UpdateCheckAsync(Check check, CancellationToken cancellationToken = default);
///
/// Update a check.
///
/// ID of check
/// update to apply
/// Cancellation token
/// An updated check
Task UpdateCheckAsync(string checkId, CheckPatch patch,
CancellationToken cancellationToken = default);
///
/// Delete a check.
///
/// the check to delete
/// Cancellation token
///
Task DeleteCheckAsync(Check check, CancellationToken cancellationToken = default);
///
/// Delete a check.
///
/// checkID the ID of check to delete
/// Cancellation token
///
Task DeleteCheckAsync(string checkId, CancellationToken cancellationToken = default);
///
/// Get a check.
///
/// ID of check
/// Cancellation token
/// the check requested
Task FindCheckByIdAsync(string checkId, CancellationToken cancellationToken = default);
///
/// Get checks.
///
/// only show checks belonging to specified organization
/// Cancellation token
/// A list of checks
Task> FindChecksAsync(string orgId, CancellationToken cancellationToken = default);
///
/// Get all checks.
///
/// only show checks belonging to specified organization
/// find options
/// Cancellation token
/// A list of checks
Task FindChecksAsync(string orgId, FindOptions findOptions,
CancellationToken cancellationToken = default);
///
/// List all labels for a check.
///
/// the check
/// Cancellation token
/// a list of all labels for a check
Task> GetLabelsAsync(Check check, CancellationToken cancellationToken = default);
///
/// List all labels for a check.
///
/// ID of the check
/// Cancellation token
/// a list of all labels for a check
Task> GetLabelsAsync(string checkId, CancellationToken cancellationToken = default);
///
/// Add a label to a check.
///
/// label to add
/// the check
/// Cancellation token
/// the label was added to the check
Task