/* * 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 { safeParse } from "../../lib/schemas.js"; import * as openEnums from "../../types/enums.js"; import { OpenEnum } from "../../types/enums.js"; import { Result as SafeParseResult } from "../../types/fp.js"; import { SDKValidationError } from "../errors/sdkvalidationerror.js"; export const PublicSubscriptionProrationBehavior = { Invoice: "invoice", Prorate: "prorate", NextPeriod: "next_period", } as const; export type PublicSubscriptionProrationBehavior = OpenEnum< typeof PublicSubscriptionProrationBehavior >; export type OrganizationSubscriptionSettings = { allowMultipleSubscriptions: boolean; prorationBehavior: PublicSubscriptionProrationBehavior; benefitRevocationGracePeriod: number; preventTrialAbuse: boolean; allowCustomerUpdates: boolean; }; /** @internal */ export const PublicSubscriptionProrationBehavior$inboundSchema: z.ZodMiniType< PublicSubscriptionProrationBehavior, unknown > = openEnums.inboundSchema(PublicSubscriptionProrationBehavior); /** @internal */ export const PublicSubscriptionProrationBehavior$outboundSchema: z.ZodMiniType< string, PublicSubscriptionProrationBehavior > = openEnums.outboundSchema(PublicSubscriptionProrationBehavior); /** @internal */ export const OrganizationSubscriptionSettings$inboundSchema: z.ZodMiniType< OrganizationSubscriptionSettings, unknown > = z.pipe( z.object({ allow_multiple_subscriptions: z.boolean(), proration_behavior: PublicSubscriptionProrationBehavior$inboundSchema, benefit_revocation_grace_period: z.int(), prevent_trial_abuse: z.boolean(), allow_customer_updates: z.boolean(), }), z.transform((v) => { return remap$(v, { "allow_multiple_subscriptions": "allowMultipleSubscriptions", "proration_behavior": "prorationBehavior", "benefit_revocation_grace_period": "benefitRevocationGracePeriod", "prevent_trial_abuse": "preventTrialAbuse", "allow_customer_updates": "allowCustomerUpdates", }); }), ); /** @internal */ export type OrganizationSubscriptionSettings$Outbound = { allow_multiple_subscriptions: boolean; proration_behavior: string; benefit_revocation_grace_period: number; prevent_trial_abuse: boolean; allow_customer_updates: boolean; }; /** @internal */ export const OrganizationSubscriptionSettings$outboundSchema: z.ZodMiniType< OrganizationSubscriptionSettings$Outbound, OrganizationSubscriptionSettings > = z.pipe( z.object({ allowMultipleSubscriptions: z.boolean(), prorationBehavior: PublicSubscriptionProrationBehavior$outboundSchema, benefitRevocationGracePeriod: z.int(), preventTrialAbuse: z.boolean(), allowCustomerUpdates: z.boolean(), }), z.transform((v) => { return remap$(v, { allowMultipleSubscriptions: "allow_multiple_subscriptions", prorationBehavior: "proration_behavior", benefitRevocationGracePeriod: "benefit_revocation_grace_period", preventTrialAbuse: "prevent_trial_abuse", allowCustomerUpdates: "allow_customer_updates", }); }), ); export function organizationSubscriptionSettingsToJSON( organizationSubscriptionSettings: OrganizationSubscriptionSettings, ): string { return JSON.stringify( OrganizationSubscriptionSettings$outboundSchema.parse( organizationSubscriptionSettings, ), ); } export function organizationSubscriptionSettingsFromJSON( jsonString: string, ): SafeParseResult { return safeParse( jsonString, (x) => OrganizationSubscriptionSettings$inboundSchema.parse(JSON.parse(x)), `Failed to parse 'OrganizationSubscriptionSettings' from JSON`, ); }