package network.thunder.core.database; import network.thunder.core.communication.objects.messages.impl.message.gossip.objects.ChannelStatusObject; import network.thunder.core.communication.objects.messages.impl.message.gossip.objects.P2PDataObject; import network.thunder.core.communication.objects.messages.impl.message.gossip.objects.PubkeyIPObject; import network.thunder.core.communication.objects.subobjects.PaymentSecret; import network.thunder.core.database.objects.Channel; import network.thunder.core.database.objects.PaymentWrapper; import network.thunder.core.lightning.RevocationHash; import java.util.List; /** * Created by matsjerratsch on 30/11/2015. */ public interface DBHandler { //Syncing / Gossiping List<P2PDataObject> getSyncDataByFragmentIndex (int fragmentIndex); List<P2PDataObject> getSyncDataIPObjects (); void insertIPObjects (List<P2PDataObject> ipList); List<PubkeyIPObject> getIPObjects (); P2PDataObject getP2PDataObjectByHash (byte[] hash); PubkeyIPObject getIPObject (byte[] nodeKey); void syncDatalist (List<P2PDataObject> dataList); //Channels void insertRevocationHash (RevocationHash hash); RevocationHash createRevocationHash (Channel channel); List<RevocationHash> getOldRevocationHashes (Channel channel); boolean checkOldRevocationHashes (List<RevocationHash> revocationHashList); Channel getChannel (byte[] nodeKey); void saveChannel (Channel channel); void updateChannel (Channel channel); List<Channel> getOpenChannel (); List<PubkeyIPObject> getIPObjectsWithActiveChannel (); List<ChannelStatusObject> getTopology (); //Payments byte[] getSenderOfPayment (PaymentSecret paymentSecret); byte[] getReceiverOfPayment (PaymentSecret paymentSecret); void addPayment (PaymentWrapper paymentWrapper); void updatePayment (PaymentWrapper paymentWrapper); void updatePaymentSender (PaymentWrapper paymentWrapper); void updatePaymentReceiver (PaymentWrapper paymentWrapper); void updatePaymentAddReceiverAddress (PaymentSecret secret, byte[] receiver); PaymentWrapper getPayment (PaymentSecret paymentSecret); void addPaymentSecret (PaymentSecret secret); PaymentSecret getPaymentSecret (PaymentSecret secret); //GUI List<PaymentWrapper> getAllPayments (); List<PaymentWrapper> getOpenPayments (); List<PaymentWrapper> getRefundedPayments (); List<PaymentWrapper> getRedeemedPayments (); }