from __future__ import annotations
from typing import Any, Protocol, runtime_checkable
from com.sun.star.uno import XInterface

@runtime_checkable
class XDocumentDigitalSignatures(XInterface, Protocol):
    def signSignatureLine(self, xStorage: XStorage, xSignStream: XStream, signatureLineId: str, xCertificate: XCertificate, xValidGraphic: XGraphic, xInvalidGraphic: XGraphic, comment: str) -> bool: ...
    def verifyDocumentContentSignatures(self, xStorage: XStorage, xSignInStream: XInputStream) -> list[DocumentSignatureInformation]: ...
    def showDocumentContentSignatures(self, xStorage: XStorage, xSignInStream: XInputStream) -> None: ...
    def getDocumentContentSignatureDefaultStreamName(self) -> str: ...
    def verifyScriptingContentSignatures(self, xStorage: XStorage, xSignInStream: XInputStream) -> list[DocumentSignatureInformation]: ...
    def showScriptingContentSignatures(self, xStorage: XStorage, xSignInStream: XInputStream) -> None: ...
    def getScriptingContentSignatureDefaultStreamName(self) -> str: ...
    def showCertificate(self, Certificate: XCertificate) -> None: ...
    def manageTrustedSources(self) -> None: ...
    def isAuthorTrusted(self, Author: XCertificate) -> bool: ...
    def isLocationTrusted(self, Location: str) -> bool: ...
    def addAuthorToTrustedSources(self, Author: XCertificate) -> None: ...
    def addLocationToTrustedSources(self, Location: str) -> None: ...
    def chooseCertificate(self, Description: str) -> XCertificate: ...
    def chooseSigningCertificate(self, Description: str) -> XCertificate: ...
    def selectSigningCertificate(self, Description: str) -> XCertificate: ...
    def selectSigningCertificateWithType(self, certificateKind: CertificateKind, Description: str) -> XCertificate: ...
    def chooseEncryptionCertificate(self, certificateKind: CertificateKind) -> list[XCertificate]: ...
    def chooseCertificateWithProps(self, Properties: PropertyValue>) -> XCertificate: ...
    def signDocumentWithCertificate(self, xCertificate: XCertificate, xStorage: XStorage, xStream: XStream) -> bool: ...
    def setParentWindow(self, xParentWindow: XWindow) -> None: ...
    def signScriptingContentWithCertificate(self, xCertificate: XCertificate, xStorage: XStorage, xStream: XStream) -> bool: ...
    def trustUntrustedCertificate(self, xCertificate: XCertificate) -> bool: ...
