import { TransactionBaseService } from "./transaction-base-service"; import { Cart, Customer, Payment, PaymentSession, PaymentSessionStatus } from "../models"; import { PaymentProviderDataInput } from "../types/payment-collection"; export declare type Data = Record; export declare type PaymentData = Data; export declare type PaymentSessionData = Data; export interface PaymentService extends TransactionBaseService { getIdentifier(): string; getPaymentData(paymentSession: PaymentSession): Promise; updatePaymentData(paymentSessionData: PaymentSessionData, data: Data): Promise; createPayment(cart: Cart): Promise; retrievePayment(paymentData: PaymentData): Promise; updatePayment(paymentSessionData: PaymentSessionData, cart: Cart): Promise; authorizePayment(paymentSession: PaymentSession, context: Data): Promise<{ data: PaymentSessionData; status: PaymentSessionStatus; }>; capturePayment(payment: Payment): Promise; refundPayment(payment: Payment, refundAmount: number): Promise; cancelPayment(payment: Payment): Promise; deletePayment(paymentSession: PaymentSession): Promise; retrieveSavedMethods(customer: Customer): Promise; getStatus(data: Data): Promise; } export declare abstract class AbstractPaymentService extends TransactionBaseService implements PaymentService { protected constructor(container: unknown, config?: Record); protected static identifier: string; getIdentifier(): string; abstract getPaymentData(paymentSession: PaymentSession): Promise; abstract updatePaymentData(paymentSessionData: PaymentSessionData, data: Data): Promise; abstract createPayment(cart: Cart): Promise; abstract createPaymentNew(paymentInput: PaymentProviderDataInput): Promise; abstract retrievePayment(paymentData: PaymentData): Promise; abstract updatePayment(paymentSessionData: PaymentSessionData, cart: Cart): Promise; abstract updatePaymentNew(paymentSessionData: PaymentSessionData, paymentInput: PaymentProviderDataInput): Promise; abstract authorizePayment(paymentSession: PaymentSession, context: Data): Promise<{ data: PaymentSessionData; status: PaymentSessionStatus; }>; abstract capturePayment(payment: Payment): Promise; abstract refundPayment(payment: Payment, refundAmount: number): Promise; abstract cancelPayment(payment: Payment): Promise; abstract deletePayment(paymentSession: PaymentSession): Promise; retrieveSavedMethods(customer: Customer): Promise; abstract getStatus(data: Data): Promise; } export declare function isPaymentService(obj: unknown): boolean;