/**
 * @license
 * Copyright 2022-2026 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 { ScenesManagementServer as BaseScenesManagementServer } from "../behaviors/scenes-management/ScenesManagementServer.js";
import { LevelControlServer as BaseLevelControlServer } from "../behaviors/level-control/LevelControlServer.js";
import { MutableEndpoint } from "../endpoint/type/MutableEndpoint.js";
import { Identity } from "@matter/general";
/**
 * An On/Off Plug-in Unit is a device that provides power to another device that is plugged into it, and is capable of
 * switching that provided power on or off.
 *
 * The Mounted On/Off Control (added in Matter 1.4) has identical cluster requirements as the On/Off Plug-In Unit, and
 * is marked as superset of this device type (since Matter 1.4.2). For devices intended to be mounted permanently, the
 * Mounted On/Off Control device type shall be used, with the On/Off Plug-In Unit device type optionally added in the
 * DeviceTypeList of the Descriptor cluster in addition to the On/Off Plug-In Unit device type (see Mounted On/Off
 * Control server guidance section).
 *
 * Before Matter 1.4, mounted units typically used the On/Off Plug-In Unit device type. Clients can encounter devices
 * which were made before or after these specification updates. Therefore, clients SHOULD use the following heuristic to
 * distinguish the type of physical device based on the device type revision found on an endpoint ("--" means the device
 * type is not listed).
 *
 * @see {@link MatterSpecification.v16.Device} § 5.1
 */
export interface OnOffPlugInUnitDevice extends Identity<typeof OnOffPlugInUnitDeviceDefinition> {
}
export declare namespace OnOffPlugInUnitRequirements {
    /**
     * 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<typeof BaseIdentifyServer, import("@matter/types").ClusterType.WithEnabledAttributes<import("@matter/types").ClusterType.WithEnabledEvents<import("@matter/types/clusters/identify").Identify, never>, never>, import("@matter/types").ClusterType.Concrete, typeof BaseIdentifyServer.Internal, "identify">;
    /**
     * 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<typeof BaseOnOffServer, import("@matter/types").ClusterType.WithSupportedFeatures<import("@matter/types").ClusterType.WithSupportedFeatures<import("@matter/types").ClusterType.WithSupportedFeatures<import("@matter/types/clusters/on-off").OnOff, {
        deadFrontBehavior: false;
        lighting: true;
        offOnly: false;
    }>, {
        deadFrontBehavior: false;
        lighting: false;
        offOnly: false;
    }>, {
        deadFrontBehavior: false;
        lighting: true;
        offOnly: false;
    }>, import("@matter/types").ClusterType.Concrete, typeof import("../behaviors/on-off/OnOffServer.js").OnOffBaseServer.Internal, "onOff">;
    /**
     * The ScenesManagement cluster is required by the Matter specification.
     *
     * This version of {@link ScenesManagementServer} is specialized per the specification.
     */
    const ScenesManagementServer: import("../index.js").ClusterBehavior.Type<typeof BaseScenesManagementServer, import("@matter/types").ClusterType.WithEnabledAttributes<import("@matter/types").ClusterType.WithEnabledEvents<import("@matter/types").ClusterType.WithSupportedFeatures<import("@matter/types/clusters/scenes-management").ScenesManagement, {
        sceneNames: true;
    }>, never>, never>, import("@matter/types").ClusterType.Concrete, typeof BaseScenesManagementServer.Internal, "scenesManagement">;
    /**
     * The LevelControl cluster is optional per the Matter specification.
     *
     * This version of {@link LevelControlServer} is specialized per the specification.
     */
    const LevelControlServer: import("../index.js").ClusterBehavior.Type<import("../index.js").ClusterBehavior.Type<typeof BaseLevelControlServer, import("@matter/types").ClusterType.WithSupportedFeatures<import("@matter/types/clusters/level-control").LevelControl, {
        frequency: false;
        lighting: true;
        onOff: true;
    }>, import("@matter/types").ClusterType.Concrete, typeof import("../behaviors/level-control/LevelControlServer.js").LevelControlBaseServer.Internal, "levelControl">, import("@matter/types").ClusterType.WithEnabledAttributes<import("@matter/types").ClusterType.WithEnabledEvents<import("@matter/types").ClusterType.WithSupportedFeatures<import("@matter/types/clusters/level-control").LevelControl, {
        frequency: false;
        lighting: true;
        onOff: true;
    }>, never>, never>, import("@matter/types").ClusterType.Concrete, typeof import("../behaviors/level-control/LevelControlServer.js").LevelControlBaseServer.Internal, "levelControl">;
    /**
     * The OccupancySensing cluster is optional per the Matter specification.
     *
     * We provide this alias to the default implementation {@link OccupancySensingClient} for convenience.
     */
    const OccupancySensingClient: import("../behaviors/occupancy-sensing/OccupancySensingClient.js").OccupancySensingClientConstructor;
    /**
     * An implementation for each server cluster supported by the endpoint per the Matter specification.
     */
    const server: {
        mandatory: {
            Identify: import("../index.js").ClusterBehavior.Type<typeof BaseIdentifyServer, import("@matter/types").ClusterType.WithEnabledAttributes<import("@matter/types").ClusterType.WithEnabledEvents<import("@matter/types/clusters/identify").Identify, never>, never>, import("@matter/types").ClusterType.Concrete, typeof BaseIdentifyServer.Internal, "identify">;
            Groups: typeof BaseGroupsServer;
            OnOff: import("../index.js").ClusterBehavior.Type<typeof BaseOnOffServer, import("@matter/types").ClusterType.WithSupportedFeatures<import("@matter/types").ClusterType.WithSupportedFeatures<import("@matter/types").ClusterType.WithSupportedFeatures<import("@matter/types/clusters/on-off").OnOff, {
                deadFrontBehavior: false;
                lighting: true;
                offOnly: false;
            }>, {
                deadFrontBehavior: false;
                lighting: false;
                offOnly: false;
            }>, {
                deadFrontBehavior: false;
                lighting: true;
                offOnly: false;
            }>, import("@matter/types").ClusterType.Concrete, typeof import("../behaviors/on-off/OnOffServer.js").OnOffBaseServer.Internal, "onOff">;
            ScenesManagement: import("../index.js").ClusterBehavior.Type<typeof BaseScenesManagementServer, import("@matter/types").ClusterType.WithEnabledAttributes<import("@matter/types").ClusterType.WithEnabledEvents<import("@matter/types").ClusterType.WithSupportedFeatures<import("@matter/types/clusters/scenes-management").ScenesManagement, {
                sceneNames: true;
            }>, never>, never>, import("@matter/types").ClusterType.Concrete, typeof BaseScenesManagementServer.Internal, "scenesManagement">;
        };
        optional: {
            LevelControl: import("../index.js").ClusterBehavior.Type<import("../index.js").ClusterBehavior.Type<typeof BaseLevelControlServer, import("@matter/types").ClusterType.WithSupportedFeatures<import("@matter/types/clusters/level-control").LevelControl, {
                frequency: false;
                lighting: true;
                onOff: true;
            }>, import("@matter/types").ClusterType.Concrete, typeof import("../behaviors/level-control/LevelControlServer.js").LevelControlBaseServer.Internal, "levelControl">, import("@matter/types").ClusterType.WithEnabledAttributes<import("@matter/types").ClusterType.WithEnabledEvents<import("@matter/types").ClusterType.WithSupportedFeatures<import("@matter/types/clusters/level-control").LevelControl, {
                frequency: false;
                lighting: true;
                onOff: true;
            }>, never>, never>, import("@matter/types").ClusterType.Concrete, typeof import("../behaviors/level-control/LevelControlServer.js").LevelControlBaseServer.Internal, "levelControl">;
        };
    };
    /**
     * A definition for each client cluster supported by the endpoint per the Matter specification.
     */
    const client: {
        optional: {
            OccupancySensing: import("../behaviors/occupancy-sensing/OccupancySensingClient.js").OccupancySensingClientConstructor;
        };
        mandatory: {};
    };
}
export declare const OnOffPlugInUnitDeviceDefinition: MutableEndpoint.With<import("../index.js").EndpointType.For<{
    readonly name: "OnOffPlugInUnit";
    readonly deviceType: 266;
    readonly deviceRevision: 4;
    readonly requirements: typeof OnOffPlugInUnitRequirements;
    readonly behaviors: {
        readonly identify: import("../index.js").ClusterBehavior.Type<typeof BaseIdentifyServer, import("@matter/types").ClusterType.WithEnabledAttributes<import("@matter/types").ClusterType.WithEnabledEvents<import("@matter/types/clusters/identify").Identify, never>, never>, import("@matter/types").ClusterType.Concrete, typeof BaseIdentifyServer.Internal, "identify">;
    } & {
        readonly groups: typeof BaseGroupsServer;
    } & {
        readonly onOff: import("../index.js").ClusterBehavior.Type<typeof BaseOnOffServer, import("@matter/types").ClusterType.WithSupportedFeatures<import("@matter/types").ClusterType.WithSupportedFeatures<import("@matter/types").ClusterType.WithSupportedFeatures<import("@matter/types/clusters/on-off").OnOff, {
            deadFrontBehavior: false;
            lighting: true;
            offOnly: false;
        }>, {
            deadFrontBehavior: false;
            lighting: false;
            offOnly: false;
        }>, {
            deadFrontBehavior: false;
            lighting: true;
            offOnly: false;
        }>, import("@matter/types").ClusterType.Concrete, typeof import("../behaviors/on-off/OnOffServer.js").OnOffBaseServer.Internal, "onOff">;
    } & {
        readonly scenesManagement: import("../index.js").ClusterBehavior.Type<typeof BaseScenesManagementServer, import("@matter/types").ClusterType.WithEnabledAttributes<import("@matter/types").ClusterType.WithEnabledEvents<import("@matter/types").ClusterType.WithSupportedFeatures<import("@matter/types/clusters/scenes-management").ScenesManagement, {
            sceneNames: true;
        }>, never>, never>, import("@matter/types").ClusterType.Concrete, typeof BaseScenesManagementServer.Internal, "scenesManagement">;
    };
}>, {
    readonly identify: import("../index.js").ClusterBehavior.Type<typeof BaseIdentifyServer, import("@matter/types").ClusterType.WithEnabledAttributes<import("@matter/types").ClusterType.WithEnabledEvents<import("@matter/types/clusters/identify").Identify, never>, never>, import("@matter/types").ClusterType.Concrete, typeof BaseIdentifyServer.Internal, "identify">;
} & {
    readonly groups: typeof BaseGroupsServer;
} & {
    readonly onOff: import("../index.js").ClusterBehavior.Type<typeof BaseOnOffServer, import("@matter/types").ClusterType.WithSupportedFeatures<import("@matter/types").ClusterType.WithSupportedFeatures<import("@matter/types").ClusterType.WithSupportedFeatures<import("@matter/types/clusters/on-off").OnOff, {
        deadFrontBehavior: false;
        lighting: true;
        offOnly: false;
    }>, {
        deadFrontBehavior: false;
        lighting: false;
        offOnly: false;
    }>, {
        deadFrontBehavior: false;
        lighting: true;
        offOnly: false;
    }>, import("@matter/types").ClusterType.Concrete, typeof import("../behaviors/on-off/OnOffServer.js").OnOffBaseServer.Internal, "onOff">;
} & {
    readonly scenesManagement: import("../index.js").ClusterBehavior.Type<typeof BaseScenesManagementServer, import("@matter/types").ClusterType.WithEnabledAttributes<import("@matter/types").ClusterType.WithEnabledEvents<import("@matter/types").ClusterType.WithSupportedFeatures<import("@matter/types/clusters/scenes-management").ScenesManagement, {
        sceneNames: true;
    }>, never>, never>, import("@matter/types").ClusterType.Concrete, typeof BaseScenesManagementServer.Internal, "scenesManagement">;
}, {}>;
export declare const OnOffPlugInUnitDevice: OnOffPlugInUnitDevice;
//# sourceMappingURL=on-off-plug-in-unit.d.ts.map