import * as HttpClient from "effect/unstable/http/HttpClient";
import * as S from "effect/Schema";
import * as stream from "effect/Stream";
import * as API from "../client/api.js";
import * as T from "../traits.js";
import * as C from "../category.js";
const svc = T.AwsApiService({
    sdkId: "DevOps Guru",
    serviceShapeName: "CapstoneControlPlaneService",
});
const auth = T.AwsAuthSigv4({ name: "devops-guru" });
const ver = T.ServiceVersion("2020-12-01");
const proto = T.AwsProtocolsRestJson1();
const rules = T.EndpointResolver((p, _) => {
    const { Region, UseDualStack = false, UseFIPS = false, Endpoint } = p;
    const e = (u, p = {}, h = {}) => ({
        type: "endpoint",
        endpoint: { url: u, properties: p, headers: h },
    });
    const err = (m) => ({
        type: "error",
        message: m,
    });
    if (Endpoint != null) {
        if (UseFIPS === true) {
            return err("Invalid Configuration: FIPS and custom endpoint are not supported");
        }
        if (UseDualStack === true) {
            return err("Invalid Configuration: Dualstack and custom endpoint are not supported");
        }
        return e(Endpoint);
    }
    if (Region != null) {
        {
            const PartitionResult = _.partition(Region);
            if (PartitionResult != null && PartitionResult !== false) {
                if (UseFIPS === true && UseDualStack === true) {
                    if (true === _.getAttr(PartitionResult, "supportsFIPS") &&
                        true === _.getAttr(PartitionResult, "supportsDualStack")) {
                        return e(`https://devops-guru-fips.${Region}.${_.getAttr(PartitionResult, "dualStackDnsSuffix")}`);
                    }
                    return err("FIPS and DualStack are enabled, but this partition does not support one or both");
                }
                if (UseFIPS === true) {
                    if (_.getAttr(PartitionResult, "supportsFIPS") === true) {
                        return e(`https://devops-guru-fips.${Region}.${_.getAttr(PartitionResult, "dnsSuffix")}`);
                    }
                    return err("FIPS is enabled but this partition does not support FIPS");
                }
                if (UseDualStack === true) {
                    if (true === _.getAttr(PartitionResult, "supportsDualStack")) {
                        return e(`https://devops-guru.${Region}.${_.getAttr(PartitionResult, "dualStackDnsSuffix")}`);
                    }
                    return err("DualStack is enabled but this partition does not support DualStack");
                }
                return e(`https://devops-guru.${Region}.${_.getAttr(PartitionResult, "dnsSuffix")}`);
            }
        }
    }
    return err("Invalid Configuration: Missing Region");
});
export const SnsChannelConfig = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ TopicArn: S.optional(S.String) })).annotate({
    identifier: "SnsChannelConfig",
});
export const InsightSeverity = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const InsightSeverities = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(InsightSeverity);
export const NotificationMessageType = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const NotificationMessageTypes = /*@__PURE__*/ /*#__PURE__*/ S.Array(NotificationMessageType);
export const NotificationFilterConfig = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Severities: S.optional(InsightSeverities),
    MessageTypes: S.optional(NotificationMessageTypes),
})).annotate({
    identifier: "NotificationFilterConfig",
});
export const NotificationChannelConfig = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Sns: SnsChannelConfig,
    Filters: S.optional(NotificationFilterConfig),
})).annotate({
    identifier: "NotificationChannelConfig",
});
export const AddNotificationChannelRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Config: NotificationChannelConfig }).pipe(T.all(T.Http({ method: "PUT", uri: "/channels" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "AddNotificationChannelRequest",
});
export const AddNotificationChannelResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Id: S.String })).annotate({
    identifier: "AddNotificationChannelResponse",
});
export const ValidationExceptionReason = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const ValidationExceptionField = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Name: S.String, Message: S.String })).annotate({
    identifier: "ValidationExceptionField",
});
export const ValidationExceptionFields = /*@__PURE__*/ /*#__PURE__*/ S.Array(ValidationExceptionField);
export const DeleteInsightRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Id: S.String.pipe(T.HttpLabel("Id")) }).pipe(T.all(T.Http({ method: "DELETE", uri: "/insights/{Id}" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DeleteInsightRequest",
});
export const DeleteInsightResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "DeleteInsightResponse",
});
export const DescribeAccountHealthRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({}).pipe(T.all(T.Http({ method: "GET", uri: "/accounts/health" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DescribeAccountHealthRequest",
});
export const DescribeAccountHealthResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    OpenReactiveInsights: S.Number,
    OpenProactiveInsights: S.Number,
    MetricsAnalyzed: S.Number,
    ResourceHours: S.Number,
    AnalyzedResourceCount: S.optional(S.Number),
})).annotate({
    identifier: "DescribeAccountHealthResponse",
});
export const DescribeAccountOverviewRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    FromTime: S.Date.pipe(T.TimestampFormat("epoch-seconds")),
    ToTime: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
}).pipe(T.all(T.Http({ method: "POST", uri: "/accounts/overview" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DescribeAccountOverviewRequest",
});
export const DescribeAccountOverviewResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ReactiveInsights: S.Number,
    ProactiveInsights: S.Number,
    MeanTimeToRecoverInMilliseconds: S.Number,
})).annotate({
    identifier: "DescribeAccountOverviewResponse",
});
export const DescribeAnomalyRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Id: S.String.pipe(T.HttpLabel("Id")),
    AccountId: S.optional(S.String).pipe(T.HttpQuery("AccountId")),
}).pipe(T.all(T.Http({ method: "GET", uri: "/anomalies/{Id}" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DescribeAnomalyRequest",
});
export const AnomalySeverity = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const AnomalyStatus = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const AnomalyTimeRange = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    StartTime: S.Date.pipe(T.TimestampFormat("epoch-seconds")),
    EndTime: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
})).annotate({
    identifier: "AnomalyTimeRange",
});
export const AnomalyReportedTimeRange = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    OpenTime: S.Date.pipe(T.TimestampFormat("epoch-seconds")),
    CloseTime: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
})).annotate({
    identifier: "AnomalyReportedTimeRange",
});
export const PredictionTimeRange = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    StartTime: S.Date.pipe(T.TimestampFormat("epoch-seconds")),
    EndTime: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
})).annotate({
    identifier: "PredictionTimeRange",
});
export const CloudWatchMetricsDimension = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Name: S.optional(S.String), Value: S.optional(S.String) })).annotate({
    identifier: "CloudWatchMetricsDimension",
});
export const CloudWatchMetricsDimensions = /*@__PURE__*/ /*#__PURE__*/ S.Array(CloudWatchMetricsDimension);
export const CloudWatchMetricsStat = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const TimestampMetricValuePair = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Timestamp: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    MetricValue: S.optional(S.Number),
})).annotate({
    identifier: "TimestampMetricValuePair",
});
export const TimestampMetricValuePairList = /*@__PURE__*/ /*#__PURE__*/ S.Array(TimestampMetricValuePair);
export const CloudWatchMetricDataStatusCode = 
/*@__PURE__*/ /*#__PURE__*/ S.String;
export const CloudWatchMetricsDataSummary = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    TimestampMetricValuePairList: S.optional(TimestampMetricValuePairList),
    StatusCode: S.optional(CloudWatchMetricDataStatusCode),
})).annotate({
    identifier: "CloudWatchMetricsDataSummary",
});
export const CloudWatchMetricsDetail = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    MetricName: S.optional(S.String),
    Namespace: S.optional(S.String),
    Dimensions: S.optional(CloudWatchMetricsDimensions),
    Stat: S.optional(CloudWatchMetricsStat),
    Unit: S.optional(S.String),
    Period: S.optional(S.Number),
    MetricDataSummary: S.optional(CloudWatchMetricsDataSummary),
})).annotate({
    identifier: "CloudWatchMetricsDetail",
});
export const CloudWatchMetricsDetails = /*@__PURE__*/ /*#__PURE__*/ S.Array(CloudWatchMetricsDetail);
export const PerformanceInsightsMetricDimensions = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const PerformanceInsightsMetricDimensionGroup = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Group: S.optional(S.String),
    Dimensions: S.optional(PerformanceInsightsMetricDimensions),
    Limit: S.optional(S.Number),
})).annotate({
    identifier: "PerformanceInsightsMetricDimensionGroup",
});
export const PerformanceInsightsMetricFilterMap = 
/*@__PURE__*/ /*#__PURE__*/ S.Record(S.String, S.String.pipe(S.optional));
export const PerformanceInsightsMetricQuery = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Metric: S.optional(S.String),
    GroupBy: S.optional(PerformanceInsightsMetricDimensionGroup),
    Filter: S.optional(PerformanceInsightsMetricFilterMap),
})).annotate({
    identifier: "PerformanceInsightsMetricQuery",
});
export const PerformanceInsightsReferenceScalar = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Value: S.optional(S.Number) })).annotate({
    identifier: "PerformanceInsightsReferenceScalar",
});
export const PerformanceInsightsReferenceMetric = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ MetricQuery: S.optional(PerformanceInsightsMetricQuery) })).annotate({
    identifier: "PerformanceInsightsReferenceMetric",
});
export const PerformanceInsightsReferenceComparisonValues = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ReferenceScalar: S.optional(PerformanceInsightsReferenceScalar),
    ReferenceMetric: S.optional(PerformanceInsightsReferenceMetric),
})).annotate({
    identifier: "PerformanceInsightsReferenceComparisonValues",
});
export const PerformanceInsightsReferenceData = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Name: S.optional(S.String),
    ComparisonValues: S.optional(PerformanceInsightsReferenceComparisonValues),
})).annotate({
    identifier: "PerformanceInsightsReferenceData",
});
export const PerformanceInsightsReferenceDataList = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(PerformanceInsightsReferenceData);
export const PerformanceInsightsStat = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Type: S.optional(S.String), Value: S.optional(S.Number) })).annotate({
    identifier: "PerformanceInsightsStat",
});
export const PerformanceInsightsStats = /*@__PURE__*/ /*#__PURE__*/ S.Array(PerformanceInsightsStat);
export const PerformanceInsightsMetricsDetail = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    MetricDisplayName: S.optional(S.String),
    Unit: S.optional(S.String),
    MetricQuery: S.optional(PerformanceInsightsMetricQuery),
    ReferenceData: S.optional(PerformanceInsightsReferenceDataList),
    StatsAtAnomaly: S.optional(PerformanceInsightsStats),
    StatsAtBaseline: S.optional(PerformanceInsightsStats),
})).annotate({
    identifier: "PerformanceInsightsMetricsDetail",
});
export const PerformanceInsightsMetricsDetails = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(PerformanceInsightsMetricsDetail);
export const AnomalySourceDetails = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    CloudWatchMetrics: S.optional(CloudWatchMetricsDetails),
    PerformanceInsightsMetrics: S.optional(PerformanceInsightsMetricsDetails),
})).annotate({
    identifier: "AnomalySourceDetails",
});
export const StackNames = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const CloudFormationCollection = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ StackNames: S.optional(StackNames) })).annotate({
    identifier: "CloudFormationCollection",
});
export const TagValues = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const TagCollection = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ AppBoundaryKey: S.String, TagValues: TagValues })).annotate({ identifier: "TagCollection" });
export const TagCollections = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(TagCollection);
export const ResourceCollection = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    CloudFormation: S.optional(CloudFormationCollection),
    Tags: S.optional(TagCollections),
})).annotate({
    identifier: "ResourceCollection",
});
export const AnomalySourceMetadata = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Source: S.optional(S.String),
    SourceResourceName: S.optional(S.String),
    SourceResourceType: S.optional(S.String),
})).annotate({
    identifier: "AnomalySourceMetadata",
});
export const AnomalyResource = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Name: S.optional(S.String), Type: S.optional(S.String) })).annotate({
    identifier: "AnomalyResource",
});
export const AnomalyResources = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(AnomalyResource);
export const ProactiveAnomaly = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Id: S.optional(S.String),
    Severity: S.optional(AnomalySeverity),
    Status: S.optional(AnomalyStatus),
    UpdateTime: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    AnomalyTimeRange: S.optional(AnomalyTimeRange),
    AnomalyReportedTimeRange: S.optional(AnomalyReportedTimeRange),
    PredictionTimeRange: S.optional(PredictionTimeRange),
    SourceDetails: S.optional(AnomalySourceDetails),
    AssociatedInsightId: S.optional(S.String),
    ResourceCollection: S.optional(ResourceCollection),
    Limit: S.optional(S.Number),
    SourceMetadata: S.optional(AnomalySourceMetadata),
    AnomalyResources: S.optional(AnomalyResources),
    Description: S.optional(S.String),
})).annotate({
    identifier: "ProactiveAnomaly",
});
export const AnomalyType = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const ReactiveAnomaly = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Id: S.optional(S.String),
    Severity: S.optional(AnomalySeverity),
    Status: S.optional(AnomalyStatus),
    AnomalyTimeRange: S.optional(AnomalyTimeRange),
    AnomalyReportedTimeRange: S.optional(AnomalyReportedTimeRange),
    SourceDetails: S.optional(AnomalySourceDetails),
    AssociatedInsightId: S.optional(S.String),
    ResourceCollection: S.optional(ResourceCollection),
    Type: S.optional(AnomalyType),
    Name: S.optional(S.String),
    Description: S.optional(S.String),
    CausalAnomalyId: S.optional(S.String),
    AnomalyResources: S.optional(AnomalyResources),
})).annotate({
    identifier: "ReactiveAnomaly",
});
export const DescribeAnomalyResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ProactiveAnomaly: S.optional(ProactiveAnomaly),
    ReactiveAnomaly: S.optional(ReactiveAnomaly),
})).annotate({
    identifier: "DescribeAnomalyResponse",
});
export const DescribeEventSourcesConfigRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({}).pipe(T.all(T.Http({ method: "POST", uri: "/event-sources" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DescribeEventSourcesConfigRequest",
});
export const EventSourceOptInStatus = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const AmazonCodeGuruProfilerIntegration = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Status: S.optional(EventSourceOptInStatus) })).annotate({
    identifier: "AmazonCodeGuruProfilerIntegration",
});
export const EventSourcesConfig = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    AmazonCodeGuruProfiler: S.optional(AmazonCodeGuruProfilerIntegration),
})).annotate({
    identifier: "EventSourcesConfig",
});
export const DescribeEventSourcesConfigResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ EventSources: S.optional(EventSourcesConfig) })).annotate({
    identifier: "DescribeEventSourcesConfigResponse",
});
export const DescribeFeedbackRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ InsightId: S.optional(S.String) }).pipe(T.all(T.Http({ method: "POST", uri: "/feedback" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DescribeFeedbackRequest",
});
export const InsightFeedbackOption = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const InsightFeedback = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Id: S.optional(S.String),
    Feedback: S.optional(InsightFeedbackOption),
})).annotate({
    identifier: "InsightFeedback",
});
export const DescribeFeedbackResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ InsightFeedback: S.optional(InsightFeedback) })).annotate({
    identifier: "DescribeFeedbackResponse",
});
export const DescribeInsightRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Id: S.String.pipe(T.HttpLabel("Id")),
    AccountId: S.optional(S.String).pipe(T.HttpQuery("AccountId")),
}).pipe(T.all(T.Http({ method: "GET", uri: "/insights/{Id}" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DescribeInsightRequest",
});
export const InsightStatus = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const InsightTimeRange = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    StartTime: S.Date.pipe(T.TimestampFormat("epoch-seconds")),
    EndTime: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
})).annotate({
    identifier: "InsightTimeRange",
});
export const ProactiveInsight = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Id: S.optional(S.String),
    Name: S.optional(S.String),
    Severity: S.optional(InsightSeverity),
    Status: S.optional(InsightStatus),
    InsightTimeRange: S.optional(InsightTimeRange),
    PredictionTimeRange: S.optional(PredictionTimeRange),
    ResourceCollection: S.optional(ResourceCollection),
    SsmOpsItemId: S.optional(S.String),
    Description: S.optional(S.String),
})).annotate({
    identifier: "ProactiveInsight",
});
export const ReactiveInsight = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Id: S.optional(S.String),
    Name: S.optional(S.String),
    Severity: S.optional(InsightSeverity),
    Status: S.optional(InsightStatus),
    InsightTimeRange: S.optional(InsightTimeRange),
    ResourceCollection: S.optional(ResourceCollection),
    SsmOpsItemId: S.optional(S.String),
    Description: S.optional(S.String),
})).annotate({
    identifier: "ReactiveInsight",
});
export const DescribeInsightResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ProactiveInsight: S.optional(ProactiveInsight),
    ReactiveInsight: S.optional(ReactiveInsight),
})).annotate({
    identifier: "DescribeInsightResponse",
});
export const AccountIdList = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const OrganizationalUnitIdList = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const DescribeOrganizationHealthRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    AccountIds: S.optional(AccountIdList),
    OrganizationalUnitIds: S.optional(OrganizationalUnitIdList),
}).pipe(T.all(T.Http({ method: "POST", uri: "/organization/health" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DescribeOrganizationHealthRequest",
});
export const DescribeOrganizationHealthResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    OpenReactiveInsights: S.Number,
    OpenProactiveInsights: S.Number,
    MetricsAnalyzed: S.Number,
    ResourceHours: S.Number,
})).annotate({
    identifier: "DescribeOrganizationHealthResponse",
});
export const DescribeOrganizationOverviewRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    FromTime: S.Date.pipe(T.TimestampFormat("epoch-seconds")),
    ToTime: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    AccountIds: S.optional(AccountIdList),
    OrganizationalUnitIds: S.optional(OrganizationalUnitIdList),
}).pipe(T.all(T.Http({ method: "POST", uri: "/organization/overview" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DescribeOrganizationOverviewRequest",
});
export const DescribeOrganizationOverviewResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ ReactiveInsights: S.Number, ProactiveInsights: S.Number })).annotate({
    identifier: "DescribeOrganizationOverviewResponse",
});
export const OrganizationResourceCollectionType = 
/*@__PURE__*/ /*#__PURE__*/ S.String;
export const DescribeOrganizationResourceCollectionHealthRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    OrganizationResourceCollectionType: OrganizationResourceCollectionType,
    AccountIds: S.optional(AccountIdList),
    OrganizationalUnitIds: S.optional(OrganizationalUnitIdList),
    NextToken: S.optional(S.String),
    MaxResults: S.optional(S.Number),
}).pipe(T.all(T.Http({
    method: "POST",
    uri: "/organization/health/resource-collection",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "DescribeOrganizationResourceCollectionHealthRequest",
});
export const InsightHealth = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    OpenProactiveInsights: S.optional(S.Number),
    OpenReactiveInsights: S.optional(S.Number),
    MeanTimeToRecoverInMilliseconds: S.optional(S.Number),
})).annotate({ identifier: "InsightHealth" });
export const CloudFormationHealth = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    StackName: S.optional(S.String),
    Insight: S.optional(InsightHealth),
    AnalyzedResourceCount: S.optional(S.Number),
})).annotate({
    identifier: "CloudFormationHealth",
});
export const CloudFormationHealths = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(CloudFormationHealth);
export const ServiceName = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const ServiceInsightHealth = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    OpenProactiveInsights: S.optional(S.Number),
    OpenReactiveInsights: S.optional(S.Number),
})).annotate({
    identifier: "ServiceInsightHealth",
});
export const ServiceHealth = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ServiceName: S.optional(ServiceName),
    Insight: S.optional(ServiceInsightHealth),
    AnalyzedResourceCount: S.optional(S.Number),
})).annotate({ identifier: "ServiceHealth" });
export const ServiceHealths = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(ServiceHealth);
export const AccountInsightHealth = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    OpenProactiveInsights: S.optional(S.Number),
    OpenReactiveInsights: S.optional(S.Number),
})).annotate({
    identifier: "AccountInsightHealth",
});
export const AccountHealth = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    AccountId: S.optional(S.String),
    Insight: S.optional(AccountInsightHealth),
})).annotate({ identifier: "AccountHealth" });
export const AccountHealths = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(AccountHealth);
export const TagHealth = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    AppBoundaryKey: S.optional(S.String),
    TagValue: S.optional(S.String),
    Insight: S.optional(InsightHealth),
    AnalyzedResourceCount: S.optional(S.Number),
})).annotate({ identifier: "TagHealth" });
export const TagHealths = /*@__PURE__*/ /*#__PURE__*/ S.Array(TagHealth);
export const DescribeOrganizationResourceCollectionHealthResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    CloudFormation: S.optional(CloudFormationHealths),
    Service: S.optional(ServiceHealths),
    Account: S.optional(AccountHealths),
    NextToken: S.optional(S.String),
    Tags: S.optional(TagHealths),
})).annotate({
    identifier: "DescribeOrganizationResourceCollectionHealthResponse",
});
export const ResourceCollectionType = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const DescribeResourceCollectionHealthRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ResourceCollectionType: ResourceCollectionType.pipe(T.HttpLabel("ResourceCollectionType")),
    NextToken: S.optional(S.String).pipe(T.HttpQuery("NextToken")),
}).pipe(T.all(T.Http({
    method: "GET",
    uri: "/accounts/health/resource-collection/{ResourceCollectionType}",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "DescribeResourceCollectionHealthRequest",
});
export const DescribeResourceCollectionHealthResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    CloudFormation: S.optional(CloudFormationHealths),
    Service: S.optional(ServiceHealths),
    NextToken: S.optional(S.String),
    Tags: S.optional(TagHealths),
})).annotate({
    identifier: "DescribeResourceCollectionHealthResponse",
});
export const DescribeServiceIntegrationRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({}).pipe(T.all(T.Http({ method: "GET", uri: "/service-integrations" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DescribeServiceIntegrationRequest",
});
export const OptInStatus = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const OpsCenterIntegration = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ OptInStatus: S.optional(OptInStatus) })).annotate({
    identifier: "OpsCenterIntegration",
});
export const LogsAnomalyDetectionIntegration = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ OptInStatus: S.optional(OptInStatus) })).annotate({
    identifier: "LogsAnomalyDetectionIntegration",
});
export const ServerSideEncryptionType = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const KMSServerSideEncryptionIntegration = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    KMSKeyId: S.optional(S.String),
    OptInStatus: S.optional(OptInStatus),
    Type: S.optional(ServerSideEncryptionType),
})).annotate({
    identifier: "KMSServerSideEncryptionIntegration",
});
export const ServiceIntegrationConfig = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    OpsCenter: S.optional(OpsCenterIntegration),
    LogsAnomalyDetection: S.optional(LogsAnomalyDetectionIntegration),
    KMSServerSideEncryption: S.optional(KMSServerSideEncryptionIntegration),
})).annotate({
    identifier: "ServiceIntegrationConfig",
});
export const DescribeServiceIntegrationResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ ServiceIntegration: S.optional(ServiceIntegrationConfig) })).annotate({
    identifier: "DescribeServiceIntegrationResponse",
});
export const GetCostEstimationRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    NextToken: S.optional(S.String).pipe(T.HttpQuery("NextToken")),
}).pipe(T.all(T.Http({ method: "GET", uri: "/cost-estimation" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "GetCostEstimationRequest",
});
export const CostEstimationStackNames = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const CloudFormationCostEstimationResourceCollectionFilter = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ StackNames: S.optional(CostEstimationStackNames) })).annotate({
    identifier: "CloudFormationCostEstimationResourceCollectionFilter",
});
export const CostEstimationTagValues = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const TagCostEstimationResourceCollectionFilter = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ AppBoundaryKey: S.String, TagValues: CostEstimationTagValues })).annotate({
    identifier: "TagCostEstimationResourceCollectionFilter",
});
export const TagCostEstimationResourceCollectionFilters = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(TagCostEstimationResourceCollectionFilter);
export const CostEstimationResourceCollectionFilter = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    CloudFormation: S.optional(CloudFormationCostEstimationResourceCollectionFilter),
    Tags: S.optional(TagCostEstimationResourceCollectionFilters),
})).annotate({
    identifier: "CostEstimationResourceCollectionFilter",
});
export const CostEstimationStatus = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const CostEstimationServiceResourceState = 
/*@__PURE__*/ /*#__PURE__*/ S.String;
export const ServiceResourceCost = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Type: S.optional(S.String),
    State: S.optional(CostEstimationServiceResourceState),
    Count: S.optional(S.Number),
    UnitCost: S.optional(S.Number),
    Cost: S.optional(S.Number),
})).annotate({
    identifier: "ServiceResourceCost",
});
export const ServiceResourceCosts = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(ServiceResourceCost);
export const CostEstimationTimeRange = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    StartTime: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    EndTime: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
})).annotate({
    identifier: "CostEstimationTimeRange",
});
export const GetCostEstimationResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ResourceCollection: S.optional(CostEstimationResourceCollectionFilter),
    Status: S.optional(CostEstimationStatus),
    Costs: S.optional(ServiceResourceCosts),
    TimeRange: S.optional(CostEstimationTimeRange),
    TotalCost: S.optional(S.Number),
    NextToken: S.optional(S.String),
})).annotate({
    identifier: "GetCostEstimationResponse",
});
export const GetResourceCollectionRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ResourceCollectionType: ResourceCollectionType.pipe(T.HttpLabel("ResourceCollectionType")),
    NextToken: S.optional(S.String).pipe(T.HttpQuery("NextToken")),
}).pipe(T.all(T.Http({
    method: "GET",
    uri: "/resource-collections/{ResourceCollectionType}",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "GetResourceCollectionRequest",
});
export const CloudFormationCollectionFilter = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ StackNames: S.optional(StackNames) })).annotate({
    identifier: "CloudFormationCollectionFilter",
});
export const TagCollectionFilter = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ AppBoundaryKey: S.String, TagValues: TagValues })).annotate({
    identifier: "TagCollectionFilter",
});
export const TagCollectionFilters = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(TagCollectionFilter);
export const ResourceCollectionFilter = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    CloudFormation: S.optional(CloudFormationCollectionFilter),
    Tags: S.optional(TagCollectionFilters),
})).annotate({
    identifier: "ResourceCollectionFilter",
});
export const GetResourceCollectionResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ResourceCollection: S.optional(ResourceCollectionFilter),
    NextToken: S.optional(S.String),
})).annotate({
    identifier: "GetResourceCollectionResponse",
});
export const StartTimeRange = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    FromTime: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    ToTime: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
})).annotate({ identifier: "StartTimeRange" });
export const ServiceNames = /*@__PURE__*/ /*#__PURE__*/ S.Array(ServiceName);
export const ServiceCollection = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ ServiceNames: S.optional(ServiceNames) })).annotate({
    identifier: "ServiceCollection",
});
export const ListAnomaliesForInsightFilters = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ ServiceCollection: S.optional(ServiceCollection) })).annotate({
    identifier: "ListAnomaliesForInsightFilters",
});
export const ListAnomaliesForInsightRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    InsightId: S.String.pipe(T.HttpLabel("InsightId")),
    StartTimeRange: S.optional(StartTimeRange),
    MaxResults: S.optional(S.Number),
    NextToken: S.optional(S.String),
    AccountId: S.optional(S.String),
    Filters: S.optional(ListAnomaliesForInsightFilters),
}).pipe(T.all(T.Http({ method: "POST", uri: "/anomalies/insight/{InsightId}" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListAnomaliesForInsightRequest",
});
export const ProactiveAnomalySummary = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Id: S.optional(S.String),
    Severity: S.optional(AnomalySeverity),
    Status: S.optional(AnomalyStatus),
    UpdateTime: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    AnomalyTimeRange: S.optional(AnomalyTimeRange),
    AnomalyReportedTimeRange: S.optional(AnomalyReportedTimeRange),
    PredictionTimeRange: S.optional(PredictionTimeRange),
    SourceDetails: S.optional(AnomalySourceDetails),
    AssociatedInsightId: S.optional(S.String),
    ResourceCollection: S.optional(ResourceCollection),
    Limit: S.optional(S.Number),
    SourceMetadata: S.optional(AnomalySourceMetadata),
    AnomalyResources: S.optional(AnomalyResources),
    Description: S.optional(S.String),
})).annotate({
    identifier: "ProactiveAnomalySummary",
});
export const ProactiveAnomalies = /*@__PURE__*/ /*#__PURE__*/ S.Array(ProactiveAnomalySummary);
export const ReactiveAnomalySummary = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Id: S.optional(S.String),
    Severity: S.optional(AnomalySeverity),
    Status: S.optional(AnomalyStatus),
    AnomalyTimeRange: S.optional(AnomalyTimeRange),
    AnomalyReportedTimeRange: S.optional(AnomalyReportedTimeRange),
    SourceDetails: S.optional(AnomalySourceDetails),
    AssociatedInsightId: S.optional(S.String),
    ResourceCollection: S.optional(ResourceCollection),
    Type: S.optional(AnomalyType),
    Name: S.optional(S.String),
    Description: S.optional(S.String),
    CausalAnomalyId: S.optional(S.String),
    AnomalyResources: S.optional(AnomalyResources),
})).annotate({
    identifier: "ReactiveAnomalySummary",
});
export const ReactiveAnomalies = /*@__PURE__*/ /*#__PURE__*/ S.Array(ReactiveAnomalySummary);
export const ListAnomaliesForInsightResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ProactiveAnomalies: S.optional(ProactiveAnomalies),
    ReactiveAnomalies: S.optional(ReactiveAnomalies),
    NextToken: S.optional(S.String),
})).annotate({
    identifier: "ListAnomaliesForInsightResponse",
});
export const ListAnomalousLogGroupsRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    InsightId: S.String,
    MaxResults: S.optional(S.Number),
    NextToken: S.optional(S.String),
}).pipe(T.all(T.Http({ method: "POST", uri: "/list-log-anomalies" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListAnomalousLogGroupsRequest",
});
export const LogAnomalyType = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const LogAnomalyClass = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    LogStreamName: S.optional(S.String),
    LogAnomalyType: S.optional(LogAnomalyType),
    LogAnomalyToken: S.optional(S.String),
    LogEventId: S.optional(S.String),
    Explanation: S.optional(S.String),
    NumberOfLogLinesOccurrences: S.optional(S.Number),
    LogEventTimestamp: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
})).annotate({
    identifier: "LogAnomalyClass",
});
export const LogAnomalyClasses = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(LogAnomalyClass);
export const LogAnomalyShowcase = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ LogAnomalyClasses: S.optional(LogAnomalyClasses) })).annotate({
    identifier: "LogAnomalyShowcase",
});
export const LogAnomalyShowcases = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(LogAnomalyShowcase);
export const AnomalousLogGroup = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    LogGroupName: S.optional(S.String),
    ImpactStartTime: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    ImpactEndTime: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    NumberOfLogLinesScanned: S.optional(S.Number),
    LogAnomalyShowcases: S.optional(LogAnomalyShowcases),
})).annotate({
    identifier: "AnomalousLogGroup",
});
export const AnomalousLogGroups = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(AnomalousLogGroup);
export const ListAnomalousLogGroupsResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    InsightId: S.String,
    AnomalousLogGroups: AnomalousLogGroups,
    NextToken: S.optional(S.String),
})).annotate({
    identifier: "ListAnomalousLogGroupsResponse",
});
export const EventTimeRange = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    FromTime: S.Date.pipe(T.TimestampFormat("epoch-seconds")),
    ToTime: S.Date.pipe(T.TimestampFormat("epoch-seconds")),
})).annotate({ identifier: "EventTimeRange" });
export const EventClass = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const EventDataSource = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const ListEventsFilters = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    InsightId: S.optional(S.String),
    EventTimeRange: S.optional(EventTimeRange),
    EventClass: S.optional(EventClass),
    EventSource: S.optional(S.String),
    DataSource: S.optional(EventDataSource),
    ResourceCollection: S.optional(ResourceCollection),
})).annotate({
    identifier: "ListEventsFilters",
});
export const ListEventsRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Filters: ListEventsFilters,
    MaxResults: S.optional(S.Number),
    NextToken: S.optional(S.String),
    AccountId: S.optional(S.String),
}).pipe(T.all(T.Http({ method: "POST", uri: "/events" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListEventsRequest",
});
export const EventResource = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Type: S.optional(S.String),
    Name: S.optional(S.String),
    Arn: S.optional(S.String),
})).annotate({ identifier: "EventResource" });
export const EventResources = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(EventResource);
export const Event = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ResourceCollection: S.optional(ResourceCollection),
    Id: S.optional(S.String),
    Time: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    EventSource: S.optional(S.String),
    Name: S.optional(S.String),
    DataSource: S.optional(EventDataSource),
    EventClass: S.optional(EventClass),
    Resources: S.optional(EventResources),
})).annotate({ identifier: "Event" });
export const Events = /*@__PURE__*/ /*#__PURE__*/ S.Array(Event);
export const ListEventsResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Events: Events, NextToken: S.optional(S.String) })).annotate({
    identifier: "ListEventsResponse",
});
export const InsightType = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const ListInsightsOngoingStatusFilter = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Type: InsightType })).annotate({
    identifier: "ListInsightsOngoingStatusFilter",
});
export const EndTimeRange = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    FromTime: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    ToTime: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
})).annotate({ identifier: "EndTimeRange" });
export const ListInsightsClosedStatusFilter = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Type: InsightType, EndTimeRange: EndTimeRange })).annotate({
    identifier: "ListInsightsClosedStatusFilter",
});
export const ListInsightsAnyStatusFilter = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Type: InsightType, StartTimeRange: StartTimeRange })).annotate({
    identifier: "ListInsightsAnyStatusFilter",
});
export const ListInsightsStatusFilter = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Ongoing: S.optional(ListInsightsOngoingStatusFilter),
    Closed: S.optional(ListInsightsClosedStatusFilter),
    Any: S.optional(ListInsightsAnyStatusFilter),
})).annotate({
    identifier: "ListInsightsStatusFilter",
});
export const ListInsightsRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    StatusFilter: ListInsightsStatusFilter,
    MaxResults: S.optional(S.Number),
    NextToken: S.optional(S.String),
}).pipe(T.all(T.Http({ method: "POST", uri: "/insights" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListInsightsRequest",
});
export const AssociatedResourceArns = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const ProactiveInsightSummary = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Id: S.optional(S.String),
    Name: S.optional(S.String),
    Severity: S.optional(InsightSeverity),
    Status: S.optional(InsightStatus),
    InsightTimeRange: S.optional(InsightTimeRange),
    PredictionTimeRange: S.optional(PredictionTimeRange),
    ResourceCollection: S.optional(ResourceCollection),
    ServiceCollection: S.optional(ServiceCollection),
    AssociatedResourceArns: S.optional(AssociatedResourceArns),
})).annotate({
    identifier: "ProactiveInsightSummary",
});
export const ProactiveInsights = /*@__PURE__*/ /*#__PURE__*/ S.Array(ProactiveInsightSummary);
export const ReactiveInsightSummary = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Id: S.optional(S.String),
    Name: S.optional(S.String),
    Severity: S.optional(InsightSeverity),
    Status: S.optional(InsightStatus),
    InsightTimeRange: S.optional(InsightTimeRange),
    ResourceCollection: S.optional(ResourceCollection),
    ServiceCollection: S.optional(ServiceCollection),
    AssociatedResourceArns: S.optional(AssociatedResourceArns),
})).annotate({
    identifier: "ReactiveInsightSummary",
});
export const ReactiveInsights = /*@__PURE__*/ /*#__PURE__*/ S.Array(ReactiveInsightSummary);
export const ListInsightsResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ProactiveInsights: S.optional(ProactiveInsights),
    ReactiveInsights: S.optional(ReactiveInsights),
    NextToken: S.optional(S.String),
})).annotate({
    identifier: "ListInsightsResponse",
});
export const ResourcePermission = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const ResourceTypeFilter = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const ResourceTypeFilters = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(ResourceTypeFilter);
export const ListMonitoredResourcesFilters = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ResourcePermission: ResourcePermission,
    ResourceTypeFilters: ResourceTypeFilters,
})).annotate({
    identifier: "ListMonitoredResourcesFilters",
});
export const ListMonitoredResourcesRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Filters: S.optional(ListMonitoredResourcesFilters),
    MaxResults: S.optional(S.Number),
    NextToken: S.optional(S.String),
}).pipe(T.all(T.Http({ method: "POST", uri: "/monitoredResources" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListMonitoredResourcesRequest",
});
export const MonitoredResourceIdentifier = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    MonitoredResourceName: S.optional(S.String),
    Type: S.optional(S.String),
    ResourcePermission: S.optional(ResourcePermission),
    LastUpdated: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    ResourceCollection: S.optional(ResourceCollection),
})).annotate({
    identifier: "MonitoredResourceIdentifier",
});
export const MonitoredResourceIdentifiers = /*@__PURE__*/ /*#__PURE__*/ S.Array(MonitoredResourceIdentifier);
export const ListMonitoredResourcesResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    MonitoredResourceIdentifiers: MonitoredResourceIdentifiers,
    NextToken: S.optional(S.String),
})).annotate({
    identifier: "ListMonitoredResourcesResponse",
});
export const ListNotificationChannelsRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ NextToken: S.optional(S.String) }).pipe(T.all(T.Http({ method: "POST", uri: "/channels" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListNotificationChannelsRequest",
});
export const NotificationChannel = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Id: S.optional(S.String),
    Config: S.optional(NotificationChannelConfig),
})).annotate({
    identifier: "NotificationChannel",
});
export const Channels = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(NotificationChannel);
export const ListNotificationChannelsResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Channels: S.optional(Channels),
    NextToken: S.optional(S.String),
})).annotate({
    identifier: "ListNotificationChannelsResponse",
});
export const ListInsightsAccountIdList = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const ListInsightsOrganizationalUnitIdList = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const ListOrganizationInsightsRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    StatusFilter: ListInsightsStatusFilter,
    MaxResults: S.optional(S.Number),
    AccountIds: S.optional(ListInsightsAccountIdList),
    OrganizationalUnitIds: S.optional(ListInsightsOrganizationalUnitIdList),
    NextToken: S.optional(S.String),
}).pipe(T.all(T.Http({ method: "POST", uri: "/organization/insights" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListOrganizationInsightsRequest",
});
export const ProactiveOrganizationInsightSummary = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Id: S.optional(S.String),
    AccountId: S.optional(S.String),
    OrganizationalUnitId: S.optional(S.String),
    Name: S.optional(S.String),
    Severity: S.optional(InsightSeverity),
    Status: S.optional(InsightStatus),
    InsightTimeRange: S.optional(InsightTimeRange),
    PredictionTimeRange: S.optional(PredictionTimeRange),
    ResourceCollection: S.optional(ResourceCollection),
    ServiceCollection: S.optional(ServiceCollection),
})).annotate({
    identifier: "ProactiveOrganizationInsightSummary",
});
export const ProactiveOrganizationInsights = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(ProactiveOrganizationInsightSummary);
export const ReactiveOrganizationInsightSummary = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Id: S.optional(S.String),
    AccountId: S.optional(S.String),
    OrganizationalUnitId: S.optional(S.String),
    Name: S.optional(S.String),
    Severity: S.optional(InsightSeverity),
    Status: S.optional(InsightStatus),
    InsightTimeRange: S.optional(InsightTimeRange),
    ResourceCollection: S.optional(ResourceCollection),
    ServiceCollection: S.optional(ServiceCollection),
})).annotate({
    identifier: "ReactiveOrganizationInsightSummary",
});
export const ReactiveOrganizationInsights = /*@__PURE__*/ /*#__PURE__*/ S.Array(ReactiveOrganizationInsightSummary);
export const ListOrganizationInsightsResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ProactiveInsights: S.optional(ProactiveOrganizationInsights),
    ReactiveInsights: S.optional(ReactiveOrganizationInsights),
    NextToken: S.optional(S.String),
})).annotate({
    identifier: "ListOrganizationInsightsResponse",
});
export const Locale = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const ListRecommendationsRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    InsightId: S.String,
    NextToken: S.optional(S.String),
    Locale: S.optional(Locale),
    AccountId: S.optional(S.String),
}).pipe(T.all(T.Http({ method: "POST", uri: "/recommendations" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListRecommendationsRequest",
});
export const RecommendationRelatedEventResource = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Name: S.optional(S.String), Type: S.optional(S.String) })).annotate({
    identifier: "RecommendationRelatedEventResource",
});
export const RecommendationRelatedEventResources = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(RecommendationRelatedEventResource);
export const RecommendationRelatedEvent = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Name: S.optional(S.String),
    Resources: S.optional(RecommendationRelatedEventResources),
})).annotate({
    identifier: "RecommendationRelatedEvent",
});
export const RecommendationRelatedEvents = /*@__PURE__*/ /*#__PURE__*/ S.Array(RecommendationRelatedEvent);
export const RecommendationRelatedAnomalyResource = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Name: S.optional(S.String), Type: S.optional(S.String) })).annotate({
    identifier: "RecommendationRelatedAnomalyResource",
});
export const RecommendationRelatedAnomalyResources = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(RecommendationRelatedAnomalyResource);
export const RecommendationRelatedCloudWatchMetricsSourceDetail = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    MetricName: S.optional(S.String),
    Namespace: S.optional(S.String),
})).annotate({
    identifier: "RecommendationRelatedCloudWatchMetricsSourceDetail",
});
export const RecommendationRelatedCloudWatchMetricsSourceDetails = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(RecommendationRelatedCloudWatchMetricsSourceDetail);
export const RecommendationRelatedAnomalySourceDetail = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    CloudWatchMetrics: S.optional(RecommendationRelatedCloudWatchMetricsSourceDetails),
})).annotate({
    identifier: "RecommendationRelatedAnomalySourceDetail",
});
export const RelatedAnomalySourceDetails = /*@__PURE__*/ /*#__PURE__*/ S.Array(RecommendationRelatedAnomalySourceDetail);
export const RecommendationRelatedAnomaly = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Resources: S.optional(RecommendationRelatedAnomalyResources),
    SourceDetails: S.optional(RelatedAnomalySourceDetails),
    AnomalyId: S.optional(S.String),
})).annotate({
    identifier: "RecommendationRelatedAnomaly",
});
export const RecommendationRelatedAnomalies = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(RecommendationRelatedAnomaly);
export const Recommendation = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Description: S.optional(S.String),
    Link: S.optional(S.String),
    Name: S.optional(S.String),
    Reason: S.optional(S.String),
    RelatedEvents: S.optional(RecommendationRelatedEvents),
    RelatedAnomalies: S.optional(RecommendationRelatedAnomalies),
    Category: S.optional(S.String),
})).annotate({ identifier: "Recommendation" });
export const Recommendations = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(Recommendation);
export const ListRecommendationsResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Recommendations: S.optional(Recommendations),
    NextToken: S.optional(S.String),
})).annotate({
    identifier: "ListRecommendationsResponse",
});
export const PutFeedbackRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ InsightFeedback: S.optional(InsightFeedback) }).pipe(T.all(T.Http({ method: "PUT", uri: "/feedback" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "PutFeedbackRequest",
});
export const PutFeedbackResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "PutFeedbackResponse",
});
export const RemoveNotificationChannelRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Id: S.String.pipe(T.HttpLabel("Id")) }).pipe(T.all(T.Http({ method: "DELETE", uri: "/channels/{Id}" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "RemoveNotificationChannelRequest",
});
export const RemoveNotificationChannelResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "RemoveNotificationChannelResponse",
});
export const InsightStatuses = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(InsightStatus);
export const SearchInsightsFilters = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Severities: S.optional(InsightSeverities),
    Statuses: S.optional(InsightStatuses),
    ResourceCollection: S.optional(ResourceCollection),
    ServiceCollection: S.optional(ServiceCollection),
})).annotate({
    identifier: "SearchInsightsFilters",
});
export const SearchInsightsRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    StartTimeRange: StartTimeRange,
    Filters: S.optional(SearchInsightsFilters),
    MaxResults: S.optional(S.Number),
    NextToken: S.optional(S.String),
    Type: InsightType,
}).pipe(T.all(T.Http({ method: "POST", uri: "/insights/search" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "SearchInsightsRequest",
});
export const SearchInsightsResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ProactiveInsights: S.optional(ProactiveInsights),
    ReactiveInsights: S.optional(ReactiveInsights),
    NextToken: S.optional(S.String),
})).annotate({
    identifier: "SearchInsightsResponse",
});
export const SearchInsightsAccountIdList = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const SearchOrganizationInsightsFilters = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Severities: S.optional(InsightSeverities),
    Statuses: S.optional(InsightStatuses),
    ResourceCollection: S.optional(ResourceCollection),
    ServiceCollection: S.optional(ServiceCollection),
})).annotate({
    identifier: "SearchOrganizationInsightsFilters",
});
export const SearchOrganizationInsightsRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    AccountIds: SearchInsightsAccountIdList,
    StartTimeRange: StartTimeRange,
    Filters: S.optional(SearchOrganizationInsightsFilters),
    MaxResults: S.optional(S.Number),
    NextToken: S.optional(S.String),
    Type: InsightType,
}).pipe(T.all(T.Http({ method: "POST", uri: "/organization/insights/search" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "SearchOrganizationInsightsRequest",
});
export const SearchOrganizationInsightsResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ProactiveInsights: S.optional(ProactiveInsights),
    ReactiveInsights: S.optional(ReactiveInsights),
    NextToken: S.optional(S.String),
})).annotate({
    identifier: "SearchOrganizationInsightsResponse",
});
export const StartCostEstimationRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ResourceCollection: CostEstimationResourceCollectionFilter,
    ClientToken: S.optional(S.String).pipe(T.IdempotencyToken()),
}).pipe(T.all(T.Http({ method: "PUT", uri: "/cost-estimation" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "StartCostEstimationRequest",
});
export const StartCostEstimationResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "StartCostEstimationResponse",
});
export const UpdateEventSourcesConfigRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ EventSources: S.optional(EventSourcesConfig) }).pipe(T.all(T.Http({ method: "PUT", uri: "/event-sources" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "UpdateEventSourcesConfigRequest",
});
export const UpdateEventSourcesConfigResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "UpdateEventSourcesConfigResponse",
});
export const UpdateResourceCollectionAction = 
/*@__PURE__*/ /*#__PURE__*/ S.String;
export const UpdateStackNames = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const UpdateCloudFormationCollectionFilter = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ StackNames: S.optional(UpdateStackNames) })).annotate({
    identifier: "UpdateCloudFormationCollectionFilter",
});
export const UpdateTagValues = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const UpdateTagCollectionFilter = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ AppBoundaryKey: S.String, TagValues: UpdateTagValues })).annotate({
    identifier: "UpdateTagCollectionFilter",
});
export const UpdateTagCollectionFilters = /*@__PURE__*/ /*#__PURE__*/ S.Array(UpdateTagCollectionFilter);
export const UpdateResourceCollectionFilter = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    CloudFormation: S.optional(UpdateCloudFormationCollectionFilter),
    Tags: S.optional(UpdateTagCollectionFilters),
})).annotate({
    identifier: "UpdateResourceCollectionFilter",
});
export const UpdateResourceCollectionRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Action: UpdateResourceCollectionAction,
    ResourceCollection: UpdateResourceCollectionFilter,
}).pipe(T.all(T.Http({ method: "PUT", uri: "/resource-collections" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "UpdateResourceCollectionRequest",
});
export const UpdateResourceCollectionResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "UpdateResourceCollectionResponse",
});
export const OpsCenterIntegrationConfig = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ OptInStatus: S.optional(OptInStatus) })).annotate({
    identifier: "OpsCenterIntegrationConfig",
});
export const LogsAnomalyDetectionIntegrationConfig = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ OptInStatus: S.optional(OptInStatus) })).annotate({
    identifier: "LogsAnomalyDetectionIntegrationConfig",
});
export const KMSServerSideEncryptionIntegrationConfig = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    KMSKeyId: S.optional(S.String),
    OptInStatus: S.optional(OptInStatus),
    Type: S.optional(ServerSideEncryptionType),
})).annotate({
    identifier: "KMSServerSideEncryptionIntegrationConfig",
});
export const UpdateServiceIntegrationConfig = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    OpsCenter: S.optional(OpsCenterIntegrationConfig),
    LogsAnomalyDetection: S.optional(LogsAnomalyDetectionIntegrationConfig),
    KMSServerSideEncryption: S.optional(KMSServerSideEncryptionIntegrationConfig),
})).annotate({
    identifier: "UpdateServiceIntegrationConfig",
});
export const UpdateServiceIntegrationRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ ServiceIntegration: UpdateServiceIntegrationConfig }).pipe(T.all(T.Http({ method: "PUT", uri: "/service-integrations" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "UpdateServiceIntegrationRequest",
});
export const UpdateServiceIntegrationResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "UpdateServiceIntegrationResponse",
});
//# Errors
export class AccessDeniedException extends S.TaggedErrorClass()("AccessDeniedException", { Message: S.String }).pipe(C.withAuthError) {
}
export class ConflictException extends S.TaggedErrorClass()("ConflictException", { Message: S.String, ResourceId: S.String, ResourceType: S.String }).pipe(C.withConflictError) {
}
export class InternalServerException extends S.TaggedErrorClass()("InternalServerException", {
    Message: S.String,
    RetryAfterSeconds: S.optional(S.Number).pipe(T.HttpHeader("Retry-After")),
}).pipe(C.withServerError) {
}
export class ResourceNotFoundException extends S.TaggedErrorClass()("ResourceNotFoundException", { Message: S.String, ResourceId: S.String, ResourceType: S.String }).pipe(C.withBadRequestError) {
}
export class ServiceQuotaExceededException extends S.TaggedErrorClass()("ServiceQuotaExceededException", { Message: S.optional(S.String) }).pipe(C.withQuotaError) {
}
export class ThrottlingException extends S.TaggedErrorClass()("ThrottlingException", {
    Message: S.String,
    QuotaCode: S.optional(S.String),
    ServiceCode: S.optional(S.String),
    RetryAfterSeconds: S.optional(S.Number).pipe(T.HttpHeader("Retry-After")),
}).pipe(C.withThrottlingError) {
}
export class ValidationException extends S.TaggedErrorClass()("ValidationException", {
    Message: S.String,
    Reason: S.optional(ValidationExceptionReason),
    Fields: S.optional(ValidationExceptionFields),
}).pipe(C.withBadRequestError) {
}
/**
 * Adds a notification channel to DevOps Guru. A notification channel is used to notify you
 * about important DevOps Guru events, such as when an insight is generated.
 *
 * If you use an Amazon SNS topic in another account, you must attach a policy to it that grants DevOps Guru permission
 * to send it notifications. DevOps Guru adds the required policy on your behalf to send notifications using Amazon SNS in your account. DevOps Guru only supports standard SNS topics.
 * For more information, see Permissions
 * for Amazon SNS topics.
 *
 * If you use an Amazon SNS topic that is encrypted by an Amazon Web Services Key Management Service customer-managed key (CMK), then you must add permissions
 * to the CMK. For more information, see Permissions for
 * Amazon Web Services KMS–encrypted Amazon SNS topics.
 */
export const addNotificationChannel = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: AddNotificationChannelRequest,
    output: AddNotificationChannelResponse,
    errors: [
        AccessDeniedException,
        ConflictException,
        InternalServerException,
        ResourceNotFoundException,
        ServiceQuotaExceededException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Deletes the insight along with the associated anomalies, events and recommendations.
 */
export const deleteInsight = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DeleteInsightRequest,
    output: DeleteInsightResponse,
    errors: [
        AccessDeniedException,
        ConflictException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Returns the number of open reactive insights, the number of open proactive insights,
 * and the number of metrics analyzed in your Amazon Web Services account. Use these numbers to gauge the
 * health of operations in your Amazon Web Services account.
 */
export const describeAccountHealth = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DescribeAccountHealthRequest,
    output: DescribeAccountHealthResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * For the time range passed in, returns the number of open reactive insight that were
 * created, the number of open proactive insights that were created, and the Mean Time to Recover (MTTR) for all
 * closed reactive insights.
 */
export const describeAccountOverview = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DescribeAccountOverviewRequest,
    output: DescribeAccountOverviewResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Returns details about an anomaly that you specify using its ID.
 */
export const describeAnomaly = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DescribeAnomalyRequest,
    output: DescribeAnomalyResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Returns the integration status of services that are integrated with DevOps Guru as Consumer
 * via EventBridge. The one service that can be integrated with DevOps Guru is Amazon CodeGuru
 * Profiler, which can produce proactive recommendations which can be stored and viewed in
 * DevOps Guru.
 */
export const describeEventSourcesConfig = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DescribeEventSourcesConfigRequest,
    output: DescribeEventSourcesConfigResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Returns the most recent feedback submitted in the current Amazon Web Services account and Region.
 */
export const describeFeedback = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DescribeFeedbackRequest,
    output: DescribeFeedbackResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Returns details about an insight that you specify using its ID.
 */
export const describeInsight = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DescribeInsightRequest,
    output: DescribeInsightResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Returns active insights, predictive insights, and resource hours analyzed in last
 * hour.
 */
export const describeOrganizationHealth = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DescribeOrganizationHealthRequest,
    output: DescribeOrganizationHealthResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Returns an overview of your organization's history based on the specified time range.
 * The overview includes the total reactive and proactive insights.
 */
export const describeOrganizationOverview = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DescribeOrganizationOverviewRequest,
    output: DescribeOrganizationOverviewResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Provides an overview of your system's health. If additional member accounts are part
 * of your organization, you can filter those accounts using the `AccountIds`
 * field.
 */
export const describeOrganizationResourceCollectionHealth = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: DescribeOrganizationResourceCollectionHealthRequest,
    output: DescribeOrganizationResourceCollectionHealthResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ThrottlingException,
        ValidationException,
    ],
    pagination: { inputToken: "NextToken", outputToken: "NextToken" },
}));
/**
 * Returns the number of open proactive insights, open reactive insights, and the Mean Time to Recover (MTTR)
 * for all closed insights in resource collections in your account. You specify the type of
 * Amazon Web Services resources collection. The two types of Amazon Web Services resource collections supported are Amazon Web Services CloudFormation stacks and
 * Amazon Web Services resources that contain the same Amazon Web Services tag. DevOps Guru can be configured to analyze
 * the Amazon Web Services resources that are defined in the stacks or that are tagged using the same tag *key*. You can specify up to 500 Amazon Web Services CloudFormation stacks.
 */
export const describeResourceCollectionHealth = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: DescribeResourceCollectionHealthRequest,
    output: DescribeResourceCollectionHealthResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ThrottlingException,
        ValidationException,
    ],
    pagination: { inputToken: "NextToken", outputToken: "NextToken" },
}));
/**
 * Returns the integration status of services that are integrated with DevOps Guru.
 * The one service that can be integrated with DevOps Guru
 * is Amazon Web Services Systems Manager, which can be used to create an OpsItem for each generated insight.
 */
export const describeServiceIntegration = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DescribeServiceIntegrationRequest,
    output: DescribeServiceIntegrationResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Returns an estimate of the monthly cost for DevOps Guru to analyze your Amazon Web Services resources.
 * For more information,
 * see Estimate your
 * Amazon DevOps Guru costs and
 * Amazon DevOps Guru pricing.
 */
export const getCostEstimation = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: GetCostEstimationRequest,
    output: GetCostEstimationResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
    pagination: { inputToken: "NextToken", outputToken: "NextToken" },
}));
/**
 * Returns lists Amazon Web Services resources that are of the specified resource collection type.
 * The two types of Amazon Web Services resource collections supported are Amazon Web Services CloudFormation stacks and
 * Amazon Web Services resources that contain the same Amazon Web Services tag. DevOps Guru can be configured to analyze
 * the Amazon Web Services resources that are defined in the stacks or that are tagged using the same tag *key*. You can specify up to 500 Amazon Web Services CloudFormation stacks.
 */
export const getResourceCollection = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: GetResourceCollectionRequest,
    output: GetResourceCollectionResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
    pagination: { inputToken: "NextToken", outputToken: "NextToken" },
}));
/**
 * Returns a list of the anomalies that belong to an insight that you specify using its
 * ID.
 */
export const listAnomaliesForInsight = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: ListAnomaliesForInsightRequest,
    output: ListAnomaliesForInsightResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
    pagination: {
        inputToken: "NextToken",
        outputToken: "NextToken",
        pageSize: "MaxResults",
    },
}));
/**
 * Returns the list of log groups that contain log anomalies.
 */
export const listAnomalousLogGroups = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: ListAnomalousLogGroupsRequest,
    output: ListAnomalousLogGroupsResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
    pagination: {
        inputToken: "NextToken",
        outputToken: "NextToken",
        pageSize: "MaxResults",
    },
}));
/**
 * Returns a list of the events emitted by the resources that are evaluated by DevOps Guru.
 * You can use filters to specify which events are returned.
 */
export const listEvents = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: ListEventsRequest,
    output: ListEventsResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
    pagination: {
        inputToken: "NextToken",
        outputToken: "NextToken",
        items: "Events",
        pageSize: "MaxResults",
    },
}));
/**
 * Returns a list of insights in your Amazon Web Services account. You can specify which insights are
 * returned by their start time and status (`ONGOING`, `CLOSED`, or
 * `ANY`).
 */
export const listInsights = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: ListInsightsRequest,
    output: ListInsightsResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ThrottlingException,
        ValidationException,
    ],
    pagination: {
        inputToken: "NextToken",
        outputToken: "NextToken",
        pageSize: "MaxResults",
    },
}));
/**
 * Returns the list of all log groups that are being monitored and tagged by DevOps Guru.
 */
export const listMonitoredResources = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: ListMonitoredResourcesRequest,
    output: ListMonitoredResourcesResponse,
    errors: [
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
    pagination: {
        inputToken: "NextToken",
        outputToken: "NextToken",
        pageSize: "MaxResults",
    },
}));
/**
 * Returns a list of notification channels configured for DevOps Guru. Each notification
 * channel is used to notify you when DevOps Guru generates an insight that contains information
 * about how to improve your operations. The one
 * supported notification channel is Amazon Simple Notification Service (Amazon SNS).
 */
export const listNotificationChannels = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: ListNotificationChannelsRequest,
    output: ListNotificationChannelsResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ThrottlingException,
        ValidationException,
    ],
    pagination: {
        inputToken: "NextToken",
        outputToken: "NextToken",
        items: "Channels",
    },
}));
/**
 * Returns a list of insights associated with the account or OU Id.
 */
export const listOrganizationInsights = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: ListOrganizationInsightsRequest,
    output: ListOrganizationInsightsResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ThrottlingException,
        ValidationException,
    ],
    pagination: {
        inputToken: "NextToken",
        outputToken: "NextToken",
        pageSize: "MaxResults",
    },
}));
/**
 * Returns a list of a specified insight's recommendations. Each recommendation includes
 * a list of related metrics and a list of related events.
 */
export const listRecommendations = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: ListRecommendationsRequest,
    output: ListRecommendationsResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
    pagination: {
        inputToken: "NextToken",
        outputToken: "NextToken",
        items: "Recommendations",
    },
}));
/**
 * Collects customer feedback about the specified insight.
 */
export const putFeedback = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: PutFeedbackRequest,
    output: PutFeedbackResponse,
    errors: [
        AccessDeniedException,
        ConflictException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Removes a notification channel from DevOps Guru. A notification channel is used to notify
 * you when DevOps Guru generates an insight that contains information about how to improve your
 * operations.
 */
export const removeNotificationChannel = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: RemoveNotificationChannelRequest,
    output: RemoveNotificationChannelResponse,
    errors: [
        AccessDeniedException,
        ConflictException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Returns a list of insights in your Amazon Web Services account. You can specify which insights are
 * returned by their start time, one or more statuses (`ONGOING` or `CLOSED`), one or more severities
 * (`LOW`, `MEDIUM`, and `HIGH`), and type
 * (`REACTIVE` or `PROACTIVE`).
 *
 * Use the `Filters` parameter to specify status and severity search
 * parameters. Use the `Type` parameter to specify `REACTIVE` or
 * `PROACTIVE` in your search.
 */
export const searchInsights = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: SearchInsightsRequest,
    output: SearchInsightsResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ThrottlingException,
        ValidationException,
    ],
    pagination: {
        inputToken: "NextToken",
        outputToken: "NextToken",
        pageSize: "MaxResults",
    },
}));
/**
 * Returns a list of insights in your organization. You can specify which insights are
 * returned by their start time, one or more statuses (`ONGOING`,
 * `CLOSED`, and `CLOSED`), one or more severities
 * (`LOW`, `MEDIUM`, and `HIGH`), and type
 * (`REACTIVE` or `PROACTIVE`).
 *
 * Use the `Filters` parameter to specify status and severity search
 * parameters. Use the `Type` parameter to specify `REACTIVE` or
 * `PROACTIVE` in your search.
 */
export const searchOrganizationInsights = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: SearchOrganizationInsightsRequest,
    output: SearchOrganizationInsightsResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ThrottlingException,
        ValidationException,
    ],
    pagination: {
        inputToken: "NextToken",
        outputToken: "NextToken",
        pageSize: "MaxResults",
    },
}));
/**
 * Starts the creation of an estimate of the monthly cost to analyze your Amazon Web Services
 * resources.
 */
export const startCostEstimation = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: StartCostEstimationRequest,
    output: StartCostEstimationResponse,
    errors: [
        AccessDeniedException,
        ConflictException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Enables or disables integration with a service that can be integrated with DevOps Guru. The
 * one service that can be integrated with DevOps Guru is Amazon CodeGuru Profiler, which
 * can produce proactive recommendations which can be stored and viewed in DevOps Guru.
 */
export const updateEventSourcesConfig = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: UpdateEventSourcesConfigRequest,
    output: UpdateEventSourcesConfigResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Updates the collection of resources that DevOps Guru analyzes.
 * The two types of Amazon Web Services resource collections supported are Amazon Web Services CloudFormation stacks and
 * Amazon Web Services resources that contain the same Amazon Web Services tag. DevOps Guru can be configured to analyze
 * the Amazon Web Services resources that are defined in the stacks or that are tagged using the same tag *key*. You can specify up to 500 Amazon Web Services CloudFormation stacks. This method also creates the IAM role required for
 * you to use DevOps Guru.
 */
export const updateResourceCollection = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: UpdateResourceCollectionRequest,
    output: UpdateResourceCollectionResponse,
    errors: [
        AccessDeniedException,
        ConflictException,
        InternalServerException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Enables or disables integration with a service that can be integrated with DevOps Guru. The
 * one service that can be integrated with DevOps Guru is Amazon Web Services Systems Manager, which can be used to create
 * an OpsItem for each generated insight.
 */
export const updateServiceIntegration = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: UpdateServiceIntegrationRequest,
    output: UpdateServiceIntegrationResponse,
    errors: [
        AccessDeniedException,
        ConflictException,
        InternalServerException,
        ThrottlingException,
        ValidationException,
    ],
}));
//# sourceMappingURL=devops-guru.js.map