import { JsonObject, NonEmptyArray } from "../../../types.mjs";
import { ClaimFormat } from "../../vc/models/ClaimFormat.mjs";
import { CredentialMultiInstanceUseMode } from "../../../utils/credentialUseTypes.mjs";
import { SdJwtVcRecord } from "../../sd-jwt-vc/repository/SdJwtVcRecord.mjs";
import "../../sd-jwt-vc/index.mjs";
import { MdocRecord } from "../../mdoc/repository/MdocRecord.mjs";
import { MdocNameSpaces } from "../../mdoc/MdocOptions.mjs";
import "../../mdoc/index.mjs";
import { W3cCredentialRecord } from "../../vc/repository/W3cCredentialRecord.mjs";
import { W3cV2CredentialRecord } from "../../vc/repository/W3cV2CredentialRecord.mjs";
import "../../vc/index.mjs";
import "../../../utils/credentialUse.mjs";

//#region src/modules/dcql/models/DcqlCredentialsForRequest.d.ts
/**
 * Mapping of credential query IDs to the selected credential record and the disclosed payload.
 */
type DcqlCredentialsForRequest = Record<string, NonEmptyArray<{
  claimFormat: ClaimFormat.MsoMdoc;
  credentialRecord: MdocRecord;
  disclosedPayload: MdocNameSpaces;
  /**
   * @default {@link CredentialMultiInstanceUseMode.NewOrFirst}
   */
  useMode?: CredentialMultiInstanceUseMode;
} | {
  claimFormat: ClaimFormat.SdJwtDc;
  credentialRecord: SdJwtVcRecord;
  disclosedPayload: JsonObject;
  /**
   * Additional payload that will be added to the Key Binding JWT. This can overwrite
   * existing parameters for KB-JWT so ensure you are only using this for non-default properties.
   */
  additionalPayload?: JsonObject;
  /**
   * @default {@link CredentialMultiInstanceUseMode.NewOrFirst}
   */
  useMode?: CredentialMultiInstanceUseMode;
} | {
  claimFormat: ClaimFormat.JwtVc | ClaimFormat.LdpVc;
  credentialRecord: W3cCredentialRecord;
  disclosedPayload: JsonObject;
  /**
   * @default {@link CredentialMultiInstanceUseMode.NewOrFirst}
   */
  useMode?: CredentialMultiInstanceUseMode;
} | {
  claimFormat: ClaimFormat.JwtW3cVc | ClaimFormat.SdJwtW3cVc;
  credentialRecord: W3cV2CredentialRecord;
  disclosedPayload: JsonObject;
  /**
   * @default {@link CredentialMultiInstanceUseMode.NewOrFirst}
   */
  useMode?: CredentialMultiInstanceUseMode;
}>>;
//#endregion
export { DcqlCredentialsForRequest };
//# sourceMappingURL=DcqlCredentialsForRequest.d.mts.map