/**
 * 
 */
package at.gv.egiz.pdfas.api.sign;

import java.security.cert.X509Certificate;
import java.util.List;

import at.gv.egiz.pdfas.api.analyze.NonTextObjectInfo;
import at.gv.egiz.pdfas.api.io.DataSink;
import at.gv.egiz.pdfas.api.sign.pos.SignaturePosition;

/**
 * The result of a sign operation.
 * 
 * @author wprinz
 */
public interface SignResult
{

  /**
   * Returns the filled output data sink.
   * 
   * @return Returns the filled output data sink.
   */
  public DataSink getOutputDocument();

  /**
   * Returns the certificate of the signer.
   * 
   * @return Returns the certificate of the signer.
   */
  public X509Certificate getSignerCertificate();

  /**
   * Returns the position where the signature is finally placed.
   * 
   * <p>
   * This information can be useful for post-processing the document.
   * </p>
   * 
   * <p>
   * Consult the PDF-AS documentation section Commandline for further
   * information about positioning.
   * </p>
   * 
   * @return Returns the position where the signature is finally placed. May
   *         return null if no position information is available.
   */
  public SignaturePosition getSignaturePosition();
  
  /**
   * Returns a list<{@link NonTextObjectInfo} of non textual objects in the pdf document.
   * Only available for textual signatures. Show this to the user who signed the textual content only! 
   * @return  List<{@link NonTextObjectInfo} or <tt>null</tt> of not available (binary signature)
   */
  public List getNonTextualObjects();
  
  /**
   * Returns if pdf has non textual objects (only for textual signature available).
   * @return
   */
  public boolean hasNonTextualObjects();
}