///
import dgram from "dgram";
export declare const DiscoveryVersions: {
readonly PS4: "00020020";
readonly PS5: "00030010";
};
export declare type DiscoveryVersion = typeof DiscoveryVersions[keyof typeof DiscoveryVersions];
export interface IDiscoveryConfig {
pingIntervalMillis: number;
timeoutMillis: number;
uniqueDevices: boolean;
deviceIp?: string;
deviceType?: DeviceType;
}
export declare const defaultDiscoveryConfig: IDiscoveryConfig;
export interface INetworkConfig {
localBindAddress?: string;
localBindPort?: number;
}
export declare enum DeviceStatus {
STANDBY = "STANDBY",
AWAKE = "AWAKE"
}
export interface IDeviceAddress {
address: string;
port: number;
family: "IPv4" | "IPv6";
}
declare const discoveryKeysArrray: readonly ["host-id", "host-name", "host-request-port", "host-type", "system-version", "device-discovery-protocol-version"];
export declare type DiscoveryKey = typeof discoveryKeysArrray[number];
export declare const outgoingDiscoveryKeys: Set;
export declare function isDiscoveryKey(s: string): s is DiscoveryKey;
export declare enum DiscoveryMessageType {
SRCH = "SRCH",
WAKEUP = "WAKEUP",
DEVICE = "DEVICE"
}
export interface IDiscoveryMessage {
type: DiscoveryMessageType;
sender: IDeviceAddress;
version: DiscoveryVersion;
data: Record;
}
export declare enum DeviceType {
PS4 = "PS4",
PS5 = "PS5"
}
export interface IDiscoveredDevice {
address: IDeviceAddress;
hostRequestPort: number;
extras: Record;
discoveryVersion: DiscoveryVersion;
systemVersion: string;
id: string;
name: string;
status: DeviceStatus;
type: DeviceType;
}
export declare type OnDeviceDiscoveredHandler = (device: IDiscoveredDevice) => void;
export declare type OnDiscoveryMessageHandler = (message: IDiscoveryMessage) => void;
export interface IDiscoveryNetwork {
close(): void;
/** Request devices on the network to identify themselves. A specific
* `deviceIp` may be provided to instead talk to a specific device */
ping(deviceIp?: string): Promise;
send(recipientAddress: string, recipientPort: number, type: string, data?: Record): Promise;
sendBuffer(recipientAddress: string, recipientPort: number, message: Buffer): Promise;
}
export interface IDiscoveryNetworkFactory {
createRawMessages(config: INetworkConfig, onMessage: (buffer: Buffer, rinfo: dgram.RemoteInfo) => void): IDiscoveryNetwork;
createMessages(config: INetworkConfig, onMessage: OnDiscoveryMessageHandler): IDiscoveryNetwork;
createDevices(config: INetworkConfig, onDevice: OnDeviceDiscoveredHandler): IDiscoveryNetwork;
}
export {};