import { __decorateMetadata } from "../../../../../_virtual/_@oxc-project_runtime@0.94.0/helpers/decorateMetadata.mjs";
import { __decorate } from "../../../../../_virtual/_@oxc-project_runtime@0.94.0/helpers/decorate.mjs";
import { IsValidMessageType, parseMessageType } from "../../util/messageType.mjs";
import { DidCommMessage } from "../../DidCommMessage.mjs";
import { Expose } from "class-transformer";
import { IsEnum, IsOptional, IsString } from "class-validator";

//#region ../didcomm/src/messages/problem-reports/DidCommProblemReportMessage.ts
var _ref, _ref2, _ref3;
let WhoRetriesStatus = /* @__PURE__ */ function(WhoRetriesStatus$1) {
	WhoRetriesStatus$1["You"] = "YOU";
	WhoRetriesStatus$1["Me"] = "ME";
	WhoRetriesStatus$1["Both"] = "BOTH";
	WhoRetriesStatus$1["None"] = "NONE";
	return WhoRetriesStatus$1;
}({});
let ImpactStatus = /* @__PURE__ */ function(ImpactStatus$1) {
	ImpactStatus$1["Message"] = "MESSAGE";
	ImpactStatus$1["Thread"] = "THREAD";
	ImpactStatus$1["Connection"] = "CONNECTION";
	return ImpactStatus$1;
}({});
let WhereStatus = /* @__PURE__ */ function(WhereStatus$1) {
	WhereStatus$1["Cloud"] = "CLOUD";
	WhereStatus$1["Edge"] = "EDGE";
	WhereStatus$1["Wire"] = "WIRE";
	WhereStatus$1["Agency"] = "AGENCY";
	return WhereStatus$1;
}({});
/**
* @see https://github.com/hyperledger/aries-rfcs/blob/main/features/0035-report-problem/README.md
*/
var DidCommProblemReportMessage = class DidCommProblemReportMessage extends DidCommMessage {
	/**
	* Create new ReportProblem instance.
	* @param options
	*/
	constructor(options) {
		super();
		this.type = DidCommProblemReportMessage.type.messageTypeUri;
		if (options) {
			this.id = options.id || this.generateId();
			this.description = options.description;
			this.problemItems = options.problemItems;
			this.whoRetries = options.whoRetries;
			this.fixHint = options.fixHint;
			this.impact = options.impact;
			this.where = options.where;
			this.noticedTime = options.noticedTime;
			this.trackingUri = options.trackingUri;
			this.escalationUri = options.escalationUri;
		}
	}
};
DidCommProblemReportMessage.type = parseMessageType("https://didcomm.org/notification/1.0/problem-report");
__decorate([IsValidMessageType(DidCommProblemReportMessage.type), __decorateMetadata("design:type", String)], DidCommProblemReportMessage.prototype, "type", void 0);
__decorate([
	IsOptional(),
	Expose({ name: "problem_items" }),
	__decorateMetadata("design:type", Array)
], DidCommProblemReportMessage.prototype, "problemItems", void 0);
__decorate([
	IsOptional(),
	IsEnum(WhoRetriesStatus),
	Expose({ name: "who_retries" }),
	__decorateMetadata("design:type", typeof (_ref = typeof WhoRetriesStatus !== "undefined" && WhoRetriesStatus) === "function" ? _ref : Object)
], DidCommProblemReportMessage.prototype, "whoRetries", void 0);
__decorate([
	IsOptional(),
	Expose({ name: "fix_hint" }),
	__decorateMetadata("design:type", Object)
], DidCommProblemReportMessage.prototype, "fixHint", void 0);
__decorate([
	IsOptional(),
	IsEnum(WhereStatus),
	__decorateMetadata("design:type", typeof (_ref2 = typeof WhereStatus !== "undefined" && WhereStatus) === "function" ? _ref2 : Object)
], DidCommProblemReportMessage.prototype, "where", void 0);
__decorate([
	IsOptional(),
	IsEnum(ImpactStatus),
	__decorateMetadata("design:type", typeof (_ref3 = typeof ImpactStatus !== "undefined" && ImpactStatus) === "function" ? _ref3 : Object)
], DidCommProblemReportMessage.prototype, "impact", void 0);
__decorate([
	IsOptional(),
	IsString(),
	Expose({ name: "noticed_time" }),
	__decorateMetadata("design:type", String)
], DidCommProblemReportMessage.prototype, "noticedTime", void 0);
__decorate([
	IsOptional(),
	IsString(),
	Expose({ name: "tracking_uri" }),
	__decorateMetadata("design:type", String)
], DidCommProblemReportMessage.prototype, "trackingUri", void 0);
__decorate([
	IsOptional(),
	IsString(),
	Expose({ name: "escalation_uri" }),
	__decorateMetadata("design:type", String)
], DidCommProblemReportMessage.prototype, "escalationUri", void 0);

//#endregion
export { DidCommProblemReportMessage, ImpactStatus, WhereStatus, WhoRetriesStatus };
//# sourceMappingURL=DidCommProblemReportMessage.mjs.map