/**
 * @license
 * Copyright 2022-2026 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import { EventEmitter, Observable } from "#general";
import { ExposedFabricInformation, Subscription } from "#protocol";
import { NodeId } from "#types";
import { Behavior } from "../../Behavior.js";
/**
 * Active {@link ServerNode} client sessions.
 */
export declare class SessionsBehavior extends Behavior {
    #private;
    static readonly id = "sessions";
    state: SessionsBehavior.State;
    events: SessionsBehavior.Events;
    initialize(): void;
}
export declare namespace SessionsBehavior {
    interface Session {
        name: string;
        nodeId: NodeId;
        peerNodeId: NodeId;
        fabric?: ExposedFabricInformation;
        isPeerActive: boolean;
        lastInteractionTimestamp: number | undefined;
        lastActiveTimestamp: number | undefined;
        numberOfActiveSubscriptions: number;
    }
    class State {
        sessions: Record<number, Session>;
    }
    class Events extends EventEmitter {
        opened: Observable<[session: Session], void>;
        closed: Observable<[session: Session], void>;
        subscriptionsChanged: Observable<[session: Session], void>;
        subscriptionAdded: Observable<[subscription: Subscription], void>;
    }
}
//# sourceMappingURL=SessionsBehavior.d.ts.map