blokli_client/api/v1/graphql/
tickets.rs1use hex::ToHex;
2
3use super::{Uint64, schema};
4use crate::api::v1::TicketSelector;
5
6#[derive(cynic::QueryVariables, Default)]
11pub struct TicketRedeemedVariables {
12 pub channel_id: Option<cynic::Id>,
13 pub issuer_address: Option<cynic::Id>,
14 pub recipient_address: Option<cynic::Id>,
15}
16
17impl From<TicketSelector> for TicketRedeemedVariables {
18 fn from(value: TicketSelector) -> Self {
19 match value {
20 TicketSelector::ChannelId(channel_id) => TicketRedeemedVariables {
21 channel_id: Some(channel_id.encode_hex::<String>().into()),
22 ..Default::default()
23 },
24 TicketSelector::IssuerAddress(address) => TicketRedeemedVariables {
25 issuer_address: Some(address.encode_hex::<String>().into()),
26 ..Default::default()
27 },
28 TicketSelector::RecipientAddress(address) => TicketRedeemedVariables {
29 recipient_address: Some(address.encode_hex::<String>().into()),
30 ..Default::default()
31 },
32 TicketSelector::Any => TicketRedeemedVariables::default(),
33 }
34 }
35}
36
37#[derive(cynic::QueryFragment, Debug)]
41#[cynic(graphql_type = "SubscriptionRoot", variables = "TicketRedeemedVariables")]
42pub struct SubscribeTicketRedeemed {
43 #[arguments(channelId: $channel_id, issuerAddress: $issuer_address, recipientAddress: $recipient_address)]
44 pub ticket_redeemed: RedeemTicketDetails,
45}
46
47#[derive(cynic::QueryFragment, Debug, Clone, PartialEq)]
53#[cfg_attr(feature = "serde", derive(serde::Serialize))]
54pub struct RedeemTicketDetails {
55 pub issuer_address: String,
57 pub recipient_address: String,
59 pub epoch: Uint64,
61 pub index: Uint64,
63 pub result: RedemptionResult,
65}
66
67#[derive(cynic::Enum, Clone, Copy, Debug, PartialEq, Eq)]
69pub enum RedemptionResult {
70 #[cynic(rename = "REDEEMED")]
71 Redeemed,
72 #[cynic(rename = "REJECTED")]
73 Rejected,
74}