```ts
/**
 * Calculate twice the area of a simple polygon on the integer lattice.
 * @param vertices - Array of [x, y] pairs representing the polygon's vertices in order.
 * @returns Twice the enclosed area as a non-negative integer.
 */
export function polygonDoubleArea(vertices: number[][]): number {
    if (vertices.length < 3) {
        throw new Error('Polygon must have at least three vertices.');
    }

    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 two integers.');
        }
    }

    if (vertices.some((v, i, arr) => v[0] === arr[(i + 1) % arr.length][0] && v[1] === arr[(i + 1) % arr.length][1])) {
        throw new Error('Vertices must not be identical.');
    }

    let area = 0;
    for (let i = 0; i < vertices.length; i++) {
        const [x1, y1] = vertices[i];
        const [x2, y2] = vertices[(i + 1) % vertices.length];
        area += x1 * y2 - y1 * x2;
    }

    return Math.abs(area);
}
```