package com.airlock.iam.ssi.domain.service;

import com.airlock.iam.base.api.domain.model.plugin.LogicForConfig;
import com.airlock.iam.base.misc.result.Result;
import com.airlock.iam.ssi.application.configuration.SsiServiceConfig;
import com.airlock.iam.ssi.domain.model.SsiIssuanceSession;
import com.airlock.iam.ssi.domain.model.SsiPollingStatus;
import com.airlock.iam.ssi.domain.model.SsiVerificationSession;
import com.airlock.iam.ssi.domain.model.SsiVerifiedData;
import com.airlock.iam.ssi.domain.model.step.CredentialSchema;
import com.airlock.iam.ssi.domain.model.step.ProofRequestParameters;
import java.util.Map;
import java.util.Optional;

@LogicForConfig(SsiServiceConfig.class)
public interface SsiService {
   Optional<SsiVerificationSession> initiateProofRequest(ProofRequestParameters var1);

   Result<SsiVerifiedData, SsiPollingStatus> pollProofStatus(SsiVerificationSession var1, ProofRequestParameters var2);

   Optional<SsiIssuanceSession> issueCredential(CredentialSchema var1, Map<String, String> var2);

   SsiPollingStatus pollIssuanceStatus(SsiIssuanceSession var1);
}
