```typescript
export function runThermostat(start: number, low: number, high: number, power: number, drifts: number[]): { temp: number; heated: number; switches: number; coldest: number } {
  if (!Number.isInteger(start) || !Number.isInteger(low) || !Number.isInteger(high) || !Number.isInteger(power)) throw new Error("All inputs must be integers.");
  if (low >= high) throw new Error("Low must be strictly below high.");
  if (power <= 0) throw new Error("Power must be a positive integer.");
  if (!Array.isArray(drifts) || drifts.some(d => !Number.isInteger(d))) throw new Error("Drifts must be an array of integers.");

  let temp = start;
  let heated = 0;
  let switches = 0;
  let coldest = start;

  for (const drift of drifts) {
    if (temp < low) {
      heaterOn(temp, power);
      switches++;
    } else if (temp >= high) {
      heaterOff();
    }
    temp += drift;
    if (temp < coldest) {
      coldest = temp;
    }
  }

  return { temp, heated, switches, coldest };
}

function heaterOn(currentTemp: number, power: number): void {
  heated++;
  currentTemp += power;
}

function heaterOff(): void {}
```