import { TransactionBaseService } from "./transaction-base-service"; import { Address, Cart, Customer, Payment, PaymentSession, PaymentSessionStatus, ShippingMethod } from "../models"; export type Data = Record; export type PaymentData = Data; export type PaymentSessionData = Data; export type PaymentContext = { cart: { context: Record; id: string; email: string; shipping_address: Address | null; shipping_methods: ShippingMethod[]; billing_address?: Address | null; }; currency_code: string; amount: number; resource_id: string; customer?: Customer; paymentSessionData: Record; }; export type PaymentSessionResponse = { update_requests: { customer_metadata: Record; }; session_data: Record; }; /** * This will be @deprecated in the near future use the new PaymentProcessor interface instead */ export interface PaymentService extends TransactionBaseService { getIdentifier(): string; /** * This will be @deprecated in the near future use PaymentProcessor.retrievePayment instead * @param paymentSession */ getPaymentData(paymentSession: PaymentSession): Promise; /** * This will be @deprecated in the near future use PaymentProcessor.updatePayment instead * @param paymentSessionData * @param data */ updatePaymentData(paymentSessionData: PaymentSessionData, data: Data): Promise; /** * This will be @deprecated in the near future use PaymentProcessor.initiatePayment instead * @param context The type of this argument is meant to be temporary and once the previous method signature * will be removed, the type will only be PaymentContext instead of Cart & PaymentContext */ createPayment(context: Cart & PaymentContext): Promise; /** * This will be @deprecated in the near future use createPayment(context: Cart & PaymentContext): Promise instead * @param cart */ createPayment(cart: Cart): Promise; /** * This will be @deprecated in the near future use PaymentProcessor.retrievePayment instead * @param paymentData */ retrievePayment(paymentData: PaymentData): Promise; updatePayment(paymentSessionData: PaymentSessionData, context: Cart & PaymentContext): Promise; /** * This will be @deprecated in the near future use PaymentProcessor.updatePayment instead * @param paymentSessionData * @param cart */ updatePayment(paymentSessionData: PaymentSessionData, cart: Cart): Promise; /** * This will be @deprecated in the near future use PaymentProcessor.authorizePayment instead * @param paymentSession * @param context */ authorizePayment(paymentSession: PaymentSession, context: Data): Promise<{ data: PaymentSessionData; status: PaymentSessionStatus; }>; /** * This will be @deprecated in the near future use PaymentProcessor.capturePayment instead * @param payment */ capturePayment(payment: Payment): Promise; /** * This will be @deprecated in the near future use PaymentProcessor.refundPayment instead * @param payment * @param refundAmount */ refundPayment(payment: Payment, refundAmount: number): Promise; /** * This will be @deprecated in the near future use PaymentProcessor.cancelPayment instead * @param payment */ cancelPayment(payment: Payment): Promise; /** * This will be @deprecated in the near future use PaymentProcessor.cancelPayment instead * @param paymentSession */ deletePayment(paymentSession: PaymentSession): Promise; /** * This will be @deprecated in the near future use PaymentProcessor.getSavedMethods instead * @param customer */ retrieveSavedMethods(customer: Customer): Promise; /** * This will be @deprecated in the near future use PaymentProcessor.getPaymentStatus instead * @param data */ getStatus(data: Data): Promise; } /** * This will be @deprecated in the near future use the AbstractPaymentProcessor instead */ export declare abstract class AbstractPaymentService extends TransactionBaseService implements PaymentService { protected constructor(container: unknown, config?: Record); static identifier: string; getIdentifier(): string; /** * @deprecated */ abstract getPaymentData(paymentSession: PaymentSession): Promise; /** * @deprecated */ abstract updatePaymentData(paymentSessionData: PaymentSessionData, data: Data): Promise; /** * @param context The type of this argument is meant to be temporary and once the previous method signature * will be removed, the type will only be PaymentContext instead of Cart & PaymentContext */ abstract createPayment(context: Cart & PaymentContext): Promise; /** * This will be @deprecated in the near future use createPayment(context: Cart & PaymentContext): Promise instead * @param cart */ abstract createPayment(cart: Cart): Promise; /** * @deprecated */ abstract retrievePayment(paymentData: PaymentData): Promise; /** * @param paymentSessionData * @param context The type of this argument is meant to be temporary and once the previous method signature * will be removed, the type will only be PaymentContext instead of Cart & PaymentContext * @return it return either a PaymentSessionResponse or PaymentSessionResponse["session_data"] to maintain backward compatibility */ abstract updatePayment(paymentSessionData: PaymentSessionData, context: Cart & PaymentContext): Promise; /** * This will be @deprecated in the near future use updatePayment(paymentSessionData: PaymentSessionData, context: Cart & PaymentContext): Promise instead * @param paymentSessionData * @param cart */ abstract updatePayment(paymentSessionData: PaymentSessionData, cart: Cart): Promise; /** * @deprecated */ abstract authorizePayment(paymentSession: PaymentSession, context: Data): Promise<{ data: PaymentSessionData; status: PaymentSessionStatus; }>; /** * This will be @deprecated in the near future */ abstract capturePayment(payment: Payment): Promise; /** * This will be @deprecated in the near future */ abstract refundPayment(payment: Payment, refundAmount: number): Promise; /** * This will be @deprecated in the near future */ abstract cancelPayment(payment: Payment): Promise; /** * This will be @deprecated in the near future */ abstract deletePayment(paymentSession: PaymentSession): Promise; /** * This will be @deprecated in the near future */ retrieveSavedMethods(customer: Customer): Promise; /** * This will be @deprecated in the near future */ abstract getStatus(data: Data): Promise; } /** * Return if the input object is one of AbstractPaymentService or PaymentService or AbstractPaymentPluginService * @param obj */ export declare function isPaymentService(obj: unknown): boolean;