import * as z from "zod/v4-mini";
import { AttachedCustomFieldCreate, AttachedCustomFieldCreate$Outbound } from "./attachedcustomfieldcreate.js";
import { ExistingProductPrice, ExistingProductPrice$Outbound } from "./existingproductprice.js";
import { ProductPriceCustomCreate, ProductPriceCustomCreate$Outbound } from "./productpricecustomcreate.js";
import { ProductPriceFixedCreate, ProductPriceFixedCreate$Outbound } from "./productpricefixedcreate.js";
import { ProductPriceMeteredUnitCreate, ProductPriceMeteredUnitCreate$Outbound } from "./productpricemeteredunitcreate.js";
import { ProductPriceSeatBasedCreate, ProductPriceSeatBasedCreate$Outbound } from "./productpriceseatbasedcreate.js";
import { ProductVisibility } from "./productvisibility.js";
import { RecurringInterval } from "./recurringinterval.js";
import { TrialInterval } from "./trialinterval.js";
export type ProductUpdateMetadata = string | number | number | boolean;
export type Two = ProductPriceCustomCreate | ProductPriceFixedCreate | ProductPriceMeteredUnitCreate | ProductPriceSeatBasedCreate;
export type ProductUpdatePrices = ExistingProductPrice | ProductPriceCustomCreate | ProductPriceFixedCreate | ProductPriceMeteredUnitCreate | ProductPriceSeatBasedCreate;
/**
 * Schema to update a product.
 */
export type ProductUpdate = {
    /**
     * Key-value object allowing you to store additional information.
     *
     * @remarks
     *
     * The key must be a string with a maximum length of **40 characters**.
     * The value must be either:
     *
     * * A string with a maximum length of **500 characters**
     * * An integer
     * * A floating-point number
     * * A boolean
     *
     * You can store up to **50 key-value pairs**.
     */
    metadata?: {
        [k: string]: string | number | number | boolean;
    } | undefined;
    /**
     * The interval unit for the trial period.
     */
    trialInterval?: TrialInterval | null | undefined;
    /**
     * The number of interval units for the trial period.
     */
    trialIntervalCount?: number | null | undefined;
    name?: string | null | undefined;
    /**
     * The description of the product.
     */
    description?: string | null | undefined;
    /**
     * The recurring interval of the product. If `None`, the product is a one-time purchase. **Can only be set on legacy recurring products. Once set, it can't be changed.**
     */
    recurringInterval?: RecurringInterval | null | undefined;
    /**
     * 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. Once set, it can't be changed.**
     */
    recurringIntervalCount?: number | null | undefined;
    /**
     * Whether the product is archived. If `true`, the product won't be available for purchase anymore. Existing customers will still have access to their benefits, and subscriptions will continue normally.
     */
    isArchived?: boolean | null | undefined;
    /**
     * The visibility of the product.
     */
    visibility?: ProductVisibility | null | undefined;
    /**
     * List of available prices for this product. If you want to keep existing prices, include them in the list as an `ExistingProductPrice` object.
     */
    prices?: Array<ExistingProductPrice | ProductPriceCustomCreate | ProductPriceFixedCreate | ProductPriceMeteredUnitCreate | ProductPriceSeatBasedCreate> | null | undefined;
    /**
     * List of file IDs. Each one must be on the same organization as the product, of type `product_media` and correctly uploaded.
     */
    medias?: Array<string> | null | undefined;
    attachedCustomFields?: Array<AttachedCustomFieldCreate> | null | undefined;
};
/** @internal */
export type ProductUpdateMetadata$Outbound = string | number | number | boolean;
/** @internal */
export declare const ProductUpdateMetadata$outboundSchema: z.ZodMiniType<ProductUpdateMetadata$Outbound, ProductUpdateMetadata>;
export declare function productUpdateMetadataToJSON(productUpdateMetadata: ProductUpdateMetadata): string;
/** @internal */
export type Two$Outbound = ProductPriceCustomCreate$Outbound | ProductPriceFixedCreate$Outbound | ProductPriceMeteredUnitCreate$Outbound | ProductPriceSeatBasedCreate$Outbound;
/** @internal */
export declare const Two$outboundSchema: z.ZodMiniType<Two$Outbound, Two>;
export declare function twoToJSON(two: Two): string;
/** @internal */
export type ProductUpdatePrices$Outbound = ExistingProductPrice$Outbound | ProductPriceCustomCreate$Outbound | ProductPriceFixedCreate$Outbound | ProductPriceMeteredUnitCreate$Outbound | ProductPriceSeatBasedCreate$Outbound;
/** @internal */
export declare const ProductUpdatePrices$outboundSchema: z.ZodMiniType<ProductUpdatePrices$Outbound, ProductUpdatePrices>;
export declare function productUpdatePricesToJSON(productUpdatePrices: ProductUpdatePrices): string;
/** @internal */
export type ProductUpdate$Outbound = {
    metadata?: {
        [k: string]: string | number | number | boolean;
    } | undefined;
    trial_interval?: string | null | undefined;
    trial_interval_count?: number | null | undefined;
    name?: string | null | undefined;
    description?: string | null | undefined;
    recurring_interval?: string | null | undefined;
    recurring_interval_count?: number | null | undefined;
    is_archived?: boolean | null | undefined;
    visibility?: string | null | undefined;
    prices?: Array<ExistingProductPrice$Outbound | ProductPriceCustomCreate$Outbound | ProductPriceFixedCreate$Outbound | ProductPriceMeteredUnitCreate$Outbound | ProductPriceSeatBasedCreate$Outbound> | null | undefined;
    medias?: Array<string> | null | undefined;
    attached_custom_fields?: Array<AttachedCustomFieldCreate$Outbound> | null | undefined;
};
/** @internal */
export declare const ProductUpdate$outboundSchema: z.ZodMiniType<ProductUpdate$Outbound, ProductUpdate>;
export declare function productUpdateToJSON(productUpdate: ProductUpdate): string;
//# sourceMappingURL=productupdate.d.ts.map