/* * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. */ import * as z from "zod/v4-mini"; import { remap as remap$ } from "../../lib/primitives.js"; import { BillingPeriod, BillingPeriod$outboundSchema, } from "./billing-period.js"; import { CommitmentBucketRequest, CommitmentBucketRequest$Outbound, CommitmentBucketRequest$outboundSchema, } from "./commitment-bucket-request.js"; import { CommitmentType, CommitmentType$outboundSchema, } from "./commitment-type.js"; export type LineItemCommitmentConfig = { commitmentAmount?: number | undefined; commitmentDuration?: BillingPeriod | undefined; commitmentQuantity?: number | undefined; /** * CommitmentTimeBuckets scopes commitment to specific UTC-hour windows; requires IsWindowCommitment=true. */ commitmentTimeBuckets?: Array | undefined; commitmentType?: CommitmentType | undefined; /** * EnableTrueUp charges the shortfall when usage is below commitment. */ enableTrueUp?: boolean | undefined; /** * IsWindowCommitment applies commitment per window (e.g. per day) rather than per billing period. */ isWindowCommitment?: boolean | undefined; /** * OverageFactor is a multiplier on usage beyond commitment; 1.0 = base rate. */ overageFactor?: number | undefined; }; /** @internal */ export type LineItemCommitmentConfig$Outbound = { commitment_amount?: number | undefined; commitment_duration?: string | undefined; commitment_quantity?: number | undefined; commitment_time_buckets?: Array | undefined; commitment_type?: string | undefined; enable_true_up?: boolean | undefined; is_window_commitment?: boolean | undefined; overage_factor?: number | undefined; }; /** @internal */ export const LineItemCommitmentConfig$outboundSchema: z.ZodMiniType< LineItemCommitmentConfig$Outbound, LineItemCommitmentConfig > = z.pipe( z.object({ commitmentAmount: z.optional(z.number()), commitmentDuration: z.optional(BillingPeriod$outboundSchema), commitmentQuantity: z.optional(z.number()), commitmentTimeBuckets: z.optional( z.array(CommitmentBucketRequest$outboundSchema), ), commitmentType: z.optional(CommitmentType$outboundSchema), enableTrueUp: z.optional(z.boolean()), isWindowCommitment: z.optional(z.boolean()), overageFactor: z.optional(z.number()), }), z.transform((v) => { return remap$(v, { commitmentAmount: "commitment_amount", commitmentDuration: "commitment_duration", commitmentQuantity: "commitment_quantity", commitmentTimeBuckets: "commitment_time_buckets", commitmentType: "commitment_type", enableTrueUp: "enable_true_up", isWindowCommitment: "is_window_commitment", overageFactor: "overage_factor", }); }), ); export function lineItemCommitmentConfigToJSON( lineItemCommitmentConfig: LineItemCommitmentConfig, ): string { return JSON.stringify( LineItemCommitmentConfig$outboundSchema.parse(lineItemCommitmentConfig), ); }