import { IDevice, IDeviceRegistry } from '@camstack/types';
export declare class DeviceRegistry implements IDeviceRegistry {
    /** Primary map: every registered device keyed by its progressive
     *  numeric id. Numeric id is the system-wide unique handle; stableId
     *  is integration-scoped and only used at external boundaries. */
    private readonly byId;
    /** Addon scoping index: addonId → set of numeric device ids owned
     *  by that addon. Lets `getAllForAddon` and per-addon teardown stay
     *  O(1) per lookup without a second primary table. */
    private readonly byAddon;
    /** Inverse of byAddon for the single-device case. */
    private readonly idToAddon;
    register(addonId: string, device: IDevice): void;
    /** Owning addonId for a registered numeric id, or null if not registered. */
    getAddonId(id: number): string | null;
    /** Look up any registered device by its progressive numeric id. */
    getById(id: number): IDevice | null;
    getAllForAddon(addonId: string): readonly IDevice[];
    getChildren(parentDeviceId: number): readonly IDevice[];
    remove(deviceId: number): void;
    getAll(): readonly IDevice[];
    /** All devices with their owning addonId. */
    getAllWithAddonId(): readonly {
        addonId: string;
        device: IDevice;
    }[];
    /** All addonIds that have at least one registered device. */
    getAddonIds(): readonly string[];
}
//# sourceMappingURL=device-registry.d.ts.map