import { ClaimFormat } from "../../vc/models/ClaimFormat.js";
import { SdJwtVcRecord } from "../../sd-jwt-vc/repository/SdJwtVcRecord.js";
import { W3cCredentialRecord } from "../../vc/repository/W3cCredentialRecord.js";
import { W3cV2CredentialRecord } from "../../vc/repository/W3cV2CredentialRecord.js";
import { MdocRecord } from "../../mdoc/repository/MdocRecord.js";
import { JsonObject } from "../../../types.js";
import { DcqlCredentialsForRequest } from "../models/DcqlCredentialsForRequest.js";
import { DcqlMdocCredential, DcqlSdJwtVcCredential, DcqlW3cVcCredential } from "dcql";

//#region src/modules/dcql/utils/DcqlPresentationsToCreate.d.ts
interface DcqlSdJwtVcPresentationToCreate {
  claimFormat: ClaimFormat.SdJwtDc;
  subjectIds: [];
  credentialRecord: SdJwtVcRecord;
  disclosedPayload: DcqlSdJwtVcCredential.Claims;
  /**
   * Additional payload to include in the Key Binding JWT
   */
  additionalPayload?: JsonObject;
}
interface DcqlJwtVpPresentationToCreate {
  claimFormat: ClaimFormat.JwtVp;
  subjectIds: [string];
  credentialRecord: W3cCredentialRecord;
  disclosedPayload: DcqlW3cVcCredential.Claims;
}
interface DcqlLdpVpPresentationToCreate {
  claimFormat: ClaimFormat.LdpVp;
  subjectIds: undefined | [string];
  credentialRecord: W3cCredentialRecord;
  disclosedPayload: DcqlW3cVcCredential.Claims;
}
interface DcqlMdocPresentationToCreate {
  claimFormat: ClaimFormat.MsoMdoc;
  subjectIds: [];
  credentialRecord: MdocRecord;
  disclosedPayload: DcqlMdocCredential.NameSpaces;
}
interface DcqlJwtW3cVpPresentationToCreate {
  claimFormat: ClaimFormat.JwtW3cVp;
  subjectIds: [];
  credentialRecord: W3cV2CredentialRecord;
  disclosedPayload: DcqlW3cVcCredential.Claims;
}
interface DcqlSdJwtW3cVpPresentationToCreate {
  claimFormat: ClaimFormat.SdJwtW3cVp;
  subjectIds: [];
  credentialRecord: W3cV2CredentialRecord;
  disclosedPayload: DcqlW3cVcCredential.Claims;
}
type DcqlPresentationToCreate = DcqlSdJwtVcPresentationToCreate | DcqlJwtVpPresentationToCreate | DcqlLdpVpPresentationToCreate | DcqlMdocPresentationToCreate | DcqlJwtW3cVpPresentationToCreate | DcqlSdJwtW3cVpPresentationToCreate;
type DcqlPresentationsToCreate = Record<string, [DcqlPresentationToCreate, ...DcqlPresentationToCreate[]]>;
declare function dcqlGetPresentationsToCreate(credentialsForInputDescriptor: DcqlCredentialsForRequest): DcqlPresentationsToCreate;
//#endregion
export { DcqlJwtVpPresentationToCreate, DcqlJwtW3cVpPresentationToCreate, DcqlLdpVpPresentationToCreate, DcqlMdocPresentationToCreate, DcqlPresentationsToCreate, DcqlSdJwtVcPresentationToCreate, DcqlSdJwtW3cVpPresentationToCreate, dcqlGetPresentationsToCreate };
//# sourceMappingURL=DcqlPresentationsToCreate.d.ts.map