we_cdk/macros/
lease.rs

1/// Leasing of funds
2///
3/// # Result
4/// The result of execution is `&[u8]` lease_id
5///
6/// # Usage
7/// ```
8/// use we_cdk::*;
9///
10/// #[action]
11/// fn _constructor() {
12///     let recipient: Binary = base58!("3NzkzibVRkKUzaRzjUxndpTPvoBzQ3iLng3");
13///     let amount: Integer = 100;
14///     let lease_id_first: Binary = lease!(address => recipient, amount);
15///     let lease_id_second: Binary = lease!(alias => "miner", amount);
16/// }
17/// ```
18#[macro_export]
19macro_rules! lease {
20    (address => $recipient:expr, $amount:expr) => {{
21        let (error, ptr, len) =
22            wevm::v0::bindings::lease_address($recipient.as_ptr(), $recipient.len(), $amount);
23        error!(error);
24        core::slice::from_raw_parts(ptr, len)
25    }};
26    (alias => $recipient:expr, $amount:expr) => {{
27        let (error, ptr, len) =
28            wevm::v0::bindings::lease_alias($recipient.as_ptr(), $recipient.len(), $amount);
29        error!(error);
30        core::slice::from_raw_parts(ptr, len)
31    }};
32}
33
34/// Cancel the lease
35///
36/// # Usage
37/// ```
38/// use we_cdk::*;
39///
40/// #[action]
41/// fn _constructor() {
42///     let lease_id: Binary = base58!("6Tn7ir9MycHW6Gq2F2dGok2stokSwXJadPh4hW8eZ8Sp");
43///     cancel_lease!(lease_id);
44/// }
45/// ```
46#[macro_export]
47macro_rules! cancel_lease {
48    ($lease_id:expr) => {
49        let error = wevm::v0::bindings::cancel_lease($lease_id.as_ptr(), $lease_id.len());
50        error!(error);
51    };
52}