import { W3cJsonPresentation } from "../vc/models/presentation/W3cJsonPresentation.js";
import { W3cJwtVerifiablePresentation } from "../vc/jwt-vc/W3cJwtVerifiablePresentation.js";
import { MdocSessionTranscriptOptions } from "../mdoc/MdocOptions.js";
import { SdJwtVcHeader, SdJwtVcPayload } from "../sd-jwt-vc/SdJwtVcOptions.js";
import { SdJwtVc } from "../sd-jwt-vc/SdJwtVcService.js";
import { W3cJsonLdVerifiablePresentation } from "../vc/data-integrity/models/W3cJsonLdVerifiablePresentation.js";
import { W3cCredentialService } from "../vc/W3cCredentialService.js";
import { MdocDeviceResponse } from "../mdoc/MdocDeviceResponse.js";
import { DifPexCredentialsForRequest, DifPexInputDescriptorToCredentials } from "./models/DifPexCredentialsForRequest.js";
import { DifPresentationExchangeDefinition, DifPresentationExchangeSubmission, PresentationSubmissionLocation, VerifiablePresentation } from "./models/index.js";
import { AgentContext } from "../../agent/context/AgentContext.js";
import * as _sphereon_pex_models0 from "@sphereon/pex-models";

//#region src/modules/dif-presentation-exchange/DifPresentationExchangeService.d.ts
/**
 * @todo create a public api for using dif presentation exchange
 */
declare class DifPresentationExchangeService {
  private w3cCredentialService;
  private pex;
  constructor(w3cCredentialService: W3cCredentialService);
  getCredentialsForRequest(agentContext: AgentContext, presentationDefinition: DifPresentationExchangeDefinition): Promise<DifPexCredentialsForRequest>;
  /**
   * Selects the credentials to use based on the output from `getCredentialsForRequest`
   * Use this method if you don't want to manually select the credentials yourself.
   */
  selectCredentialsForRequest(credentialsForRequest: DifPexCredentialsForRequest): DifPexInputDescriptorToCredentials;
  validatePresentationDefinition(presentationDefinition: DifPresentationExchangeDefinition): void;
  validatePresentationSubmission(presentationSubmission: DifPresentationExchangeSubmission): void;
  validatePresentation(presentationDefinition: DifPresentationExchangeDefinition, presentations: VerifiablePresentation | VerifiablePresentation[], presentationSubmission?: DifPresentationExchangeSubmission): void;
  private formatValidated;
  createPresentation(agentContext: AgentContext, options: {
    credentialsForInputDescriptor: DifPexInputDescriptorToCredentials;
    presentationDefinition: DifPresentationExchangeDefinition;
    /**
     * Defaults to {@link DifPresentationExchangeSubmissionLocation.PRESENTATION}
     */
    presentationSubmissionLocation?: PresentationSubmissionLocation;
    /**
     * Also known as `nonce`
     */
    challenge: string;
    /**
     * Also known as `audience`
     */
    domain?: string;
    /**
     * Mdoc openid4vp specific options
     */
    mdocSessionTranscript?: MdocSessionTranscriptOptions;
  }): Promise<{
    verifiablePresentations: (W3cJwtVerifiablePresentation | W3cJsonLdVerifiablePresentation | SdJwtVc<SdJwtVcHeader, SdJwtVcPayload> | MdocDeviceResponse)[];
    encodedVerifiablePresentations: (string | W3cJsonPresentation)[];
    presentationSubmission: _sphereon_pex_models0.PresentationSubmission;
    presentationSubmissionLocation: PresentationSubmissionLocation;
  }>;
  private getSigningAlgorithmFromVerificationMethod;
  private getSigningAlgorithmsForPresentationDefinitionAndInputDescriptors;
  private getSigningAlgorithmForJwtVc;
  private getProofTypeForLdpVc;
  /**
   * if all submission descriptors have a format of di | ldp,
   * and all credentials have an ANONCREDS_DATA_INTEGRITY proof we default to
   * signing the presentation using the ANONCREDS_DATA_INTEGRITY_CRYPTOSUITE
   */
  private shouldSignUsingAnonCredsDataIntegrity;
  private getPresentationSignCallback;
  private getVerificationMethodForSubjectId;
  /**
   * Queries the wallet for credentials that match the given presentation definition. This only does an initial query based on the
   * schema of the input descriptors. It does not do any further filtering based on the constraints in the input descriptors.
   */
  private queryCredentialForPresentationDefinition;
  private getSdJwtVcApi;
  private getMdocApi;
}
//#endregion
export { DifPresentationExchangeService };
//# sourceMappingURL=DifPresentationExchangeService.d.ts.map