package org.jpos.tcpay.service;

import org.jpos.iso.ISOMsg;
import org.jpos.tcpay.db.entity.AcquirerTerminal;
import org.jpos.tcpay.db.entity.PosTempTransaction;
import org.jpos.tcpay.db.entity.PosTerminal;

public interface TransactionLifeCycle {

    public PosTempTransaction startTransaction(ISOMsg jposRequest, PosTerminal posTerminal, AcquirerTerminal acquirerTerminal);


    boolean completeTransaction(PosTempTransaction tempTransaction, ISOMsg AcqResponse);

    void cleanupTransaction(PosTempTransaction tempTransaction, String errorMessage);

    void handleResponseTimeout(PosTempTransaction tempTransaction);

    void handleConnectionLoss(PosTempTransaction tempTransaction);

    void handleDatabaseError(PosTempTransaction tempTransaction, Exception dbError);

}
