/**
 * @license
 * Copyright 2022-2026 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import { Duration } from "@matter/general";
export declare enum IcdMode {
    Idle = "idle",
    Active = "active"
}
export interface IcdModeStateOptions {
    /** Minimum active-window length after entering Active mode. @see {@link MatterSpecification.v16.Core} § 9.16.6.2 */
    activeModeDuration: Duration;
    /** Active-window extension granted per network activity. @see {@link MatterSpecification.v16.Core} § 9.16.6.3 */
    activeModeThreshold: Duration;
    /** Entered Active mode — initial power-up or an idle→active wake. The Check-In send point. */
    onActiveEntered: () => void;
    /** Active→Idle transition (device went idle). */
    onIdleEntered: () => void;
    /** Active window elapsed with no further activity: the device may now be put to sleep. */
    onMayEnterIdle: () => void;
}
/**
 * Device-side ICD idle/active mode, fully externally driven.
 *
 * matter.js nodes never truly sleep and stay reachable; this models the logical mode for spec/cert completeness,
 * controller verification, and app power hooks. It never cycles on its own: the single one-shot active-window timer
 * only signals `onMayEnterIdle`; all transitions are driven by {@link start}/{@link stop}, {@link enterIdle},
 * {@link requestActive}, and {@link noteActivity}. Distinct from the ICD SIT/LIT OperatingMode.
 *
 * @see {@link MatterSpecification.v16.Core} § 9.15.1, § 9.16
 */
export declare class IcdModeState {
    #private;
    constructor(options: IcdModeStateOptions);
    get mode(): IcdMode;
    get isActive(): boolean;
    /** Node online: enter Active mode and begin tracking. Idempotent. */
    start(): void;
    /** Node going offline: pause; stop the active-window timer without emitting transitions. Idempotent. */
    stop(): void;
    /** Record network activity: extend the active window if Active, or wake to Active if Idle (idle→active). */
    noteActivity(): void;
    /**
     * Force Active mode for at least `duration`, waking if Idle. Returns the total remaining Active-window duration the
     * device is now committed to.
     */
    requestActive(duration: Duration): Duration;
    /** Force Idle mode now (unconditional — harness/app control). No-op when not running or already Idle. */
    enterIdle(): void;
    [Symbol.dispose](): void;
}
//# sourceMappingURL=IcdMode.d.ts.map