class BalanceTransferReceipt extends Receipt {

  @Override
  public byte[] serialize() {
    final short version = (short) getVersion().getValue();
    final ReceiptTypeDto type = ReceiptTypeDto.rawValueOf((short) getType().getValue());
    final MosaicBuilder mosaic =
        MosaicBuilder.create(
            new MosaicIdDto(getMosaicId().getIdAsLong()), new AmountDto(getAmount().longValue()));
    final AddressDto senderAddress = SerializationUtils.toAddressDto(getSenderAddress());
    final AddressDto recipientAddress = SerializationUtils.toAddressDto(getRecipientAddress());
    return BalanceTransferReceiptBuilder.create(
            version, type, mosaic, senderAddress, recipientAddress)
        .serialize();
  }

  public  BalanceTransferReceipt(
      Address senderAddress,
      Address recipientAddress,
      MosaicId mosaicId,
      BigInteger amount,
      ReceiptType type,
      ReceiptVersion version,
      Optional<Integer> size);
  public  BalanceTransferReceipt(
      Address senderAddress,
      Address recipientAddress,
      MosaicId mosaicId,
      BigInteger amount,
      ReceiptType type,
      ReceiptVersion version);

}