import * as z from "zod/v4-mini";
import { Result as SafeParseResult } from "../../types/fp.js";
import { SDKValidationError } from "../errors/sdkvalidationerror.js";
import { MetadataOutputType } from "./metadataoutputtype.js";
import { ProductVisibility } from "./productvisibility.js";
import { RecurringInterval } from "./recurringinterval.js";
import { TrialInterval } from "./trialinterval.js";
/**
 * A product that a discount can be applied to.
 */
export type DiscountProduct = {
    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;
};
/** @internal */
export declare const DiscountProduct$inboundSchema: z.ZodMiniType<DiscountProduct, unknown>;
export declare function discountProductFromJSON(jsonString: string): SafeParseResult<DiscountProduct, SDKValidationError>;
//# sourceMappingURL=discountproduct.d.ts.map