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: "BCM Dashboards",
    serviceShapeName: "AWSBCMDashboardsService",
});
const auth = T.AwsAuthSigv4({ name: "bcm-dashboards" });
const ver = T.ServiceVersion("2025-08-18");
const proto = T.AwsProtocolsAwsJson1_0();
const rules = T.EndpointResolver((p, _) => {
    const { UseFIPS = false, Endpoint, Region } = p;
    const e = (u, p = {}, h = {}) => ({
        type: "endpoint",
        endpoint: { url: u, properties: p, headers: h },
    });
    const err = (m) => ({
        type: "error",
        message: m,
    });
    const _p0 = (_0) => ({
        authSchemes: [
            {
                name: "sigv4",
                signingRegion: `${_.getAttr(_0, "implicitGlobalRegion")}`,
            },
        ],
    });
    if (Endpoint != null) {
        if (UseFIPS === true) {
            return err("Invalid Configuration: FIPS and custom endpoint are not supported");
        }
        return e(Endpoint);
    }
    if (Region != null) {
        {
            const PartitionResult = _.partition(Region);
            if (PartitionResult != null && PartitionResult !== false) {
                if (UseFIPS === true) {
                    return e(`https://bcm-dashboards-fips.${_.getAttr(PartitionResult, "implicitGlobalRegion")}.${_.getAttr(PartitionResult, "dualStackDnsSuffix")}`, _p0(PartitionResult), {});
                }
                return e(`https://bcm-dashboards.${_.getAttr(PartitionResult, "implicitGlobalRegion")}.${_.getAttr(PartitionResult, "dualStackDnsSuffix")}`, _p0(PartitionResult), {});
            }
        }
    }
    return err("Invalid Configuration: Missing Region");
});
export const MetricName = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const MetricNames = /*@__PURE__*/ /*#__PURE__*/ S.Array(MetricName);
export const DateTimeType = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const DateTimeValue = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ type: DateTimeType, value: S.String })).annotate({ identifier: "DateTimeValue" });
export const DateTimeRange = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ startTime: DateTimeValue, endTime: DateTimeValue })).annotate({ identifier: "DateTimeRange" });
export const Granularity = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const GroupDefinitionType = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const GroupDefinition = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ key: S.String, type: S.optional(GroupDefinitionType) })).annotate({
    identifier: "GroupDefinition",
});
export const GroupDefinitions = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(GroupDefinition);
export const Expressions = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.suspend(() => Expression).annotate({
    identifier: "Expression",
}));
export const Dimension = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const StringList = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const MatchOption = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const MatchOptions = /*@__PURE__*/ /*#__PURE__*/ S.Array(MatchOption);
export const DimensionValues = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    key: Dimension,
    values: StringList,
    matchOptions: S.optional(MatchOptions),
})).annotate({
    identifier: "DimensionValues",
});
export const TagValues = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    key: S.optional(S.String),
    values: S.optional(StringList),
    matchOptions: S.optional(MatchOptions),
})).annotate({ identifier: "TagValues" });
export const CostCategoryValues = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    key: S.optional(S.String),
    values: S.optional(StringList),
    matchOptions: S.optional(MatchOptions),
})).annotate({
    identifier: "CostCategoryValues",
});
export const Expression = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    or: S.optional(S.suspend(() => Expressions).annotate({ identifier: "Expressions" })),
    and: S.optional(S.suspend(() => Expressions).annotate({ identifier: "Expressions" })),
    not: S.optional(S.suspend(() => Expression).annotate({
        identifier: "Expression",
    })),
    dimensions: S.optional(DimensionValues),
    tags: S.optional(TagValues),
    costCategories: S.optional(CostCategoryValues),
})).annotate({ identifier: "Expression" });
export const CostAndUsageQuery = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    metrics: MetricNames,
    timeRange: DateTimeRange,
    granularity: Granularity,
    groupBy: S.optional(GroupDefinitions),
    filter: S.optional(Expression),
})).annotate({
    identifier: "CostAndUsageQuery",
});
export const SavingsPlansCoverageQuery = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    timeRange: DateTimeRange,
    metrics: S.optional(MetricNames),
    granularity: S.optional(Granularity),
    groupBy: S.optional(GroupDefinitions),
    filter: S.optional(Expression),
})).annotate({
    identifier: "SavingsPlansCoverageQuery",
});
export const SavingsPlansUtilizationQuery = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    timeRange: DateTimeRange,
    granularity: S.optional(Granularity),
    filter: S.optional(Expression),
})).annotate({
    identifier: "SavingsPlansUtilizationQuery",
});
export const ReservationCoverageQuery = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    timeRange: DateTimeRange,
    groupBy: S.optional(GroupDefinitions),
    granularity: S.optional(Granularity),
    filter: S.optional(Expression),
    metrics: S.optional(MetricNames),
})).annotate({
    identifier: "ReservationCoverageQuery",
});
export const ReservationUtilizationQuery = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    timeRange: DateTimeRange,
    groupBy: S.optional(GroupDefinitions),
    granularity: S.optional(Granularity),
    filter: S.optional(Expression),
})).annotate({
    identifier: "ReservationUtilizationQuery",
});
export const QueryParameters = /*@__PURE__*/ /*#__PURE__*/ S.Union([
    S.Struct({ costAndUsage: CostAndUsageQuery }),
    S.Struct({ savingsPlansCoverage: SavingsPlansCoverageQuery }),
    S.Struct({ savingsPlansUtilization: SavingsPlansUtilizationQuery }),
    S.Struct({ reservationCoverage: ReservationCoverageQuery }),
    S.Struct({ reservationUtilization: ReservationUtilizationQuery }),
]);
export const VisualType = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const GraphDisplayConfig = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ visualType: VisualType })).annotate({
    identifier: "GraphDisplayConfig",
});
export const GraphDisplayConfigMap = /*@__PURE__*/ /*#__PURE__*/ S.Record(S.String, GraphDisplayConfig.pipe(S.optional));
export const TableDisplayConfigStruct = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "TableDisplayConfigStruct",
});
export const DisplayConfig = /*@__PURE__*/ /*#__PURE__*/ S.Union([
    S.Struct({ graph: GraphDisplayConfigMap }),
    S.Struct({ table: TableDisplayConfigStruct }),
]);
export const WidgetConfig = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ queryParameters: QueryParameters, displayConfig: DisplayConfig })).annotate({ identifier: "WidgetConfig" });
export const WidgetConfigList = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(WidgetConfig);
export const Widget = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    id: S.optional(S.String),
    title: S.String,
    description: S.optional(S.String),
    width: S.optional(S.Number),
    height: S.optional(S.Number),
    horizontalOffset: S.optional(S.Number),
    configs: WidgetConfigList,
})).annotate({ identifier: "Widget" });
export const WidgetList = /*@__PURE__*/ /*#__PURE__*/ S.Array(Widget);
export const ResourceTag = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ key: S.String, value: S.String })).annotate({ identifier: "ResourceTag" });
export const ResourceTagList = /*@__PURE__*/ /*#__PURE__*/ S.Array(ResourceTag);
export const CreateDashboardRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    name: S.String,
    description: S.optional(S.String),
    widgets: WidgetList,
    resourceTags: S.optional(ResourceTagList),
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "CreateDashboardRequest",
});
export const CreateDashboardResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ arn: S.String })).annotate({
    identifier: "CreateDashboardResponse",
});
export const SchedulePeriod = /*@__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: "SchedulePeriod" });
export const ScheduleState = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const ScheduleConfig = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    scheduleExpression: S.optional(S.String),
    scheduleExpressionTimeZone: S.optional(S.String),
    schedulePeriod: S.optional(SchedulePeriod),
    state: S.optional(ScheduleState),
})).annotate({ identifier: "ScheduleConfig" });
export const WidgetIdList = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const ScheduledReportInput = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    name: S.String,
    dashboardArn: S.String,
    scheduledReportExecutionRoleArn: S.String,
    scheduleConfig: ScheduleConfig,
    description: S.optional(S.String),
    widgetIds: S.optional(WidgetIdList),
    widgetDateRangeOverride: S.optional(DateTimeRange),
})).annotate({
    identifier: "ScheduledReportInput",
});
export const CreateScheduledReportRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    scheduledReport: ScheduledReportInput,
    resourceTags: S.optional(ResourceTagList),
    clientToken: S.optional(S.String).pipe(T.HttpHeader("X-Amzn-Client-Token"), T.IdempotencyToken()),
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "CreateScheduledReportRequest",
});
export const CreateScheduledReportResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ arn: S.String })).annotate({
    identifier: "CreateScheduledReportResponse",
});
export const DeleteDashboardRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ arn: S.String }).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DeleteDashboardRequest",
});
export const DeleteDashboardResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ arn: S.String })).annotate({
    identifier: "DeleteDashboardResponse",
});
export const DeleteScheduledReportRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ arn: S.String }).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DeleteScheduledReportRequest",
});
export const DeleteScheduledReportResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ arn: S.String })).annotate({
    identifier: "DeleteScheduledReportResponse",
});
export const ExecuteScheduledReportRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    arn: S.String,
    clientToken: S.optional(S.String).pipe(T.HttpHeader("X-Amzn-Client-Token"), T.IdempotencyToken()),
    dryRun: S.optional(S.Boolean),
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "ExecuteScheduledReportRequest",
});
export const HealthStatusCode = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const StatusReason = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const StatusReasonList = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(StatusReason);
export const HealthStatus = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    statusCode: HealthStatusCode,
    lastRefreshedAt: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    statusReasons: S.optional(StatusReasonList),
})).annotate({ identifier: "HealthStatus" });
export const ExecuteScheduledReportResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    healthStatus: S.optional(HealthStatus),
    executionTriggered: S.optional(S.Boolean),
})).annotate({
    identifier: "ExecuteScheduledReportResponse",
});
export const GetDashboardRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ arn: S.String }).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "GetDashboardRequest",
});
export const DashboardType = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const GetDashboardResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    arn: S.String,
    name: S.String,
    description: S.optional(S.String),
    type: DashboardType,
    widgets: WidgetList,
    createdAt: S.Date.pipe(T.TimestampFormat("epoch-seconds")),
    updatedAt: S.Date.pipe(T.TimestampFormat("epoch-seconds")),
})).annotate({
    identifier: "GetDashboardResponse",
});
export const GetResourcePolicyRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ resourceArn: S.String }).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "GetResourcePolicyRequest",
});
export const GetResourcePolicyResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ resourceArn: S.String, policyDocument: S.String })).annotate({
    identifier: "GetResourcePolicyResponse",
});
export const GetScheduledReportRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ arn: S.String }).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "GetScheduledReportRequest",
});
export const ScheduledReport = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    arn: S.optional(S.String),
    name: S.String,
    dashboardArn: S.String,
    scheduledReportExecutionRoleArn: S.String,
    scheduleConfig: ScheduleConfig,
    description: S.optional(S.String),
    widgetIds: S.optional(WidgetIdList),
    widgetDateRangeOverride: S.optional(DateTimeRange),
    createdAt: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    updatedAt: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    lastExecutionAt: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    healthStatus: S.optional(HealthStatus),
})).annotate({
    identifier: "ScheduledReport",
});
export const GetScheduledReportResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ scheduledReport: ScheduledReport })).annotate({
    identifier: "GetScheduledReportResponse",
});
export const ListDashboardsRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    maxResults: S.optional(S.Number),
    nextToken: S.optional(S.String),
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListDashboardsRequest",
});
export const DashboardReference = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    arn: S.String,
    name: S.String,
    description: S.optional(S.String),
    type: DashboardType,
    createdAt: S.Date.pipe(T.TimestampFormat("epoch-seconds")),
    updatedAt: S.Date.pipe(T.TimestampFormat("epoch-seconds")),
})).annotate({
    identifier: "DashboardReference",
});
export const DashboardReferenceList = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(DashboardReference);
export const ListDashboardsResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    dashboards: DashboardReferenceList,
    nextToken: S.optional(S.String),
})).annotate({
    identifier: "ListDashboardsResponse",
});
export const ListScheduledReportsRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    nextToken: S.optional(S.String),
    maxResults: S.optional(S.Number),
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListScheduledReportsRequest",
});
export const ScheduledReportSummary = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    arn: S.String,
    name: S.String,
    dashboardArn: S.String,
    scheduleExpression: S.String,
    state: ScheduleState,
    healthStatus: HealthStatus,
    scheduleExpressionTimeZone: S.optional(S.String),
    widgetIds: S.optional(WidgetIdList),
})).annotate({
    identifier: "ScheduledReportSummary",
});
export const ScheduledReportSummaryList = /*@__PURE__*/ /*#__PURE__*/ S.Array(ScheduledReportSummary);
export const ListScheduledReportsResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    scheduledReports: ScheduledReportSummaryList,
    nextToken: S.optional(S.String),
})).annotate({
    identifier: "ListScheduledReportsResponse",
});
export const ListTagsForResourceRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ resourceArn: S.String }).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListTagsForResourceRequest",
});
export const ListTagsForResourceResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ resourceTags: S.optional(ResourceTagList) })).annotate({
    identifier: "ListTagsForResourceResponse",
});
export const TagResourceRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ resourceArn: S.String, resourceTags: ResourceTagList }).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "TagResourceRequest",
});
export const TagResourceResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "TagResourceResponse",
});
export const ResourceTagKeyList = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const UntagResourceRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ resourceArn: S.String, resourceTagKeys: ResourceTagKeyList }).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "UntagResourceRequest",
});
export const UntagResourceResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "UntagResourceResponse",
});
export const UpdateDashboardRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    arn: S.String,
    name: S.String,
    description: S.optional(S.String),
    widgets: S.optional(WidgetList),
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "UpdateDashboardRequest",
});
export const UpdateDashboardResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ arn: S.String })).annotate({
    identifier: "UpdateDashboardResponse",
});
export const UpdateScheduledReportRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    arn: S.String,
    name: S.optional(S.String),
    description: S.optional(S.String),
    dashboardArn: S.optional(S.String),
    scheduledReportExecutionRoleArn: S.optional(S.String),
    scheduleConfig: S.optional(ScheduleConfig),
    widgetIds: S.optional(WidgetIdList),
    widgetDateRangeOverride: S.optional(DateTimeRange),
    clearWidgetIds: S.optional(S.Boolean),
    clearWidgetDateRangeOverride: S.optional(S.Boolean),
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "UpdateScheduledReportRequest",
});
export const UpdateScheduledReportResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ arn: S.String })).annotate({
    identifier: "UpdateScheduledReportResponse",
});
//# Errors
export class AccessDeniedException extends S.TaggedErrorClass()("AccessDeniedException", { message: S.String }).pipe(C.withAuthError) {
}
export class InternalServerException extends S.TaggedErrorClass()("InternalServerException", { message: S.String }).pipe(C.withServerError) {
}
export class ServiceQuotaExceededException extends S.TaggedErrorClass()("ServiceQuotaExceededException", { message: S.String }).pipe(C.withQuotaError) {
}
export class ThrottlingException extends S.TaggedErrorClass()("ThrottlingException", { message: S.String }).pipe(C.withThrottlingError) {
}
export class ValidationException extends S.TaggedErrorClass()("ValidationException", { message: S.String }).pipe(C.withBadRequestError) {
}
export class ConflictException extends S.TaggedErrorClass()("ConflictException", { message: S.String }).pipe(C.withConflictError) {
}
export class ResourceNotFoundException extends S.TaggedErrorClass()("ResourceNotFoundException", { message: S.String }).pipe(C.withBadRequestError) {
}
/**
 * Creates a new dashboard that can contain multiple widgets displaying cost and usage data. You can add custom widgets or use predefined widgets, arranging them in your preferred layout.
 */
export const createDashboard = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: CreateDashboardRequest,
    output: CreateDashboardResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ServiceQuotaExceededException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Creates a new scheduled report for a dashboard. A scheduled report automatically generates and delivers dashboard snapshots on a recurring schedule. Reports are delivered within 15 minutes of the scheduled delivery time.
 */
export const createScheduledReport = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: CreateScheduledReportRequest,
    output: CreateScheduledReportResponse,
    errors: [
        AccessDeniedException,
        ConflictException,
        InternalServerException,
        ServiceQuotaExceededException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Deletes a specified dashboard. This action cannot be undone.
 */
export const deleteDashboard = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DeleteDashboardRequest,
    output: DeleteDashboardResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Deletes a specified scheduled report. This is an irreversible operation.
 */
export const deleteScheduledReport = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DeleteScheduledReportRequest,
    output: DeleteScheduledReportResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Triggers an immediate execution of a scheduled report, outside of its regular schedule. The scheduled report must be in `ENABLED` state. Calling this operation on a `DISABLED` scheduled report returns a `ValidationException`.
 *
 * If a `clientToken` is provided, the service uses it for idempotency. Requests with the same client token will not trigger a new execution within the same minute.
 */
export const executeScheduledReport = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: ExecuteScheduledReportRequest,
    output: ExecuteScheduledReportResponse,
    errors: [
        AccessDeniedException,
        ConflictException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Retrieves the configuration and metadata of a specified dashboard, including its widgets and layout settings.
 */
export const getDashboard = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: GetDashboardRequest,
    output: GetDashboardResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Retrieves the resource-based policy attached to a dashboard, showing sharing configurations and permissions.
 */
export const getResourcePolicy = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: GetResourcePolicyRequest,
    output: GetResourcePolicyResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Retrieves the configuration and metadata of a specified scheduled report.
 */
export const getScheduledReport = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: GetScheduledReportRequest,
    output: GetScheduledReportResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Returns a list of all dashboards in your account.
 */
export const listDashboards = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: ListDashboardsRequest,
    output: ListDashboardsResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ThrottlingException,
        ValidationException,
    ],
    pagination: {
        inputToken: "nextToken",
        outputToken: "nextToken",
        items: "dashboards",
        pageSize: "maxResults",
    },
}));
/**
 * Returns a list of scheduled reports in your account.
 */
export const listScheduledReports = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: ListScheduledReportsRequest,
    output: ListScheduledReportsResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ThrottlingException,
        ValidationException,
    ],
    pagination: {
        inputToken: "nextToken",
        outputToken: "nextToken",
        items: "scheduledReports",
        pageSize: "maxResults",
    },
}));
/**
 * Returns a list of all tags associated with a specified dashboard resource.
 */
export const listTagsForResource = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: ListTagsForResourceRequest,
    output: ListTagsForResourceResponse,
    errors: [
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Adds or updates tags for a specified dashboard resource.
 */
export const tagResource = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: TagResourceRequest,
    output: TagResourceResponse,
    errors: [
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Removes specified tags from a dashboard resource.
 */
export const untagResource = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: UntagResourceRequest,
    output: UntagResourceResponse,
    errors: [
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Updates an existing dashboard's properties, including its name, description, and widget configurations.
 */
export const updateDashboard = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: UpdateDashboardRequest,
    output: UpdateDashboardResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Updates an existing scheduled report's properties, including its name, description, schedule configuration, and widget settings. Only the parameters included in the request are updated; all other properties remain unchanged.
 */
export const updateScheduledReport = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: UpdateScheduledReportRequest,
    output: UpdateScheduledReportResponse,
    errors: [
        AccessDeniedException,
        ConflictException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
//# sourceMappingURL=bcm-dashboards.js.map