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