import * as HttpClient from "effect/unstable/http/HttpClient";
import * as S from "effect/Schema";
import * as API from "../client/api.js";
import * as T from "../traits.js";
import * as C from "../category.js";
const svc = T.AwsApiService({
    sdkId: "savingsplans",
    serviceShapeName: "AWSSavingsPlan",
});
const auth = T.AwsAuthSigv4({ name: "savingsplans" });
const ver = T.ServiceVersion("2019-06-28");
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,
    });
    const _p0 = () => ({
        authSchemes: [
            {
                name: "sigv4",
                signingName: "savingsplans",
                signingRegion: "us-east-1",
            },
        ],
    });
    if (!(Endpoint != null) && UseFIPS === false && UseDualStack === true) {
        {
            const PartitionResult = _.partition(Region);
            if (Region != null &&
                PartitionResult != null &&
                PartitionResult !== false) {
                if (_.getAttr(PartitionResult, "name") === "aws") {
                    return e("https://savingsplans.global.api.aws", _p0(), {});
                }
                if (_.getAttr(PartitionResult, "supportsDualStack") === true) {
                    return e(`https://savingsplans.${Region}.${_.getAttr(PartitionResult, "dualStackDnsSuffix")}`);
                }
                return err("DualStack is enabled but this partition does not support DualStack");
            }
        }
        if (!(Region != null)) {
            return e("https://savingsplans.global.api.aws", _p0(), {});
        }
    }
    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 (_.getAttr(PartitionResult, "name") === "aws" &&
                    UseFIPS === false &&
                    UseDualStack === false) {
                    return e("https://savingsplans.amazonaws.com", _p0(), {});
                }
                if (UseFIPS === true && UseDualStack === true) {
                    if (true === _.getAttr(PartitionResult, "supportsFIPS") &&
                        true === _.getAttr(PartitionResult, "supportsDualStack")) {
                        return e(`https://savingsplans-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://savingsplans-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://savingsplans.${Region}.${_.getAttr(PartitionResult, "dualStackDnsSuffix")}`);
                    }
                    return err("DualStack is enabled but this partition does not support DualStack");
                }
                return e(`https://savingsplans.${Region}.${_.getAttr(PartitionResult, "dnsSuffix")}`);
            }
        }
    }
    return err("Invalid Configuration: Missing Region");
});
export const TagMap = /*@__PURE__*/ /*#__PURE__*/ S.Record(S.String, S.String.pipe(S.optional));
export const CreateSavingsPlanRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    savingsPlanOfferingId: S.String,
    commitment: S.String,
    upfrontPaymentAmount: S.optional(S.String),
    purchaseTime: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    clientToken: S.optional(S.String).pipe(T.IdempotencyToken()),
    tags: S.optional(TagMap),
}).pipe(T.all(T.Http({ method: "POST", uri: "/CreateSavingsPlan" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "CreateSavingsPlanRequest",
});
export const CreateSavingsPlanResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ savingsPlanId: S.optional(S.String) })).annotate({
    identifier: "CreateSavingsPlanResponse",
});
export const DeleteQueuedSavingsPlanRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ savingsPlanId: S.String }).pipe(T.all(T.Http({ method: "POST", uri: "/DeleteQueuedSavingsPlan" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DeleteQueuedSavingsPlanRequest",
});
export const DeleteQueuedSavingsPlanResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "DeleteQueuedSavingsPlanResponse",
});
export const SavingsPlanRateFilterName = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const ListOfStrings = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const SavingsPlanRateFilter = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    name: S.optional(SavingsPlanRateFilterName),
    values: S.optional(ListOfStrings),
})).annotate({
    identifier: "SavingsPlanRateFilter",
});
export const SavingsPlanRateFilterList = /*@__PURE__*/ /*#__PURE__*/ S.Array(SavingsPlanRateFilter);
export const DescribeSavingsPlanRatesRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    savingsPlanId: S.String,
    filters: S.optional(SavingsPlanRateFilterList),
    nextToken: S.optional(S.String),
    maxResults: S.optional(S.Number),
}).pipe(T.all(T.Http({ method: "POST", uri: "/DescribeSavingsPlanRates" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DescribeSavingsPlanRatesRequest",
});
export const CurrencyCode = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const SavingsPlanRateUnit = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const SavingsPlanProductType = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const SavingsPlanRateServiceCode = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const SavingsPlanRatePropertyKey = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const SavingsPlanRateProperty = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    name: S.optional(SavingsPlanRatePropertyKey),
    value: S.optional(S.String),
})).annotate({
    identifier: "SavingsPlanRateProperty",
});
export const SavingsPlanRatePropertyList = /*@__PURE__*/ /*#__PURE__*/ S.Array(SavingsPlanRateProperty);
export const SavingsPlanRate = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    rate: S.optional(S.String),
    currency: S.optional(CurrencyCode),
    unit: S.optional(SavingsPlanRateUnit),
    productType: S.optional(SavingsPlanProductType),
    serviceCode: S.optional(SavingsPlanRateServiceCode),
    usageType: S.optional(S.String),
    operation: S.optional(S.String),
    properties: S.optional(SavingsPlanRatePropertyList),
})).annotate({
    identifier: "SavingsPlanRate",
});
export const SavingsPlanRateList = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(SavingsPlanRate);
export const DescribeSavingsPlanRatesResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    savingsPlanId: S.optional(S.String),
    searchResults: S.optional(SavingsPlanRateList),
    nextToken: S.optional(S.String),
})).annotate({
    identifier: "DescribeSavingsPlanRatesResponse",
});
export const SavingsPlanArnList = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const SavingsPlanIdList = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const SavingsPlanState = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const SavingsPlanStateList = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(SavingsPlanState);
export const SavingsPlansFilterName = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const SavingsPlanFilter = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    name: S.optional(SavingsPlansFilterName),
    values: S.optional(ListOfStrings),
})).annotate({
    identifier: "SavingsPlanFilter",
});
export const SavingsPlanFilterList = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(SavingsPlanFilter);
export const DescribeSavingsPlansRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    savingsPlanArns: S.optional(SavingsPlanArnList),
    savingsPlanIds: S.optional(SavingsPlanIdList),
    nextToken: S.optional(S.String),
    maxResults: S.optional(S.Number),
    states: S.optional(SavingsPlanStateList),
    filters: S.optional(SavingsPlanFilterList),
}).pipe(T.all(T.Http({ method: "POST", uri: "/DescribeSavingsPlans" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DescribeSavingsPlansRequest",
});
export const SavingsPlanType = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const SavingsPlanPaymentOption = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const SavingsPlanProductTypeList = /*@__PURE__*/ /*#__PURE__*/ S.Array(SavingsPlanProductType);
export const SavingsPlan = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    offeringId: S.optional(S.String),
    savingsPlanId: S.optional(S.String),
    savingsPlanArn: S.optional(S.String),
    description: S.optional(S.String),
    start: S.optional(S.String),
    end: S.optional(S.String),
    state: S.optional(SavingsPlanState),
    region: S.optional(S.String),
    ec2InstanceFamily: S.optional(S.String),
    savingsPlanType: S.optional(SavingsPlanType),
    paymentOption: S.optional(SavingsPlanPaymentOption),
    productTypes: S.optional(SavingsPlanProductTypeList),
    currency: S.optional(CurrencyCode),
    commitment: S.optional(S.String),
    upfrontPaymentAmount: S.optional(S.String),
    recurringPaymentAmount: S.optional(S.String),
    termDurationInSeconds: S.optional(S.Number),
    tags: S.optional(TagMap),
    returnableUntil: S.optional(S.String),
})).annotate({ identifier: "SavingsPlan" });
export const SavingsPlanList = /*@__PURE__*/ /*#__PURE__*/ S.Array(SavingsPlan);
export const DescribeSavingsPlansResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    savingsPlans: S.optional(SavingsPlanList),
    nextToken: S.optional(S.String),
})).annotate({
    identifier: "DescribeSavingsPlansResponse",
});
export const UUIDs = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const SavingsPlanPaymentOptionList = /*@__PURE__*/ /*#__PURE__*/ S.Array(SavingsPlanPaymentOption);
export const SavingsPlanTypeList = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(SavingsPlanType);
export const SavingsPlanRateServiceCodeList = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(SavingsPlanRateServiceCode);
export const SavingsPlanRateUsageTypeList = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const SavingsPlanRateOperationList = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const SavingsPlanRateFilterAttribute = 
/*@__PURE__*/ /*#__PURE__*/ S.String;
export const FilterValuesList = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const SavingsPlanOfferingRateFilterElement = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    name: S.optional(SavingsPlanRateFilterAttribute),
    values: S.optional(FilterValuesList),
})).annotate({
    identifier: "SavingsPlanOfferingRateFilterElement",
});
export const SavingsPlanOfferingRateFiltersList = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(SavingsPlanOfferingRateFilterElement);
export const DescribeSavingsPlansOfferingRatesRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    savingsPlanOfferingIds: S.optional(UUIDs),
    savingsPlanPaymentOptions: S.optional(SavingsPlanPaymentOptionList),
    savingsPlanTypes: S.optional(SavingsPlanTypeList),
    products: S.optional(SavingsPlanProductTypeList),
    serviceCodes: S.optional(SavingsPlanRateServiceCodeList),
    usageTypes: S.optional(SavingsPlanRateUsageTypeList),
    operations: S.optional(SavingsPlanRateOperationList),
    filters: S.optional(SavingsPlanOfferingRateFiltersList),
    nextToken: S.optional(S.String),
    maxResults: S.optional(S.Number),
}).pipe(T.all(T.Http({ method: "POST", uri: "/DescribeSavingsPlansOfferingRates" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DescribeSavingsPlansOfferingRatesRequest",
});
export const ParentSavingsPlanOffering = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    offeringId: S.optional(S.String),
    paymentOption: S.optional(SavingsPlanPaymentOption),
    planType: S.optional(SavingsPlanType),
    durationSeconds: S.optional(S.Number),
    currency: S.optional(CurrencyCode),
    planDescription: S.optional(S.String),
})).annotate({
    identifier: "ParentSavingsPlanOffering",
});
export const SavingsPlanOfferingRateProperty = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ name: S.optional(S.String), value: S.optional(S.String) })).annotate({
    identifier: "SavingsPlanOfferingRateProperty",
});
export const SavingsPlanOfferingRatePropertyList = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(SavingsPlanOfferingRateProperty);
export const SavingsPlanOfferingRate = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    savingsPlanOffering: S.optional(ParentSavingsPlanOffering),
    rate: S.optional(S.String),
    unit: S.optional(SavingsPlanRateUnit),
    productType: S.optional(SavingsPlanProductType),
    serviceCode: S.optional(SavingsPlanRateServiceCode),
    usageType: S.optional(S.String),
    operation: S.optional(S.String),
    properties: S.optional(SavingsPlanOfferingRatePropertyList),
})).annotate({
    identifier: "SavingsPlanOfferingRate",
});
export const SavingsPlanOfferingRatesList = /*@__PURE__*/ /*#__PURE__*/ S.Array(SavingsPlanOfferingRate);
export const DescribeSavingsPlansOfferingRatesResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    searchResults: S.optional(SavingsPlanOfferingRatesList),
    nextToken: S.optional(S.String),
})).annotate({
    identifier: "DescribeSavingsPlansOfferingRatesResponse",
});
export const DurationsList = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.Number);
export const CurrencyList = /*@__PURE__*/ /*#__PURE__*/ S.Array(CurrencyCode);
export const SavingsPlanDescriptionsList = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const SavingsPlanServiceCodeList = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const SavingsPlanUsageTypeList = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const SavingsPlanOperationList = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const SavingsPlanOfferingFilterAttribute = 
/*@__PURE__*/ /*#__PURE__*/ S.String;
export const SavingsPlanOfferingFilterElement = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    name: S.optional(SavingsPlanOfferingFilterAttribute),
    values: S.optional(FilterValuesList),
})).annotate({
    identifier: "SavingsPlanOfferingFilterElement",
});
export const SavingsPlanOfferingFiltersList = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(SavingsPlanOfferingFilterElement);
export const DescribeSavingsPlansOfferingsRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    offeringIds: S.optional(UUIDs),
    paymentOptions: S.optional(SavingsPlanPaymentOptionList),
    productType: S.optional(SavingsPlanProductType),
    planTypes: S.optional(SavingsPlanTypeList),
    durations: S.optional(DurationsList),
    currencies: S.optional(CurrencyList),
    descriptions: S.optional(SavingsPlanDescriptionsList),
    serviceCodes: S.optional(SavingsPlanServiceCodeList),
    usageTypes: S.optional(SavingsPlanUsageTypeList),
    operations: S.optional(SavingsPlanOperationList),
    filters: S.optional(SavingsPlanOfferingFiltersList),
    nextToken: S.optional(S.String),
    maxResults: S.optional(S.Number),
}).pipe(T.all(T.Http({ method: "POST", uri: "/DescribeSavingsPlansOfferings" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DescribeSavingsPlansOfferingsRequest",
});
export const SavingsPlanOfferingPropertyKey = 
/*@__PURE__*/ /*#__PURE__*/ S.String;
export const SavingsPlanOfferingProperty = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    name: S.optional(SavingsPlanOfferingPropertyKey),
    value: S.optional(S.String),
})).annotate({
    identifier: "SavingsPlanOfferingProperty",
});
export const SavingsPlanOfferingPropertyList = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(SavingsPlanOfferingProperty);
export const SavingsPlanOffering = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    offeringId: S.optional(S.String),
    productTypes: S.optional(SavingsPlanProductTypeList),
    planType: S.optional(SavingsPlanType),
    description: S.optional(S.String),
    paymentOption: S.optional(SavingsPlanPaymentOption),
    durationSeconds: S.optional(S.Number),
    currency: S.optional(CurrencyCode),
    serviceCode: S.optional(S.String),
    usageType: S.optional(S.String),
    operation: S.optional(S.String),
    properties: S.optional(SavingsPlanOfferingPropertyList),
})).annotate({
    identifier: "SavingsPlanOffering",
});
export const SavingsPlanOfferingsList = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(SavingsPlanOffering);
export const DescribeSavingsPlansOfferingsResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    searchResults: S.optional(SavingsPlanOfferingsList),
    nextToken: S.optional(S.String),
})).annotate({
    identifier: "DescribeSavingsPlansOfferingsResponse",
});
export const ListTagsForResourceRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ resourceArn: S.String }).pipe(T.all(T.Http({ method: "POST", uri: "/ListTagsForResource" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListTagsForResourceRequest",
});
export const ListTagsForResourceResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ tags: S.optional(TagMap) })).annotate({
    identifier: "ListTagsForResourceResponse",
});
export const ReturnSavingsPlanRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    savingsPlanId: S.String,
    clientToken: S.optional(S.String).pipe(T.IdempotencyToken()),
}).pipe(T.all(T.Http({ method: "POST", uri: "/ReturnSavingsPlan" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "ReturnSavingsPlanRequest",
});
export const ReturnSavingsPlanResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ savingsPlanId: S.optional(S.String) })).annotate({
    identifier: "ReturnSavingsPlanResponse",
});
export const TagResourceRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ resourceArn: S.String, tags: TagMap }).pipe(T.all(T.Http({ method: "POST", uri: "/TagResource" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "TagResourceRequest",
});
export const TagResourceResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "TagResourceResponse",
});
export const TagKeyList = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const UntagResourceRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ resourceArn: S.String, tagKeys: TagKeyList }).pipe(T.all(T.Http({ method: "POST", uri: "/UntagResource" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "UntagResourceRequest",
});
export const UntagResourceResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "UntagResourceResponse",
});
//# Errors
export class InternalServerException extends S.TaggedErrorClass()("InternalServerException", { message: S.String }, T.AwsQueryError({ code: "InternalServerException", httpResponseCode: 500 })).pipe(C.withServerError) {
}
export class ResourceNotFoundException extends S.TaggedErrorClass()("ResourceNotFoundException", { message: S.String }, T.AwsQueryError({ code: "ResourceNotFoundException", httpResponseCode: 404 })).pipe(C.withBadRequestError) {
}
export class ServiceQuotaExceededException extends S.TaggedErrorClass()("ServiceQuotaExceededException", { message: S.String }, T.AwsQueryError({
    code: "ServiceQuotaExceededException",
    httpResponseCode: 402,
})).pipe(C.withQuotaError) {
}
export class ValidationException extends S.TaggedErrorClass()("ValidationException", { message: S.String }, T.AwsQueryError({ code: "ValidationException", httpResponseCode: 400 })).pipe(C.withBadRequestError) {
}
/**
 * Creates a Savings Plan.
 */
export const createSavingsPlan = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: CreateSavingsPlanRequest,
    output: CreateSavingsPlanResponse,
    errors: [
        InternalServerException,
        ResourceNotFoundException,
        ServiceQuotaExceededException,
        ValidationException,
    ],
}));
/**
 * Deletes the queued purchase for the specified Savings Plan.
 */
export const deleteQueuedSavingsPlan = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DeleteQueuedSavingsPlanRequest,
    output: DeleteQueuedSavingsPlanResponse,
    errors: [
        InternalServerException,
        ResourceNotFoundException,
        ServiceQuotaExceededException,
        ValidationException,
    ],
}));
/**
 * Describes the rates for a specific, existing Savings Plan.
 */
export const describeSavingsPlanRates = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DescribeSavingsPlanRatesRequest,
    output: DescribeSavingsPlanRatesResponse,
    errors: [
        InternalServerException,
        ResourceNotFoundException,
        ValidationException,
    ],
}));
/**
 * Describes the specified Savings Plans.
 */
export const describeSavingsPlans = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DescribeSavingsPlansRequest,
    output: DescribeSavingsPlansResponse,
    errors: [InternalServerException, ValidationException],
}));
/**
 * Describes the offering rates for Savings Plans you might want to purchase.
 */
export const describeSavingsPlansOfferingRates = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DescribeSavingsPlansOfferingRatesRequest,
    output: DescribeSavingsPlansOfferingRatesResponse,
    errors: [InternalServerException, ValidationException],
}));
/**
 * Describes the offerings for the specified Savings Plans.
 */
export const describeSavingsPlansOfferings = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DescribeSavingsPlansOfferingsRequest,
    output: DescribeSavingsPlansOfferingsResponse,
    errors: [InternalServerException, ValidationException],
}));
/**
 * Lists the tags for the specified resource.
 */
export const listTagsForResource = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: ListTagsForResourceRequest,
    output: ListTagsForResourceResponse,
    errors: [
        InternalServerException,
        ResourceNotFoundException,
        ValidationException,
    ],
}));
/**
 * Returns the specified Savings Plan.
 */
export const returnSavingsPlan = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: ReturnSavingsPlanRequest,
    output: ReturnSavingsPlanResponse,
    errors: [
        InternalServerException,
        ResourceNotFoundException,
        ServiceQuotaExceededException,
        ValidationException,
    ],
}));
/**
 * Adds the specified tags to the specified resource.
 */
export const tagResource = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: TagResourceRequest,
    output: TagResourceResponse,
    errors: [
        InternalServerException,
        ResourceNotFoundException,
        ServiceQuotaExceededException,
        ValidationException,
    ],
}));
/**
 * Removes the specified tags from the specified resource.
 */
export const untagResource = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: UntagResourceRequest,
    output: UntagResourceResponse,
    errors: [
        InternalServerException,
        ResourceNotFoundException,
        ValidationException,
    ],
}));
//# sourceMappingURL=savingsplans.js.map