ts-osc/src/types/osc-min.d.ts
2021-01-29 20:54:46 +01:00

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;
}