ton_messages_rs/
lib.rs

1use tonlib_core::{
2    TonAddress,
3    cell::Cell,
4    message::{
5        CommonMsgInfo, JettonTransferMessage as TonLibJettonTransferMessage, TonMessage,
6        TonMessageError, TransferMessage as TonLibTransferMessage,
7    },
8};
9
10pub struct TransferMessage(TonLibTransferMessage);
11impl TransferMessage {
12    pub fn new(value: impl Into<f64>, dest: impl Into<TonAddress>) -> Self {
13        let value = f64_to_biguint_ton(value.into());
14
15        let dest = dest.into();
16        let mut common = CommonMsgInfo::new_default_internal(&dest, &value);
17        if let tonlib_core::message::CommonMsgInfo::InternalMessage(internal) = &mut common {
18            internal.bounce = false;
19        }
20        let msg = TonLibTransferMessage::new(common);
21        Self(msg)
22    }
23    pub fn build(&self) -> Result<Cell, TonMessageError> {
24        let cell = self.0.build()?;
25        Ok(cell)
26    }
27}
28
29fn f64_to_biguint_ton(value: f64) -> num_bigint::BigUint {
30    num_bigint::BigUint::from((value * 1_000_000_000.0) as u64)
31}
32// pub struct JettonTransferMessage(TonLibJettonTransferMessage);
33// impl JettonTransferMessage {
34//     pub fn new(
35//         value: impl Into<f64>,
36//         dest: impl Into<TonAddress>,
37//         jetton: impl Into<TonAddress>,
38//     ) -> Self {
39
40//     }
41// }