/**
 * @license
 * Copyright 2022-2026 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import { BasicMultiplex, MaybePromise, Timer } from "@matter/general";
import { OnOff } from "@matter/types/clusters/on-off";
declare const OnOffLogicBase: import("../../index.js").ClusterBehavior.Type<import("./OnOffBehavior.js").OnOffBehaviorConstructor, import("@matter/types").ClusterType.WithSupportedFeatures<OnOff, {
    deadFrontBehavior: false;
    lighting: true;
    offOnly: false;
}>, import("@matter/types").ClusterType.Concrete, new () => {}, "onOff">;
/**
 * This is the default server implementation of {@link OnOffBehavior}.
 *
 * This implementation includes all features of {@link OnOff.Cluster}. You should use {@link OnOffServer.with} to
 * specialize the class for the features your implementation supports. Alternatively you can extend this class and
 * override the methods you need to change or add mandatory commands.
 *
 * The "OffOnly" and "Lighting" features are automatically supported because the commands are disabled by conformance.
 * The default implementation do not contain any logic for the DeadFrontBehavior feature because this is very use case
 * specific, so this needs to be implemented by the device implementor as needed.
 */
export declare class OnOffBaseServer extends OnOffLogicBase {
    #private;
    protected internal: OnOffBaseServer.Internal;
    initialize(): MaybePromise;
    get delayedPromises(): BasicMultiplex;
    [Symbol.asyncDispose](): Promise<void>;
    on(): MaybePromise;
    off(): MaybePromise;
    /**
     * Default implementation notes:
     * This method uses the on/off methods when timed actions should occur. This means that it is enough to override
     * on() and off() with custom control logic.
     */
    toggle(): MaybePromise;
    /**
     * Default implementation notes:
     * * This implementation ignores the effect and just calls off().
     */
    offWithEffect(): MaybePromise;
    onWithRecallGlobalScene(): Promise<void>;
    /**
     * Default implementation notes:
     * * This method uses the on/off methods when timed actions should occur. This means that it is enough to override
     * on() and off() with custom control logic.
     */
    onWithTimedOff({ onOffControl, offWaitTime, onTime }: OnOff.OnWithTimedOffRequest): MaybePromise;
    protected get timedOnTimer(): Timer;
    protected get delayedOffTimer(): Timer;
}
export declare namespace OnOffBaseServer {
    class Internal {
        timedOnTimer?: Timer;
        delayedOffTimer?: Timer;
        applySceneDelayTimer?: Timer;
        applyScenePendingOnOff?: boolean;
        delayedPromises?: BasicMultiplex;
    }
}
declare const OnOffServer_base: import("../../index.js").ClusterBehavior.Type<typeof OnOffBaseServer, import("@matter/types").ClusterType.WithSupportedFeatures<import("@matter/types").ClusterType.WithSupportedFeatures<OnOff, {
    deadFrontBehavior: false;
    lighting: true;
    offOnly: false;
}>, {
    deadFrontBehavior: false;
    lighting: false;
    offOnly: false;
}>, import("@matter/types").ClusterType.Concrete, typeof OnOffBaseServer.Internal, "onOff">;
export declare class OnOffServer extends OnOffServer_base {
}
export {};
//# sourceMappingURL=OnOffServer.d.ts.map