/**
 * @license
 * Copyright 2022-2025 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import type { ActionContext } from "#behavior/context/ActionContext.js";
import type { ClientNode } from "#node/ClientNode.js";
import { ClientInvoke, ClientSubscribe, DecodedInvokeResult, Interactable, Read, ReadResult, SubscribeResult, Write, WriteResult } from "#protocol";
/**
 * A {@link ClientInteraction} that brings the node online before attempting interaction.
 */
export declare class ClientNodeInteraction implements Interactable<ActionContext> {
    #private;
    constructor(node: ClientNode);
    /**
     * The current session used for interaction with the node if any session is established, otherwise undefined.
     */
    get session(): import("#protocol").Session | undefined;
    /**
     * Read chosen attributes remotely from the node. Known data versions are automatically injected into the request to
     * optimize the read.
     * Therefore, the returned data only contains attributes that have changed since the last read or subscription.
     * TODO: Allow control of data version injection and enrich response with attribute data missing in response due to data versioning.
     */
    read(request: Read, context?: ActionContext): ReadResult;
    /**
     * Subscribe to remote events and attributes as defined by {@link request}.
     *
     * matter.js updates local state
     *
     * By default matter.js subscribes to all attributes and events of the peer and updates {@link ClientNode} state
     * automatically.  So you normally do not need to subscribe manually.
     */
    subscribe(request: ClientSubscribe, context?: ActionContext): SubscribeResult;
    /**
     * Write chosen attributes remotely to the node.
     * The returned attribute write status information is returned.
     */
    write<T extends Write>(request: T, context?: ActionContext): WriteResult<T>;
    invoke(request: ClientInvoke, context?: ActionContext): DecodedInvokeResult;
    get structure(): import("./ClientStructure.js").ClientStructure;
}
//# sourceMappingURL=ClientNodeInteraction.d.ts.map