use ink_ir::utils::find_storage_key_salt;
use proc_macro2::TokenStream as TokenStream2;
use quote::{
quote,
ToTokens,
};
pub fn storage_key_derive(mut s: synstructure::Structure) -> TokenStream2 {
s.add_bounds(synstructure::AddBounds::None)
.underscore_const(true);
let salt = if let Some(param) = find_storage_key_salt(s.ast()) {
param.ident.to_token_stream()
} else {
quote! { () }
};
s.gen_impl(quote! {
gen impl ::ink::storage::traits::StorageKey for @Self {
const KEY: ::ink::primitives::Key = <#salt as ::ink::storage::traits::StorageKey>::KEY;
}
})
}