/** * @license * Copyright 2022-2026 Matter.js Authors * SPDX-License-Identifier: Apache-2.0 */ import { MaybePromise } from "@matter/general"; import { ServiceArea } from "@matter/types/clusters/service-area"; declare const ServiceAreaBase: import("../../index.js").ClusterBehavior.Type, import("@matter/types").ClusterType.Concrete, new () => {}, "serviceArea">; type AssertSelectServiceAreaResponse = { result: ServiceArea.SelectAreasResponse; validatedAreas?: number[]; }; /** * This is the default server implementation of {@link ServiceAreaBehavior}. * * It validates the attributes on initialization and when being changed against the definition of the specification. * It configures the estimatedEndTime attribute according to the defined Q-Requirements. * * The `skipArea` command is not implemented because optional and depending on device specific behavior, but the * below defined extension method `assertSkipServiceArea` implements all relevant default validation as defined by specs. * * This implementation offers the following extension points: * * - `assertSelectServiceArea` to implement custom logic when selecting areas * * - `assertSkipServiceArea` to implement custom logic when skipping areas * * Additionally, the `removeSupportedAreasEntry` and `removeSupportedMapsEntry` methods are provided to remove entries * including needed adjustments of other attributes. */ export declare class ServiceAreaBaseServer extends ServiceAreaBase { #private; initialize(): MaybePromise; /** * This command is used to select a set of device areas, where the device is to operate. * On receipt of this command the device shall respond with a SelectAreasResponse command. * * The default implementation wil check the areaId as defined by the specification and internally calls * `assertSelectServiceArea`, which can be overridden to implement custom logic. * When a new list of areas is selected, the device shall clear the progress list and set the status of all areas to * Pending. */ selectAreas({ newAreas }: ServiceArea.SelectAreasRequest): MaybePromise; protected assertSelectServiceArea({ newAreas }: ServiceArea.SelectAreasRequest): AssertSelectServiceAreaResponse; protected assertSkipServiceArea({ skippedArea }: ServiceArea.SkipAreaRequest): ServiceArea.SkipAreaResponse; removeSupportedAreasEntry(areaId: number): void; /** * Convenience helper method to remove a map from the supported maps list. * The logic will also sync the SupportedAreas list with this removal. */ removeSupportedMapsEntry(mapId: number): void; } export declare namespace ServiceAreaBaseServer { const ExtensionInterface: { assertSelectServiceArea({ newAreas }: ServiceArea.SelectAreasRequest): AssertSelectServiceAreaResponse; assertSkipServiceArea({ skippedArea }: ServiceArea.SkipAreaRequest): ServiceArea.SkipAreaResponse; }; } declare const ServiceAreaServer_base: import("../../index.js").ClusterBehavior.Type, { maps: false; progressReporting: false; selectWhileRunning: false; }>, import("@matter/types").ClusterType.Concrete, new () => {}, "serviceArea">; export declare class ServiceAreaServer extends ServiceAreaServer_base { } export {}; //# sourceMappingURL=ServiceAreaServer.d.ts.map