import 'package:json_annotation/json_annotation.dart';

import 'package:pshared/data/dto/payment/fee_line.dart';
import 'package:pshared/data/dto/payment/fx_quote.dart';
import 'package:pshared/data/dto/payment/money.dart';
import 'package:pshared/data/dto/payment/network_fee.dart';

part 'payment_quote.g.dart';


@JsonSerializable()
class PaymentQuoteDTO {
  final String? quoteRef;
  final MoneyDTO? debitAmount;
  final MoneyDTO? expectedSettlementAmount;
  final MoneyDTO? expectedFeeTotal;
  final List<FeeLineDTO>? feeLines;
  final NetworkFeeDTO? networkFee;
  final FxQuoteDTO? fxQuote;

  const PaymentQuoteDTO({
    this.quoteRef,
    this.debitAmount,
    this.expectedSettlementAmount,
    this.expectedFeeTotal,
    this.feeLines,
    this.networkFee,
    this.fxQuote,
  });

  factory PaymentQuoteDTO.fromJson(Map<String, dynamic> json) => _$PaymentQuoteDTOFromJson(json);
  Map<String, dynamic> toJson() => _$PaymentQuoteDTOToJson(this);
}
