65 lines
2 KiB
TypeScript
65 lines
2 KiB
TypeScript
declare module 'osc-min' {
|
|
export enum OSCType {
|
|
String = 'string',
|
|
Float = 'float',
|
|
Integer = 'integer',
|
|
Blob = 'blob',
|
|
True = 'true',
|
|
False = 'false',
|
|
Null = 'null',
|
|
Bang = 'bang',
|
|
Timetag = 'timetag',
|
|
Array = 'array',
|
|
}
|
|
|
|
export type OSCTimeTag = [number, number];
|
|
export type OutgoingOSCArgsTypes = (OSCArgument<OSCType> | Buffer | boolean | string | number)[];
|
|
|
|
export interface OSCMessage {
|
|
oscType?: 'message';
|
|
address: string;
|
|
args: OSCArgument<OSCType>[];
|
|
}
|
|
|
|
export interface OutgoingOSCMessage extends OSCMessage {
|
|
args: OutgoingOSCArgsTypes;
|
|
}
|
|
|
|
export interface OSCBundle {
|
|
oscType: 'bundle';
|
|
timetag: null | number | Date | OSCTimeTag;
|
|
elements: (OSCMessage | OSCBundle)[];
|
|
}
|
|
|
|
export type OSCArgumentType<T extends OSCType> = T extends OSCType.String
|
|
? string
|
|
: T extends OSCType.Float | OSCType.Integer | OSCType.Timetag
|
|
? number
|
|
: T extends OSCType.True
|
|
? true
|
|
: T extends OSCType.False
|
|
? false
|
|
: T extends OSCType.Blob
|
|
? Buffer
|
|
: T extends OSCType.Array
|
|
? OSCArgument<OSCType>[]
|
|
: null;
|
|
|
|
export interface OSCArgument<T extends OSCType> {
|
|
type: T;
|
|
value: OSCArgumentType<T>;
|
|
}
|
|
|
|
type OSCPacket = OSCMessage | OSCBundle;
|
|
|
|
export function fromBuffer(buffer: Buffer, strict?: boolean): OSCPacket;
|
|
export function toBuffer(object: OutgoingOSCMessage, strict?: boolean): Buffer;
|
|
export function toBuffer(address: string, args: OSCArgument<OSCType>[], strict?: boolean): Buffer;
|
|
export function applyMessageTransform(msg: Buffer, transform: (message: OSCMessage) => OSCMessage);
|
|
export function applyAddressTransform(msg: Buffer, transform: (address: string) => string);
|
|
export function timetagToDate(ntpTimeTag: OSCTimeTag): Date;
|
|
export function dateToTimetag(date: Date): OSCTimeTag;
|
|
export function timetagToTimestamp(timeTag: OSCTimeTag): number;
|
|
export function timestampToTimetag(timestamp: number);
|
|
OSCTimeTag;
|
|
}
|