//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

using Ajuna.NetApi.Model.Types.Base;
using Ajuna.ServiceLayer.Attributes;
using Ajuna.ServiceLayer.Storage;
using System.Collections.Generic;
using System.Threading.Tasks;


namespace Bajun.Network.NET.RestService.Generated.Storage
{
    
    
    /// <summary>
    /// IParachainSystemStorage interface definition.
    /// </summary>
    public interface IParachainSystemStorage : IStorage
    {
        
        /// <summary>
        /// >> PendingValidationCode
        ///  In case of a scheduled upgrade, this storage field contains the validation code to be applied.
        /// 
        ///  As soon as the relay chain gives us the go-ahead signal, we will overwrite the [`:code`][well_known_keys::CODE]
        ///  which will result the next block process with the new validation code. This concludes the upgrade process.
        /// 
        ///  [well_known_keys::CODE]: sp_core::storage::well_known_keys::CODE
        /// </summary>
        Ajuna.NetApi.Model.Types.Base.BaseVec<Ajuna.NetApi.Model.Types.Primitive.U8> GetPendingValidationCode();
        
        /// <summary>
        /// >> NewValidationCode
        ///  Validation code that is set by the parachain and is to be communicated to collator and
        ///  consequently the relay-chain.
        /// 
        ///  This will be cleared in `on_initialize` of each new block if no other pallet already set
        ///  the value.
        /// </summary>
        Ajuna.NetApi.Model.Types.Base.BaseVec<Ajuna.NetApi.Model.Types.Primitive.U8> GetNewValidationCode();
        
        /// <summary>
        /// >> ValidationData
        ///  The [`PersistedValidationData`] set for this block.
        ///  This value is expected to be set only once per block and it's never stored
        ///  in the trie.
        /// </summary>
        Bajun.Network.NET.NetApiExt.Generated.Model.polkadot_primitives.v2.PersistedValidationData GetValidationData();
        
        /// <summary>
        /// >> DidSetValidationCode
        ///  Were the validation data set to notify the relay chain?
        /// </summary>
        Ajuna.NetApi.Model.Types.Primitive.Bool GetDidSetValidationCode();
        
        /// <summary>
        /// >> LastRelayChainBlockNumber
        ///  The relay chain block number associated with the last parachain block.
        /// </summary>
        Ajuna.NetApi.Model.Types.Primitive.U32 GetLastRelayChainBlockNumber();
        
        /// <summary>
        /// >> UpgradeRestrictionSignal
        ///  An option which indicates if the relay-chain restricts signalling a validation code upgrade.
        ///  In other words, if this is `Some` and [`NewValidationCode`] is `Some` then the produced
        ///  candidate will be invalid.
        /// 
        ///  This storage item is a mirror of the corresponding value for the current parachain from the
        ///  relay-chain. This value is ephemeral which means it doesn't hit the storage. This value is
        ///  set after the inherent.
        /// </summary>
        Ajuna.NetApi.Model.Types.Base.BaseOpt<Bajun.Network.NET.NetApiExt.Generated.Model.polkadot_primitives.v2.EnumUpgradeRestriction> GetUpgradeRestrictionSignal();
        
        /// <summary>
        /// >> RelayStateProof
        ///  The state proof for the last relay parent block.
        /// 
        ///  This field is meant to be updated each block with the validation data inherent. Therefore,
        ///  before processing of the inherent, e.g. in `on_initialize` this data may be stale.
        /// 
        ///  This data is also absent from the genesis.
        /// </summary>
        Bajun.Network.NET.NetApiExt.Generated.Model.sp_trie.storage_proof.StorageProof GetRelayStateProof();
        
        /// <summary>
        /// >> RelevantMessagingState
        ///  The snapshot of some state related to messaging relevant to the current parachain as per
        ///  the relay parent.
        /// 
        ///  This field is meant to be updated each block with the validation data inherent. Therefore,
        ///  before processing of the inherent, e.g. in `on_initialize` this data may be stale.
        /// 
        ///  This data is also absent from the genesis.
        /// </summary>
        Bajun.Network.NET.NetApiExt.Generated.Model.cumulus_pallet_parachain_system.relay_state_snapshot.MessagingStateSnapshot GetRelevantMessagingState();
        
        /// <summary>
        /// >> HostConfiguration
        ///  The parachain host configuration that was obtained from the relay parent.
        /// 
        ///  This field is meant to be updated each block with the validation data inherent. Therefore,
        ///  before processing of the inherent, e.g. in `on_initialize` this data may be stale.
        /// 
        ///  This data is also absent from the genesis.
        /// </summary>
        Bajun.Network.NET.NetApiExt.Generated.Model.polkadot_primitives.v2.AbridgedHostConfiguration GetHostConfiguration();
        
        /// <summary>
        /// >> LastDmqMqcHead
        ///  The last downward message queue chain head we have observed.
        /// 
        ///  This value is loaded before and saved after processing inbound downward messages carried
        ///  by the system inherent.
        /// </summary>
        Bajun.Network.NET.NetApiExt.Generated.Model.cumulus_primitives_parachain_inherent.MessageQueueChain GetLastDmqMqcHead();
        
        /// <summary>
        /// >> LastHrmpMqcHeads
        ///  The message queue chain heads we have observed per each channel incoming channel.
        /// 
        ///  This value is loaded before and saved after processing inbound downward messages carried
        ///  by the system inherent.
        /// </summary>
        Bajun.Network.NET.NetApiExt.Generated.Types.Base.BTreeMapT1 GetLastHrmpMqcHeads();
        
        /// <summary>
        /// >> ProcessedDownwardMessages
        ///  Number of downward messages processed in a block.
        /// 
        ///  This will be cleared in `on_initialize` of each new block.
        /// </summary>
        Ajuna.NetApi.Model.Types.Primitive.U32 GetProcessedDownwardMessages();
        
        /// <summary>
        /// >> HrmpWatermark
        ///  HRMP watermark that was set in a block.
        /// 
        ///  This will be cleared in `on_initialize` of each new block.
        /// </summary>
        Ajuna.NetApi.Model.Types.Primitive.U32 GetHrmpWatermark();
        
        /// <summary>
        /// >> HrmpOutboundMessages
        ///  HRMP messages that were sent in a block.
        /// 
        ///  This will be cleared in `on_initialize` of each new block.
        /// </summary>
        Ajuna.NetApi.Model.Types.Base.BaseVec<Bajun.Network.NET.NetApiExt.Generated.Model.polkadot_core_primitives.OutboundHrmpMessage> GetHrmpOutboundMessages();
        
        /// <summary>
        /// >> UpwardMessages
        ///  Upward messages that were sent in a block.
        /// 
        ///  This will be cleared in `on_initialize` of each new block.
        /// </summary>
        Ajuna.NetApi.Model.Types.Base.BaseVec<Ajuna.NetApi.Model.Types.Base.BaseVec<Ajuna.NetApi.Model.Types.Primitive.U8>> GetUpwardMessages();
        
        /// <summary>
        /// >> PendingUpwardMessages
        ///  Upward messages that are still pending and not yet send to the relay chain.
        /// </summary>
        Ajuna.NetApi.Model.Types.Base.BaseVec<Ajuna.NetApi.Model.Types.Base.BaseVec<Ajuna.NetApi.Model.Types.Primitive.U8>> GetPendingUpwardMessages();
        
        /// <summary>
        /// >> AnnouncedHrmpMessagesPerCandidate
        ///  The number of HRMP messages we observed in `on_initialize` and thus used that number for
        ///  announcing the weight of `on_initialize` and `on_finalize`.
        /// </summary>
        Ajuna.NetApi.Model.Types.Primitive.U32 GetAnnouncedHrmpMessagesPerCandidate();
        
        /// <summary>
        /// >> ReservedXcmpWeightOverride
        ///  The weight we reserve at the beginning of the block for processing XCMP messages. This
        ///  overrides the amount set in the Config trait.
        /// </summary>
        Bajun.Network.NET.NetApiExt.Generated.Model.sp_weights.weight_v2.Weight GetReservedXcmpWeightOverride();
        
        /// <summary>
        /// >> ReservedDmpWeightOverride
        ///  The weight we reserve at the beginning of the block for processing DMP messages. This
        ///  overrides the amount set in the Config trait.
        /// </summary>
        Bajun.Network.NET.NetApiExt.Generated.Model.sp_weights.weight_v2.Weight GetReservedDmpWeightOverride();
        
        /// <summary>
        /// >> AuthorizedUpgrade
        ///  The next authorized upgrade, if there is one.
        /// </summary>
        Bajun.Network.NET.NetApiExt.Generated.Model.primitive_types.H256 GetAuthorizedUpgrade();
        
        /// <summary>
        /// >> CustomValidationHeadData
        ///  A custom head data that should be returned as result of `validate_block`.
        /// 
        ///  See [`Pallet::set_custom_validation_head_data`] for more information.
        /// </summary>
        Ajuna.NetApi.Model.Types.Base.BaseVec<Ajuna.NetApi.Model.Types.Primitive.U8> GetCustomValidationHeadData();
    }
    
    /// <summary>
    /// ParachainSystemStorage class definition.
    /// </summary>
    public sealed class ParachainSystemStorage : IParachainSystemStorage
    {
        
        /// <summary>
        /// _pendingValidationCodeTypedStorage typed storage field
        /// </summary>
        private TypedStorage<Ajuna.NetApi.Model.Types.Base.BaseVec<Ajuna.NetApi.Model.Types.Primitive.U8>> _pendingValidationCodeTypedStorage;
        
        /// <summary>
        /// _newValidationCodeTypedStorage typed storage field
        /// </summary>
        private TypedStorage<Ajuna.NetApi.Model.Types.Base.BaseVec<Ajuna.NetApi.Model.Types.Primitive.U8>> _newValidationCodeTypedStorage;
        
        /// <summary>
        /// _validationDataTypedStorage typed storage field
        /// </summary>
        private TypedStorage<Bajun.Network.NET.NetApiExt.Generated.Model.polkadot_primitives.v2.PersistedValidationData> _validationDataTypedStorage;
        
        /// <summary>
        /// _didSetValidationCodeTypedStorage typed storage field
        /// </summary>
        private TypedStorage<Ajuna.NetApi.Model.Types.Primitive.Bool> _didSetValidationCodeTypedStorage;
        
        /// <summary>
        /// _lastRelayChainBlockNumberTypedStorage typed storage field
        /// </summary>
        private TypedStorage<Ajuna.NetApi.Model.Types.Primitive.U32> _lastRelayChainBlockNumberTypedStorage;
        
        /// <summary>
        /// _upgradeRestrictionSignalTypedStorage typed storage field
        /// </summary>
        private TypedStorage<Ajuna.NetApi.Model.Types.Base.BaseOpt<Bajun.Network.NET.NetApiExt.Generated.Model.polkadot_primitives.v2.EnumUpgradeRestriction>> _upgradeRestrictionSignalTypedStorage;
        
        /// <summary>
        /// _relayStateProofTypedStorage typed storage field
        /// </summary>
        private TypedStorage<Bajun.Network.NET.NetApiExt.Generated.Model.sp_trie.storage_proof.StorageProof> _relayStateProofTypedStorage;
        
        /// <summary>
        /// _relevantMessagingStateTypedStorage typed storage field
        /// </summary>
        private TypedStorage<Bajun.Network.NET.NetApiExt.Generated.Model.cumulus_pallet_parachain_system.relay_state_snapshot.MessagingStateSnapshot> _relevantMessagingStateTypedStorage;
        
        /// <summary>
        /// _hostConfigurationTypedStorage typed storage field
        /// </summary>
        private TypedStorage<Bajun.Network.NET.NetApiExt.Generated.Model.polkadot_primitives.v2.AbridgedHostConfiguration> _hostConfigurationTypedStorage;
        
        /// <summary>
        /// _lastDmqMqcHeadTypedStorage typed storage field
        /// </summary>
        private TypedStorage<Bajun.Network.NET.NetApiExt.Generated.Model.cumulus_primitives_parachain_inherent.MessageQueueChain> _lastDmqMqcHeadTypedStorage;
        
        /// <summary>
        /// _lastHrmpMqcHeadsTypedStorage typed storage field
        /// </summary>
        private TypedStorage<Bajun.Network.NET.NetApiExt.Generated.Types.Base.BTreeMapT1> _lastHrmpMqcHeadsTypedStorage;
        
        /// <summary>
        /// _processedDownwardMessagesTypedStorage typed storage field
        /// </summary>
        private TypedStorage<Ajuna.NetApi.Model.Types.Primitive.U32> _processedDownwardMessagesTypedStorage;
        
        /// <summary>
        /// _hrmpWatermarkTypedStorage typed storage field
        /// </summary>
        private TypedStorage<Ajuna.NetApi.Model.Types.Primitive.U32> _hrmpWatermarkTypedStorage;
        
        /// <summary>
        /// _hrmpOutboundMessagesTypedStorage typed storage field
        /// </summary>
        private TypedStorage<Ajuna.NetApi.Model.Types.Base.BaseVec<Bajun.Network.NET.NetApiExt.Generated.Model.polkadot_core_primitives.OutboundHrmpMessage>> _hrmpOutboundMessagesTypedStorage;
        
        /// <summary>
        /// _upwardMessagesTypedStorage typed storage field
        /// </summary>
        private TypedStorage<Ajuna.NetApi.Model.Types.Base.BaseVec<Ajuna.NetApi.Model.Types.Base.BaseVec<Ajuna.NetApi.Model.Types.Primitive.U8>>> _upwardMessagesTypedStorage;
        
        /// <summary>
        /// _pendingUpwardMessagesTypedStorage typed storage field
        /// </summary>
        private TypedStorage<Ajuna.NetApi.Model.Types.Base.BaseVec<Ajuna.NetApi.Model.Types.Base.BaseVec<Ajuna.NetApi.Model.Types.Primitive.U8>>> _pendingUpwardMessagesTypedStorage;
        
        /// <summary>
        /// _announcedHrmpMessagesPerCandidateTypedStorage typed storage field
        /// </summary>
        private TypedStorage<Ajuna.NetApi.Model.Types.Primitive.U32> _announcedHrmpMessagesPerCandidateTypedStorage;
        
        /// <summary>
        /// _reservedXcmpWeightOverrideTypedStorage typed storage field
        /// </summary>
        private TypedStorage<Bajun.Network.NET.NetApiExt.Generated.Model.sp_weights.weight_v2.Weight> _reservedXcmpWeightOverrideTypedStorage;
        
        /// <summary>
        /// _reservedDmpWeightOverrideTypedStorage typed storage field
        /// </summary>
        private TypedStorage<Bajun.Network.NET.NetApiExt.Generated.Model.sp_weights.weight_v2.Weight> _reservedDmpWeightOverrideTypedStorage;
        
        /// <summary>
        /// _authorizedUpgradeTypedStorage typed storage field
        /// </summary>
        private TypedStorage<Bajun.Network.NET.NetApiExt.Generated.Model.primitive_types.H256> _authorizedUpgradeTypedStorage;
        
        /// <summary>
        /// _customValidationHeadDataTypedStorage typed storage field
        /// </summary>
        private TypedStorage<Ajuna.NetApi.Model.Types.Base.BaseVec<Ajuna.NetApi.Model.Types.Primitive.U8>> _customValidationHeadDataTypedStorage;
        
        /// <summary>
        /// ParachainSystemStorage constructor.
        /// </summary>
        public ParachainSystemStorage(IStorageDataProvider storageDataProvider, List<IStorageChangeDelegate> storageChangeDelegates)
        {
            this.PendingValidationCodeTypedStorage = new TypedStorage<Ajuna.NetApi.Model.Types.Base.BaseVec<Ajuna.NetApi.Model.Types.Primitive.U8>>("ParachainSystem.PendingValidationCode", storageDataProvider, storageChangeDelegates);
            this.NewValidationCodeTypedStorage = new TypedStorage<Ajuna.NetApi.Model.Types.Base.BaseVec<Ajuna.NetApi.Model.Types.Primitive.U8>>("ParachainSystem.NewValidationCode", storageDataProvider, storageChangeDelegates);
            this.ValidationDataTypedStorage = new TypedStorage<Bajun.Network.NET.NetApiExt.Generated.Model.polkadot_primitives.v2.PersistedValidationData>("ParachainSystem.ValidationData", storageDataProvider, storageChangeDelegates);
            this.DidSetValidationCodeTypedStorage = new TypedStorage<Ajuna.NetApi.Model.Types.Primitive.Bool>("ParachainSystem.DidSetValidationCode", storageDataProvider, storageChangeDelegates);
            this.LastRelayChainBlockNumberTypedStorage = new TypedStorage<Ajuna.NetApi.Model.Types.Primitive.U32>("ParachainSystem.LastRelayChainBlockNumber", storageDataProvider, storageChangeDelegates);
            this.UpgradeRestrictionSignalTypedStorage = new TypedStorage<Ajuna.NetApi.Model.Types.Base.BaseOpt<Bajun.Network.NET.NetApiExt.Generated.Model.polkadot_primitives.v2.EnumUpgradeRestriction>>("ParachainSystem.UpgradeRestrictionSignal", storageDataProvider, storageChangeDelegates);
            this.RelayStateProofTypedStorage = new TypedStorage<Bajun.Network.NET.NetApiExt.Generated.Model.sp_trie.storage_proof.StorageProof>("ParachainSystem.RelayStateProof", storageDataProvider, storageChangeDelegates);
            this.RelevantMessagingStateTypedStorage = new TypedStorage<Bajun.Network.NET.NetApiExt.Generated.Model.cumulus_pallet_parachain_system.relay_state_snapshot.MessagingStateSnapshot>("ParachainSystem.RelevantMessagingState", storageDataProvider, storageChangeDelegates);
            this.HostConfigurationTypedStorage = new TypedStorage<Bajun.Network.NET.NetApiExt.Generated.Model.polkadot_primitives.v2.AbridgedHostConfiguration>("ParachainSystem.HostConfiguration", storageDataProvider, storageChangeDelegates);
            this.LastDmqMqcHeadTypedStorage = new TypedStorage<Bajun.Network.NET.NetApiExt.Generated.Model.cumulus_primitives_parachain_inherent.MessageQueueChain>("ParachainSystem.LastDmqMqcHead", storageDataProvider, storageChangeDelegates);
            this.LastHrmpMqcHeadsTypedStorage = new TypedStorage<Bajun.Network.NET.NetApiExt.Generated.Types.Base.BTreeMapT1>("ParachainSystem.LastHrmpMqcHeads", storageDataProvider, storageChangeDelegates);
            this.ProcessedDownwardMessagesTypedStorage = new TypedStorage<Ajuna.NetApi.Model.Types.Primitive.U32>("ParachainSystem.ProcessedDownwardMessages", storageDataProvider, storageChangeDelegates);
            this.HrmpWatermarkTypedStorage = new TypedStorage<Ajuna.NetApi.Model.Types.Primitive.U32>("ParachainSystem.HrmpWatermark", storageDataProvider, storageChangeDelegates);
            this.HrmpOutboundMessagesTypedStorage = new TypedStorage<Ajuna.NetApi.Model.Types.Base.BaseVec<Bajun.Network.NET.NetApiExt.Generated.Model.polkadot_core_primitives.OutboundHrmpMessage>>("ParachainSystem.HrmpOutboundMessages", storageDataProvider, storageChangeDelegates);
            this.UpwardMessagesTypedStorage = new TypedStorage<Ajuna.NetApi.Model.Types.Base.BaseVec<Ajuna.NetApi.Model.Types.Base.BaseVec<Ajuna.NetApi.Model.Types.Primitive.U8>>>("ParachainSystem.UpwardMessages", storageDataProvider, storageChangeDelegates);
            this.PendingUpwardMessagesTypedStorage = new TypedStorage<Ajuna.NetApi.Model.Types.Base.BaseVec<Ajuna.NetApi.Model.Types.Base.BaseVec<Ajuna.NetApi.Model.Types.Primitive.U8>>>("ParachainSystem.PendingUpwardMessages", storageDataProvider, storageChangeDelegates);
            this.AnnouncedHrmpMessagesPerCandidateTypedStorage = new TypedStorage<Ajuna.NetApi.Model.Types.Primitive.U32>("ParachainSystem.AnnouncedHrmpMessagesPerCandidate", storageDataProvider, storageChangeDelegates);
            this.ReservedXcmpWeightOverrideTypedStorage = new TypedStorage<Bajun.Network.NET.NetApiExt.Generated.Model.sp_weights.weight_v2.Weight>("ParachainSystem.ReservedXcmpWeightOverride", storageDataProvider, storageChangeDelegates);
            this.ReservedDmpWeightOverrideTypedStorage = new TypedStorage<Bajun.Network.NET.NetApiExt.Generated.Model.sp_weights.weight_v2.Weight>("ParachainSystem.ReservedDmpWeightOverride", storageDataProvider, storageChangeDelegates);
            this.AuthorizedUpgradeTypedStorage = new TypedStorage<Bajun.Network.NET.NetApiExt.Generated.Model.primitive_types.H256>("ParachainSystem.AuthorizedUpgrade", storageDataProvider, storageChangeDelegates);
            this.CustomValidationHeadDataTypedStorage = new TypedStorage<Ajuna.NetApi.Model.Types.Base.BaseVec<Ajuna.NetApi.Model.Types.Primitive.U8>>("ParachainSystem.CustomValidationHeadData", storageDataProvider, storageChangeDelegates);
        }
        
        /// <summary>
        /// _pendingValidationCodeTypedStorage property
        /// </summary>
        public TypedStorage<Ajuna.NetApi.Model.Types.Base.BaseVec<Ajuna.NetApi.Model.Types.Primitive.U8>> PendingValidationCodeTypedStorage
        {
            get
            {
                return _pendingValidationCodeTypedStorage;
            }
            set
            {
                _pendingValidationCodeTypedStorage = value;
            }
        }
        
        /// <summary>
        /// _newValidationCodeTypedStorage property
        /// </summary>
        public TypedStorage<Ajuna.NetApi.Model.Types.Base.BaseVec<Ajuna.NetApi.Model.Types.Primitive.U8>> NewValidationCodeTypedStorage
        {
            get
            {
                return _newValidationCodeTypedStorage;
            }
            set
            {
                _newValidationCodeTypedStorage = value;
            }
        }
        
        /// <summary>
        /// _validationDataTypedStorage property
        /// </summary>
        public TypedStorage<Bajun.Network.NET.NetApiExt.Generated.Model.polkadot_primitives.v2.PersistedValidationData> ValidationDataTypedStorage
        {
            get
            {
                return _validationDataTypedStorage;
            }
            set
            {
                _validationDataTypedStorage = value;
            }
        }
        
        /// <summary>
        /// _didSetValidationCodeTypedStorage property
        /// </summary>
        public TypedStorage<Ajuna.NetApi.Model.Types.Primitive.Bool> DidSetValidationCodeTypedStorage
        {
            get
            {
                return _didSetValidationCodeTypedStorage;
            }
            set
            {
                _didSetValidationCodeTypedStorage = value;
            }
        }
        
        /// <summary>
        /// _lastRelayChainBlockNumberTypedStorage property
        /// </summary>
        public TypedStorage<Ajuna.NetApi.Model.Types.Primitive.U32> LastRelayChainBlockNumberTypedStorage
        {
            get
            {
                return _lastRelayChainBlockNumberTypedStorage;
            }
            set
            {
                _lastRelayChainBlockNumberTypedStorage = value;
            }
        }
        
        /// <summary>
        /// _upgradeRestrictionSignalTypedStorage property
        /// </summary>
        public TypedStorage<Ajuna.NetApi.Model.Types.Base.BaseOpt<Bajun.Network.NET.NetApiExt.Generated.Model.polkadot_primitives.v2.EnumUpgradeRestriction>> UpgradeRestrictionSignalTypedStorage
        {
            get
            {
                return _upgradeRestrictionSignalTypedStorage;
            }
            set
            {
                _upgradeRestrictionSignalTypedStorage = value;
            }
        }
        
        /// <summary>
        /// _relayStateProofTypedStorage property
        /// </summary>
        public TypedStorage<Bajun.Network.NET.NetApiExt.Generated.Model.sp_trie.storage_proof.StorageProof> RelayStateProofTypedStorage
        {
            get
            {
                return _relayStateProofTypedStorage;
            }
            set
            {
                _relayStateProofTypedStorage = value;
            }
        }
        
        /// <summary>
        /// _relevantMessagingStateTypedStorage property
        /// </summary>
        public TypedStorage<Bajun.Network.NET.NetApiExt.Generated.Model.cumulus_pallet_parachain_system.relay_state_snapshot.MessagingStateSnapshot> RelevantMessagingStateTypedStorage
        {
            get
            {
                return _relevantMessagingStateTypedStorage;
            }
            set
            {
                _relevantMessagingStateTypedStorage = value;
            }
        }
        
        /// <summary>
        /// _hostConfigurationTypedStorage property
        /// </summary>
        public TypedStorage<Bajun.Network.NET.NetApiExt.Generated.Model.polkadot_primitives.v2.AbridgedHostConfiguration> HostConfigurationTypedStorage
        {
            get
            {
                return _hostConfigurationTypedStorage;
            }
            set
            {
                _hostConfigurationTypedStorage = value;
            }
        }
        
        /// <summary>
        /// _lastDmqMqcHeadTypedStorage property
        /// </summary>
        public TypedStorage<Bajun.Network.NET.NetApiExt.Generated.Model.cumulus_primitives_parachain_inherent.MessageQueueChain> LastDmqMqcHeadTypedStorage
        {
            get
            {
                return _lastDmqMqcHeadTypedStorage;
            }
            set
            {
                _lastDmqMqcHeadTypedStorage = value;
            }
        }
        
        /// <summary>
        /// _lastHrmpMqcHeadsTypedStorage property
        /// </summary>
        public TypedStorage<Bajun.Network.NET.NetApiExt.Generated.Types.Base.BTreeMapT1> LastHrmpMqcHeadsTypedStorage
        {
            get
            {
                return _lastHrmpMqcHeadsTypedStorage;
            }
            set
            {
                _lastHrmpMqcHeadsTypedStorage = value;
            }
        }
        
        /// <summary>
        /// _processedDownwardMessagesTypedStorage property
        /// </summary>
        public TypedStorage<Ajuna.NetApi.Model.Types.Primitive.U32> ProcessedDownwardMessagesTypedStorage
        {
            get
            {
                return _processedDownwardMessagesTypedStorage;
            }
            set
            {
                _processedDownwardMessagesTypedStorage = value;
            }
        }
        
        /// <summary>
        /// _hrmpWatermarkTypedStorage property
        /// </summary>
        public TypedStorage<Ajuna.NetApi.Model.Types.Primitive.U32> HrmpWatermarkTypedStorage
        {
            get
            {
                return _hrmpWatermarkTypedStorage;
            }
            set
            {
                _hrmpWatermarkTypedStorage = value;
            }
        }
        
        /// <summary>
        /// _hrmpOutboundMessagesTypedStorage property
        /// </summary>
        public TypedStorage<Ajuna.NetApi.Model.Types.Base.BaseVec<Bajun.Network.NET.NetApiExt.Generated.Model.polkadot_core_primitives.OutboundHrmpMessage>> HrmpOutboundMessagesTypedStorage
        {
            get
            {
                return _hrmpOutboundMessagesTypedStorage;
            }
            set
            {
                _hrmpOutboundMessagesTypedStorage = value;
            }
        }
        
        /// <summary>
        /// _upwardMessagesTypedStorage property
        /// </summary>
        public TypedStorage<Ajuna.NetApi.Model.Types.Base.BaseVec<Ajuna.NetApi.Model.Types.Base.BaseVec<Ajuna.NetApi.Model.Types.Primitive.U8>>> UpwardMessagesTypedStorage
        {
            get
            {
                return _upwardMessagesTypedStorage;
            }
            set
            {
                _upwardMessagesTypedStorage = value;
            }
        }
        
        /// <summary>
        /// _pendingUpwardMessagesTypedStorage property
        /// </summary>
        public TypedStorage<Ajuna.NetApi.Model.Types.Base.BaseVec<Ajuna.NetApi.Model.Types.Base.BaseVec<Ajuna.NetApi.Model.Types.Primitive.U8>>> PendingUpwardMessagesTypedStorage
        {
            get
            {
                return _pendingUpwardMessagesTypedStorage;
            }
            set
            {
                _pendingUpwardMessagesTypedStorage = value;
            }
        }
        
        /// <summary>
        /// _announcedHrmpMessagesPerCandidateTypedStorage property
        /// </summary>
        public TypedStorage<Ajuna.NetApi.Model.Types.Primitive.U32> AnnouncedHrmpMessagesPerCandidateTypedStorage
        {
            get
            {
                return _announcedHrmpMessagesPerCandidateTypedStorage;
            }
            set
            {
                _announcedHrmpMessagesPerCandidateTypedStorage = value;
            }
        }
        
        /// <summary>
        /// _reservedXcmpWeightOverrideTypedStorage property
        /// </summary>
        public TypedStorage<Bajun.Network.NET.NetApiExt.Generated.Model.sp_weights.weight_v2.Weight> ReservedXcmpWeightOverrideTypedStorage
        {
            get
            {
                return _reservedXcmpWeightOverrideTypedStorage;
            }
            set
            {
                _reservedXcmpWeightOverrideTypedStorage = value;
            }
        }
        
        /// <summary>
        /// _reservedDmpWeightOverrideTypedStorage property
        /// </summary>
        public TypedStorage<Bajun.Network.NET.NetApiExt.Generated.Model.sp_weights.weight_v2.Weight> ReservedDmpWeightOverrideTypedStorage
        {
            get
            {
                return _reservedDmpWeightOverrideTypedStorage;
            }
            set
            {
                _reservedDmpWeightOverrideTypedStorage = value;
            }
        }
        
        /// <summary>
        /// _authorizedUpgradeTypedStorage property
        /// </summary>
        public TypedStorage<Bajun.Network.NET.NetApiExt.Generated.Model.primitive_types.H256> AuthorizedUpgradeTypedStorage
        {
            get
            {
                return _authorizedUpgradeTypedStorage;
            }
            set
            {
                _authorizedUpgradeTypedStorage = value;
            }
        }
        
        /// <summary>
        /// _customValidationHeadDataTypedStorage property
        /// </summary>
        public TypedStorage<Ajuna.NetApi.Model.Types.Base.BaseVec<Ajuna.NetApi.Model.Types.Primitive.U8>> CustomValidationHeadDataTypedStorage
        {
            get
            {
                return _customValidationHeadDataTypedStorage;
            }
            set
            {
                _customValidationHeadDataTypedStorage = value;
            }
        }
        
        /// <summary>
        /// Connects to all storages and initializes the change subscription handling.
        /// </summary>
        public async Task InitializeAsync(Ajuna.ServiceLayer.Storage.IStorageDataProvider dataProvider)
        {
            await PendingValidationCodeTypedStorage.InitializeAsync("ParachainSystem", "PendingValidationCode");
            await NewValidationCodeTypedStorage.InitializeAsync("ParachainSystem", "NewValidationCode");
            await ValidationDataTypedStorage.InitializeAsync("ParachainSystem", "ValidationData");
            await DidSetValidationCodeTypedStorage.InitializeAsync("ParachainSystem", "DidSetValidationCode");
            await LastRelayChainBlockNumberTypedStorage.InitializeAsync("ParachainSystem", "LastRelayChainBlockNumber");
            await UpgradeRestrictionSignalTypedStorage.InitializeAsync("ParachainSystem", "UpgradeRestrictionSignal");
            await RelayStateProofTypedStorage.InitializeAsync("ParachainSystem", "RelayStateProof");
            await RelevantMessagingStateTypedStorage.InitializeAsync("ParachainSystem", "RelevantMessagingState");
            await HostConfigurationTypedStorage.InitializeAsync("ParachainSystem", "HostConfiguration");
            await LastDmqMqcHeadTypedStorage.InitializeAsync("ParachainSystem", "LastDmqMqcHead");
            await LastHrmpMqcHeadsTypedStorage.InitializeAsync("ParachainSystem", "LastHrmpMqcHeads");
            await ProcessedDownwardMessagesTypedStorage.InitializeAsync("ParachainSystem", "ProcessedDownwardMessages");
            await HrmpWatermarkTypedStorage.InitializeAsync("ParachainSystem", "HrmpWatermark");
            await HrmpOutboundMessagesTypedStorage.InitializeAsync("ParachainSystem", "HrmpOutboundMessages");
            await UpwardMessagesTypedStorage.InitializeAsync("ParachainSystem", "UpwardMessages");
            await PendingUpwardMessagesTypedStorage.InitializeAsync("ParachainSystem", "PendingUpwardMessages");
            await AnnouncedHrmpMessagesPerCandidateTypedStorage.InitializeAsync("ParachainSystem", "AnnouncedHrmpMessagesPerCandidate");
            await ReservedXcmpWeightOverrideTypedStorage.InitializeAsync("ParachainSystem", "ReservedXcmpWeightOverride");
            await ReservedDmpWeightOverrideTypedStorage.InitializeAsync("ParachainSystem", "ReservedDmpWeightOverride");
            await AuthorizedUpgradeTypedStorage.InitializeAsync("ParachainSystem", "AuthorizedUpgrade");
            await CustomValidationHeadDataTypedStorage.InitializeAsync("ParachainSystem", "CustomValidationHeadData");
        }
        
        /// <summary>
        /// Implements any storage change for ParachainSystem.PendingValidationCode
        /// </summary>
        [StorageChange("ParachainSystem", "PendingValidationCode")]
        public void OnUpdatePendingValidationCode(string data)
        {
            PendingValidationCodeTypedStorage.Update(data);
        }
        
        /// <summary>
        /// >> PendingValidationCode
        ///  In case of a scheduled upgrade, this storage field contains the validation code to be applied.
        /// 
        ///  As soon as the relay chain gives us the go-ahead signal, we will overwrite the [`:code`][well_known_keys::CODE]
        ///  which will result the next block process with the new validation code. This concludes the upgrade process.
        /// 
        ///  [well_known_keys::CODE]: sp_core::storage::well_known_keys::CODE
        /// </summary>
        public Ajuna.NetApi.Model.Types.Base.BaseVec<Ajuna.NetApi.Model.Types.Primitive.U8> GetPendingValidationCode()
        {
            return PendingValidationCodeTypedStorage.Get();
        }
        
        /// <summary>
        /// Implements any storage change for ParachainSystem.NewValidationCode
        /// </summary>
        [StorageChange("ParachainSystem", "NewValidationCode")]
        public void OnUpdateNewValidationCode(string data)
        {
            NewValidationCodeTypedStorage.Update(data);
        }
        
        /// <summary>
        /// >> NewValidationCode
        ///  Validation code that is set by the parachain and is to be communicated to collator and
        ///  consequently the relay-chain.
        /// 
        ///  This will be cleared in `on_initialize` of each new block if no other pallet already set
        ///  the value.
        /// </summary>
        public Ajuna.NetApi.Model.Types.Base.BaseVec<Ajuna.NetApi.Model.Types.Primitive.U8> GetNewValidationCode()
        {
            return NewValidationCodeTypedStorage.Get();
        }
        
        /// <summary>
        /// Implements any storage change for ParachainSystem.ValidationData
        /// </summary>
        [StorageChange("ParachainSystem", "ValidationData")]
        public void OnUpdateValidationData(string data)
        {
            ValidationDataTypedStorage.Update(data);
        }
        
        /// <summary>
        /// >> ValidationData
        ///  The [`PersistedValidationData`] set for this block.
        ///  This value is expected to be set only once per block and it's never stored
        ///  in the trie.
        /// </summary>
        public Bajun.Network.NET.NetApiExt.Generated.Model.polkadot_primitives.v2.PersistedValidationData GetValidationData()
        {
            return ValidationDataTypedStorage.Get();
        }
        
        /// <summary>
        /// Implements any storage change for ParachainSystem.DidSetValidationCode
        /// </summary>
        [StorageChange("ParachainSystem", "DidSetValidationCode")]
        public void OnUpdateDidSetValidationCode(string data)
        {
            DidSetValidationCodeTypedStorage.Update(data);
        }
        
        /// <summary>
        /// >> DidSetValidationCode
        ///  Were the validation data set to notify the relay chain?
        /// </summary>
        public Ajuna.NetApi.Model.Types.Primitive.Bool GetDidSetValidationCode()
        {
            return DidSetValidationCodeTypedStorage.Get();
        }
        
        /// <summary>
        /// Implements any storage change for ParachainSystem.LastRelayChainBlockNumber
        /// </summary>
        [StorageChange("ParachainSystem", "LastRelayChainBlockNumber")]
        public void OnUpdateLastRelayChainBlockNumber(string data)
        {
            LastRelayChainBlockNumberTypedStorage.Update(data);
        }
        
        /// <summary>
        /// >> LastRelayChainBlockNumber
        ///  The relay chain block number associated with the last parachain block.
        /// </summary>
        public Ajuna.NetApi.Model.Types.Primitive.U32 GetLastRelayChainBlockNumber()
        {
            return LastRelayChainBlockNumberTypedStorage.Get();
        }
        
        /// <summary>
        /// Implements any storage change for ParachainSystem.UpgradeRestrictionSignal
        /// </summary>
        [StorageChange("ParachainSystem", "UpgradeRestrictionSignal")]
        public void OnUpdateUpgradeRestrictionSignal(string data)
        {
            UpgradeRestrictionSignalTypedStorage.Update(data);
        }
        
        /// <summary>
        /// >> UpgradeRestrictionSignal
        ///  An option which indicates if the relay-chain restricts signalling a validation code upgrade.
        ///  In other words, if this is `Some` and [`NewValidationCode`] is `Some` then the produced
        ///  candidate will be invalid.
        /// 
        ///  This storage item is a mirror of the corresponding value for the current parachain from the
        ///  relay-chain. This value is ephemeral which means it doesn't hit the storage. This value is
        ///  set after the inherent.
        /// </summary>
        public Ajuna.NetApi.Model.Types.Base.BaseOpt<Bajun.Network.NET.NetApiExt.Generated.Model.polkadot_primitives.v2.EnumUpgradeRestriction> GetUpgradeRestrictionSignal()
        {
            return UpgradeRestrictionSignalTypedStorage.Get();
        }
        
        /// <summary>
        /// Implements any storage change for ParachainSystem.RelayStateProof
        /// </summary>
        [StorageChange("ParachainSystem", "RelayStateProof")]
        public void OnUpdateRelayStateProof(string data)
        {
            RelayStateProofTypedStorage.Update(data);
        }
        
        /// <summary>
        /// >> RelayStateProof
        ///  The state proof for the last relay parent block.
        /// 
        ///  This field is meant to be updated each block with the validation data inherent. Therefore,
        ///  before processing of the inherent, e.g. in `on_initialize` this data may be stale.
        /// 
        ///  This data is also absent from the genesis.
        /// </summary>
        public Bajun.Network.NET.NetApiExt.Generated.Model.sp_trie.storage_proof.StorageProof GetRelayStateProof()
        {
            return RelayStateProofTypedStorage.Get();
        }
        
        /// <summary>
        /// Implements any storage change for ParachainSystem.RelevantMessagingState
        /// </summary>
        [StorageChange("ParachainSystem", "RelevantMessagingState")]
        public void OnUpdateRelevantMessagingState(string data)
        {
            RelevantMessagingStateTypedStorage.Update(data);
        }
        
        /// <summary>
        /// >> RelevantMessagingState
        ///  The snapshot of some state related to messaging relevant to the current parachain as per
        ///  the relay parent.
        /// 
        ///  This field is meant to be updated each block with the validation data inherent. Therefore,
        ///  before processing of the inherent, e.g. in `on_initialize` this data may be stale.
        /// 
        ///  This data is also absent from the genesis.
        /// </summary>
        public Bajun.Network.NET.NetApiExt.Generated.Model.cumulus_pallet_parachain_system.relay_state_snapshot.MessagingStateSnapshot GetRelevantMessagingState()
        {
            return RelevantMessagingStateTypedStorage.Get();
        }
        
        /// <summary>
        /// Implements any storage change for ParachainSystem.HostConfiguration
        /// </summary>
        [StorageChange("ParachainSystem", "HostConfiguration")]
        public void OnUpdateHostConfiguration(string data)
        {
            HostConfigurationTypedStorage.Update(data);
        }
        
        /// <summary>
        /// >> HostConfiguration
        ///  The parachain host configuration that was obtained from the relay parent.
        /// 
        ///  This field is meant to be updated each block with the validation data inherent. Therefore,
        ///  before processing of the inherent, e.g. in `on_initialize` this data may be stale.
        /// 
        ///  This data is also absent from the genesis.
        /// </summary>
        public Bajun.Network.NET.NetApiExt.Generated.Model.polkadot_primitives.v2.AbridgedHostConfiguration GetHostConfiguration()
        {
            return HostConfigurationTypedStorage.Get();
        }
        
        /// <summary>
        /// Implements any storage change for ParachainSystem.LastDmqMqcHead
        /// </summary>
        [StorageChange("ParachainSystem", "LastDmqMqcHead")]
        public void OnUpdateLastDmqMqcHead(string data)
        {
            LastDmqMqcHeadTypedStorage.Update(data);
        }
        
        /// <summary>
        /// >> LastDmqMqcHead
        ///  The last downward message queue chain head we have observed.
        /// 
        ///  This value is loaded before and saved after processing inbound downward messages carried
        ///  by the system inherent.
        /// </summary>
        public Bajun.Network.NET.NetApiExt.Generated.Model.cumulus_primitives_parachain_inherent.MessageQueueChain GetLastDmqMqcHead()
        {
            return LastDmqMqcHeadTypedStorage.Get();
        }
        
        /// <summary>
        /// Implements any storage change for ParachainSystem.LastHrmpMqcHeads
        /// </summary>
        [StorageChange("ParachainSystem", "LastHrmpMqcHeads")]
        public void OnUpdateLastHrmpMqcHeads(string data)
        {
            LastHrmpMqcHeadsTypedStorage.Update(data);
        }
        
        /// <summary>
        /// >> LastHrmpMqcHeads
        ///  The message queue chain heads we have observed per each channel incoming channel.
        /// 
        ///  This value is loaded before and saved after processing inbound downward messages carried
        ///  by the system inherent.
        /// </summary>
        public Bajun.Network.NET.NetApiExt.Generated.Types.Base.BTreeMapT1 GetLastHrmpMqcHeads()
        {
            return LastHrmpMqcHeadsTypedStorage.Get();
        }
        
        /// <summary>
        /// Implements any storage change for ParachainSystem.ProcessedDownwardMessages
        /// </summary>
        [StorageChange("ParachainSystem", "ProcessedDownwardMessages")]
        public void OnUpdateProcessedDownwardMessages(string data)
        {
            ProcessedDownwardMessagesTypedStorage.Update(data);
        }
        
        /// <summary>
        /// >> ProcessedDownwardMessages
        ///  Number of downward messages processed in a block.
        /// 
        ///  This will be cleared in `on_initialize` of each new block.
        /// </summary>
        public Ajuna.NetApi.Model.Types.Primitive.U32 GetProcessedDownwardMessages()
        {
            return ProcessedDownwardMessagesTypedStorage.Get();
        }
        
        /// <summary>
        /// Implements any storage change for ParachainSystem.HrmpWatermark
        /// </summary>
        [StorageChange("ParachainSystem", "HrmpWatermark")]
        public void OnUpdateHrmpWatermark(string data)
        {
            HrmpWatermarkTypedStorage.Update(data);
        }
        
        /// <summary>
        /// >> HrmpWatermark
        ///  HRMP watermark that was set in a block.
        /// 
        ///  This will be cleared in `on_initialize` of each new block.
        /// </summary>
        public Ajuna.NetApi.Model.Types.Primitive.U32 GetHrmpWatermark()
        {
            return HrmpWatermarkTypedStorage.Get();
        }
        
        /// <summary>
        /// Implements any storage change for ParachainSystem.HrmpOutboundMessages
        /// </summary>
        [StorageChange("ParachainSystem", "HrmpOutboundMessages")]
        public void OnUpdateHrmpOutboundMessages(string data)
        {
            HrmpOutboundMessagesTypedStorage.Update(data);
        }
        
        /// <summary>
        /// >> HrmpOutboundMessages
        ///  HRMP messages that were sent in a block.
        /// 
        ///  This will be cleared in `on_initialize` of each new block.
        /// </summary>
        public Ajuna.NetApi.Model.Types.Base.BaseVec<Bajun.Network.NET.NetApiExt.Generated.Model.polkadot_core_primitives.OutboundHrmpMessage> GetHrmpOutboundMessages()
        {
            return HrmpOutboundMessagesTypedStorage.Get();
        }
        
        /// <summary>
        /// Implements any storage change for ParachainSystem.UpwardMessages
        /// </summary>
        [StorageChange("ParachainSystem", "UpwardMessages")]
        public void OnUpdateUpwardMessages(string data)
        {
            UpwardMessagesTypedStorage.Update(data);
        }
        
        /// <summary>
        /// >> UpwardMessages
        ///  Upward messages that were sent in a block.
        /// 
        ///  This will be cleared in `on_initialize` of each new block.
        /// </summary>
        public Ajuna.NetApi.Model.Types.Base.BaseVec<Ajuna.NetApi.Model.Types.Base.BaseVec<Ajuna.NetApi.Model.Types.Primitive.U8>> GetUpwardMessages()
        {
            return UpwardMessagesTypedStorage.Get();
        }
        
        /// <summary>
        /// Implements any storage change for ParachainSystem.PendingUpwardMessages
        /// </summary>
        [StorageChange("ParachainSystem", "PendingUpwardMessages")]
        public void OnUpdatePendingUpwardMessages(string data)
        {
            PendingUpwardMessagesTypedStorage.Update(data);
        }
        
        /// <summary>
        /// >> PendingUpwardMessages
        ///  Upward messages that are still pending and not yet send to the relay chain.
        /// </summary>
        public Ajuna.NetApi.Model.Types.Base.BaseVec<Ajuna.NetApi.Model.Types.Base.BaseVec<Ajuna.NetApi.Model.Types.Primitive.U8>> GetPendingUpwardMessages()
        {
            return PendingUpwardMessagesTypedStorage.Get();
        }
        
        /// <summary>
        /// Implements any storage change for ParachainSystem.AnnouncedHrmpMessagesPerCandidate
        /// </summary>
        [StorageChange("ParachainSystem", "AnnouncedHrmpMessagesPerCandidate")]
        public void OnUpdateAnnouncedHrmpMessagesPerCandidate(string data)
        {
            AnnouncedHrmpMessagesPerCandidateTypedStorage.Update(data);
        }
        
        /// <summary>
        /// >> AnnouncedHrmpMessagesPerCandidate
        ///  The number of HRMP messages we observed in `on_initialize` and thus used that number for
        ///  announcing the weight of `on_initialize` and `on_finalize`.
        /// </summary>
        public Ajuna.NetApi.Model.Types.Primitive.U32 GetAnnouncedHrmpMessagesPerCandidate()
        {
            return AnnouncedHrmpMessagesPerCandidateTypedStorage.Get();
        }
        
        /// <summary>
        /// Implements any storage change for ParachainSystem.ReservedXcmpWeightOverride
        /// </summary>
        [StorageChange("ParachainSystem", "ReservedXcmpWeightOverride")]
        public void OnUpdateReservedXcmpWeightOverride(string data)
        {
            ReservedXcmpWeightOverrideTypedStorage.Update(data);
        }
        
        /// <summary>
        /// >> ReservedXcmpWeightOverride
        ///  The weight we reserve at the beginning of the block for processing XCMP messages. This
        ///  overrides the amount set in the Config trait.
        /// </summary>
        public Bajun.Network.NET.NetApiExt.Generated.Model.sp_weights.weight_v2.Weight GetReservedXcmpWeightOverride()
        {
            return ReservedXcmpWeightOverrideTypedStorage.Get();
        }
        
        /// <summary>
        /// Implements any storage change for ParachainSystem.ReservedDmpWeightOverride
        /// </summary>
        [StorageChange("ParachainSystem", "ReservedDmpWeightOverride")]
        public void OnUpdateReservedDmpWeightOverride(string data)
        {
            ReservedDmpWeightOverrideTypedStorage.Update(data);
        }
        
        /// <summary>
        /// >> ReservedDmpWeightOverride
        ///  The weight we reserve at the beginning of the block for processing DMP messages. This
        ///  overrides the amount set in the Config trait.
        /// </summary>
        public Bajun.Network.NET.NetApiExt.Generated.Model.sp_weights.weight_v2.Weight GetReservedDmpWeightOverride()
        {
            return ReservedDmpWeightOverrideTypedStorage.Get();
        }
        
        /// <summary>
        /// Implements any storage change for ParachainSystem.AuthorizedUpgrade
        /// </summary>
        [StorageChange("ParachainSystem", "AuthorizedUpgrade")]
        public void OnUpdateAuthorizedUpgrade(string data)
        {
            AuthorizedUpgradeTypedStorage.Update(data);
        }
        
        /// <summary>
        /// >> AuthorizedUpgrade
        ///  The next authorized upgrade, if there is one.
        /// </summary>
        public Bajun.Network.NET.NetApiExt.Generated.Model.primitive_types.H256 GetAuthorizedUpgrade()
        {
            return AuthorizedUpgradeTypedStorage.Get();
        }
        
        /// <summary>
        /// Implements any storage change for ParachainSystem.CustomValidationHeadData
        /// </summary>
        [StorageChange("ParachainSystem", "CustomValidationHeadData")]
        public void OnUpdateCustomValidationHeadData(string data)
        {
            CustomValidationHeadDataTypedStorage.Update(data);
        }
        
        /// <summary>
        /// >> CustomValidationHeadData
        ///  A custom head data that should be returned as result of `validate_block`.
        /// 
        ///  See [`Pallet::set_custom_validation_head_data`] for more information.
        /// </summary>
        public Ajuna.NetApi.Model.Types.Base.BaseVec<Ajuna.NetApi.Model.Types.Primitive.U8> GetCustomValidationHeadData()
        {
            return CustomValidationHeadDataTypedStorage.Get();
        }
    }
}
