%<*package>

\seq_new:N \g_@@_block_register_seq
\seq_new:N \g_@@_index_register_seq
\prop_new:N \g_@@_blocktype_register_prop
\prop_new:N \g_@@_blockname_register_prop
\prop_new:N \g_@@_blockparameter_register_prop
\prop_new:N \g_@@_blockcontent_register_prop
\prop_new:N \g_@@_blocksectionpath_register_prop
\prop_new:N \g_@@_indexparameter_register_prop

% [parameter] block's label (expanded)
\NewDocumentCommand \Register@block {m} {
    \seq_gput_right:Nn \g_@@_block_register_seq {#1}
}

% [parameter] scope path of index (verbatim)
\NewDocumentCommand \Register@index {v} {
    \seq_gput_right:Nn \g_@@_index_register_seq {#1}
}

% [parameter] block's label (expanded) , block type name (only letters)
\NewDocumentCommand \Register@blocktype {m m} {
    \prop_gput:Nnn \g_@@_blocktype_register_prop {#1} {#2}
}

% [parameter] block's label (expanded) , block's display name
\NewDocumentCommand \Register@blockname {m m} {
    \prop_gput:Nnn \g_@@_blockname_register_prop {#1} {#2}
}

% [parameter] block's label (expanded) , block's parameter
\NewDocumentCommand \Register@blockparameter {m m} {
    \prop_gput:Nnn \g_@@_blockparameter_register_prop {#1} {#2}
}

% [parameter] block's label (expanded) , block's content
\NewDocumentCommand \Register@blockcontent {m +m} {
    \prop_gput:Nnn \g_@@_blockcontent_register_prop {#1} {#2}
}

% [parameter] block's label (expanded) , path of block's parent section (verbatim)
\NewDocumentCommand \Register@blocksectionpath {m v} {
    \prop_gput:Nnn \g_@@_blocksectionpath_register_prop {#1} {#2}
}

% [parameter] scope path of index (verbatim) , index's parameter
\NewDocumentCommand \Register@indexparameter {m m} {
    \prop_gput:Nnn \g_@@_indexparameter_register_prop {#1} {#2}
}

%</package>