from typing import List
from typing import Tuple


def minimum_bounding_box(coords: List[Tuple[float, float, float]], 
                         buffer: float = 10.) -> Tuple[Tuple, Tuple]:
    """Calculate the minimum bounding box for a list of coordinates

    Parameters
    ----------
    coords : List[Tuple[float, float, float]]
        a list of tuples corresponding to x-, y-, and z-coordinates
    buffer : float (Default = 10.)
        the amount of buffer to add to the minimum bounding box

    Returns
    -------
    center: Tuple[float, float, float]
        the x-, y-, and z-coordinates of the center of the minimum bounding box
    size: Tuple[float, float, float]
        the x-, y-, and z-radii of the minimum bounding box
    """
    xs, ys, zs = zip(*coords)
    min_x, max_x = min(xs), max(xs)
    min_y, max_y = min(ys), max(ys)
    min_z, max_z = min(zs), max(zs)

    center_x = (max_x + min_x) / 2
    center_y = (max_y + min_y) / 2
    center_z = (max_z + min_z) / 2

    size_x = (max_x - center_x) + buffer
    size_y = (max_y - center_y) + buffer
    size_z = (max_z - center_z) + buffer

    center = center_x, center_y, center_z
    size = size_x, size_y, size_z

    return center, size