/**
 * @license
 * Copyright 2022-2026 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import type { ReadResult } from "#action/response/ReadResult.js";
import { Duration } from "@matter/general";
import { Read } from "./Read.js";
/**
 * Defines a subscription.
 *
 * The subscription interval fields are optional as matter.js will set them to appropriate defaults based on physical
 * attributes of the target device.  If you are unsure of appropriate values do not set them.
 */
export interface Subscribe extends Read {
    keepSubscriptions: boolean;
    minIntervalFloor?: Duration;
    maxIntervalCeiling?: Duration;
    /**
     * Invoked when subscribed data changes.
     */
    updated?: (data: ReadResult) => Promise<void>;
    /**
     * Invoked when the subscription is no longer active.
     */
    closed?: () => void;
}
export declare function Subscribe(options: Subscribe.Options, ...selectors: Read.Selector[]): Subscribe;
export declare namespace Subscribe {
    interface Options extends Read.Options {
        keepSubscriptions?: boolean;
        minIntervalFloor?: Duration;
        maxIntervalCeiling?: Duration;
        update?: Subscribe["updated"];
        closed?: Subscribe["closed"];
    }
}
//# sourceMappingURL=Subscribe.d.ts.map