# Generated by the protocol buffer compiler.  DO NOT EDIT!
# sources: cosmos/app/runtime/v1alpha1/module.proto
# plugin: python-betterproto
# This file has been @generated

from dataclasses import dataclass
from typing import List

import betterproto


@dataclass(eq=False, repr=False)
class Module(betterproto.Message):
    """Module is the config object for the runtime module."""

    app_name: str = betterproto.string_field(1)
    """app_name is the name of the app."""

    begin_blockers: List[str] = betterproto.string_field(2)
    """
    begin_blockers specifies the module names of begin blockers to call in the
    order in which they should be called. If this is left empty no begin
    blocker will be registered.
    """

    end_blockers: List[str] = betterproto.string_field(3)
    """
    end_blockers specifies the module names of the end blockers to call in the
    order in which they should be called. If this is left empty no end blocker
    will be registered.
    """

    init_genesis: List[str] = betterproto.string_field(4)
    """
    init_genesis specifies the module names of init genesis functions to call
    in the order in which they should be called. If this is left empty no init
    genesis function will be registered.
    """

    export_genesis: List[str] = betterproto.string_field(5)
    """
    export_genesis specifies the order in which to export module genesis data.
    If this is left empty, the init_genesis order will be used for export
    genesis if it is specified.
    """

    override_store_keys: List["StoreKeyConfig"] = betterproto.message_field(6)
    """
    override_store_keys is an optional list of overrides for the module store
    keys to be used in keeper construction.
    """


@dataclass(eq=False, repr=False)
class StoreKeyConfig(betterproto.Message):
    """
    StoreKeyConfig may be supplied to override the default module store key,
    which is the module name.
    """

    module_name: str = betterproto.string_field(1)
    """name of the module to override the store key of"""

    kv_store_key: str = betterproto.string_field(2)
    """the kv store key to use instead of the module name."""
