import * as z from "zod/v4-mini";
import { Result as SafeParseResult } from "../../types/fp.js";
import { SDKValidationError } from "../errors/sdkvalidationerror.js";
import { BenefitPublic, BenefitPublic$Outbound } from "./benefitpublic.js";
import { LegacyRecurringProductPrice, LegacyRecurringProductPrice$Outbound } from "./legacyrecurringproductprice.js";
import { ProductMediaFileRead, ProductMediaFileRead$Outbound } from "./productmediafileread.js";
import { ProductPrice, ProductPrice$Outbound } from "./productprice.js";
import { ProductVisibility } from "./productvisibility.js";
import { RecurringInterval } from "./recurringinterval.js";
import { TrialInterval } from "./trialinterval.js";
export type CheckoutProductPrices = LegacyRecurringProductPrice | ProductPrice;
/**
 * Product data for a checkout session.
 */
export type CheckoutProduct = {
    /**
     * The ID of the object.
     */
    id: string;
    /**
     * Creation timestamp of the object.
     */
    createdAt: Date;
    /**
     * Last modification timestamp of the object.
     */
    modifiedAt: Date | null;
    /**
     * The interval unit for the trial period.
     */
    trialInterval: TrialInterval | null;
    /**
     * The number of interval units for the trial period.
     */
    trialIntervalCount: number | null;
    /**
     * The name of the product.
     */
    name: string;
    /**
     * The description of the product.
     */
    description: string | null;
    visibility: ProductVisibility;
    /**
     * The recurring interval of the product. If `None`, the product is a one-time purchase.
     */
    recurringInterval: RecurringInterval | null;
    /**
     * Number of interval units of the subscription. If this is set to 1 the charge will happen every interval (e.g. every month), if set to 2 it will be every other month, and so on. None for one-time products.
     */
    recurringIntervalCount: number | null;
    /**
     * The meter cycle of the product, independent of the billing interval. If `None`, metered concerns follow the billing interval.
     */
    meterInterval: RecurringInterval | null;
    /**
     * Number of meter interval units. None when no meter cycle is set.
     */
    meterIntervalCount: number | null;
    /**
     * Whether the product is a subscription.
     */
    isRecurring: boolean;
    /**
     * Whether the product is archived and no longer available.
     */
    isArchived: boolean;
    /**
     * The ID of the organization owning the product.
     */
    organizationId: string;
    /**
     * List of prices for this product.
     */
    prices: Array<LegacyRecurringProductPrice | ProductPrice>;
    /**
     * List of benefits granted by the product.
     */
    benefits: Array<BenefitPublic>;
    /**
     * List of medias associated to the product.
     */
    medias: Array<ProductMediaFileRead>;
};
/** @internal */
export declare const CheckoutProductPrices$inboundSchema: z.ZodMiniType<CheckoutProductPrices, unknown>;
/** @internal */
export type CheckoutProductPrices$Outbound = LegacyRecurringProductPrice$Outbound | ProductPrice$Outbound;
/** @internal */
export declare const CheckoutProductPrices$outboundSchema: z.ZodMiniType<CheckoutProductPrices$Outbound, CheckoutProductPrices>;
export declare function checkoutProductPricesToJSON(checkoutProductPrices: CheckoutProductPrices): string;
export declare function checkoutProductPricesFromJSON(jsonString: string): SafeParseResult<CheckoutProductPrices, SDKValidationError>;
/** @internal */
export declare const CheckoutProduct$inboundSchema: z.ZodMiniType<CheckoutProduct, unknown>;
/** @internal */
export type CheckoutProduct$Outbound = {
    id: string;
    created_at: string;
    modified_at: string | null;
    trial_interval: string | null;
    trial_interval_count: number | null;
    name: string;
    description: string | null;
    visibility: string;
    recurring_interval: string | null;
    recurring_interval_count: number | null;
    meter_interval: string | null;
    meter_interval_count: number | null;
    is_recurring: boolean;
    is_archived: boolean;
    organization_id: string;
    prices: Array<LegacyRecurringProductPrice$Outbound | ProductPrice$Outbound>;
    benefits: Array<BenefitPublic$Outbound>;
    medias: Array<ProductMediaFileRead$Outbound>;
};
/** @internal */
export declare const CheckoutProduct$outboundSchema: z.ZodMiniType<CheckoutProduct$Outbound, CheckoutProduct>;
export declare function checkoutProductToJSON(checkoutProduct: CheckoutProduct): string;
export declare function checkoutProductFromJSON(jsonString: string): SafeParseResult<CheckoutProduct, SDKValidationError>;
//# sourceMappingURL=checkoutproduct.d.ts.map