/**
 * @license
 * Copyright 2022-2026 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import { MaybePromise, Observable, Timer } from "@matter/general";
import { Identify } from "@matter/types/clusters/identify";
import { IdentifyBehavior } from "./IdentifyBehavior.js";
/**
 * This is the default server implementation of {@link IdentifyBehavior}.
 *
 * This implementation includes all features of {@link Identify.Cluster} and implements all mandatory commands. You should use
 * {@link IdentifyServer.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.
 *
 * Beside the standard state values the following additional state values are available:
 * * `isIdentifying` - Indicates if the device is currently identifying.
 *
 * Beside the standard events the following additional events are available:
 * * `startIdentifying` - Emitted when the device starts identifying. Use it to start your own identifying logic. This is mandatory.
 * * `stopIdentifying` - Emitted when the device stops identifying. This is mandatory.
 * * `effectTriggered` - Emitted when an effect should be triggered. Use it to trigger the effect. Depending on the device type this is mandatory!
 */
export declare class IdentifyServer extends IdentifyBehavior {
    #private;
    protected internal: IdentifyServer.Internal;
    state: IdentifyServer.State;
    events: IdentifyServer.Events;
    initialize(): MaybePromise;
    [Symbol.asyncDispose](): Promise<void>;
    identify({ identifyTime }: Identify.IdentifyRequest): MaybePromise;
    triggerEffect(effect: Identify.TriggerEffectRequest): MaybePromise;
}
export declare namespace IdentifyServer {
    class Internal {
        identifyTimer?: Timer;
    }
    class State extends IdentifyBehavior.State {
        isIdentifying: boolean;
    }
    class Events extends IdentifyBehavior.Events {
        startIdentifying: Observable<any[], void>;
        stopIdentifying: Observable<any[], void>;
        effectTriggered: Observable<[effect: Identify.TriggerEffectRequest], void>;
    }
}
//# sourceMappingURL=IdentifyServer.d.ts.map