/**
 * This file contains only generated model types and their (de)serializers.
 * Disable the following rules for internal models with '_' prefix and deserializers which require 'any' for raw JSON input.
 */
/** Monitoring data point coming from the client, which includes metrics, documents and other metadata info. */
export interface MonitoringDataPoint {
    /** Application Insights SDK version. */
    version: string;
    /** Version/generation of the data contract (MonitoringDataPoint) between SDK and Live Metrics. */
    invariantVersion: number;
    /** Service instance name where Application Insights SDK lives. */
    instance: string;
    /** Service role name. */
    roleName: string;
    /** Computer name where Application Insights SDK lives. */
    machineName: string;
    /** Identifies an Application Insights SDK as a trusted agent to report metrics and documents. */
    streamId: string;
    /** Data point generation timestamp. */
    timestamp?: Date;
    /** Timestamp when the client transmits the metrics and documents to Live Metrics. */
    transmissionTime?: Date;
    /** True if the current application is an Azure Web App. */
    isWebApp: boolean;
    /** True if performance counters collection is supported. */
    performanceCollectionSupported: boolean;
    /** An array of metric data points. */
    metrics?: MetricPoint[];
    /** An array of documents of a specific type {Request}, {RemoteDependency}, {Exception}, {Event}, or {Trace} */
    documents?: DocumentIngressUnion[];
    /** An array of top cpu consumption data point. */
    topCpuProcesses?: ProcessCpuData[];
    /** An array of error while SDK parses and applies the {CollectionConfigurationInfo} provided by Live Metrics. */
    collectionConfigurationErrors?: CollectionConfigurationError[];
}
export declare function monitoringDataPointSerializer(item: MonitoringDataPoint): any;
export declare function metricPointArraySerializer(result: Array<MetricPoint>): any[];
/** Metric data point. */
export interface MetricPoint {
    /** Metric name. */
    name: string;
    /** Metric value. */
    value: number;
    /** Metric weight. */
    weight: number;
}
export declare function metricPointSerializer(item: MetricPoint): any;
export declare function documentIngressUnionArraySerializer(result: Array<DocumentIngressUnion>): any[];
/** A document of a specific type: Request, RemoteDependency, Exception, Event, or Trace. */
export interface DocumentIngress {
    /** Telemetry type. Types not defined in enum will get replaced with a 'Unknown' type. */
    /** The discriminator possible values: Request, RemoteDependency, Exception, Event, Trace */
    documentType: DocumentType;
    /** An array of document streaming ids. Each id identifies a flow of documents customized by UX customers. */
    documentStreamIds?: string[];
    /** Collection of custom properties. */
    properties?: KeyValuePairStringString[];
}
export declare function documentIngressSerializer(item: DocumentIngress): any;
/** Alias for DocumentIngressUnion */
export type DocumentIngressUnion = Request | RemoteDependency | Exception | Event | Trace | DocumentIngress;
export declare function documentIngressUnionSerializer(item: DocumentIngressUnion): any;
/** Document type */
export type DocumentType = "Request" | "RemoteDependency" | "Exception" | "Event" | "Trace" | "Unknown";
export declare function keyValuePairStringStringArraySerializer(result: Array<KeyValuePairStringString>): any[];
/** Key-value pair of string and string. */
export interface KeyValuePairStringString {
    /** Key of the key-value pair. */
    key: string;
    /** Value of the key-value pair. */
    value: string;
}
export declare function keyValuePairStringStringSerializer(item: KeyValuePairStringString): any;
/** Request document type. */
export interface Request extends DocumentIngress {
    /** Telemetry type for Request. */
    documentType: "Request";
    /** Name of the request, e.g., 'GET /values/{id}'. */
    name?: string;
    /** Request URL with all query string parameters. */
    url?: string;
    /** Result of a request execution. For http requests, it could be some HTTP status code. */
    responseCode?: string;
    /** Request duration in ISO 8601 duration format, i.e., P[n]Y[n]M[n]DT[n]H[n]M[n]S or P[n]W. */
    duration?: string;
}
export declare function requestSerializer(item: Request): any;
/** RemoteDependency document type. */
export interface RemoteDependency extends DocumentIngress {
    /** Telemetry type for RemoteDependency. */
    documentType: "RemoteDependency";
    /** Name of the command initiated with this dependency call, e.g., GET /username. */
    name?: string;
    /** URL of the dependency call to the target, with all query string parameters. */
    commandName?: string;
    /** Result code of a dependency call. Examples are SQL error code and HTTP status code. */
    resultCode?: string;
    /** Request duration in ISO 8601 duration format, i.e., P[n]Y[n]M[n]DT[n]H[n]M[n]S or P[n]W. */
    duration?: string;
}
export declare function remoteDependencySerializer(item: RemoteDependency): any;
/** Exception document type. */
export interface Exception extends DocumentIngress {
    /** Telemetry type for Exception. */
    documentType: "Exception";
    /** Exception type name. */
    exceptionType?: string;
    /** Exception message. */
    exceptionMessage?: string;
}
export declare function exceptionSerializer(item: Exception): any;
/** Event document type. */
export interface Event extends DocumentIngress {
    /** Telemetry type for Event. */
    documentType: "Event";
    /** Event name. */
    name?: string;
}
export declare function eventSerializer(item: Event): any;
/** Trace document type. */
export interface Trace extends DocumentIngress {
    /** Telemetry type for Trace. */
    documentType: "Trace";
    /** Trace message. */
    message?: string;
}
export declare function traceSerializer(item: Trace): any;
export declare function processCpuDataArraySerializer(result: Array<ProcessCpuData>): any[];
/** CPU consumption datapoint. */
export interface ProcessCpuData {
    /** Process name. */
    processName: string;
    /** CPU consumption percentage. */
    cpuPercentage: number;
}
export declare function processCpuDataSerializer(item: ProcessCpuData): any;
export declare function collectionConfigurationErrorArraySerializer(result: Array<CollectionConfigurationError>): any[];
/** Represents an error while SDK parses and applies an instance of CollectionConfigurationInfo. */
export interface CollectionConfigurationError {
    /** Error type. */
    collectionConfigurationErrorType: CollectionConfigurationErrorType;
    /** Error message. */
    message: string;
    /** Exception that led to the creation of the configuration error. */
    fullException: string;
    /** Custom properties to add more information to the error. */
    data: KeyValuePairStringString[];
}
export declare function collectionConfigurationErrorSerializer(item: CollectionConfigurationError): any;
/** Collection configuration error type reported by the client SDK. */
export type CollectionConfigurationErrorType = "Unknown" | "PerformanceCounterParsing" | "PerformanceCounterUnexpected" | "PerformanceCounterDuplicateIds" | "DocumentStreamDuplicateIds" | "DocumentStreamFailureToCreate" | "DocumentStreamFailureToCreateFilterUnexpected" | "MetricDuplicateIds" | "MetricTelemetryTypeUnsupported" | "MetricFailureToCreate" | "MetricFailureToCreateFilterUnexpected" | "FilterFailureToCreateUnexpected" | "CollectionConfigurationFailureToCreateUnexpected";
/** Represents the collection configuration - a customizable description of performance counters, metrics, and full telemetry documents to be collected by the client SDK. */
export interface CollectionConfigurationInfo {
    /** An encoded string that indicates whether the collection configuration is changed. */
    eTag: string;
    /** An array of metric configuration info. */
    metrics: DerivedMetricInfo[];
    /** An array of document stream configuration info. */
    documentStreams: DocumentStreamInfo[];
    /** Controls document quotas to be sent to Live Metrics. */
    quotaInfo?: QuotaConfigurationInfo;
}
export declare function collectionConfigurationInfoSerializer(item: CollectionConfigurationInfo): any;
export declare function collectionConfigurationInfoDeserializer(item: any): CollectionConfigurationInfo;
export declare function derivedMetricInfoArraySerializer(result: Array<DerivedMetricInfo>): any[];
export declare function derivedMetricInfoArrayDeserializer(result: Array<DerivedMetricInfo>): any[];
/** A metric configuration set by UX to scope the metrics it's interested in. */
export interface DerivedMetricInfo {
    /** metric configuration identifier. */
    id: string;
    /** Telemetry type. */
    telemetryType: string;
    /** A collection of filters to scope metrics that UX needs. */
    filterGroups: FilterConjunctionGroupInfo[];
    /** Telemetry's metric dimension whose value is to be aggregated. Example values: Duration, Count(),... */
    projection: string;
    /** Aggregation type. This is the aggregation done from everything within a single server. */
    aggregation: AggregationType;
    /** Aggregation type. This Aggregation is done across the values for all the servers taken together. */
    backEndAggregation: AggregationType;
}
export declare function derivedMetricInfoSerializer(item: DerivedMetricInfo): any;
export declare function derivedMetricInfoDeserializer(item: any): DerivedMetricInfo;
export declare function filterConjunctionGroupInfoArraySerializer(result: Array<FilterConjunctionGroupInfo>): any[];
export declare function filterConjunctionGroupInfoArrayDeserializer(result: Array<FilterConjunctionGroupInfo>): any[];
/** An AND-connected group of FilterInfo objects. */
export interface FilterConjunctionGroupInfo {
    /** An array of filters. */
    filters: FilterInfo[];
}
export declare function filterConjunctionGroupInfoSerializer(item: FilterConjunctionGroupInfo): any;
export declare function filterConjunctionGroupInfoDeserializer(item: any): FilterConjunctionGroupInfo;
export declare function filterInfoArraySerializer(result: Array<FilterInfo>): any[];
export declare function filterInfoArrayDeserializer(result: Array<FilterInfo>): any[];
/** A filter set on UX */
export interface FilterInfo {
    /** dimension name of the filter */
    fieldName: string;
    /** Operator of the filter */
    predicate: PredicateType;
    /** Comparand of the filter */
    comparand: string;
}
export declare function filterInfoSerializer(item: FilterInfo): any;
export declare function filterInfoDeserializer(item: any): FilterInfo;
/** Enum representing the different types of predicates. */
export type PredicateType = "Equal" | "NotEqual" | "LessThan" | "GreaterThan" | "LessThanOrEqual" | "GreaterThanOrEqual" | "Contains" | "DoesNotContain";
/** Aggregation type. */
export type AggregationType = "Avg" | "Sum" | "Min" | "Max";
export declare function documentStreamInfoArraySerializer(result: Array<DocumentStreamInfo>): any[];
export declare function documentStreamInfoArrayDeserializer(result: Array<DocumentStreamInfo>): any[];
/** Configurations/filters set by UX to scope the document/telemetry it's interested in. */
export interface DocumentStreamInfo {
    /** Identifier of the document stream initiated by a UX. */
    id: string;
    /** Gets or sets an OR-connected collection of filter groups. */
    documentFilterGroups: DocumentFilterConjunctionGroupInfo[];
}
export declare function documentStreamInfoSerializer(item: DocumentStreamInfo): any;
export declare function documentStreamInfoDeserializer(item: any): DocumentStreamInfo;
export declare function documentFilterConjunctionGroupInfoArraySerializer(result: Array<DocumentFilterConjunctionGroupInfo>): any[];
export declare function documentFilterConjunctionGroupInfoArrayDeserializer(result: Array<DocumentFilterConjunctionGroupInfo>): any[];
/** A collection of filters for a specific telemetry type. */
export interface DocumentFilterConjunctionGroupInfo {
    /** Telemetry type. */
    telemetryType: TelemetryType;
    /** An array of filter groups. */
    filters: FilterConjunctionGroupInfo;
}
export declare function documentFilterConjunctionGroupInfoSerializer(item: DocumentFilterConjunctionGroupInfo): any;
export declare function documentFilterConjunctionGroupInfoDeserializer(item: any): DocumentFilterConjunctionGroupInfo;
/** Telemetry type. */
export type TelemetryType = "Request" | "Dependency" | "Exception" | "Event" | "Metric" | "PerformanceCounter" | "Trace";
/** Controls document quotas to be sent to Live Metrics. */
export interface QuotaConfigurationInfo {
    /** Initial quota */
    initialQuota?: number;
    /** Max quota */
    maxQuota: number;
    /** Quota accrual rate per second */
    quotaAccrualRatePerSec: number;
}
export declare function quotaConfigurationInfoSerializer(item: QuotaConfigurationInfo): any;
export declare function quotaConfigurationInfoDeserializer(item: any): QuotaConfigurationInfo;
/** Optional http response body, whose existence carries additional error descriptions. */
export interface ServiceError {
    /** A globally unique identifier to identify the diagnostic context. It defaults to the empty GUID. */
    requestId: string;
    /** Service error response date time. */
    responseDateTime: string;
    /** Error code. */
    code: string;
    /** Error message. */
    message: string;
    /** Message of the exception that triggers the error response. */
    exception: string;
}
export declare function serviceErrorDeserializer(item: any): ServiceError;
/** Live Metrics service versions. */
export declare enum KnownVersions {
    /** The 2024-04-01-preview version of the Live Metrics service. */
    V20240401Preview = "2024-04-01-preview"
}
export declare function monitoringDataPointArraySerializer(result: Array<MonitoringDataPoint>): any[];
//# sourceMappingURL=models.d.ts.map