/**
 * @license
 * Copyright 2025-2026 Open Home Foundation
 * SPDX-License-Identifier: Apache-2.0
 */
import { NodeId } from "@matter/main";
import { EndpointNumber } from "@matter/main/types";
import { NodeStates, PairedNode } from "@project-chip/matter.js/device";
import { AttributeDataCache } from "./AttributeDataCache.js";
/**
 * Manages node storage and tracks per-node availability.
 *
 * This class handles:
 * - Storage of PairedNode instances
 * - Node retrieval and existence checking
 * - Attribute data caching
 * - Connection state tracking for availability debouncing
 */
export declare class Nodes {
    #private;
    get attributeCache(): AttributeDataCache;
    getIds(): NodeId[];
    /** @throws ServerError if node not found */
    get(nodeId: NodeId): PairedNode;
    has(nodeId: NodeId): boolean;
    set(nodeId: NodeId, node: PairedNode): void;
    delete(nodeId: NodeId): void;
    queueEndpointAdded(nodeId: NodeId, endpointId: EndpointNumber): void;
    /** Returns insertion-ordered queue; empty if nothing pending. */
    drainPendingEndpointAdds(nodeId: NodeId): EndpointNumber[];
    seedState(nodeId: NodeId, initialState: NodeStates): void;
    /** `debouncePending` = reconnect timer armed by caller; keeps non-Connected states available. */
    processStateChange(nodeId: NodeId, newState: NodeStates, debouncePending: boolean): {
        availabilityChanged: true;
        available: boolean;
    } | {
        availabilityChanged: false;
    };
    /** Returns true if the node was previously considered available. */
    forceUnavailable(nodeId: NodeId): boolean;
    isNodeAvailable(currentState: NodeStates, debouncePending?: boolean): boolean;
    /** Returns the cached value, not a recomputation — avoids disagreement with the event path. */
    isAvailable(nodeId: NodeId): boolean;
}
//# sourceMappingURL=Nodes.d.ts.map