import { type BaseCollectionPaginationCountResponse, type Entity, type KeyValuePair } from '../';
import { type AdditionalDataHolder, type BackedModel, type Parsable, type ParseNode, type SerializationWriter } from '@microsoft/kiota-abstractions';
export type AggregationType = (typeof AggregationTypeObject)[keyof typeof AggregationTypeObject];
export interface AlertImpact extends AdditionalDataHolder, BackedModel, Parsable {
    /**
     * Stores additional data not described in the OpenAPI description found when deserializing. Can be used for serialization as well.
     */
    additionalData?: Record<string, unknown>;
    /**
     * The aggregation type of the impact. The possible values are: count, percentage, affectedCloudPcCount, affectedCloudPcPercentage, unknownFutureValue.
     */
    aggregationType?: AggregationType;
    /**
     * The detail information of the impact. For example, if the Frontline Cloud PCs near concurrency limit alert is triggered, the details contain the impacted Frontline license SKU name, such as Windows 365 Frontline 2 vCPU/8GB/128GB, and the corresponding impacted value.
     */
    alertImpactDetails?: KeyValuePair[];
    /**
     * Stores model information.
     */
    backingStoreEnabled?: boolean;
    /**
     * The OdataType property
     */
    odataType?: string;
    /**
     * The number value of the impact. For the aggregation types of count and affectedCloudPcCount, the value indicates the number of affected instances. For example, 6 affectedCloudPcCount means that six Cloud PCs are affected. For the aggregation types of percentage and affectedCloudPcPercentage, the value indicates the percent of affected instances. For example, 12 affectedCloudPcPercentage means that 12% of Cloud PCs are affected.
     */
    value?: number;
}
export interface AlertRecord extends Entity, Parsable {
    /**
     * The impact of the alert event. Consists of a list of key-value pair and a number followed by the aggregation type. For example, 6 affectedCloudPcCount means that 6 Cloud PCs are affected. 12 affectedCloudPcPercentage means 12% of Cloud PCs are affected. The list of key-value pair indicates the details of the alert impact.
     */
    alertImpact?: AlertImpact;
    /**
     * The corresponding ID of the alert rule.
     */
    alertRuleId?: string;
    /**
     * The rule template of the alert event. The possible values are: cloudPcProvisionScenario, cloudPcImageUploadScenario, cloudPcOnPremiseNetworkConnectionCheckScenario, unknownFutureValue, cloudPcInGracePeriodScenario. Note that you must use the Prefer: include-unknown-enum-members request header to get the following values from this evolvable enum: cloudPcInGracePeriodScenario.
     */
    alertRuleTemplate?: AlertRuleTemplate;
    /**
     * The date and time when the alert event was detected. The Timestamp type represents date and time information using ISO 8601 format. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z.
     */
    detectedDateTime?: Date;
    /**
     * The display name of the alert record.
     */
    displayName?: string;
    /**
     * The date and time when the alert record was last updated. The Timestamp type represents date and time information using ISO 8601 format. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z.
     */
    lastUpdatedDateTime?: Date;
    /**
     * The date and time when the alert event was resolved. The Timestamp type represents date and time information using ISO 8601 format. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z.
     */
    resolvedDateTime?: Date;
    /**
     * The severity of the alert event. The possible values are: unknown, informational, warning, critical, unknownFutureValue.
     */
    severity?: RuleSeverityType;
    /**
     * The status of the alert record. The possible values are: active, resolved, unknownFutureValue.
     */
    status?: AlertStatusType;
}
export interface AlertRecordCollectionResponse extends BaseCollectionPaginationCountResponse, Parsable {
    /**
     * The value property
     */
    value?: AlertRecord[];
}
export interface AlertRule extends Entity, Parsable {
    /**
     * The rule template of the alert event. The possible values are: cloudPcProvisionScenario, cloudPcImageUploadScenario, cloudPcOnPremiseNetworkConnectionCheckScenario, cloudPcInGracePeriodScenario, cloudPcFrontlineInsufficientLicensesScenario, cloudPcInaccessibleScenario. Note that you must use the Prefer: include-unknown-enum-members request header to get the following values from this evolvable enum: cloudPcInGracePeriodScenario.
     */
    alertRuleTemplate?: AlertRuleTemplate;
    /**
     * The conditions that determine when to send alerts. For example, you can configure a condition to send an alert when provisioning fails for six or more Cloud PCs.
     */
    conditions?: RuleCondition[];
    /**
     * The rule description.
     */
    description?: string;
    /**
     * The display name of the rule.
     */
    displayName?: string;
    /**
     * The status of the rule that indicates whether the rule is enabled or disabled. If true, the rule is enabled; otherwise, the rule is disabled.
     */
    enabled?: boolean;
    /**
     * Indicates whether the rule is a system rule. If true, the rule is a system rule; otherwise, the rule is a custom-defined rule and can be edited. System rules are built in and only a few properties can be edited.
     */
    isSystemRule?: boolean;
    /**
     * The notification channels of the rule selected by the user.
     */
    notificationChannels?: NotificationChannel[];
    /**
     * The severity of the rule. The possible values are: unknown, informational, warning, critical, unknownFutureValue.
     */
    severity?: RuleSeverityType;
    /**
     * The conditions that determine when to send alerts. For example, you can configure a condition to send an alert when provisioning fails for six or more Cloud PCs. This property is deprecated. Use conditions instead.
     */
    threshold?: RuleThreshold;
}
export interface AlertRuleCollectionResponse extends BaseCollectionPaginationCountResponse, Parsable {
    /**
     * The value property
     */
    value?: AlertRule[];
}
export type AlertRuleTemplate = (typeof AlertRuleTemplateObject)[keyof typeof AlertRuleTemplateObject];
export type AlertStatusType = (typeof AlertStatusTypeObject)[keyof typeof AlertStatusTypeObject];
export type ConditionCategory = (typeof ConditionCategoryObject)[keyof typeof ConditionCategoryObject];
/**
 * Creates a new instance of the appropriate class based on discriminator value
 * @param parseNode The parse node to use to read the discriminator value and create the object
 * @returns {AlertImpact}
 */
export declare function createAlertImpactFromDiscriminatorValue(parseNode: ParseNode | undefined): ((instance?: Parsable) => Record<string, (node: ParseNode) => void>);
/**
 * Creates a new instance of the appropriate class based on discriminator value
 * @param parseNode The parse node to use to read the discriminator value and create the object
 * @returns {AlertRecordCollectionResponse}
 */
export declare function createAlertRecordCollectionResponseFromDiscriminatorValue(parseNode: ParseNode | undefined): ((instance?: Parsable) => Record<string, (node: ParseNode) => void>);
/**
 * Creates a new instance of the appropriate class based on discriminator value
 * @param parseNode The parse node to use to read the discriminator value and create the object
 * @returns {AlertRecord}
 */
export declare function createAlertRecordFromDiscriminatorValue(parseNode: ParseNode | undefined): ((instance?: Parsable) => Record<string, (node: ParseNode) => void>);
/**
 * Creates a new instance of the appropriate class based on discriminator value
 * @param parseNode The parse node to use to read the discriminator value and create the object
 * @returns {AlertRuleCollectionResponse}
 */
export declare function createAlertRuleCollectionResponseFromDiscriminatorValue(parseNode: ParseNode | undefined): ((instance?: Parsable) => Record<string, (node: ParseNode) => void>);
/**
 * Creates a new instance of the appropriate class based on discriminator value
 * @param parseNode The parse node to use to read the discriminator value and create the object
 * @returns {AlertRule}
 */
export declare function createAlertRuleFromDiscriminatorValue(parseNode: ParseNode | undefined): ((instance?: Parsable) => Record<string, (node: ParseNode) => void>);
/**
 * Creates a new instance of the appropriate class based on discriminator value
 * @param parseNode The parse node to use to read the discriminator value and create the object
 * @returns {Monitoring}
 */
export declare function createMonitoringFromDiscriminatorValue(parseNode: ParseNode | undefined): ((instance?: Parsable) => Record<string, (node: ParseNode) => void>);
/**
 * Creates a new instance of the appropriate class based on discriminator value
 * @param parseNode The parse node to use to read the discriminator value and create the object
 * @returns {NotificationChannel}
 */
export declare function createNotificationChannelFromDiscriminatorValue(parseNode: ParseNode | undefined): ((instance?: Parsable) => Record<string, (node: ParseNode) => void>);
/**
 * Creates a new instance of the appropriate class based on discriminator value
 * @param parseNode The parse node to use to read the discriminator value and create the object
 * @returns {NotificationReceiver}
 */
export declare function createNotificationReceiverFromDiscriminatorValue(parseNode: ParseNode | undefined): ((instance?: Parsable) => Record<string, (node: ParseNode) => void>);
/**
 * Creates a new instance of the appropriate class based on discriminator value
 * @param parseNode The parse node to use to read the discriminator value and create the object
 * @returns {PortalNotification}
 */
export declare function createPortalNotificationFromDiscriminatorValue(parseNode: ParseNode | undefined): ((instance?: Parsable) => Record<string, (node: ParseNode) => void>);
/**
 * Creates a new instance of the appropriate class based on discriminator value
 * @param parseNode The parse node to use to read the discriminator value and create the object
 * @returns {RuleCondition}
 */
export declare function createRuleConditionFromDiscriminatorValue(parseNode: ParseNode | undefined): ((instance?: Parsable) => Record<string, (node: ParseNode) => void>);
/**
 * Creates a new instance of the appropriate class based on discriminator value
 * @param parseNode The parse node to use to read the discriminator value and create the object
 * @returns {RuleThreshold}
 */
export declare function createRuleThresholdFromDiscriminatorValue(parseNode: ParseNode | undefined): ((instance?: Parsable) => Record<string, (node: ParseNode) => void>);
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
export declare function deserializeIntoAlertImpact(alertImpact?: Partial<AlertImpact> | undefined): Record<string, (node: ParseNode) => void>;
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
export declare function deserializeIntoAlertRecord(alertRecord?: Partial<AlertRecord> | undefined): Record<string, (node: ParseNode) => void>;
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
export declare function deserializeIntoAlertRecordCollectionResponse(alertRecordCollectionResponse?: Partial<AlertRecordCollectionResponse> | undefined): Record<string, (node: ParseNode) => void>;
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
export declare function deserializeIntoAlertRule(alertRule?: Partial<AlertRule> | undefined): Record<string, (node: ParseNode) => void>;
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
export declare function deserializeIntoAlertRuleCollectionResponse(alertRuleCollectionResponse?: Partial<AlertRuleCollectionResponse> | undefined): Record<string, (node: ParseNode) => void>;
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
export declare function deserializeIntoMonitoring(monitoring?: Partial<Monitoring> | undefined): Record<string, (node: ParseNode) => void>;
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
export declare function deserializeIntoNotificationChannel(notificationChannel?: Partial<NotificationChannel> | undefined): Record<string, (node: ParseNode) => void>;
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
export declare function deserializeIntoNotificationReceiver(notificationReceiver?: Partial<NotificationReceiver> | undefined): Record<string, (node: ParseNode) => void>;
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
export declare function deserializeIntoPortalNotification(portalNotification?: Partial<PortalNotification> | undefined): Record<string, (node: ParseNode) => void>;
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
export declare function deserializeIntoRuleCondition(ruleCondition?: Partial<RuleCondition> | undefined): Record<string, (node: ParseNode) => void>;
/**
 * The deserialization information for the current model
 * @returns {Record<string, (node: ParseNode) => void>}
 */
export declare function deserializeIntoRuleThreshold(ruleThreshold?: Partial<RuleThreshold> | undefined): Record<string, (node: ParseNode) => void>;
export interface Monitoring extends Entity, Parsable {
    /**
     * The collection of records of alert events.
     */
    alertRecords?: AlertRecord[];
    /**
     * The collection of alert rules.
     */
    alertRules?: AlertRule[];
}
export interface NotificationChannel extends AdditionalDataHolder, BackedModel, Parsable {
    /**
     * Stores additional data not described in the OpenAPI description found when deserializing. Can be used for serialization as well.
     */
    additionalData?: Record<string, unknown>;
    /**
     * Stores model information.
     */
    backingStoreEnabled?: boolean;
    /**
     * The type of the notification channel. The possible values are: portal, email, phoneCall, sms, unknownFutureValue.
     */
    notificationChannelType?: NotificationChannelType;
    /**
     * Information about the notification receivers, such as locale and contact information. For example, en-us for locale and serena.davis@contoso.com for contact information.
     */
    notificationReceivers?: NotificationReceiver[];
    /**
     * The OdataType property
     */
    odataType?: string;
}
export type NotificationChannelType = (typeof NotificationChannelTypeObject)[keyof typeof NotificationChannelTypeObject];
export interface NotificationReceiver extends AdditionalDataHolder, BackedModel, Parsable {
    /**
     * Stores additional data not described in the OpenAPI description found when deserializing. Can be used for serialization as well.
     */
    additionalData?: Record<string, unknown>;
    /**
     * Stores model information.
     */
    backingStoreEnabled?: boolean;
    /**
     * The contact information about the notification receivers, such as an email address. Currently, only email and portal notifications are supported. For portal notifications, contactInformation can be left blank. For email notifications, contactInformation consists of an email address such as serena.davis@contoso.com.
     */
    contactInformation?: string;
    /**
     * Defines the language and format in which the notification will be sent. Supported locale values are: en-us, cs-cz, de-de, es-es, fr-fr, hu-hu, it-it, ja-jp, ko-kr, nl-nl, pl-pl, pt-br, pt-pt, ru-ru, sv-se, tr-tr, zh-cn, zh-tw.
     */
    locale?: string;
    /**
     * The OdataType property
     */
    odataType?: string;
}
export type OperatorType = (typeof OperatorTypeObject)[keyof typeof OperatorTypeObject];
export interface PortalNotification extends AdditionalDataHolder, BackedModel, Parsable {
    /**
     * Stores additional data not described in the OpenAPI description found when deserializing. Can be used for serialization as well.
     */
    additionalData?: Record<string, unknown>;
    /**
     * The associated alert impact.
     */
    alertImpact?: AlertImpact;
    /**
     * The associated alert record ID.
     */
    alertRecordId?: string;
    /**
     * The associated alert rule ID.
     */
    alertRuleId?: string;
    /**
     * The associated alert rule name.
     */
    alertRuleName?: string;
    /**
     * The associated alert rule template. The possible values are: cloudPcProvisionScenario, cloudPcImageUploadScenario, cloudPcOnPremiseNetworkConnectionCheckScenario, unknownFutureValue, cloudPcInGracePeriodScenario. Note that you must use the Prefer: include-unknown-enum-members request header to get the following values from this evolvable enum: cloudPcInGracePeriodScenario.
     */
    alertRuleTemplate?: AlertRuleTemplate;
    /**
     * Stores model information.
     */
    backingStoreEnabled?: boolean;
    /**
     * The unique identifier for the portal notification.
     */
    id?: string;
    /**
     * true if the portal notification has already been sent to the user; false otherwise.
     */
    isPortalNotificationSent?: boolean;
    /**
     * The OdataType property
     */
    odataType?: string;
    /**
     * The associated alert rule severity. The possible values are: unknown, informational, warning, critical, unknownFutureValue.
     */
    severity?: RuleSeverityType;
}
export type RelationshipType = (typeof RelationshipTypeObject)[keyof typeof RelationshipTypeObject];
export interface RuleCondition extends AdditionalDataHolder, BackedModel, Parsable {
    /**
     * Stores additional data not described in the OpenAPI description found when deserializing. Can be used for serialization as well.
     */
    additionalData?: Record<string, unknown>;
    /**
     * The built-in aggregation method for the rule condition. The possible values are: count, percentage, affectedCloudPcCount, affectedCloudPcPercentage, unknownFutureValue.
     */
    aggregation?: AggregationType;
    /**
     * Stores model information.
     */
    backingStoreEnabled?: boolean;
    /**
     * The property that the rule condition monitors. Possible values are:  provisionFailures, imageUploadFailures, azureNetworkConnectionCheckFailures, cloudPcInGracePeriod, frontlineInsufficientLicenses, cloudPcConnectionErrors, cloudPcHostHealthCheckFailures, cloudPcZoneOutage, unknownFutureValue.
     */
    conditionCategory?: ConditionCategory;
    /**
     * The OdataType property
     */
    odataType?: string;
    /**
     * The built-in operator for the rule condition. The possible values are: greaterOrEqual, equal, greater, less, lessOrEqual, notEqual, unknownFutureValue.
     */
    operator?: OperatorType;
    /**
     * The relationship type.  Possible values are: and, or.
     */
    relationshipType?: RelationshipType;
    /**
     * The threshold value of the alert condition. The threshold value can be a number in string form or string like 'WestUS'.
     */
    thresholdValue?: string;
}
export type RuleSeverityType = (typeof RuleSeverityTypeObject)[keyof typeof RuleSeverityTypeObject];
export interface RuleThreshold extends AdditionalDataHolder, BackedModel, Parsable {
    /**
     * Stores additional data not described in the OpenAPI description found when deserializing. Can be used for serialization as well.
     */
    additionalData?: Record<string, unknown>;
    /**
     * Indicates the built-in aggregation methods. The possible values are: count, percentage, affectedCloudPcCount, affectedCloudPcPercentage, unknownFutureValue.
     */
    aggregation?: AggregationType;
    /**
     * Stores model information.
     */
    backingStoreEnabled?: boolean;
    /**
     * The OdataType property
     */
    odataType?: string;
    /**
     * Indicates the built-in operator. The possible values are: greaterOrEqual, equal, greater, less, lessOrEqual, notEqual, unknownFutureValue.
     */
    operator?: OperatorType;
    /**
     * The target threshold value.
     */
    target?: number;
}
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
export declare function serializeAlertImpact(writer: SerializationWriter, alertImpact?: Partial<AlertImpact> | undefined): void;
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
export declare function serializeAlertRecord(writer: SerializationWriter, alertRecord?: Partial<AlertRecord> | undefined): void;
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
export declare function serializeAlertRecordCollectionResponse(writer: SerializationWriter, alertRecordCollectionResponse?: Partial<AlertRecordCollectionResponse> | undefined): void;
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
export declare function serializeAlertRule(writer: SerializationWriter, alertRule?: Partial<AlertRule> | undefined): void;
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
export declare function serializeAlertRuleCollectionResponse(writer: SerializationWriter, alertRuleCollectionResponse?: Partial<AlertRuleCollectionResponse> | undefined): void;
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
export declare function serializeMonitoring(writer: SerializationWriter, monitoring?: Partial<Monitoring> | undefined): void;
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
export declare function serializeNotificationChannel(writer: SerializationWriter, notificationChannel?: Partial<NotificationChannel> | undefined): void;
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
export declare function serializeNotificationReceiver(writer: SerializationWriter, notificationReceiver?: Partial<NotificationReceiver> | undefined): void;
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
export declare function serializePortalNotification(writer: SerializationWriter, portalNotification?: Partial<PortalNotification> | undefined): void;
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
export declare function serializeRuleCondition(writer: SerializationWriter, ruleCondition?: Partial<RuleCondition> | undefined): void;
/**
 * Serializes information the current object
 * @param writer Serialization writer to use to serialize this model
 */
export declare function serializeRuleThreshold(writer: SerializationWriter, ruleThreshold?: Partial<RuleThreshold> | undefined): void;
export declare const AggregationTypeObject: {
    readonly Count: "count";
    readonly Percentage: "percentage";
    readonly AffectedCloudPcCount: "affectedCloudPcCount";
    readonly AffectedCloudPcPercentage: "affectedCloudPcPercentage";
    readonly UnknownFutureValue: "unknownFutureValue";
};
export declare const AlertRuleTemplateObject: {
    readonly CloudPcProvisionScenario: "cloudPcProvisionScenario";
    readonly CloudPcImageUploadScenario: "cloudPcImageUploadScenario";
    readonly CloudPcOnPremiseNetworkConnectionCheckScenario: "cloudPcOnPremiseNetworkConnectionCheckScenario";
    readonly UnknownFutureValue: "unknownFutureValue";
    readonly CloudPcInGracePeriodScenario: "cloudPcInGracePeriodScenario";
    readonly CloudPcFrontlineInsufficientLicensesScenario: "cloudPcFrontlineInsufficientLicensesScenario";
    readonly CloudPcInaccessibleScenario: "cloudPcInaccessibleScenario";
};
export declare const AlertStatusTypeObject: {
    readonly Active: "active";
    readonly Resolved: "resolved";
    readonly UnknownFutureValue: "unknownFutureValue";
};
export declare const ConditionCategoryObject: {
    readonly ProvisionFailures: "provisionFailures";
    readonly ImageUploadFailures: "imageUploadFailures";
    readonly AzureNetworkConnectionCheckFailures: "azureNetworkConnectionCheckFailures";
    readonly CloudPcInGracePeriod: "cloudPcInGracePeriod";
    readonly FrontlineInsufficientLicenses: "frontlineInsufficientLicenses";
    readonly CloudPcConnectionErrors: "cloudPcConnectionErrors";
    readonly CloudPcHostHealthCheckFailures: "cloudPcHostHealthCheckFailures";
    readonly CloudPcZoneOutage: "cloudPcZoneOutage";
    readonly UnknownFutureValue: "unknownFutureValue";
};
export declare const NotificationChannelTypeObject: {
    readonly Portal: "portal";
    readonly Email: "email";
    readonly PhoneCall: "phoneCall";
    readonly Sms: "sms";
    readonly UnknownFutureValue: "unknownFutureValue";
};
export declare const OperatorTypeObject: {
    readonly GreaterOrEqual: "greaterOrEqual";
    readonly Equal: "equal";
    readonly Greater: "greater";
    readonly Less: "less";
    readonly LessOrEqual: "lessOrEqual";
    readonly NotEqual: "notEqual";
    readonly UnknownFutureValue: "unknownFutureValue";
};
export declare const RelationshipTypeObject: {
    readonly And: "and";
    readonly Or: "or";
    readonly UnknownFutureValue: "unknownFutureValue";
};
export declare const RuleSeverityTypeObject: {
    readonly Unknown: "unknown";
    readonly Informational: "informational";
    readonly Warning: "warning";
    readonly Critical: "critical";
    readonly UnknownFutureValue: "unknownFutureValue";
};
//# sourceMappingURL=index.d.ts.map