/** * @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.v161.Core} § 9.16.6.2 */ activeModeDuration: Duration; /** Active-window extension granted per network activity. @see {@link MatterSpecification.v161.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.v161.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