use jam_types::{AuthTrace, CoreIndex};
#[macro_export]
macro_rules! declare_authorizer {
($auth_impl: ty) => {
#[polkavm_derive::polkavm_export]
extern "C" fn is_authorized_ext(ptr: u32, size: u32) -> (u64, u64) {
$crate::startup::load_protocol_parameters();
let $crate::jam_types::IsAuthorizedParams { core } = $crate::mem::decode_buf(ptr, size);
let result = <$auth_impl as $crate::Authorizer>::is_authorized(core);
let result = result.leak();
(result.as_ptr() as u64, result.len() as u64)
}
};
}
pub trait Authorizer {
fn is_authorized(core_index: CoreIndex) -> AuthTrace;
}