export type TypedBufferLike = {
    buffer: ArrayBufferLike;
    byteOffset: number;
    byteLength: number;
};
export type BufferInput = ArrayBuffer | TypedBufferLike;
export declare const toOscString: (str: string) => ArrayBuffer;
export declare const splitOscString: (bufferInput: BufferInput) => {
    value: string;
    rest: DataView;
};
export type TimeTag = [number, number];
export declare const splitInteger: (bufferInput: BufferInput) => {
    value: number;
    rest: DataView;
};
export declare const splitTimetag: (bufferInput: BufferInput) => {
    value: TimeTag;
    rest: DataView;
};
export declare const dateToTimetag: (date: Date) => TimeTag;
export declare const timetagToDate: ([seconds, fractional]: TimeTag) => Date;
export declare const toTimetagBuffer: (timetag: Date | TimeTag) => ArrayBuffer;
export declare const toIntegerBuffer: (number: number) => ArrayBuffer;
export type OscTypeCode = "s" | "i" | "t" | "f" | "d" | "b" | "T" | "F" | "N" | "I" | "S" | "c" | "r" | "m" | "h";
export type OscMidiPacket = [number, number, number, number];
export type OscArgOutput = {
    type: "string";
    value: string;
} | {
    type: "symbol";
    value: string;
} | {
    type: "integer";
    value: number;
} | {
    type: "bigint";
    value: bigint;
} | {
    type: "timetag";
    value: TimeTag;
} | {
    type: "float";
    value: number;
} | {
    type: "double";
    value: number;
} | {
    type: "blob";
    value: DataView;
} | {
    type: "midi";
    value: OscMidiPacket;
} | {
    type: "color";
    value: OscColor;
} | {
    type: "true";
    value: true;
} | {
    type: "false";
    value: false;
} | {
    type: "null";
    value: null;
} | {
    type: "bang";
    value: "bang";
} | {
    type: "character";
    value: string;
};
export type OscArgOutputOrArray = OscArgOutput | {
    type: "array";
    value: OscArgOutputOrArray[];
};
export type OscColor = {
    red: number;
    green: number;
    blue: number;
    alpha: number;
};
export type OscArgWithType = {
    type: "string";
    value: string;
} | {
    type: "symbol";
    value: string;
} | {
    type: "integer";
    value: number;
} | {
    type: "bigint";
    value: bigint;
} | {
    type: "timetag";
    value: TimeTag | Date;
} | {
    type: "float";
    value: number;
} | {
    type: "double";
    value: number;
} | {
    type: "blob";
    value: ArrayBuffer | TypedBufferLike;
} | {
    type: "character";
    value: string;
} | {
    type: "color";
    value: OscColor;
} | {
    type: "midi";
    value: OscMidiPacket;
} | {
    type: "true";
} | {
    type: "false";
} | {
    type: "null";
} | {
    type: "bang";
};
export type OscArgInput = OscArgWithType | string | number | bigint | Date | OscColor | ArrayBuffer | TypedBufferLike | true | false | "bang" | null;
export type OscArgOrArrayInput = OscArgInput | OscArgOrArrayInput[] | {
    type: "array";
    value: OscArgOrArrayInput[];
};
export type OscMessageOutput = {
    address: string;
    args: OscArgOutputOrArray[];
    oscType: "message";
};
export declare const fromOscMessage: (buffer: BufferInput) => OscMessageOutput;
export type OscBundleOutput = {
    timetag: TimeTag;
    elements: OscPacketOutput[];
    oscType: "bundle";
};
export type OscPacketOutput = OscMessageOutput | OscBundleOutput;
export declare const fromOscBundle: (buffer: BufferInput) => OscBundleOutput;
export declare const fromOscPacket: (buffer: BufferInput) => OscPacketOutput;
export declare const concat: (buffers: BufferInput[]) => ArrayBuffer;
export type OscMessageInput = string | {
    address: string;
    args?: OscArgOrArrayInput[] | OscArgInput;
};
export declare const toOscMessage: (message: OscMessageInput) => DataView;
export type OscBundleInput = {
    timetag: TimeTag | Date;
    elements?: OscPacketInput[] | OscPacketInput;
};
export type OscPacketInput = OscBundleInput | OscMessageInput;
export declare const toOscBundle: (bundle: OscBundleInput) => DataView;
export declare const toOscPacket: (packet: OscPacketInput) => DataView;
export declare const applyMessageTranformerToBundle: (transform: (buffer: DataView) => DataView) => (buffer: DataView) => DataView;
export declare const applyTransform: (buffer: BufferInput, mTransform: (buffer: DataView) => DataView, bundleTransform?: (buffer: DataView) => DataView) => DataView;
export declare const addressTransform: (transform: (string: string) => string) => (buffer: DataView) => DataView;
export declare const messageTransform: (transform: (message: OscMessageOutput) => OscMessageOutput) => (buffer: DataView) => DataView;
