/**
 * @license
 * Copyright 2022-2024 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import { AttributeId, EntryIndex, FieldId } from "#types";
import { BasePath } from "./BasePath.js";
export declare namespace AttributePath {
    /**
     * Attribute name or ID.
     */
    type Address = AttributeId | string;
    /**
     * Field name or ID.
     */
    type FieldAddress = FieldId | string;
    /**
     * Addresses a collection (struct or list) within an attribute.
     *
     * @see {@link MatterSpecification.v11.Core} § 8.9.2.2
     */
    type Nested = ({
        field: FieldAddress;
    } | {
        entry: EntryIndex;
    })[];
    /**
     * Addresses attribute data for read operations.  Note that if you
     * specify the attribute you must also specify the cluster except for
     * global attributes.
     *
     * @see {@link MatterSpecification.v11.Core} § 8.9.2.1 & 8.9.2.3
     */
    type Read = BasePath.Read & {
        attribute?: Address;
        subpath?: Nested;
    };
    /**
     * Addresses attribute data for write operations.
     *
     * @see {@link MatterSpecification.v11.Core} § 8.9.2.1 & 8.9.2.4
     */
    type Write = BasePath.Write & {
        attribute: Address;
        subpath?: Nested;
    };
    /**
     * Addresses a specific attribute.
     */
    type Concrete = BasePath.Concrete & {
        attribute: Address;
        subpath?: Nested;
    };
}
//# sourceMappingURL=AttributePath.d.ts.map