import Location from './Location';
import { TransactionData } from '../types';
/**
 * Abstract class for transaction
 *
 * @abstract
 *
 * @property {string} pk - Primary key of the transaction
 * @property {string} status - Status of the transaction
 * @property {string} type - Type of the transaction
 * @property {number} amount - Amount of the transaction
 * @property {number} fees - Fees of the transaction
 * @property {string} bParty - B party of the transaction
 * @property {string} message - Message of the transaction
 * @property {string} service - Service of the transaction
 * @property {string} reference - Reference of the transaction
 * @property {Date} date - Date of the transaction
 * @property {string} country - Country of the transaction
 * @property {string} currency - Currency of the transaction
 * @property {string} finTrxId - Financial transaction ID of the transaction
 * @property {number} trxamount - Total transaction amount
 * @property {Location} location - Location of the transaction
 */
export declare abstract class ATransaction {
    private readonly data;
    pk: string;
    status: string;
    type: string;
    amount: number;
    fees: number;
    bParty: string;
    message: string;
    service: string;
    reference?: string;
    date: Date;
    country: string;
    currency: string;
    finTrxId: string;
    trxamount?: number;
    location?: Location;
    constructor(data: Omit<TransactionData, 'customer'>);
    /**
     * Check if transaction is success
     *
     * @return {boolean}
     */
    isSuccess(): boolean;
    /**
     * Check if transaction is pending
     *
     * @return {boolean}
     */
    isPending(): boolean;
    /**
     * Check if transaction is failed
     *
     * @return {boolean}
     */
    isFailed(): boolean;
    /**
     * @return {Record<string, any>} - data go from the server
     */
    getData(): Record<string, any>;
}
