```ts
export function polygonDoubleArea(vertices: number[][]): number {
    if (vertices.length < 3) throw new Error("At least three vertices are required");
    for (const vertex of vertices) {
        if (vertex.length !== 2 || !Number.isInteger(vertex[0]) || !Number.isInteger(vertex[1])) {
            throw new Error("Each vertex must be a pair of integers");
        }
    }
    if (vertices.some((v, i, a) => i > 0 && v.join(',') === a[i - 1].join(','))) throw new Error("No two consecutive vertices can be identical");
    if (vertices[vertices.length - 1].join(',') === vertices[0].join(',')) throw new Error("The last vertex must not be the same as the first");

    let area = 0;
    for (let i = 0; i < vertices.length; i++) {
        const j = (i + 1) % vertices.length;
        area += vertices[i][0] * vertices[j][1];
        area -= vertices[j][0] * vertices[i][1];
    }
    return Math.abs(area);
}
```