import * as z from "zod/v4-mini";
import { DiscountDuration } from "./discountduration.js";
import { DiscountType } from "./discounttype.js";
import { PresentmentCurrency } from "./presentmentcurrency.js";
export type DiscountUpdateMetadata = string | number | number | boolean;
/**
 * Schema to update a discount.
 */
export type DiscountUpdate = {
    /**
     * 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;
    name?: string | null | undefined;
    /**
     * Code customers can use to apply the discount during checkout. Must be between 3 and 256 characters long and contain only alphanumeric characters.If not provided, the discount can only be applied via the API.
     */
    code?: string | null | undefined;
    /**
     * Optional timestamp after which the discount is redeemable.
     */
    startsAt?: Date | null | undefined;
    /**
     * Optional timestamp after which the discount is no longer redeemable.
     */
    endsAt?: Date | null | undefined;
    /**
     * Optional maximum number of times the discount can be redeemed.
     */
    maxRedemptions?: number | null | undefined;
    duration?: DiscountDuration | null | undefined;
    durationInMonths?: number | null | undefined;
    type?: DiscountType | null | undefined;
    /**
     * @deprecated field: This will be removed in a future release, please migrate away from it as soon as possible.
     */
    amount?: number | null | undefined;
    /**
     * @deprecated field: This will be removed in a future release, please migrate away from it as soon as possible.
     */
    currency?: PresentmentCurrency | null | undefined;
    amounts?: {
        [k: string]: number;
    } | null | undefined;
    basisPoints?: number | null | undefined;
    products?: Array<string> | null | undefined;
};
/** @internal */
export type DiscountUpdateMetadata$Outbound = string | number | number | boolean;
/** @internal */
export declare const DiscountUpdateMetadata$outboundSchema: z.ZodMiniType<DiscountUpdateMetadata$Outbound, DiscountUpdateMetadata>;
export declare function discountUpdateMetadataToJSON(discountUpdateMetadata: DiscountUpdateMetadata): string;
/** @internal */
export type DiscountUpdate$Outbound = {
    metadata?: {
        [k: string]: string | number | number | boolean;
    } | undefined;
    name?: string | null | undefined;
    code?: string | null | undefined;
    starts_at?: string | null | undefined;
    ends_at?: string | null | undefined;
    max_redemptions?: number | null | undefined;
    duration?: string | null | undefined;
    duration_in_months?: number | null | undefined;
    type?: string | null | undefined;
    amount?: number | null | undefined;
    currency?: string | null | undefined;
    amounts?: {
        [k: string]: number;
    } | null | undefined;
    basis_points?: number | null | undefined;
    products?: Array<string> | null | undefined;
};
/** @internal */
export declare const DiscountUpdate$outboundSchema: z.ZodMiniType<DiscountUpdate$Outbound, DiscountUpdate>;
export declare function discountUpdateToJSON(discountUpdate: DiscountUpdate): string;
//# sourceMappingURL=discountupdate.d.ts.map