```ts
export function orderColorReport(
  neighbours: number[][],
  visitOrder: number[],
): number[][] {
  if (neighbours.length === 0) {
    throw new Error('No transmitters');
  }

  for (const tx of visitOrder) {
    if (tx < 0 || tx >= neighbours.length) {
      throw new Error(`Invalid transmitter in sequence: ${tx}`);
    }
  }

  const channel: number[] = new Array(neighbours.length).fill(-1);
  const visited: boolean[] = new Array(neighbours.length).fill(false);

  for (const tx of visitOrder) {
    if (visited[tx]) {
      throw new Error(`Transmitter ${tx} appears more than once in sequence`);
    }
    visited[tx] = true;

    let highest = -1;
    for (const other of neighbours[tx]) {
      if (!visited[other]) continue;
      if (channel[other] > highest) {
        highest = channel[other];
      }
    }

    channel[tx] = highest + 1;
  }

  const distinctChannels = new Set(channel);
  return [channel, [distinctChannels.size]];
}
```