/**
 * @license
 * Copyright 2022-2026 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import { FabricIndex, NodeId } from "#types";
/**
 * This is the "logical" address of a peer node consisting of a fabric and node ID.
 */
export interface PeerAddress {
    fabricIndex: FabricIndex;
    nodeId: NodeId;
}
/**
 * Obtain a canonical instance of a logical address.
 *
 * This allows for identification based on object comparison.  Interned addresses render to a string in the format
 * "@<fabric index>:<node id>"
 */
export declare function PeerAddress<T extends undefined | PeerAddress>(address: T): T;
export declare function InternedAddress(address: PeerAddress): PeerAddress;
export declare namespace PeerAddress {
    function is(addr1?: Readonly<PeerAddress>, addr2?: Readonly<PeerAddress>): boolean;
    function isGroup(address: PeerAddress): boolean;
}
/**
 * A collection of items keyed by logical address.
 */
export declare class PeerAddressMap<T> extends Map<PeerAddress, T> {
    delete(key: PeerAddress): boolean;
    has(key: PeerAddress): boolean;
    set(key: PeerAddress, value: T): this;
    get(key: PeerAddress): T | undefined;
}
export declare class PeerAddressSet extends Set<PeerAddress> {
    add(value: PeerAddress): this;
    has(value: PeerAddress): boolean;
    delete(value: PeerAddress): boolean;
}
//# sourceMappingURL=PeerAddress.d.ts.map