import { OnOffLightRequirements } from '@matter/node/devices/on-off-light';
import { Devices } from 'isy-nodejs/ISY';
import type { ISYNode } from 'isy-nodejs/ISYNode';
import { BehaviorRegistry } from '../BehaviorRegistry.js';
import { ISYClusterBehavior } from '../ISYClusterBehavior.js';

export class OnOffSwitchBehavior extends ISYClusterBehavior(OnOffLightRequirements.OnOffServer, Devices.ZigBee.ExtendedColorLight) {
	override async initialize(_options?: {}) {
		await super.initialize(_options);
	}

	override on = async () => {
		if (!this.state.onOff) {
			await this.device.onOff.on();
			this.state.onOff = true;
		}
	};

	override async off(): Promise<void> {
		if (this.state.onOff) {
			await this.device.onOff.off();
			this.state.onOff = false;
		}
	}
}

BehaviorRegistry.register(OnOffSwitchBehavior);
