import type { DeviceFriendlyName, DeviceId, DeviceInfo, DeviceType } from '../interfaces/SyncTypes.mjs'; /** * Anything a device's name can be read off. * * Both shapes at once: `SyncDevice`, which nests `deviceInfo`, and * `PublicSyncDevice`, which flattens it. One signature rather than two * overloads, so that a caller cannot pick the one that silently reads nothing * from the shape it is holding. */ export interface DeviceLabelSource { deviceId: DeviceId; deviceType?: DeviceType; deviceFriendlyName?: DeviceFriendlyName; deviceInfo?: DeviceInfo; } /** * The best name a device has. * * For a list row, where the id is already on the row somewhere else. Never * empty: a device always has an id, and a device that says nothing about itself * is better shown as its id than as an invented placeholder. * @param device - The device. * @returns The friendly name, else the device type, else the device id. */ export declare const deviceName: (device: DeviceLabelSource) => string; /** * The name a device claims plus what actually identifies it, for one line of * prose. * * Says nothing about whether the name is true -- it cannot, because the device * being described is the one that chose it. That is what a fingerprint printed * alongside is for, and why the id is here too. * @param device - The device. * @returns e.g. `"work laptop" (cli, f95580c4-...)`, or the id on its own. */ export declare const deviceLabel: (device: DeviceLabelSource) => string;