import {
	isStringIndexedInterface,
} from "qrc:/js/lib/generated/typeguard";
import {
	getKeysOfObject,
	isBoolean,
} from "./utils";

export interface AutomaticProcessConfig {
	automaticDeburringEnabled: boolean;
	manualDeburringEnabled: boolean;
}

export function isAutomaticProcessConfig(arg: unknown): arg is AutomaticProcessConfig {
	const map : {[index in keyof AutomaticProcessConfig]: (arg: unknown) => arg is AutomaticProcessConfig[index]} = {
		automaticDeburringEnabled: isBoolean,
		manualDeburringEnabled: isBoolean,
	};
	return isStringIndexedInterface(arg) && getKeysOfObject(map)
		.every(key => map[key](arg[key]));
}
