import * as z from "zod/v4-mini";
import { AttachedCustomFieldCreate, AttachedCustomFieldCreate$Outbound } from "./attachedcustomfieldcreate.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";
export type ProductCreateOneTimeMetadata = string | number | number | boolean;
export type ProductCreateOneTimePrices = ProductPriceCustomCreate | ProductPriceFixedCreate | ProductPriceMeteredUnitCreate | ProductPriceSeatBasedCreate;
export type ProductCreateOneTime = {
    /**
     * 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 name of the product.
     */
    name: string;
    /**
     * The description of the product.
     */
    description?: string | null | undefined;
    visibility?: ProductVisibility | undefined;
    /**
     * List of available prices for this product. It may combine at most one fixed price with one seat-based price (billed as `fixed + seat_charge`), or contain a single custom or free price, plus any number of metered prices. A free price cannot be combined with other prices, and a custom price cannot be combined with a fixed or seat-based price. Metered prices are not supported on one-time purchase products.
     */
    prices: Array<ProductPriceCustomCreate | ProductPriceFixedCreate | ProductPriceMeteredUnitCreate | ProductPriceSeatBasedCreate>;
    /**
     * 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;
    /**
     * List of custom fields to attach.
     */
    attachedCustomFields?: Array<AttachedCustomFieldCreate> | undefined;
    /**
     * The ID of the organization owning the product. **Required unless you use an organization token.**
     */
    organizationId?: string | null | undefined;
    /**
     * States that the product is a one-time purchase.
     */
    recurringInterval?: any | null | undefined;
    /**
     * One-time products don't have a recurring interval count.
     */
    recurringIntervalCount?: any | null | undefined;
};
/** @internal */
export type ProductCreateOneTimeMetadata$Outbound = string | number | number | boolean;
/** @internal */
export declare const ProductCreateOneTimeMetadata$outboundSchema: z.ZodMiniType<ProductCreateOneTimeMetadata$Outbound, ProductCreateOneTimeMetadata>;
export declare function productCreateOneTimeMetadataToJSON(productCreateOneTimeMetadata: ProductCreateOneTimeMetadata): string;
/** @internal */
export type ProductCreateOneTimePrices$Outbound = ProductPriceCustomCreate$Outbound | ProductPriceFixedCreate$Outbound | ProductPriceMeteredUnitCreate$Outbound | ProductPriceSeatBasedCreate$Outbound;
/** @internal */
export declare const ProductCreateOneTimePrices$outboundSchema: z.ZodMiniType<ProductCreateOneTimePrices$Outbound, ProductCreateOneTimePrices>;
export declare function productCreateOneTimePricesToJSON(productCreateOneTimePrices: ProductCreateOneTimePrices): string;
/** @internal */
export type ProductCreateOneTime$Outbound = {
    metadata?: {
        [k: string]: string | number | number | boolean;
    } | undefined;
    name: string;
    description?: string | null | undefined;
    visibility?: string | undefined;
    prices: Array<ProductPriceCustomCreate$Outbound | ProductPriceFixedCreate$Outbound | ProductPriceMeteredUnitCreate$Outbound | ProductPriceSeatBasedCreate$Outbound>;
    medias?: Array<string> | null | undefined;
    attached_custom_fields?: Array<AttachedCustomFieldCreate$Outbound> | undefined;
    organization_id?: string | null | undefined;
    recurring_interval?: any | null | undefined;
    recurring_interval_count?: any | null | undefined;
};
/** @internal */
export declare const ProductCreateOneTime$outboundSchema: z.ZodMiniType<ProductCreateOneTime$Outbound, ProductCreateOneTime>;
export declare function productCreateOneTimeToJSON(productCreateOneTime: ProductCreateOneTime): string;
//# sourceMappingURL=productcreateonetime.d.ts.map