from typing import Dict
from typing import Tuple


def create_default_domain_param_map_wambic() -> Dict[int, Tuple[str, str]]:
    """
    Create the default mapping from indices to domain parameters (as used in the `BayRn` algorithm).

    :return: dict where the key is the index and the value is a tuple of domain parameter and the associated domain
             distribution parameter
    """
    return {
        0: ("cup_scale", "mean"),
        1: ("cup_scale", "std"),
        2: ("rope_length", "mean"),
        3: ("rope_length", "std"),
        4: ("ball_mass", "mean"),
        5: ("ball_mass", "std"),
        6: ("rope_damping", "mean"),
        7: ("rope_damping", "halfspan"),
        8: ("joint_1_damping", "mean"),
        9: ("joint_1_damping", "halfspan"),
        10: ("joint_2_damping", "mean"),
        11: ("joint_2_damping", "halfspan"),
        12: ("joint_3_damping", "mean"),
        13: ("joint_3_damping", "halfspan"),
        14: ("joint_4_damping", "mean"),
        15: ("joint_4_damping", "halfspan"),
        16: ("joint_5_damping", "mean"),
        17: ("joint_5_damping", "halfspan"),
        18: ("joint_6_damping", "mean"),
        19: ("joint_6_damping", "halfspan"),
        20: ("joint_7_damping", "mean"),
        21: ("joint_7_damping", "halfspan"),
        22: ("joint_1_dryfriction", "mean"),
        23: ("joint_1_dryfriction", "halfspan"),
        24: ("joint_2_dryfriction", "mean"),
        25: ("joint_2_dryfriction", "halfspan"),
        26: ("joint_3_dryfriction", "mean"),
        27: ("joint_3_dryfriction", "halfspan"),
        28: ("joint_4_dryfriction", "mean"),
        29: ("joint_4_dryfriction", "halfspan"),
        30: ("joint_5_dryfriction", "mean"),
        31: ("joint_5_dryfriction", "halfspan"),
        32: ("joint_6_dryfriction", "mean"),
        33: ("joint_6_dryfriction", "halfspan"),
        34: ("joint_7_dryfriction", "mean"),
        35: ("joint_7_dryfriction", "halfspan"),
    }