open-epsilon
Version:
empty-epsilon / open-sound-control bidirectional proxy
138 lines (101 loc) • 3.56 kB
TypeScript
declare module "osc" {
export class EventEmitter<T> {
addListener<E extends keyof T>(event: E, listener: T[E]): this;
on<E extends keyof T>(event: E, listener: T[E]): this;
once<E extends keyof T>(event: E, listener: T[E]): this;
removeListener<E extends keyof T>(event: E, listener: T[E]): this;
removeAllListeners(event?: keyof T): this;
setMaxListeners(n: number): this;
getMaxListeners(): number;
listeners<E extends keyof T>(event: E): T[E][];
// emit(event: string | symbol, ...args: any[]): boolean;
listenerCount(type: keyof T): number;
// Added in Node 6...
prependListener<E extends keyof T>(event: E, listener: T[E]): this;
prependOnceListener<E extends keyof T>(event: E, listener: T[E]): this;
eventNames(): Array<keyof T>;
}
export const defaults: {
metadata: boolean;
unpackSingleArgs: boolean;
};
export type Argument = number | string | Uint8Array;
export type MetaArgument =
{ type: 'i' | 'f', value: number }
| { type: 's', value: string }
| { type: 'b', value: Uint8Array };
export abstract class SLIPPort {
}
export interface OscMessage {
address: string;
args: Argument | Array<Argument> | MetaArgument | Array<MetaArgument>;
}
export interface OscBundle {
}
export interface SenderInfo {
address: string;
port: number;
size: number;
family: 'IPv4' | 'IPv6';
}
export interface PortEvents {
ready: () => void;
message: (message: OscMessage, timeTag: number | undefined, info: SenderInfo) => void;
bundle: (bundle: OscBundle, timeTag: number, info: SenderInfo) => void;
osc: (packet: OscBundle | OscMessage, info: SenderInfo) => void;
raw: (data: Uint8Array, info: SenderInfo) => void;
error: (err: Error) => void;
}
export interface UdpOptions {
/**
* The port to listen on
*/
localPort?: number; // 57121
/**
* The local address to bind to
*/
localAddress?: string; // '127.0.0.1'
/**
* The remote port to send messages to
*/
remotePort?: number;
/**
* The remote address to send messages to
*/
remoteAddress?: string;
broadcast?: boolean; // false
/**
* The time to live (number of hops) for a multicast connection
*/
multicastTTL?: number;
/**
* An array of multicast addresses to join when listening for multicast messages
*/
multicastMembership?: string[];
socket?: any;
/**
* should message arguments be wrapped with type?
*/
metadata?: boolean;
unpackSingleArgs?: boolean;
}
export interface OscSender {
send(msg: OscMessage, address?: string, port?: number): void;
}
export abstract class Port extends EventEmitter<PortEvents> implements OscSender {
send(msg: OscMessage, address?: string, port?: number): void;
}
export class SerialPort extends SLIPPort {
open(): void;
close(): void;
listen(): void;
}
export class UDPPort extends Port {
static setupMulticast(that: UDPPort): void;
options: UdpOptions;
constructor(options: UdpOptions);
open(): void;
close(): void;
listen(): void;
}
}