/**
 * @license
 * Copyright 2022-2024 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
/*** THIS FILE IS GENERATED, DO NOT EDIT ***/
import { IdentifyServer as BaseIdentifyServer } from "../behaviors/identify/IdentifyServer.js";
import { GroupsServer as BaseGroupsServer } from "../behaviors/groups/GroupsServer.js";
import { OnOffServer as BaseOnOffServer } from "../behaviors/on-off/OnOffServer.js";
import { LevelControlServer as BaseLevelControlServer } from "../behaviors/level-control/LevelControlServer.js";
import { ScenesManagementServer as BaseScenesManagementServer } from "../behaviors/scenes-management/ScenesManagementServer.js";
import { MutableEndpoint } from "../endpoint/type/MutableEndpoint.js";
import { Identity } from "#general";
/**
 * A Dimmable Plug-In Unit is a device that provides power to another device that is plugged into it, and is capable of
 * being switched on or off and have its level adjusted. The Dimmable Plug-in Unit is typically used to control a
 * conventional non-communicating light through its mains connection using phase cutting.
 *
 * @see {@link MatterSpecification.v13.Device} § 5.2
 */
export interface DimmablePlugInUnitDevice extends Identity<typeof DimmablePlugInUnitDeviceDefinition> {
}
export declare namespace DimmablePlugInUnitRequirements {
    /**
     * The Identify cluster is required by the Matter specification.
     *
     * This version of {@link IdentifyServer} is specialized per the specification.
     */
    const IdentifyServer: import("../index.js").ClusterBehavior.Type<import("@matter.js/types").ElementModifier.WithAlterations<import("@matter.js/types/clusters/identify").Identify.Cluster, {
        readonly commands: {
            readonly triggerEffect: {
                readonly optional: false;
            };
        };
    }>, typeof BaseIdentifyServer, import("../behaviors/index.js").IdentifyInterface>;
    /**
     * The Groups cluster is required by the Matter specification.
     *
     * We provide this alias to the default implementation {@link GroupsServer} for convenience.
     */
    const GroupsServer: typeof BaseGroupsServer;
    /**
     * The OnOff cluster is required by the Matter specification.
     *
     * This version of {@link OnOffServer} is specialized per the specification.
     */
    const OnOffServer: import("../index.js").ClusterBehavior.Type<import("@matter.js/types").ClusterComposer.WithFeatures<import("@matter.js/types").ClusterComposer.WithFeatures<import("@matter.js/types/clusters/on-off").OnOff.Cluster, readonly [import("@matter.js/types/clusters/on-off").OnOff.Feature.Lighting]>, readonly ["Lighting"]>, typeof BaseOnOffServer, import("../behaviors/index.js").OnOffInterface>;
    /**
     * The LevelControl cluster is required by the Matter specification.
     *
     * This version of {@link LevelControlServer} is specialized per the specification.
     */
    const LevelControlServer: import("../index.js").ClusterBehavior.Type<import("@matter.js/types").ElementModifier.WithAlterations<import("@matter.js/types").ClusterComposer.WithFeatures<import("@matter.js/types").ClusterComposer.WithFeatures<import("@matter.js/types").ClusterComposer.WithFeatures<import("@matter.js/types/clusters/level-control").LevelControl.Cluster, readonly [import("@matter.js/types/clusters/level-control").LevelControl.Feature.OnOff, import("@matter.js/types/clusters/level-control").LevelControl.Feature.Lighting]>, readonly [import("@matter.js/types/clusters/level-control").LevelControl.Feature.OnOff]>, readonly ["OnOff", "Lighting"]>, {
        readonly attributes: {
            readonly currentLevel: {
                readonly min: 1;
                readonly max: 254;
            };
            readonly minLevel: {
                readonly default: 1;
                readonly min: 1;
                readonly max: 2;
            };
            readonly maxLevel: {
                readonly default: 254;
                readonly min: 254;
                readonly max: 255;
            };
        };
    }>, import("../index.js").ClusterBehavior.Type<import("@matter.js/types").ClusterComposer.WithFeatures<import("@matter.js/types").ClusterComposer.WithFeatures<import("@matter.js/types").ClusterComposer.WithFeatures<import("@matter.js/types/clusters/level-control").LevelControl.Cluster, readonly [import("@matter.js/types/clusters/level-control").LevelControl.Feature.OnOff, import("@matter.js/types/clusters/level-control").LevelControl.Feature.Lighting]>, readonly [import("@matter.js/types/clusters/level-control").LevelControl.Feature.OnOff]>, readonly ["OnOff", "Lighting"]>, typeof BaseLevelControlServer, import("../behaviors/index.js").LevelControlInterface>, import("../behaviors/index.js").LevelControlInterface>;
    /**
     * The ScenesManagement cluster is optional per the Matter specification.
     *
     * We provide this alias to the default implementation {@link ScenesManagementServer} for convenience.
     */
    const ScenesManagementServer: typeof BaseScenesManagementServer;
    /**
     * The OccupancySensing cluster is optional per the Matter specification.
     *
     * We provide this alias to the default implementation {@link OccupancySensingBehavior} for convenience.
     */
    const OccupancySensingBehavior: import("../index.js").ClusterBehavior.Type<import("@matter.js/types/clusters/occupancy-sensing").OccupancySensing.Cluster, typeof import("../index.js").ClusterBehavior, {
        components: never[];
    }>;
    /**
     * An implementation for each server cluster supported by the endpoint per the Matter specification.
     */
    const server: {
        mandatory: {
            Identify: import("../index.js").ClusterBehavior.Type<import("@matter.js/types").ElementModifier.WithAlterations<import("@matter.js/types/clusters/identify").Identify.Cluster, {
                readonly commands: {
                    readonly triggerEffect: {
                        readonly optional: false;
                    };
                };
            }>, typeof BaseIdentifyServer, import("../behaviors/index.js").IdentifyInterface>;
            Groups: typeof BaseGroupsServer;
            OnOff: import("../index.js").ClusterBehavior.Type<import("@matter.js/types").ClusterComposer.WithFeatures<import("@matter.js/types").ClusterComposer.WithFeatures<import("@matter.js/types/clusters/on-off").OnOff.Cluster, readonly [import("@matter.js/types/clusters/on-off").OnOff.Feature.Lighting]>, readonly ["Lighting"]>, typeof BaseOnOffServer, import("../behaviors/index.js").OnOffInterface>;
            LevelControl: import("../index.js").ClusterBehavior.Type<import("@matter.js/types").ElementModifier.WithAlterations<import("@matter.js/types").ClusterComposer.WithFeatures<import("@matter.js/types").ClusterComposer.WithFeatures<import("@matter.js/types").ClusterComposer.WithFeatures<import("@matter.js/types/clusters/level-control").LevelControl.Cluster, readonly [import("@matter.js/types/clusters/level-control").LevelControl.Feature.OnOff, import("@matter.js/types/clusters/level-control").LevelControl.Feature.Lighting]>, readonly [import("@matter.js/types/clusters/level-control").LevelControl.Feature.OnOff]>, readonly ["OnOff", "Lighting"]>, {
                readonly attributes: {
                    readonly currentLevel: {
                        readonly min: 1;
                        readonly max: 254;
                    };
                    readonly minLevel: {
                        readonly default: 1;
                        readonly min: 1;
                        readonly max: 2;
                    };
                    readonly maxLevel: {
                        readonly default: 254;
                        readonly min: 254;
                        readonly max: 255;
                    };
                };
            }>, import("../index.js").ClusterBehavior.Type<import("@matter.js/types").ClusterComposer.WithFeatures<import("@matter.js/types").ClusterComposer.WithFeatures<import("@matter.js/types").ClusterComposer.WithFeatures<import("@matter.js/types/clusters/level-control").LevelControl.Cluster, readonly [import("@matter.js/types/clusters/level-control").LevelControl.Feature.OnOff, import("@matter.js/types/clusters/level-control").LevelControl.Feature.Lighting]>, readonly [import("@matter.js/types/clusters/level-control").LevelControl.Feature.OnOff]>, readonly ["OnOff", "Lighting"]>, typeof BaseLevelControlServer, import("../behaviors/index.js").LevelControlInterface>, import("../behaviors/index.js").LevelControlInterface>;
        };
        optional: {
            ScenesManagement: typeof BaseScenesManagementServer;
        };
    };
    /**
     * A definition for each client cluster supported by the endpoint per the Matter specification.
     */
    const client: {
        optional: {
            OccupancySensing: import("../index.js").ClusterBehavior.Type<import("@matter.js/types/clusters/occupancy-sensing").OccupancySensing.Cluster, typeof import("../index.js").ClusterBehavior, {
                components: never[];
            }>;
        };
        mandatory: {};
    };
}
export declare const DimmablePlugInUnitDeviceDefinition: MutableEndpoint.With<import("../index.js").EndpointType.For<{
    readonly name: "DimmablePlugInUnit";
    readonly deviceType: 267;
    readonly deviceRevision: 4;
    readonly requirements: typeof DimmablePlugInUnitRequirements;
    readonly behaviors: {
        readonly identify: import("../index.js").ClusterBehavior.Type<import("@matter.js/types").ElementModifier.WithAlterations<import("@matter.js/types/clusters/identify").Identify.Cluster, {
            readonly commands: {
                readonly triggerEffect: {
                    readonly optional: false;
                };
            };
        }>, typeof BaseIdentifyServer, import("../behaviors/index.js").IdentifyInterface>;
    } & {
        readonly groups: typeof BaseGroupsServer;
    } & {
        readonly onOff: import("../index.js").ClusterBehavior.Type<import("@matter.js/types").ClusterComposer.WithFeatures<import("@matter.js/types").ClusterComposer.WithFeatures<import("@matter.js/types/clusters/on-off").OnOff.Cluster, readonly [import("@matter.js/types/clusters/on-off").OnOff.Feature.Lighting]>, readonly ["Lighting"]>, typeof BaseOnOffServer, import("../behaviors/index.js").OnOffInterface>;
    } & {
        readonly levelControl: import("../index.js").ClusterBehavior.Type<import("@matter.js/types").ElementModifier.WithAlterations<import("@matter.js/types").ClusterComposer.WithFeatures<import("@matter.js/types").ClusterComposer.WithFeatures<import("@matter.js/types").ClusterComposer.WithFeatures<import("@matter.js/types/clusters/level-control").LevelControl.Cluster, readonly [import("@matter.js/types/clusters/level-control").LevelControl.Feature.OnOff, import("@matter.js/types/clusters/level-control").LevelControl.Feature.Lighting]>, readonly [import("@matter.js/types/clusters/level-control").LevelControl.Feature.OnOff]>, readonly ["OnOff", "Lighting"]>, {
            readonly attributes: {
                readonly currentLevel: {
                    readonly min: 1;
                    readonly max: 254;
                };
                readonly minLevel: {
                    readonly default: 1;
                    readonly min: 1;
                    readonly max: 2;
                };
                readonly maxLevel: {
                    readonly default: 254;
                    readonly min: 254;
                    readonly max: 255;
                };
            };
        }>, import("../index.js").ClusterBehavior.Type<import("@matter.js/types").ClusterComposer.WithFeatures<import("@matter.js/types").ClusterComposer.WithFeatures<import("@matter.js/types").ClusterComposer.WithFeatures<import("@matter.js/types/clusters/level-control").LevelControl.Cluster, readonly [import("@matter.js/types/clusters/level-control").LevelControl.Feature.OnOff, import("@matter.js/types/clusters/level-control").LevelControl.Feature.Lighting]>, readonly [import("@matter.js/types/clusters/level-control").LevelControl.Feature.OnOff]>, readonly ["OnOff", "Lighting"]>, typeof BaseLevelControlServer, import("../behaviors/index.js").LevelControlInterface>, import("../behaviors/index.js").LevelControlInterface>;
    };
}>, {
    readonly identify: import("../index.js").ClusterBehavior.Type<import("@matter.js/types").ElementModifier.WithAlterations<import("@matter.js/types/clusters/identify").Identify.Cluster, {
        readonly commands: {
            readonly triggerEffect: {
                readonly optional: false;
            };
        };
    }>, typeof BaseIdentifyServer, import("../behaviors/index.js").IdentifyInterface>;
} & {
    readonly groups: typeof BaseGroupsServer;
} & {
    readonly onOff: import("../index.js").ClusterBehavior.Type<import("@matter.js/types").ClusterComposer.WithFeatures<import("@matter.js/types").ClusterComposer.WithFeatures<import("@matter.js/types/clusters/on-off").OnOff.Cluster, readonly [import("@matter.js/types/clusters/on-off").OnOff.Feature.Lighting]>, readonly ["Lighting"]>, typeof BaseOnOffServer, import("../behaviors/index.js").OnOffInterface>;
} & {
    readonly levelControl: import("../index.js").ClusterBehavior.Type<import("@matter.js/types").ElementModifier.WithAlterations<import("@matter.js/types").ClusterComposer.WithFeatures<import("@matter.js/types").ClusterComposer.WithFeatures<import("@matter.js/types").ClusterComposer.WithFeatures<import("@matter.js/types/clusters/level-control").LevelControl.Cluster, readonly [import("@matter.js/types/clusters/level-control").LevelControl.Feature.OnOff, import("@matter.js/types/clusters/level-control").LevelControl.Feature.Lighting]>, readonly [import("@matter.js/types/clusters/level-control").LevelControl.Feature.OnOff]>, readonly ["OnOff", "Lighting"]>, {
        readonly attributes: {
            readonly currentLevel: {
                readonly min: 1;
                readonly max: 254;
            };
            readonly minLevel: {
                readonly default: 1;
                readonly min: 1;
                readonly max: 2;
            };
            readonly maxLevel: {
                readonly default: 254;
                readonly min: 254;
                readonly max: 255;
            };
        };
    }>, import("../index.js").ClusterBehavior.Type<import("@matter.js/types").ClusterComposer.WithFeatures<import("@matter.js/types").ClusterComposer.WithFeatures<import("@matter.js/types").ClusterComposer.WithFeatures<import("@matter.js/types/clusters/level-control").LevelControl.Cluster, readonly [import("@matter.js/types/clusters/level-control").LevelControl.Feature.OnOff, import("@matter.js/types/clusters/level-control").LevelControl.Feature.Lighting]>, readonly [import("@matter.js/types/clusters/level-control").LevelControl.Feature.OnOff]>, readonly ["OnOff", "Lighting"]>, typeof BaseLevelControlServer, import("../behaviors/index.js").LevelControlInterface>, import("../behaviors/index.js").LevelControlInterface>;
}>;
export declare const DimmablePlugInUnitDevice: DimmablePlugInUnitDevice;
//# sourceMappingURL=dimmable-plug-in-unit.d.ts.map