/**
 * @license
 * Copyright 2025-2026 Open Home Foundation
 * SPDX-License-Identifier: Apache-2.0
 */
import { PeerAddress } from "@matter/main/protocol";
import { AttributesData } from "../types/CommandHandler.js";
type AttributePath = string;
export interface NodeAttributeReader {
    handleReadAttributes(peer: PeerAddress, attributePaths: string[], fabricFiltered?: boolean): Promise<AttributesData>;
    nodeConnected(peer: PeerAddress): boolean;
}
/**
 * Check if a node needs custom attribute polling based on its attributes.
 *
 * A node needs polling if:
 * 1. It has Eve vendor ID (4874) at endpoint 0/40/2 (BasicInformation.VendorID)
 * 2. It has Eve custom cluster (0x130AFC01) with energy attributes
 * 3. It does NOT have the standard ElectricalPowerMeasurement cluster (0x0090)
 */
export declare function checkPolledAttributes(attributes: AttributesData): Set<AttributePath>;
/**
 * Manages polling of custom cluster attributes for multiple nodes.
 */
export declare class CustomClusterPoller {
    #private;
    constructor(attributeReader: NodeAttributeReader);
    /**
     * Register a node for polling if it has custom attributes that need polling.
     * Call this after a node is connected and its attributes are available.
     */
    registerNode(peer: PeerAddress, attributes: AttributesData): void;
    /**
     * Unregister a node from polling (e.g., when decommissioned or disconnected).
     */
    unregisterNode(peer: PeerAddress): void;
    /**
     * Stop all polling and cleanup. Awaits any in-flight read operation.
     */
    stop(): Promise<void>;
}
export {};
//# sourceMappingURL=CustomClusterPoller.d.ts.map