/**
 * @license
 * Copyright 2022-2026 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import { MaybePromise } from "@matter/general";
import { ClusterType } from "@matter/types";
import { ModeSelect } from "@matter/types/clusters/mode-select";
declare const ModeSelectBase: import("../../index.js").ClusterBehavior.Type<import("@matter/types").ClusterComposer.WithFeatures<ModeSelect.Cluster, readonly [ModeSelect.Feature]>, import("./ModeSelectBehavior.js").ModeSelectBehaviorConstructor, import("./ModeSelectInterface.js").ModeSelectInterface>;
/**
 * This is the default server implementation of {@link ModeSelectBehavior}.
 *
 * This implementation supports StartupMode and OnMode handling, when the OnOff feature is activated. You should use
 * {@link ModeSelectServer.with} to specialize the class for the features your implementation supports. Alternatively
 * you can extend this class and override the methods you need.
 *
 * It should be sufficient to use the class without changes and just react on the currentMode changed events.
 */
export declare class ModeSelectBaseServer extends ModeSelectBase {
    #private;
    initialize(): MaybePromise;
    changeToMode({ newMode }: ModeSelect.ChangeToModeRequest): MaybePromise;
}
declare const ModeSelectServer_base: import("../../index.js").ClusterBehavior.Type<ClusterType.Of<{
    readonly id: 80;
    readonly name: "ModeSelect";
    readonly revision: 2;
    readonly features: {
        readonly onOff: import("@matter/types").BitFlag;
    };
    readonly attributes: {
        readonly description: import("@matter/types").FixedAttribute<string, any>;
        readonly standardNamespace: import("@matter/types").FixedAttribute<import("@matter/types").Namespace | null, any>;
        readonly supportedModes: import("@matter/types").FixedAttribute<import("@matter/types").TypeFromFields<{
            label: import("@matter/types").FieldType<string>;
            mode: import("@matter/types").FieldType<number>;
            semanticTags: import("@matter/types").FieldType<import("@matter/types").TypeFromFields<{
                mfgCode: import("@matter/types").FieldType<import("@matter/types").VendorId>;
                value: import("@matter/types").FieldType<number>;
            }>[]>;
        }>[], any>;
        readonly currentMode: import("@matter/types").Attribute<number, any>;
        readonly startUpMode: import("@matter/types").OptionalWritableAttribute<number | null, any>;
    };
    readonly commands: {
        readonly changeToMode: import("@matter/types").Command<import("@matter/types").TypeFromFields<{
            newMode: import("@matter/types").FieldType<number>;
        }>, void, any>;
    };
    readonly extensions: readonly [{
        readonly flags: {
            readonly onOff: true;
        };
        readonly component: {
            readonly attributes: {
                readonly onMode: import("@matter/types").WritableAttribute<number | null, any>;
            };
        };
    }];
}>, typeof ModeSelectBaseServer, import("./ModeSelectInterface.js").ModeSelectInterface>;
export declare class ModeSelectServer extends ModeSelectServer_base {
}
export {};
//# sourceMappingURL=ModeSelectServer.d.ts.map