pub(crate) type VirtualKVPermissions = VirtualKVPermissionsComponentType<KVStorePermissionsComponentType<TicKVKVStoreComponentType<TicKVDedicatedFlashComponentType<Mx25r6435fComponentType<SPIM<'static>, GPIOPin<'static>, Rtc<'static>>, Siphasher24ComponentType, TICKV_PAGE_SIZE>, TicKVKeyType>>>;
struct VirtualKVPermissions {
mux_kv: &'static MuxKVPermissions<'static, KVStorePermissions<'static, TicKVKVStore<'static, TicKVSystem<'static, MX25R6435F<'static, VirtualSpiMasterDevice<'static, SPIM<'static>>, GPIOPin<'static>, VirtualMuxAlarm<'static, Rtc<'static>>>, SipHasher24<'static>, 4096>, [u8; 8]>>>,
next: ListLink<'static, VirtualKVPermissions<'static, KVStorePermissions<'static, TicKVKVStore<'static, TicKVSystem<'static, MX25R6435F<'static, VirtualSpiMasterDevice<'static, SPIM<'static>>, GPIOPin<'static>, VirtualMuxAlarm<'static, Rtc<'static>>>, SipHasher24<'static>, 4096>, [u8; 8]>>>>,
client: OptionalCell<&'static dyn KVClient>,
operation: OptionalCell<Operation>,
key: MapCell<SubSliceMut<'static, u8>>,
value: MapCell<SubSliceMut<'static, u8>>,
valid_ids: OptionalCell<StoragePermissions>,
}