/**
 * 私密消息解锁请求 DTO
 */
import {
  UnlockPrivateRequestSchema,
  type UnlockPrivateRequestData,
  type UnlockPrivateRequestInput,
} from "@/data/schemas/chat/unlock_private_request";

export class UnlockPrivateRequest {
  declare readonly messageId: string;

  private constructor(input: UnlockPrivateRequestInput) {
    const data = UnlockPrivateRequestSchema.parse(input);
    Object.assign(this, data);
    Object.freeze(this);
  }

  static from(input: UnlockPrivateRequestInput): UnlockPrivateRequest {
    return new UnlockPrivateRequest(input);
  }

  static fromJson(json: unknown): UnlockPrivateRequest {
    return UnlockPrivateRequest.from(json as UnlockPrivateRequestInput);
  }

  toJson(): UnlockPrivateRequestData {
    return UnlockPrivateRequestSchema.parse(this);
  }
}
