/*
 * Decompiled with CFR 0.152.
 * 
 * Could not load the following classes:
 *  com.l7tech.common.io.DigestZipOutputStream
 *  com.l7tech.objectmodel.Goid
 *  org.hibernate.HibernateException
 *  org.springframework.transaction.annotation.Propagation
 *  org.springframework.transaction.annotation.Transactional
 */
package com.l7tech.server.audit;

import com.l7tech.common.io.DigestZipOutputStream;
import com.l7tech.objectmodel.Goid;
import java.io.IOException;
import java.io.OutputStream;
import java.security.PrivateKey;
import java.security.SignatureException;
import java.security.cert.X509Certificate;
import java.sql.SQLException;
import org.hibernate.HibernateException;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

public interface AuditExporter {
    @Transactional(propagation=Propagation.SUPPORTS)
    public long getHighestTime();

    @Transactional(propagation=Propagation.SUPPORTS)
    public long getNumExportedSoFar();

    @Transactional(propagation=Propagation.SUPPORTS)
    public long getApproxNumToExport();

    @Transactional(propagation=Propagation.REQUIRED, readOnly=true)
    public void exportAuditsAsZipFile(long var1, long var3, Goid[] var5, OutputStream var6, X509Certificate var7, PrivateKey var8) throws IOException, SQLException, HibernateException, SignatureException, InterruptedException;

    public DigestZipOutputStream newAuditExportOutputStream(OutputStream var1) throws IOException;

    @Transactional(propagation=Propagation.REQUIRED, readOnly=true)
    public ExportedInfo exportAudits(long var1, long var3, DigestZipOutputStream var5, long var6, ExportedInfo var8) throws IOException, SQLException, InterruptedException;

    public void addXmlSignature(DigestZipOutputStream var1, ExportedInfo var2, X509Certificate var3, PrivateKey var4) throws SignatureException;

    public static interface ExportedInfo {
        public long getEarliestTime();

        public long getLatestTime();

        public boolean hasTransferredFullRange();

        public long getTransferredBytes();

        public long getReceivedBytes();

        public long getRecordsExported();

        public long getExportStartTime();

        public long getExportEndTime();
    }
}

