import * as z from "zod/v4-mini";
import { Result as SafeParseResult } from "../../types/fp.js";
import { SDKValidationError } from "../errors/sdkvalidationerror.js";
import { BenefitPublic } from "./benefitpublic.js";
import { LegacyRecurringProductPrice } from "./legacyrecurringproductprice.js";
import { MetadataOutputType } from "./metadataoutputtype.js";
import { ProductMediaFileRead } from "./productmediafileread.js";
import { ProductPrice } from "./productprice.js";
import { ProductVisibility } from "./productvisibility.js";
import { RecurringInterval } from "./recurringinterval.js";
import { TrialInterval } from "./trialinterval.js";
export type CheckoutLinkProductPrices = LegacyRecurringProductPrice | ProductPrice;
/**
 * Product data for a checkout link.
 */
export type CheckoutLinkProduct = {
    metadata: {
        [k: string]: MetadataOutputType;
    };
    /**
     * 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 CheckoutLinkProductPrices$inboundSchema: z.ZodMiniType<CheckoutLinkProductPrices, unknown>;
export declare function checkoutLinkProductPricesFromJSON(jsonString: string): SafeParseResult<CheckoutLinkProductPrices, SDKValidationError>;
/** @internal */
export declare const CheckoutLinkProduct$inboundSchema: z.ZodMiniType<CheckoutLinkProduct, unknown>;
export declare function checkoutLinkProductFromJSON(jsonString: string): SafeParseResult<CheckoutLinkProduct, SDKValidationError>;
//# sourceMappingURL=checkoutlinkproduct.d.ts.map