import { Client } from "@vulog/aima-client";

//#region src/types.d.ts
type ProductGroup = {
  id: string;
  name: string;
  status: 'ACTIVE' | 'INACTIVE';
};
type PromoCodeUsage = {
  id: number;
  walletUsage: 'TRIP' | 'PRODUCTS';
  discountCategory: 'CREDITS';
  percentage: number;
  amount: number;
  cappedPercentage: null;
  isOneTimeUsage: boolean;
  productGroup?: ProductGroup | null;
};
type PromoCode = {
  reference: string;
  walletType: string;
  status: 'ACTIVE' | 'INACTIVE';
  validityDuration: number;
  effectiveDate: string;
  expiryDate: string;
  validityEndDate: string;
  description?: string;
  id: number;
  fleetId: string;
  registration: boolean;
  maxUses: number;
  usages: PromoCodeUsage[];
  [key: string]: any;
};
type ReferralInfo = {
  referralUserId: string;
  referralCode: string;
  referralPromocodeId: number;
  refereePromocodeId: number;
};
//#endregion
//#region src/checkInvitationCode.d.ts
declare const checkInvitationCode: (client: Client, referralCode: string) => Promise<ReferralInfo | undefined>;
//#endregion
//#region src/getPromoCode.d.ts
declare const getPromoCodeByReference: (client: Client, reference: string) => Promise<PromoCode | undefined>;
declare const getPromoCodeById: (client: Client, id: number) => Promise<PromoCode | undefined>;
//#endregion
//#region src/submitPromoCode.d.ts
declare const submitPromoCode: (client: Client, userId: string, entityId: string, code: string) => Promise<string>;
//#endregion
//#region src/submitReferral.d.ts
declare const submitReferral: (client: Client, userId: string, entityId: string, code: string) => Promise<void>;
//#endregion
export { ProductGroup, PromoCode, PromoCodeUsage, ReferralInfo, checkInvitationCode, getPromoCodeById, getPromoCodeByReference, submitPromoCode, submitReferral };