/* * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. */ import { couponsCreateCoupon } from "../funcs/coupons-create-coupon.js"; import { couponsDeleteCoupon } from "../funcs/coupons-delete-coupon.js"; import { couponsGetCouponByCode } from "../funcs/coupons-get-coupon-by-code.js"; import { couponsGetCoupon } from "../funcs/coupons-get-coupon.js"; import { couponsQueryCoupon } from "../funcs/coupons-query-coupon.js"; import { couponsUpdateCoupon } from "../funcs/coupons-update-coupon.js"; import { ClientSDK, RequestOptions } from "../lib/sdks.js"; import { unwrapAsync } from "../types/fp.js"; import * as models from "./models/index.js"; export class Coupons extends ClientSDK { /** * Create coupon * * @remarks * Use when creating a discount (e.g. promo code or referral). Ideal for percent or fixed value, with optional validity and usage limits. */ async createCoupon( request: models.CreateCouponRequest, options?: RequestOptions, ): Promise { return unwrapAsync(couponsCreateCoupon( this, request, options, )); } /** * Get coupon by code * * @remarks * Use when resolving a coupon by promo code (e.g. checkout or validation). */ async getCouponByCode( code: string, options?: RequestOptions, ): Promise { return unwrapAsync(couponsGetCouponByCode( this, code, options, )); } /** * Query coupons * * @remarks * Use when listing or searching coupons (e.g. promo management). Returns a paginated list; supports filtering and sorting. */ async queryCoupon( request: models.CouponFilter, options?: RequestOptions, ): Promise { return unwrapAsync(couponsQueryCoupon( this, request, options, )); } /** * Get coupon * * @remarks * Use when you need to load a single coupon (e.g. for display or to validate a code). */ async getCoupon( id: string, options?: RequestOptions, ): Promise { return unwrapAsync(couponsGetCoupon( this, id, options, )); } /** * Update coupon * * @remarks * Use when changing coupon config (e.g. value, validity, or usage limits). */ async updateCoupon( id: string, body: models.UpdateCouponRequest, options?: RequestOptions, ): Promise { return unwrapAsync(couponsUpdateCoupon( this, id, body, options, )); } /** * Delete coupon * * @remarks * Use when retiring a coupon (e.g. campaign ended). Returns 200 with success message. */ async deleteCoupon( id: string, options?: RequestOptions, ): Promise<{ [k: string]: string }> { return unwrapAsync(couponsDeleteCoupon( this, id, options, )); } }