import { ClaimFormat } from "../ClaimFormat.js";
import { W3cV2JwtVerifiableCredential, W3cV2JwtVerifiableCredentialOptions } from "../../jwt-vc/W3cV2JwtVerifiableCredential.js";
import { W3cV2SdJwtVerifiableCredential, W3cV2SdJwtVerifiableCredentialOptions } from "../../sd-jwt-vc/W3cV2SdJwtVerifiableCredential.js";

//#region src/modules/vc/models/credential/W3cV2VerifiableCredential.d.ts
declare function W3cV2VerifiableCredentialTransformer(): PropertyDecorator;
/**
 * A Secured W3C Verifiable Credential (VC) as defined in the W3C VC Data Model 2.0
 * and secured according to the VC-JOSE-COSE specification.
 *
 * It can be one of:
 * - A verifiable credential encoded as a JWT.
 * - A verifiable credential encoded as a SD-JWT.
 *
 * @see https://www.w3.org/TR/vc-data-model-2.0/
 * @see https://www.w3.org/TR/vc-jose-cose/
 *
 * TODO: add support for embedded proof mechanisms (Verifiable Credential Data Integrity 1.0)
 */
type W3cV2VerifiableCredential<Format extends ClaimFormat.JwtW3cVc | ClaimFormat.SdJwtW3cVc | unknown = unknown> = Format extends ClaimFormat.JwtVc ? W3cV2JwtVerifiableCredential : Format extends ClaimFormat.SdJwtW3cVc ? W3cV2SdJwtVerifiableCredential : W3cV2JwtVerifiableCredential | W3cV2SdJwtVerifiableCredential;
type W3cV2VerifiableCredentialOptions<Format extends ClaimFormat.JwtW3cVc | ClaimFormat.SdJwtW3cVc | unknown = unknown> = Format extends ClaimFormat.JwtVc ? W3cV2JwtVerifiableCredentialOptions : Format extends ClaimFormat.SdJwtW3cVc ? W3cV2SdJwtVerifiableCredentialOptions : W3cV2JwtVerifiableCredentialOptions | W3cV2SdJwtVerifiableCredentialOptions;
//#endregion
export { W3cV2VerifiableCredential, W3cV2VerifiableCredentialOptions, W3cV2VerifiableCredentialTransformer };
//# sourceMappingURL=W3cV2VerifiableCredential.d.ts.map