```ts
export function mergeIntervals(intervals: number[][]): number[][] {
  if (!Array.isArray(intervals) || intervals.length === 0) {
    throw new Error("Input must be a non-empty array of intervals.");
  }

  const sortedIntervals = [...intervals].sort((a, b) => a[0] - b[0]);
  const result: number[][] = [];

  for (const interval of sortedIntervals) {
    if (!Array.isArray(interval) || interval.length !== 2) {
      throw new Error("Invalid interval format.");
    }

    if (interval[0] > interval[1]) {
      throw new Error("Interval start cannot be greater than end.");
    }

    const last = result[result.length - 1];

    if (!last || interval[0] > last[1]) {
      result.push([...interval]);
    } else {
      result[result.length - 1][1] = Math.max(last[1], interval[1]);
    }
  }

  return result;
}
```