/**
 * @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 { MutableEndpoint } from "../endpoint/type/MutableEndpoint.js";
import { Identity } from "#general";
/**
 * A Window Covering Controller is a device that controls an automatic window covering.
 *
 * @see {@link MatterSpecification.v13.Device} § 8.4
 */
export interface WindowCoveringControllerDevice extends Identity<typeof WindowCoveringControllerDeviceDefinition> {
}
export declare namespace WindowCoveringControllerRequirements {
    /**
     * The Identify cluster is optional per the Matter specification.
     *
     * We provide this alias to the default implementation {@link IdentifyServer} for convenience.
     */
    const IdentifyServer: typeof BaseIdentifyServer;
    /**
     * The WindowCovering cluster is required by the Matter specification.
     *
     * We provide this alias to the default implementation {@link WindowCoveringBehavior} for convenience.
     */
    const WindowCoveringBehavior: import("../index.js").ClusterBehavior.Type<import("@matter.js/types").ClusterType.Of<{
        readonly id: 258;
        readonly name: "WindowCovering";
        readonly revision: 5;
        readonly features: {
            readonly lift: import("@matter.js/types").BitFlag;
            readonly tilt: import("@matter.js/types").BitFlag;
            readonly positionAwareLift: import("@matter.js/types").BitFlag;
            readonly absolutePosition: import("@matter.js/types").BitFlag;
            readonly positionAwareTilt: import("@matter.js/types").BitFlag;
        };
        readonly attributes: {
            readonly type: import("@matter.js/types").FixedAttribute<import("@matter.js/types/clusters/window-covering").WindowCovering.WindowCoveringType, any>;
            readonly configStatus: import("@matter.js/types").Attribute<import("@matter.js/types").TypeFromPartialBitSchema<{
                operational: import("@matter.js/types").BitFlag;
                onlineReserved: import("@matter.js/types").BitFlag;
                liftMovementReversed: import("@matter.js/types").BitFlag;
                liftPositionAware: import("@matter.js/types").BitFlag;
                tiltPositionAware: import("@matter.js/types").BitFlag;
                liftEncoderControlled: import("@matter.js/types").BitFlag;
                tiltEncoderControlled: import("@matter.js/types").BitFlag;
            }>, any>;
            readonly operationalStatus: import("@matter.js/types").Attribute<import("@matter.js/types").TypeFromPartialBitSchema<{
                global: import("@matter.js/types").BitFieldEnum<import("@matter.js/types/clusters/window-covering").WindowCovering.MovementStatus>;
                lift: import("@matter.js/types").BitFieldEnum<import("@matter.js/types/clusters/window-covering").WindowCovering.MovementStatus>;
                tilt: import("@matter.js/types").BitFieldEnum<import("@matter.js/types/clusters/window-covering").WindowCovering.MovementStatus>;
            }>, any>;
            readonly endProductType: import("@matter.js/types").FixedAttribute<import("@matter.js/types/clusters/window-covering").WindowCovering.EndProductType, any>;
            readonly mode: import("@matter.js/types").WritableAttribute<import("@matter.js/types").TypeFromPartialBitSchema<{
                motorDirectionReversed: import("@matter.js/types").BitFlag;
                calibrationMode: import("@matter.js/types").BitFlag;
                maintenanceMode: import("@matter.js/types").BitFlag;
                ledFeedback: import("@matter.js/types").BitFlag;
            }>, any>;
            readonly safetyStatus: import("@matter.js/types").OptionalAttribute<import("@matter.js/types").TypeFromPartialBitSchema<{
                remoteLockout: import("@matter.js/types").BitFlag;
                tamperDetection: import("@matter.js/types").BitFlag;
                failedCommunication: import("@matter.js/types").BitFlag;
                positionFailure: import("@matter.js/types").BitFlag;
                thermalProtection: import("@matter.js/types").BitFlag;
                obstacleDetected: import("@matter.js/types").BitFlag;
                power: import("@matter.js/types").BitFlag;
                stopInput: import("@matter.js/types").BitFlag;
                motorJammed: import("@matter.js/types").BitFlag;
                hardwareFailure: import("@matter.js/types").BitFlag;
                manualOperation: import("@matter.js/types").BitFlag;
                protection: import("@matter.js/types").BitFlag;
            }>, any>;
        };
        readonly commands: {
            readonly upOrOpen: import("@matter.js/types").Command<void, void, any>;
            readonly downOrClose: import("@matter.js/types").Command<void, void, any>;
            readonly stopMotion: import("@matter.js/types").Command<void, void, any>;
        };
        readonly extensions: readonly [{
            readonly flags: {
                readonly lift: true;
                readonly positionAwareLift: true;
                readonly absolutePosition: true;
            };
            readonly component: {
                readonly attributes: {
                    readonly physicalClosedLimitLift: import("@matter.js/types").OptionalFixedAttribute<number, any>;
                    readonly currentPositionLift: import("@matter.js/types").OptionalAttribute<number | null, any>;
                    readonly installedOpenLimitLift: import("@matter.js/types").Attribute<number, any>;
                    readonly installedClosedLimitLift: import("@matter.js/types").Attribute<number, any>;
                };
            };
        }, {
            readonly flags: {
                readonly tilt: true;
                readonly positionAwareTilt: true;
                readonly absolutePosition: true;
            };
            readonly component: {
                readonly attributes: {
                    readonly physicalClosedLimitTilt: import("@matter.js/types").OptionalFixedAttribute<number, any>;
                    readonly currentPositionTilt: import("@matter.js/types").OptionalAttribute<number | null, any>;
                    readonly installedOpenLimitTilt: import("@matter.js/types").Attribute<number, any>;
                    readonly installedClosedLimitTilt: import("@matter.js/types").Attribute<number, any>;
                };
            };
        }, {
            readonly flags: {
                readonly lift: true;
            };
            readonly component: {
                readonly attributes: {
                    readonly numberOfActuationsLift: import("@matter.js/types").OptionalAttribute<number, any>;
                };
                readonly commands: {
                    readonly goToLiftPercentage: import("@matter.js/types").OptionalCommand<import("@matter.js/types").TypeFromFields<{
                        liftPercent100thsValue: import("@matter.js/types").FieldType<number>;
                    }>, void, any>;
                };
            };
        }, {
            readonly flags: {
                readonly tilt: true;
            };
            readonly component: {
                readonly attributes: {
                    readonly numberOfActuationsTilt: import("@matter.js/types").OptionalAttribute<number, any>;
                };
                readonly commands: {
                    readonly goToTiltPercentage: import("@matter.js/types").OptionalCommand<import("@matter.js/types").TypeFromFields<{
                        tiltPercent100thsValue: import("@matter.js/types").FieldType<number>;
                    }>, void, any>;
                };
            };
        }, {
            readonly flags: {
                readonly lift: true;
                readonly positionAwareLift: true;
            };
            readonly component: {
                readonly attributes: {
                    readonly currentPositionLiftPercentage: import("@matter.js/types").OptionalAttribute<number | null, any>;
                    readonly targetPositionLiftPercent100ths: import("@matter.js/types").Attribute<number | null, any>;
                    readonly currentPositionLiftPercent100ths: import("@matter.js/types").Attribute<number | null, any>;
                };
                readonly commands: {
                    readonly goToLiftPercentage: import("@matter.js/types").Command<import("@matter.js/types").TypeFromFields<{
                        liftPercent100thsValue: import("@matter.js/types").FieldType<number>;
                    }>, void, any>;
                };
            };
        }, {
            readonly flags: {
                readonly tilt: true;
                readonly positionAwareTilt: true;
            };
            readonly component: {
                readonly attributes: {
                    readonly currentPositionTiltPercentage: import("@matter.js/types").OptionalAttribute<number | null, any>;
                    readonly targetPositionTiltPercent100ths: import("@matter.js/types").Attribute<number | null, any>;
                    readonly currentPositionTiltPercent100ths: import("@matter.js/types").Attribute<number | null, any>;
                };
                readonly commands: {
                    readonly goToTiltPercentage: import("@matter.js/types").Command<import("@matter.js/types").TypeFromFields<{
                        tiltPercent100thsValue: import("@matter.js/types").FieldType<number>;
                    }>, void, any>;
                };
            };
        }, {
            readonly flags: {
                readonly lift: true;
                readonly absolutePosition: true;
            };
            readonly component: {
                readonly commands: {
                    readonly goToLiftValue: import("@matter.js/types").OptionalCommand<import("@matter.js/types").TypeFromFields<{
                        liftValue: import("@matter.js/types").FieldType<number>;
                    }>, void, any>;
                };
            };
        }, {
            readonly flags: {
                readonly tilt: true;
                readonly absolutePosition: true;
            };
            readonly component: {
                readonly commands: {
                    readonly goToTiltValue: import("@matter.js/types").OptionalCommand<import("@matter.js/types").TypeFromFields<{
                        tiltValue: import("@matter.js/types").FieldType<number>;
                    }>, void, any>;
                };
            };
        }, {
            readonly flags: {
                readonly positionAwareLift: true;
                readonly lift: false;
            };
            readonly component: false;
        }, {
            readonly flags: {
                readonly positionAwareTilt: true;
                readonly tilt: false;
            };
            readonly component: false;
        }, {
            readonly flags: {
                readonly lift: false;
                readonly tilt: false;
            };
            readonly component: false;
        }];
    }>, import("../index.js").ClusterBehavior.Type<import("@matter.js/types").ClusterType.Of<{
        readonly id: 0;
        readonly revision: 0;
        readonly name: "Unknown";
        readonly attributes: {};
        readonly commands: {};
        readonly events: {};
    }>, typeof import("../index.js").ClusterBehavior, import("../behaviors/index.js").WindowCoveringInterface>, import("../behaviors/index.js").WindowCoveringInterface>;
    /**
     * The Identify cluster is optional per the Matter specification.
     *
     * We provide this alias to the default implementation {@link IdentifyBehavior} for convenience.
     */
    const IdentifyBehavior: import("../index.js").ClusterBehavior.Type<import("@matter.js/types/clusters/identify").Identify.Cluster, import("../index.js").ClusterBehavior.Type<import("@matter.js/types").ClusterType.Of<{
        readonly id: 0;
        readonly revision: 0;
        readonly name: "Unknown";
        readonly attributes: {};
        readonly commands: {};
        readonly events: {};
    }>, typeof import("../index.js").ClusterBehavior, import("../behaviors/index.js").IdentifyInterface>, import("../behaviors/index.js").IdentifyInterface>;
    /**
     * The Groups cluster is optional per the Matter specification.
     *
     * We provide this alias to the default implementation {@link GroupsBehavior} for convenience.
     */
    const GroupsBehavior: import("../index.js").ClusterBehavior.Type<import("@matter.js/types/clusters/groups").Groups.Cluster, import("../index.js").ClusterBehavior.Type<import("@matter.js/types").ClusterType.Of<{
        readonly id: 0;
        readonly revision: 0;
        readonly name: "Unknown";
        readonly attributes: {};
        readonly commands: {};
        readonly events: {};
    }>, typeof import("../index.js").ClusterBehavior, import("../behaviors/index.js").GroupsInterface>, import("../behaviors/index.js").GroupsInterface>;
    /**
     * The ScenesManagement cluster is optional per the Matter specification.
     *
     * We provide this alias to the default implementation {@link ScenesManagementBehavior} for convenience.
     */
    const ScenesManagementBehavior: import("../index.js").ClusterBehavior.Type<import("@matter.js/types/clusters/scenes-management").ScenesManagement.Cluster, import("../index.js").ClusterBehavior.Type<import("@matter.js/types").ClusterType.Of<{
        readonly id: 0;
        readonly revision: 0;
        readonly name: "Unknown";
        readonly attributes: {};
        readonly commands: {};
        readonly events: {};
    }>, typeof import("../index.js").ClusterBehavior, import("../behaviors/index.js").ScenesManagementInterface>, import("../behaviors/index.js").ScenesManagementInterface>;
    /**
     * An implementation for each server cluster supported by the endpoint per the Matter specification.
     */
    const server: {
        optional: {
            Identify: typeof BaseIdentifyServer;
        };
        mandatory: {};
    };
    /**
     * A definition for each client cluster supported by the endpoint per the Matter specification.
     */
    const client: {
        mandatory: {
            WindowCovering: import("../index.js").ClusterBehavior.Type<import("@matter.js/types").ClusterType.Of<{
                readonly id: 258;
                readonly name: "WindowCovering";
                readonly revision: 5;
                readonly features: {
                    readonly lift: import("@matter.js/types").BitFlag;
                    readonly tilt: import("@matter.js/types").BitFlag;
                    readonly positionAwareLift: import("@matter.js/types").BitFlag;
                    readonly absolutePosition: import("@matter.js/types").BitFlag;
                    readonly positionAwareTilt: import("@matter.js/types").BitFlag;
                };
                readonly attributes: {
                    readonly type: import("@matter.js/types").FixedAttribute<import("@matter.js/types/clusters/window-covering").WindowCovering.WindowCoveringType, any>;
                    readonly configStatus: import("@matter.js/types").Attribute<import("@matter.js/types").TypeFromPartialBitSchema<{
                        operational: import("@matter.js/types").BitFlag;
                        onlineReserved: import("@matter.js/types").BitFlag;
                        liftMovementReversed: import("@matter.js/types").BitFlag;
                        liftPositionAware: import("@matter.js/types").BitFlag;
                        tiltPositionAware: import("@matter.js/types").BitFlag;
                        liftEncoderControlled: import("@matter.js/types").BitFlag;
                        tiltEncoderControlled: import("@matter.js/types").BitFlag;
                    }>, any>;
                    readonly operationalStatus: import("@matter.js/types").Attribute<import("@matter.js/types").TypeFromPartialBitSchema<{
                        global: import("@matter.js/types").BitFieldEnum<import("@matter.js/types/clusters/window-covering").WindowCovering.MovementStatus>;
                        lift: import("@matter.js/types").BitFieldEnum<import("@matter.js/types/clusters/window-covering").WindowCovering.MovementStatus>;
                        tilt: import("@matter.js/types").BitFieldEnum<import("@matter.js/types/clusters/window-covering").WindowCovering.MovementStatus>;
                    }>, any>;
                    readonly endProductType: import("@matter.js/types").FixedAttribute<import("@matter.js/types/clusters/window-covering").WindowCovering.EndProductType, any>;
                    readonly mode: import("@matter.js/types").WritableAttribute<import("@matter.js/types").TypeFromPartialBitSchema<{
                        motorDirectionReversed: import("@matter.js/types").BitFlag;
                        calibrationMode: import("@matter.js/types").BitFlag;
                        maintenanceMode: import("@matter.js/types").BitFlag;
                        ledFeedback: import("@matter.js/types").BitFlag;
                    }>, any>;
                    readonly safetyStatus: import("@matter.js/types").OptionalAttribute<import("@matter.js/types").TypeFromPartialBitSchema<{
                        remoteLockout: import("@matter.js/types").BitFlag;
                        tamperDetection: import("@matter.js/types").BitFlag;
                        failedCommunication: import("@matter.js/types").BitFlag;
                        positionFailure: import("@matter.js/types").BitFlag;
                        thermalProtection: import("@matter.js/types").BitFlag;
                        obstacleDetected: import("@matter.js/types").BitFlag;
                        power: import("@matter.js/types").BitFlag;
                        stopInput: import("@matter.js/types").BitFlag;
                        motorJammed: import("@matter.js/types").BitFlag;
                        hardwareFailure: import("@matter.js/types").BitFlag;
                        manualOperation: import("@matter.js/types").BitFlag;
                        protection: import("@matter.js/types").BitFlag;
                    }>, any>;
                };
                readonly commands: {
                    readonly upOrOpen: import("@matter.js/types").Command<void, void, any>;
                    readonly downOrClose: import("@matter.js/types").Command<void, void, any>;
                    readonly stopMotion: import("@matter.js/types").Command<void, void, any>;
                };
                readonly extensions: readonly [{
                    readonly flags: {
                        readonly lift: true;
                        readonly positionAwareLift: true;
                        readonly absolutePosition: true;
                    };
                    readonly component: {
                        readonly attributes: {
                            readonly physicalClosedLimitLift: import("@matter.js/types").OptionalFixedAttribute<number, any>;
                            readonly currentPositionLift: import("@matter.js/types").OptionalAttribute<number | null, any>;
                            readonly installedOpenLimitLift: import("@matter.js/types").Attribute<number, any>;
                            readonly installedClosedLimitLift: import("@matter.js/types").Attribute<number, any>;
                        };
                    };
                }, {
                    readonly flags: {
                        readonly tilt: true;
                        readonly positionAwareTilt: true;
                        readonly absolutePosition: true;
                    };
                    readonly component: {
                        readonly attributes: {
                            readonly physicalClosedLimitTilt: import("@matter.js/types").OptionalFixedAttribute<number, any>;
                            readonly currentPositionTilt: import("@matter.js/types").OptionalAttribute<number | null, any>;
                            readonly installedOpenLimitTilt: import("@matter.js/types").Attribute<number, any>;
                            readonly installedClosedLimitTilt: import("@matter.js/types").Attribute<number, any>;
                        };
                    };
                }, {
                    readonly flags: {
                        readonly lift: true;
                    };
                    readonly component: {
                        readonly attributes: {
                            readonly numberOfActuationsLift: import("@matter.js/types").OptionalAttribute<number, any>;
                        };
                        readonly commands: {
                            readonly goToLiftPercentage: import("@matter.js/types").OptionalCommand<import("@matter.js/types").TypeFromFields<{
                                liftPercent100thsValue: import("@matter.js/types").FieldType<number>;
                            }>, void, any>;
                        };
                    };
                }, {
                    readonly flags: {
                        readonly tilt: true;
                    };
                    readonly component: {
                        readonly attributes: {
                            readonly numberOfActuationsTilt: import("@matter.js/types").OptionalAttribute<number, any>;
                        };
                        readonly commands: {
                            readonly goToTiltPercentage: import("@matter.js/types").OptionalCommand<import("@matter.js/types").TypeFromFields<{
                                tiltPercent100thsValue: import("@matter.js/types").FieldType<number>;
                            }>, void, any>;
                        };
                    };
                }, {
                    readonly flags: {
                        readonly lift: true;
                        readonly positionAwareLift: true;
                    };
                    readonly component: {
                        readonly attributes: {
                            readonly currentPositionLiftPercentage: import("@matter.js/types").OptionalAttribute<number | null, any>;
                            readonly targetPositionLiftPercent100ths: import("@matter.js/types").Attribute<number | null, any>;
                            readonly currentPositionLiftPercent100ths: import("@matter.js/types").Attribute<number | null, any>;
                        };
                        readonly commands: {
                            readonly goToLiftPercentage: import("@matter.js/types").Command<import("@matter.js/types").TypeFromFields<{
                                liftPercent100thsValue: import("@matter.js/types").FieldType<number>;
                            }>, void, any>;
                        };
                    };
                }, {
                    readonly flags: {
                        readonly tilt: true;
                        readonly positionAwareTilt: true;
                    };
                    readonly component: {
                        readonly attributes: {
                            readonly currentPositionTiltPercentage: import("@matter.js/types").OptionalAttribute<number | null, any>;
                            readonly targetPositionTiltPercent100ths: import("@matter.js/types").Attribute<number | null, any>;
                            readonly currentPositionTiltPercent100ths: import("@matter.js/types").Attribute<number | null, any>;
                        };
                        readonly commands: {
                            readonly goToTiltPercentage: import("@matter.js/types").Command<import("@matter.js/types").TypeFromFields<{
                                tiltPercent100thsValue: import("@matter.js/types").FieldType<number>;
                            }>, void, any>;
                        };
                    };
                }, {
                    readonly flags: {
                        readonly lift: true;
                        readonly absolutePosition: true;
                    };
                    readonly component: {
                        readonly commands: {
                            readonly goToLiftValue: import("@matter.js/types").OptionalCommand<import("@matter.js/types").TypeFromFields<{
                                liftValue: import("@matter.js/types").FieldType<number>;
                            }>, void, any>;
                        };
                    };
                }, {
                    readonly flags: {
                        readonly tilt: true;
                        readonly absolutePosition: true;
                    };
                    readonly component: {
                        readonly commands: {
                            readonly goToTiltValue: import("@matter.js/types").OptionalCommand<import("@matter.js/types").TypeFromFields<{
                                tiltValue: import("@matter.js/types").FieldType<number>;
                            }>, void, any>;
                        };
                    };
                }, {
                    readonly flags: {
                        readonly positionAwareLift: true;
                        readonly lift: false;
                    };
                    readonly component: false;
                }, {
                    readonly flags: {
                        readonly positionAwareTilt: true;
                        readonly tilt: false;
                    };
                    readonly component: false;
                }, {
                    readonly flags: {
                        readonly lift: false;
                        readonly tilt: false;
                    };
                    readonly component: false;
                }];
            }>, import("../index.js").ClusterBehavior.Type<import("@matter.js/types").ClusterType.Of<{
                readonly id: 0;
                readonly revision: 0;
                readonly name: "Unknown";
                readonly attributes: {};
                readonly commands: {};
                readonly events: {};
            }>, typeof import("../index.js").ClusterBehavior, import("../behaviors/index.js").WindowCoveringInterface>, import("../behaviors/index.js").WindowCoveringInterface>;
        };
        optional: {
            Identify: import("../index.js").ClusterBehavior.Type<import("@matter.js/types/clusters/identify").Identify.Cluster, import("../index.js").ClusterBehavior.Type<import("@matter.js/types").ClusterType.Of<{
                readonly id: 0;
                readonly revision: 0;
                readonly name: "Unknown";
                readonly attributes: {};
                readonly commands: {};
                readonly events: {};
            }>, typeof import("../index.js").ClusterBehavior, import("../behaviors/index.js").IdentifyInterface>, import("../behaviors/index.js").IdentifyInterface>;
            Groups: import("../index.js").ClusterBehavior.Type<import("@matter.js/types/clusters/groups").Groups.Cluster, import("../index.js").ClusterBehavior.Type<import("@matter.js/types").ClusterType.Of<{
                readonly id: 0;
                readonly revision: 0;
                readonly name: "Unknown";
                readonly attributes: {};
                readonly commands: {};
                readonly events: {};
            }>, typeof import("../index.js").ClusterBehavior, import("../behaviors/index.js").GroupsInterface>, import("../behaviors/index.js").GroupsInterface>;
            ScenesManagement: import("../index.js").ClusterBehavior.Type<import("@matter.js/types/clusters/scenes-management").ScenesManagement.Cluster, import("../index.js").ClusterBehavior.Type<import("@matter.js/types").ClusterType.Of<{
                readonly id: 0;
                readonly revision: 0;
                readonly name: "Unknown";
                readonly attributes: {};
                readonly commands: {};
                readonly events: {};
            }>, typeof import("../index.js").ClusterBehavior, import("../behaviors/index.js").ScenesManagementInterface>, import("../behaviors/index.js").ScenesManagementInterface>;
        };
    };
}
export declare const WindowCoveringControllerDeviceDefinition: MutableEndpoint.With<import("../index.js").EndpointType.For<{
    readonly name: "WindowCoveringController";
    readonly deviceType: 515;
    readonly deviceRevision: 3;
    readonly requirements: typeof WindowCoveringControllerRequirements;
    readonly behaviors: {};
}>, {}>;
export declare const WindowCoveringControllerDevice: WindowCoveringControllerDevice;
//# sourceMappingURL=window-covering-controller.d.ts.map