def METHOD_NAME(
    slices: List[Union[slice, int, List[int]]],
    sample_shape: Tuple[int, ...],
    tile_shape: Tuple[int, ...],
) -> Tuple[Tuple, Tuple]:
    """Translates slices from sample space to tile space
    Args:
        sample_shape (Tuple[int, ...]): Sample shape.
        tile_shape (Tuple[int, ...]): Tile shape.
    Raises:
        NotImplementedError: For stepping slices
    """
    tiles_index: List[slice] = []
    sample_index: List[Union[int, slice, List[int]]] = []
    for i, s in enumerate(slices):
        if isinstance(s, int):
            if s < 0:
                s += sample_shape[i]
            ts = s // tile_shape[i]
            tiles_index.append(slice(ts, ts + 1))
            sample_index.append(s % tile_shape[i])
        elif isinstance(s, list):
            s = [x + sample_shape[i] if x < 0 else x for x in s]
            mn, mx = min(s), max(s)
            if s != list(range(mn, mx + 1)):
                raise NotImplementedError(
                    "Non-contiguous indexing for tiled samples is not supported yet."
                )
            tiles_index.append(slice(mn // tile_shape[i], mx // tile_shape[i] + 1))
            offset = mn - (mn % tile_shape[i])
            sample_index.append([x - offset for x in s])
        elif isinstance(s, slice):
            start, stop, step = s.start, s.stop, s.step
            if start is None:
                start = 0
            elif start < 0:
                start += sample_shape[i]
            if stop is None:
                stop = sample_shape[i]
            elif stop < 0:
                stop += sample_shape[i]
            else:
                stop = min(stop, sample_shape[i])
            if step not in (1, None):
                raise NotImplementedError(
                    "Stepped indexing for tiled samples is not supported yet."
                )
            ts = slice(start // tile_shape[i], (stop - 1) // tile_shape[i] + 1)  # type: ignore
            tiles_index.append(ts)  # type: ignore
            offset = ts.start * tile_shape[i]  # type: ignore
            sample_index.append(slice(start - offset, stop - offset))  # type: ignore
    return tuple(tiles_index), tuple(sample_index)