import { PerxBaseInvoiceItem, PerxInvoiceItemType } from './Invoice'; export declare type PerxTransactionRequestDataType = 'purchase' | 'purchase-fix' | 'revert-purchase-fix' | 'purchase-overall'; /** * You may override this class to create your own Custom Transaction Representation. */ export declare class PerxTransactionRequestData { transactionType: PerxTransactionRequestDataType; transactionReference: string; amount: number; currency: string; transactionDate: Date; properties: Record; constructor(amount: number, currency: string, transactionReference: string, transactionType?: PerxTransactionRequestDataType, properties?: Record, transactionDate?: Date); } export declare class PerxTransactionReqeust { userAccountId: string; transactionData: PerxTransactionRequestData; constructor(userAccountId: string, transactionData: PerxTransactionRequestData); /** * Make a valid transaction request object * * @param userAccountId * @param amount * @param currency * @param transactionReference * @param properties */ static makePurchase(userAccountId: string, amount: number, currency: string, transactionReference: string, properties?: Record): PerxTransactionReqeust; /** * Make custom transaction with custom transactionType. * * @param transactionType * @param userAccountId * @param amount * @param currency * @param transactionReference * @param properties * @param transactionDate * @returns */ static makeCustomTransaction(transactionType: PerxTransactionRequestDataType, userAccountId: string, amount: number, currency: string, transactionReference: string, properties: Record | undefined, transactionDate: Date): PerxTransactionReqeust; } export interface PerxRawUserAccountId { type: 'id'; id: number; } export interface PerxRawUserAccountIdentifier { type: 'identifier'; identifier: string; } export declare type PerxRawUserAccount = PerxRawUserAccountId | PerxRawUserAccountIdentifier; export declare class PerxLoyaltyTransactionRequestUserAccount { identifier?: string; id?: number; constructor(userAccount: PerxRawUserAccount); } export declare class PerxLoyaltyTransactionReservationRequest { userAccount: PerxLoyaltyTransactionRequestUserAccount; points: number; loyaltyProgramId: number; constructor(userAccount: PerxLoyaltyTransactionRequestUserAccount, loyaltyProgramId: number, points: number); } export declare class PerxLoyaltyTransactionRequest { userAccount: PerxLoyaltyTransactionRequestUserAccount; properties: Record; points: number; loyaltyProgramId: number; transactionReference: string | null; /** * Transaction Type is not required. */ transactionType: string | undefined; constructor(userAccount: PerxLoyaltyTransactionRequestUserAccount, loyaltyProgramId: number, points: number, transactionReference?: string | null, properties?: Record); withTransactionType(transactionType: string | undefined): PerxLoyaltyTransactionRequest; static makeBurnRequest(userAccount: PerxRawUserAccount, loyaltyProgramId: number, pointsToBurn: number, transactionReference?: string | null, properties?: Record): PerxLoyaltyTransactionRequest; static makeEarnRequest(userAccount: PerxRawUserAccount, loyaltyProgramId: number, pointsToEarn: number, transactionReference?: string | null, properties?: Record): PerxLoyaltyTransactionRequest; } export declare class PerxInvoiceRequestUsedItem extends PerxBaseInvoiceItem { constructor(itemType: PerxInvoiceItemType, itemId: number); static points(perxLoyaltyTransactionId: number): PerxInvoiceRequestUsedItem; static reward(tempRewardVoucherId: number): PerxInvoiceRequestUsedItem; } /** * Raw representation of Invoice Transactions' Data * * Special parameter: * * `appliedVouchers: string[]` will be stored into properties automatically as comma separated value * `appliedPoints: string` will be stored into properties automatically as string */ export declare type PerxInvoiceRequestTransactionDataRaw = { transactionType: PerxTransactionRequestDataType; properties: Record; transactionReference: string; currency: string; appliedVouchers: (number | string)[]; appliedPoints: (number | string); }; /** * Override this class to customize your own payload! */ export declare class PerxInvoiceRequestTransactionData { transactionType: PerxTransactionRequestDataType; amount: number; transactionReference: string | undefined; currency: string | undefined; merchantIdentifier: string; properties: Partial>; constructor(amount: number, merchantIdentifier: string, data: Partial); } /** * Use this class to create the invoice creation * * required: * - userAccount * * Usage * * ```ts * const req = new PerxInvoiceRequest({ type: 'id', id: 253 }) * .addTransactions( * new PerxInvoiceRequestTransactionData(10000, 69, { * appliedVouchers: [3843], * appliedPoints: 20, * properties: { * merchant_identifier: '123', * merchant_categories: 'ABC', * merchant_tags: 'luxury', * } * }), * new PerxInvoiceRequestTransactionData(50000, 291, { * appliedPoints: 80, * properties: { * merchant_identifier: '123456', * merchant_categories: 'ABC', * merchant_tags: 'luxury', * } * }), * ) * .usedItems( * PerxInvoiceRequestUsedItem.points(3630), // loyalty reservation id * PerxInvoiceRequestUsedItem.reward(3843), // perx voucher id issued by reward's reservation api. * ) * ``` */ export declare class PerxInvoiceRequest { userAccount: PerxLoyaltyTransactionRequestUserAccount; transactionData: PerxInvoiceRequestTransactionData[]; usedItems: PerxInvoiceRequestUsedItem[]; constructor(userAccount: PerxLoyaltyTransactionRequestUserAccount | PerxRawUserAccount); addTransactions(...transactionData: PerxInvoiceRequestTransactionData[]): this; used(...items: PerxInvoiceRequestUsedItem[]): this; }