tonlib_core/message/
common_msg_info.rs1use num_bigint::BigUint;
2
3use super::ZERO_COINS;
4use crate::TonAddress;
5
6#[derive(Clone, Debug, PartialEq)]
7pub enum CommonMsgInfo {
8 InternalMessage(InternalMessage),
9 ExternalIncomingMessage(ExternalIncomingMessage),
10 ExternalOutgoingMessage(ExternalOutgoingMessage),
11}
12
13#[derive(Clone, Debug, PartialEq)]
14pub struct InternalMessage {
15 pub ihr_disabled: bool,
17 pub bounce: bool,
20 pub bounced: bool,
22 pub src: TonAddress,
24 pub dest: TonAddress,
26 pub value: BigUint,
28 pub ihr_fee: BigUint,
30 pub fwd_fee: BigUint,
32 pub created_lt: u64,
34 pub created_at: u32,
36}
37
38#[derive(Clone, Debug, PartialEq)]
39pub struct ExternalIncomingMessage {
40 pub src: TonAddress,
42 pub dest: TonAddress,
44 pub import_fee: BigUint,
46}
47
48#[derive(Clone, Debug, PartialEq)]
49pub struct ExternalOutgoingMessage {
50 pub src: TonAddress,
52 pub dest: TonAddress,
54 pub created_lt: u64,
56 pub created_at: u32,
58}
59
60impl CommonMsgInfo {
61 pub fn new_default_internal(dest: &TonAddress, value: &BigUint) -> Self {
62 CommonMsgInfo::InternalMessage(InternalMessage {
63 ihr_disabled: false,
64 bounce: true,
65 bounced: true,
66 src: TonAddress::NULL,
67 dest: dest.clone(),
68 value: value.clone(),
69 ihr_fee: ZERO_COINS.clone(),
70 fwd_fee: ZERO_COINS.clone(),
71 created_lt: 0,
72 created_at: 0,
73 })
74 }
75 pub fn src(&self) -> TonAddress {
76 match self {
77 CommonMsgInfo::InternalMessage(m) => m.src.clone(),
78 CommonMsgInfo::ExternalIncomingMessage(m) => m.src.clone(),
79 CommonMsgInfo::ExternalOutgoingMessage(m) => m.src.clone(),
80 }
81 }
82 pub fn dest(&self) -> TonAddress {
83 match self {
84 CommonMsgInfo::InternalMessage(m) => m.dest.clone(),
85 CommonMsgInfo::ExternalIncomingMessage(m) => m.dest.clone(),
86 CommonMsgInfo::ExternalOutgoingMessage(m) => m.dest.clone(),
87 }
88 }
89
90 }