hopr_api/chain/
tickets.rs

1use std::error::Error;
2
3use futures::future::BoxFuture;
4pub use hopr_internal_types::prelude::AcknowledgedTicket;
5
6use crate::{chain::ChainReceipt, db::TicketSelector};
7
8/// On-chain write operations with tickets.
9#[async_trait::async_trait]
10pub trait ChainWriteTicketOperations {
11    type Error: Error + Send + Sync + 'static;
12    /// Redeems a single ticket on-chain.
13    async fn redeem_ticket(
14        &self,
15        ticket: AcknowledgedTicket,
16    ) -> Result<BoxFuture<'_, Result<ChainReceipt, Self::Error>>, Self::Error>;
17
18    /// Allows to batch-redeem multiple tickets on-chain.
19    async fn redeem_tickets_via_selector(
20        &self,
21        selector: TicketSelector,
22    ) -> Result<Vec<BoxFuture<'_, Result<ChainReceipt, Self::Error>>>, Self::Error>;
23}