import { e as RuntimeDevice, D as DeviceStatus } from '../types-D67HlF0p.js'; import '../ITransport-yaruAmx3.js'; interface DeviceActiveOptions { now?: number; /** * Optional local freshness window for durable roster rows. Leave undefined * when the caller only wants to honor explicit online/expiresAt state. */ staleAfterMs?: number; } type RuntimeDeviceActivityStatus = Pick, 'online' | 'lastSeenAt' | 'updatedAt' | 'createdAt' | 'expiresAt'>; type RuntimeDeviceRouteStatus = Pick, 'settledReady' | 'readinessState' | 'connectionStatus'>; type DevicePresence = Pick & Pick, 'connectable' | 'presenceStatus' | 'online' | 'ticket'>; /** * True when a runtime device row is currently live enough to display or * consider for app-level routing. This is deliberately separate from * `isDeviceConnectable`: a peer can be active/present before it has a * usable ticket, and a stale durable row should not keep app UIs alive. */ declare function isDeviceActive(device: RuntimeDeviceActivityStatus, options?: DeviceActiveOptions): boolean; /** * True once OpenRTC has a routable peer projection for normal app payloads. * * This intentionally does not inspect discovery metadata or device * capabilities. Those fields describe the remote endpoint roster entry; they * are not proof that an application-level protocol has exchanged its own * ready/capability message over the mesh. */ declare function isDeviceRoutable(device: RuntimeDeviceRouteStatus): boolean; /** * True when the discovery row currently has enough fresh presence to attempt * a dial. This is a discovery gate, not a connected/readiness gate. */ declare function isDeviceConnectable(device: DevicePresence): boolean; export { type DeviceActiveOptions, isDeviceActive, isDeviceConnectable, isDeviceRoutable };