use crate::types::*;
use ic_stable_structures::memory_manager::{MemoryId, MemoryManager};
use ic_stable_structures::DefaultMemoryImpl;
use std::cell::RefCell;
include!(concat!(env!("OUT_DIR"), "/config.rs"));
const GLOBAL_FLAGS_PAGE_SIZE: u64 = 1;
const CANISTER_LIFECYCLE_PAGE_SIZE: u64 = 1;
const ACCESS_CONTROL_PAGE_SIZE: u64 = 4;
pub(crate) const GLOBAL_FLAGS_PAGE_START: u64 = 0;
pub(crate) const GLOBAL_FLAGS_PAGE_END: u64 = GLOBAL_FLAGS_PAGE_START + GLOBAL_FLAGS_PAGE_SIZE;
pub(crate) const CANISTER_LIFECYCLE_PAGE_START: u64 = GLOBAL_FLAGS_PAGE_END;
pub(crate) const CANISTER_LIFECYCLE_PAGE_END: u64 =
CANISTER_LIFECYCLE_PAGE_START + CANISTER_LIFECYCLE_PAGE_SIZE;
pub(crate) const ACCESS_CONTROL_PAGE_START: u64 = CANISTER_LIFECYCLE_PAGE_END;
pub(crate) const ACCESS_CONTROL_PAGE_END: u64 =
ACCESS_CONTROL_PAGE_START + ACCESS_CONTROL_PAGE_SIZE;
pub const USER_PAGE_START: u64 = 64;
pub(crate) const REENTRANCY_GUARD_MEM_ID: MemoryId = MemoryId::new(224);
#[allow(unused)]
pub(crate) const STABLE_LOG_IDX_ID: MemoryId = MemoryId::new(226);
#[allow(unused)]
pub(crate) const STABLE_LOG_MEM_ID: MemoryId = MemoryId::new(227);
pub(crate) const ACCESS_ROLES_MEM_ID: MemoryId = MemoryId::new(229);
thread_local! {
pub static MEMORY_MANAGER: RefCell<MemoryManager<RM>> = RefCell::new(
MemoryManager::init(RM::new(DefaultMemoryImpl::default(), USER_PAGE_END..u64::MAX/65536-1))
);
}