31 lines
806 B
TypeScript
31 lines
806 B
TypeScript
type Result<T> =
|
|
{ type: "success" } & T
|
|
| { type: "error", message: string };
|
|
|
|
type Brightness =
|
|
{ type: "off" }
|
|
| { type: "switch" }
|
|
| { type: "dimmer", value: number }
|
|
| { type: "strobe", value: number };
|
|
|
|
type MovingHeadState = {
|
|
start_address: number, // [0, 512]
|
|
|
|
pan: number, // [-3pi/2, 3pi/2]
|
|
tilt: number, // [-pi/2, pi/2]
|
|
brightness: Brightness,
|
|
rgbw: [number, number, number, number], // RGBW, [0, 255]
|
|
speed: number, // [255, 0]
|
|
}
|
|
|
|
type OutputHandle = {
|
|
set: (heads: [MovingHeadState, MovingHeadState, MovingHeadState, MovingHeadState]) => Result<{}>,
|
|
close: () => Result<{}>,
|
|
}
|
|
|
|
declare module rust_native_module {
|
|
function listPorts(): Array<string>;
|
|
function openOutput(): Result<OutputHandle>;
|
|
}
|
|
|
|
export = rust_native_module; |