1use gl_client::pb::cln::{self, amount_or_any};
2
3#[derive(Debug, Clone)]
4enum AmountOrAnyValue {
5 Any,
6 Amount(u64),
7}
8
9#[derive(Debug, Clone)]
10pub struct AmountOrAny {
11 value: AmountOrAnyValue,
12}
13
14impl From<&str> for AmountOrAny {
15 fn from(value: &str) -> Self {
16 if value == "any" {
17 return Self {
18 value: AmountOrAnyValue::Any,
19 };
20 } else {
21 return match value.parse::<u64>() {
22 Ok(msat) => Self {
23 value: AmountOrAnyValue::Amount(msat),
24 },
25 Err(e) => panic!("{}", e),
26 };
27 }
28 }
29}
30
31impl Into<cln::AmountOrAny> for AmountOrAny {
32 fn into(self) -> cln::AmountOrAny {
33 match self.value {
34 AmountOrAnyValue::Any => cln::AmountOrAny {
35 value: Some(amount_or_any::Value::Any(true)),
36 },
37 AmountOrAnyValue::Amount(msat) => cln::AmountOrAny {
38 value: Some(amount_or_any::Value::Amount(cln::Amount { msat })),
39 },
40 }
41 }
42}