use proc_macro::TokenStream;
use syn::{parse_macro_input, DeriveInput};
#[proc_macro_derive(UniversalWallet, attributes(sov_wallet))]
pub fn derive_wallet(input: TokenStream) -> TokenStream {
let input = parse_macro_input!(input as DeriveInput);
let result = sov_universal_wallet_macro_helpers::schema::derive(
input,
None,
syn::parse_quote! { sov_universal_wallet::UniversalWallet },
);
handle_macro_error_and_expand(result.map(Into::into))
}
pub(crate) fn handle_macro_error_and_expand(result: syn::Result<TokenStream>) -> TokenStream {
result.unwrap_or_else(|err| err.to_compile_error().into())
}