import { TemperatureControl } from '@matter/main/clusters/temperature-control';
import { TemperatureControlServer } from '@matter/main/behaviors/temperature-control';
import { MaybePromise } from '@matter/main';
import { MatterbridgeEndpoint } from '../matterbridgeEndpoint.js';
/**
 * Creates a TemperatureControl Cluster Server with feature TemperatureLevel.
 *
 * @param {MatterbridgeEndpoint} endpoint - The Matterbridge endpoint instance.
 * @param {number} selectedTemperatureLevel - The selected temperature level as an index of the supportedTemperatureLevels array. Defaults to 1 (which corresponds to 'Warm').
 * @param {string[]} supportedTemperatureLevels - The supported temperature levels. Defaults to ['Cold', 'Warm', 'Hot', '30°', '40°', '60°', '80°'].
 *
 * @returns {this} The current MatterbridgeEndpoint instance for chaining.
 */
export declare function createLevelTemperatureControlClusterServer(endpoint: MatterbridgeEndpoint, selectedTemperatureLevel?: number, supportedTemperatureLevels?: string[]): MatterbridgeEndpoint;
/**
 * Creates a TemperatureControl Cluster Server with features TemperatureNumber and TemperatureStep.
 *
 * @param {MatterbridgeEndpoint} endpoint - The Matterbridge endpoint instance.
 * @param {number} temperatureSetpoint - The temperature setpoint * 100. Defaults to 40 * 100 (which corresponds to 40°C).
 * @param {number} minTemperature - The minimum temperature * 100. Defaults to 30 * 100 (which corresponds to 30°C). Fixed attribute.
 * @param {number} maxTemperature - The maximum temperature * 100. Defaults to 60 * 100 (which corresponds to 60°C). Fixed attribute.
 * @param {number} [step] - The step size for temperature changes. Defaults to 10 * 100 (which corresponds to 10°C). Fixed attribute.
 *
 * @returns {this} The current MatterbridgeEndpoint instance for chaining.
 */
export declare function createNumberTemperatureControlClusterServer(endpoint: MatterbridgeEndpoint, temperatureSetpoint?: number, minTemperature?: number, maxTemperature?: number, step?: number): MatterbridgeEndpoint;
declare const MatterbridgeLevelTemperatureControlServer_base: import("@matter/main").ClusterBehavior.Type<import("@matter/types").ClusterComposer.WithFeatures<import("@matter/types").ClusterType.Of<{
    readonly id: 86;
    readonly name: "TemperatureControl";
    readonly revision: 1;
    readonly features: {
        readonly temperatureNumber: import("@matter/types").BitFlag;
        readonly temperatureLevel: import("@matter/types").BitFlag;
        readonly temperatureStep: import("@matter/types").BitFlag;
    };
    readonly commands: {
        readonly setTemperature: import("@matter/types").Command<import("@matter/types").TypeFromFields<{
            targetTemperature: import("@matter/types").OptionalFieldType<number>;
            targetTemperatureLevel: import("@matter/types").OptionalFieldType<number>;
        }>, void, any>;
    };
    readonly extensions: readonly [{
        readonly flags: {
            readonly temperatureNumber: true;
        };
        readonly component: {
            readonly attributes: {
                readonly temperatureSetpoint: import("@matter/types").Attribute<number, any>;
                readonly minTemperature: import("@matter/types").FixedAttribute<number, any>;
                readonly maxTemperature: import("@matter/types").FixedAttribute<number, any>;
            };
        };
    }, {
        readonly flags: {
            readonly temperatureStep: true;
        };
        readonly component: {
            readonly attributes: {
                readonly step: import("@matter/types").FixedAttribute<number, any>;
            };
        };
    }, {
        readonly flags: {
            readonly temperatureLevel: true;
        };
        readonly component: {
            readonly attributes: {
                readonly selectedTemperatureLevel: import("@matter/types").Attribute<number, any>;
                readonly supportedTemperatureLevels: import("@matter/types").Attribute<string[], any>;
            };
        };
    }, {
        readonly flags: {
            readonly temperatureStep: true;
            readonly temperatureNumber: false;
        };
        readonly component: false;
    }, {
        readonly flags: {
            readonly temperatureNumber: true;
            readonly temperatureLevel: true;
        };
        readonly component: false;
    }, {
        readonly flags: {
            readonly temperatureNumber: false;
            readonly temperatureLevel: false;
        };
        readonly component: false;
    }];
}>, readonly [TemperatureControl.Feature.TemperatureLevel]>, typeof TemperatureControlServer, import("@matter/main/behaviors/temperature-control").TemperatureControlInterface>;
export declare class MatterbridgeLevelTemperatureControlServer extends MatterbridgeLevelTemperatureControlServer_base {
    initialize(): void;
    setTemperature(request: TemperatureControl.SetTemperatureRequest): MaybePromise;
}
declare const MatterbridgeNumberTemperatureControlServer_base: import("@matter/main").ClusterBehavior.Type<import("@matter/types").ClusterComposer.WithFeatures<import("@matter/types").ClusterType.Of<{
    readonly id: 86;
    readonly name: "TemperatureControl";
    readonly revision: 1;
    readonly features: {
        readonly temperatureNumber: import("@matter/types").BitFlag;
        readonly temperatureLevel: import("@matter/types").BitFlag;
        readonly temperatureStep: import("@matter/types").BitFlag;
    };
    readonly commands: {
        readonly setTemperature: import("@matter/types").Command<import("@matter/types").TypeFromFields<{
            targetTemperature: import("@matter/types").OptionalFieldType<number>;
            targetTemperatureLevel: import("@matter/types").OptionalFieldType<number>;
        }>, void, any>;
    };
    readonly extensions: readonly [{
        readonly flags: {
            readonly temperatureNumber: true;
        };
        readonly component: {
            readonly attributes: {
                readonly temperatureSetpoint: import("@matter/types").Attribute<number, any>;
                readonly minTemperature: import("@matter/types").FixedAttribute<number, any>;
                readonly maxTemperature: import("@matter/types").FixedAttribute<number, any>;
            };
        };
    }, {
        readonly flags: {
            readonly temperatureStep: true;
        };
        readonly component: {
            readonly attributes: {
                readonly step: import("@matter/types").FixedAttribute<number, any>;
            };
        };
    }, {
        readonly flags: {
            readonly temperatureLevel: true;
        };
        readonly component: {
            readonly attributes: {
                readonly selectedTemperatureLevel: import("@matter/types").Attribute<number, any>;
                readonly supportedTemperatureLevels: import("@matter/types").Attribute<string[], any>;
            };
        };
    }, {
        readonly flags: {
            readonly temperatureStep: true;
            readonly temperatureNumber: false;
        };
        readonly component: false;
    }, {
        readonly flags: {
            readonly temperatureNumber: true;
            readonly temperatureLevel: true;
        };
        readonly component: false;
    }, {
        readonly flags: {
            readonly temperatureNumber: false;
            readonly temperatureLevel: false;
        };
        readonly component: false;
    }];
}>, readonly [TemperatureControl.Feature.TemperatureNumber, TemperatureControl.Feature.TemperatureStep]>, typeof TemperatureControlServer, import("@matter/main/behaviors/temperature-control").TemperatureControlInterface>;
export declare class MatterbridgeNumberTemperatureControlServer extends MatterbridgeNumberTemperatureControlServer_base {
    initialize(): void;
    setTemperature(request: TemperatureControl.SetTemperatureRequest): MaybePromise;
}
export {};
//# sourceMappingURL=temperatureControl.d.ts.map