use crate::{output_manager_service::TxId, transaction_service::error::TransactionServiceError};
use tari_comms::{peer_manager::NodeId, types::CommsPublicKey};
use tari_comms_dht::{
domain_message::OutboundDomainMessage,
outbound::{OutboundEncryption, OutboundMessageRequester},
};
use tari_core::transactions::transaction_protocol::proto;
use tari_p2p::tari_message::TariMessageType;
pub async fn send_transaction_cancelled_message(
tx_id: TxId,
destination_public_key: CommsPublicKey,
mut outbound_message_service: OutboundMessageRequester,
) -> Result<(), TransactionServiceError>
{
let proto_message = proto::TransactionCancelledMessage { tx_id };
let _ = outbound_message_service
.send_direct(
destination_public_key.clone(),
OutboundDomainMessage::new(TariMessageType::TransactionCancelled, proto_message.clone()),
)
.await?;
let _ = outbound_message_service
.closest_broadcast(
NodeId::from_public_key(&destination_public_key),
OutboundEncryption::EncryptFor(Box::new(destination_public_key)),
vec![],
OutboundDomainMessage::new(TariMessageType::SenderPartialTransaction, proto_message),
)
.await?;
Ok(())
}