

const require_decorateMetadata = require('../../../../_virtual/_@oxc-project_runtime@0.94.0/helpers/decorateMetadata.js');
const require_decorate = require('../../../../_virtual/_@oxc-project_runtime@0.94.0/helpers/decorate.js');
const require_array = require('../../../../utils/array.js');
const require_JsonTransformer = require('../../../../utils/JsonTransformer.js');
const require_validators = require('../../../../utils/validators.js');
require('../../../../utils/index.js');
const require_ClaimFormat = require('../../models/ClaimFormat.js');
const require_DataIntegrityProof = require('./DataIntegrityProof.js');
const require_LinkedDataProof = require('./LinkedDataProof.js');
const require_ProofTransformer = require('./ProofTransformer.js');
const require_W3cPresentation = require('../../models/presentation/W3cPresentation.js');
require('../../models/index.js');

//#region src/modules/vc/data-integrity/models/W3cJsonLdVerifiablePresentation.ts
var W3cJsonLdVerifiablePresentation = class extends require_W3cPresentation.W3cPresentation {
	constructor(options) {
		super(options);
		if (options) if (options.proof.cryptosuite) this.proof = new require_DataIntegrityProof.DataIntegrityProof(options.proof);
		else this.proof = new require_LinkedDataProof.LinkedDataProof(options.proof);
	}
	get proofTypes() {
		return (require_array.asArray(this.proof) ?? []).map((proof) => proof.type);
	}
	get dataIntegrityCryptosuites() {
		return (require_array.asArray(this.proof) ?? []).filter((proof) => proof.type === "DataIntegrityProof" && "cryptosuite" in proof).map((proof) => proof.cryptosuite);
	}
	toJson() {
		return require_JsonTransformer.JsonTransformer.toJSON(this);
	}
	/**
	* The {@link ClaimFormat} of the presentation. For JSON-LD credentials this is always `ldp_vp`.
	*/
	get claimFormat() {
		return require_ClaimFormat.ClaimFormat.LdpVp;
	}
	/**
	* Get the encoded variant of the W3C Verifiable Presentation. For JSON-LD presentations this is
	* a JSON object.
	*/
	get encoded() {
		return this.toJson();
	}
};
require_decorate.__decorate([
	require_ProofTransformer.ProofTransformer(),
	require_validators.IsInstanceOrArrayOfInstances({ classType: [require_LinkedDataProof.LinkedDataProof, require_DataIntegrityProof.DataIntegrityProof] }),
	require_decorateMetadata.__decorateMetadata("design:type", Object)
], W3cJsonLdVerifiablePresentation.prototype, "proof", void 0);

//#endregion
exports.W3cJsonLdVerifiablePresentation = W3cJsonLdVerifiablePresentation;