/**
 * @license
 * Copyright 2022-2026 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import { Behavior } from "#behavior/Behavior.js";
import { Environment, VariableService } from "@matter/general";
import { Endpoint } from "./Endpoint.js";
/**
 * Endpoint environmental configuration management.
 *
 * This class extracts behavior state properties from environment variables managed by {@link VariableService}.
 *
 * You can configure endpoints using this convention:
 *
 *   - Configure nodes with `nodes.<node id>` subkey
 *
 *   - Configure endpoints with `<owner subkey>.parts.<endpoint id>` subkey
 *
 *   - Configure endpoint behaviors with `<endpoint subkey>.<behavior id>.<property name>` subkey
 *
 * Additionally you may configure behaviors globally (regardless of endpoint) using the
 * `behaviors.<behavior id>.<property name>` subkey.  Endpoint-specific configuration overrides this value.
 *
 * Environmental configuration overrides values supplied in {@link Endpoint.Configuration}.
 *
 * This effectively makes all state values configuration.  It is settable via command line, system environment variable
 * or configuration file.
 *
 * For example, to set the vendor name for all nodes:
 *
 * ```bash
 *   export MATTER_BASICINFORMATION_VENDORNAME="My Vendor Name"
 * ```
 *
 * Or, to configure a light as on by default:
 *
 * ```bash
 *   export MATTER_NODES_NODE1_PARTS_LIGHT_ONOFF_ONOFF=1
 * ```
 *
 * Perhaps better would be to implement the previous two examples using a configuration file:
 *
 * ```json
 *   {
 *     "basicInformation": {
 *       "vendorName": "My Vendor Name"
 *     },
 *
 *     "nodes": {
 *       "node1": {
 *         "parts": {
 *           "light": {
 *             "onOff": {
 *               "onOff": true
 *             }
 *           }
 *         }
 *       }
 *     }
 *   }
 * ```
 *
 * Matter.js automatically expands dotted names, so a more compact configuration option is:
 *
 * ```json
 * {
 *   "basicInformation.vendorName": "My Vendor Name",
 *   "nodes.node1.parts.light.onOff.OnOff": true,
 * }
 * ```
 */
export declare class EndpointVariableService {
    #private;
    constructor(env: Environment);
    /**
     * Access the variable map for an instance of a behavior.
     */
    forBehaviorInstance(endpoint: Endpoint, type: Behavior.Type): VariableService.Map;
    /**
     * Access the variable map for an endpoint.
     */
    forEndpoint(endpoint: Endpoint): VariableService.Map;
    /**
     * Access the variable map for a type of behavior.
     */
    forBehaviorType(type: Behavior.Type): VariableService.Map;
}
//# sourceMappingURL=EndpointVariableService.d.ts.map