ThermostatBehavior: Type<Of<{
    attributes: {
        acCapacity: .;
        acCapacityFormat: .;
        acCoilTemperature: .;
        acCompressorType: .;
        acErrorCode: .;
        acLouverPosition: .;
        acRefrigerantType: .;
        acType: .;
        controlSequenceOfOperation: .;
        emergencyHeatDelta: .;
        localTemperature: .;
        outdoorTemperature: .;
        remoteSensing: .;
        setpointChangeAmount: .;
        setpointChangeSource: .;
        setpointChangeSourceTimestamp: .;
        systemMode: .;
        temperatureSetpointHold: .;
        temperatureSetpointHoldDuration: .;
        thermostatProgrammingOperationMode: .;
        thermostatRunningState: .;
    };
    commands: {
        setpointRaiseLower: .;
    };
    extensions: readonly [{
        component: {
            attributes: {
                occupancy: .;
            };
        };
        flags: {
            occupancy: true;
        };
    }, {
        component: {
            attributes: {
                absMaxHeatSetpointLimit: .;
                absMinHeatSetpointLimit: .;
                maxHeatSetpointLimit: .;
                minHeatSetpointLimit: .;
                occupiedHeatingSetpoint: .;
                piHeatingDemand: .;
            };
        };
        flags: {
            heating: true;
        };
    }, {
        component: {
            attributes: {
                absMaxCoolSetpointLimit: .;
                absMinCoolSetpointLimit: .;
                maxCoolSetpointLimit: .;
                minCoolSetpointLimit: .;
                occupiedCoolingSetpoint: .;
                piCoolingDemand: .;
            };
        };
        flags: {
            cooling: true;
        };
    }, {
        component: {
            attributes: {
                localTemperatureCalibration: .;
            };
        };
        flags: {
            localTemperatureNotExposed: false;
        };
    }, {
        component: {
            attributes: {
                unoccupiedCoolingSetpoint: .;
            };
        };
        flags: {
            cooling: true;
            occupancy: true;
        };
    }, {
        component: {
            attributes: {
                unoccupiedHeatingSetpoint: .;
            };
        };
        flags: {
            heating: true;
            occupancy: true;
        };
    }, {
        component: {
            attributes: {
                minSetpointDeadBand: .;
                thermostatRunningMode: .;
            };
        };
        flags: {
            autoMode: true;
        };
    }, {
        component: {
            attributes: {
                numberOfDailyTransitions: .;
                numberOfWeeklyTransitions: .;
                startOfWeek: .;
            };
            commands: {
                clearWeeklySchedule: .;
                getWeeklySchedule: .;
                setWeeklySchedule: .;
            };
        };
        flags: {
            scheduleConfiguration: true;
        };
    }, {
        component: {
            attributes: {
                occupiedSetback: .;
                occupiedSetbackMax: .;
                occupiedSetbackMin: .;
            };
        };
        flags: {
            setback: true;
        };
    }, {
        component: {
            attributes: {
                unoccupiedSetback: .;
                unoccupiedSetbackMax: .;
                unoccupiedSetbackMin: .;
            };
        };
        flags: {
            occupancy: true;
            setback: true;
        };
    }, {
        component: false;
        flags: {
            autoMode: true;
            heating: false;
        };
    }, {
        component: false;
        flags: {
            autoMode: true;
            cooling: false;
        };
    }, {
        component: false;
        flags: {
            cooling: false;
            heating: false;
        };
    }];
    features: {
        autoMode: .;
        cooling: .;
        heating: .;
        localTemperatureNotExposed: .;
        occupancy: .;
        scheduleConfiguration: .;
        setback: .;
    };
    id: 513;
    name: "Thermostat";
    revision: 6;
}>, Type<Of<{
    attributes: {};
    commands: {};
    events: {};
    id: 0;
    name: "Unknown";
    revision: 0;
}>, typeof ClusterBehavior, ThermostatInterface>, ThermostatInterface>

ThermostatBehavior is the base class for objects that support interaction with Thermostat.Cluster.

Thermostat.Cluster requires you to enable one or more optional features. You can do so using ThermostatBehavior.with.