/** * @license * Copyright 2026 Matter.js Authors * SPDX-License-Identifier: Apache-2.0 */ import { Behavior } from "#behavior/Behavior.js"; import { SharedEnvironmentServices } from "@matter/general"; import { DclCertificateService, DclConfig, DclOtaUpdateService, DclVendorInfoService } from "@matter/protocol"; /** * DCL (Distributed Compliance Ledger) configuration behavior. * * This behavior provides centralized configuration for DCL-related services. * Configuration can be set via: * - Environment variables (MATTER_DCL_PRODUCTIONURL, MATTER_DCL_TESTURL, etc.) * - Configuration file ({ "dcl": { "productionUrl": "..." } }) * - Programmatically when building the node * * Environment variables: * - MATTER_DCL_PRODUCTIONURL - Production DCL API endpoint * - MATTER_DCL_TESTURL - Test DCL API endpoint * - MATTER_DCL_FETCHTESTCERTIFICATES - Enable test certificate fetching (true/false) * - MATTER_DCL_FETCHGITHUBCERTIFICATES - Enable GitHub dev cert fetching (true/false) * - MATTER_DCL_OFFLINE - Run all DCL services without network access (true/false) * * @example Programmatic configuration: * ```typescript * const node = await ServerNode.create({ * behaviors: { * dcl: { * productionUrl: "https://custom.dcl.url", * fetchTestCertificates: true, * } * } * }); * ``` */ export declare class DclBehavior extends Behavior { #private; static readonly id = "dcl"; readonly state: DclBehavior.State; internal: DclBehavior.Internal; /** Get DclConfig for production DCL based on the current state. */ get productionConfig(): DclConfig; /** Get DclConfig for test DCL based on the current state. */ get testConfig(): DclConfig; /** * Get DclConfig based on a production flag. * @param isProduction - true for production, false for test */ configForProduction(isProduction: boolean): DclConfig; /** * Get or create the DclCertificateService with the current configuration. * NOTE: The service might not be fully initialized, so use await service.construction to ensure before using it! */ get certificateService(): DclCertificateService; /** * Get or create the DclVendorInfoService with the current configuration. * NOTE: The service might not be fully initialized, so use await service.construction to ensure before using it! */ get vendorInfoService(): DclVendorInfoService; /** * Get or create the DclOtaUpdateService with the current configuration. * NOTE: The service might not be fully initialized, so use await service.construction to ensure before using it! */ get otaUpdateService(): DclOtaUpdateService; [Symbol.asyncDispose](): Promise; } export declare namespace DclBehavior { class State { /** * Production DCL API endpoint URL. * * Swagger docs: https://zigbee-alliance.github.io/distributed-compliance-ledger/#/ */ productionUrl: string; /** Test/Development DCL API endpoint URL. */ testUrl: string; /** Whether to fetch test certificates in addition to production ones. */ fetchTestCertificates: boolean; /** * Whether to trust test (non-production) certificates as valid trust anchors during device * attestation. Independent of {@link fetchTestCertificates}. When unset, defaults to the value of * `fetchTestCertificates`. */ acceptTestCertificates?: boolean; /** Whether to fetch development certificates from GitHub (only when fetchTestCertificates is true). */ fetchGithubCertificates: boolean; /** * Whether the DCL services reach no network at all, neither the DCL nor GitHub nor OTA image URLs. Passed as * `offline` to {@link DclCertificateService}, {@link DclVendorInfoService} and {@link DclOtaUpdateService}. * They then serve only what storage holds from earlier online runs, plus the built-in test vendors. This * behavior passes no seed, so on fresh storage the certificate trust store is empty; create the services * yourself with a `seed` for that case. * * Read when a service is first created. A service already present in the environment keeps its own * `offline` setting; an online one is logged as a warning when this is `true`. */ offline: boolean; } class Internal { services?: SharedEnvironmentServices; otaService?: DclOtaUpdateService; certificateService?: DclCertificateService; vendorInfoService?: DclVendorInfoService; } } //# sourceMappingURL=DclBehavior.d.ts.map