['required','integer','min:1'],'amount_minor'=>['required','integer','min:1'],'currency'=>['required','string','size:3'],'reason'=>['required','string'],'idempotency_key'=>['nullable','string']]; } public function toDTO(): RefundPaymentData { $v=$this->validated(); return new RefundPaymentData((int)$v['payment_id'], new MoneyData((int)$v['amount_minor'], strtoupper($v['currency'])), $v['reason'], $v['idempotency_key'] ?? null); } }