/**
 * @license
 * Copyright 2022-2026 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import { InteractionSession } from "#action/Interactable.js";
import { AttributeTypeProtocol, ClusterProtocol, EndpointProtocol, NodeProtocol } from "#action/protocols.js";
import { Read } from "#action/request/Read.js";
import { ReadResult } from "#action/response/ReadResult.js";
import { DataResponse } from "#action/server/DataResponse.js";
import { AttributePath, Status } from "#types";
export declare const GlobalAttrIds: Set<import("#types").AttributeId>;
/**
 * Implements read of attribute data for Matter "read" and "subscribe" interactions.
 *
 * TODO - profile; ensure nested functions are properly JITed and/or inlined
 */
export declare class AttributeReadResponse<SessionT extends InteractionSession = InteractionSession> extends DataResponse<SessionT> {
    #private;
    constructor(node: NodeProtocol, session: SessionT);
    process({ dataVersionFilters, attributeRequests }: Read.Attributes): Generator<ReadResult.Chunk, void, void>;
    get counts(): {
        status: number;
        success: number;
        existent: number;
    };
    /**
     * Validate a wildcard path and update internal state.
     */
    protected addWildcard(path: AttributePath): void;
    /**
     * Validate a concrete path and update internal state.
     */
    protected addConcrete(path: ReadResult.ConcreteAttributePath): void;
    /**
     * Starts new chunk or adds to current chunk all values from {@link endpoint} selected by {@link path}.
     *
     * Emits previous chunk if it exists and was not for this endpoint.  This means that our chunk size is one endpoint
     * worth of data, except for the initial error chunk if there are path errors.
     *
     * {@link this.#wildcardPathFlags} to numeric bitmap must be set prior to invocation.
     *
     * TODO - skip endpoints for which subject is unauthorized as optimization
     */
    protected readEndpointForWildcard(endpoint: EndpointProtocol, path: AttributePath): Generator<ReadResult.Report[], void, unknown>;
    /**
     * Read values from a specific {@link cluster} for a wildcard path.
     *
     * Depends on state initialized by {@link #readEndpointForWildcard}.
     *
     * TODO - skip clusters for which subject is unauthorized
     */
    protected readClusterForWildcard(cluster: ClusterProtocol, path: AttributePath): void;
    /**
     * Read values from a specific {@link attribute} for a wildcard path.
     *
     * Depends on state initialized by {@link #readClusterForWildcard}.
     */
    protected readAttributeForWildcard(attribute: AttributeTypeProtocol, path: AttributePath): void;
    /**
     * Add a status value.
     */
    protected addStatus(path: ReadResult.ConcreteAttributePath, status: Status): void;
}
//# sourceMappingURL=AttributeReadResponse.d.ts.map