```ts
export function flatten(items: readonly unknown[], depth?: number): unknown[] {
  if (!Number.isInteger(depth) && depth !== Infinity && depth !== undefined) {
    throw new Error("depth must be a non-negative integer or Infinity");
  }

  const flattenHelper = (arr: unknown[], currentDepth: number): unknown[] => {
    return arr.flatMap((item, index) => {
      if (Array.isArray(item)) {
        if (currentDepth > 0) {
          return flattenHelper(item, currentDepth - 1);
        }
      }
      return item;
    });
  };

  if (depth === undefined || depth <= 0) {
    return [...items];
  }

  return flattenHelper(items, depth);
}
```