@neurodevs/node-lsl 2.0.2 → 3.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/README.md +1 -1
  2. package/build/Liblsl.d.ts +33 -25
  3. package/build/Liblsl.js +29 -30
  4. package/build/Liblsl.js.map +1 -1
  5. package/build/LslOutlet.d.ts +8 -7
  6. package/build/LslOutlet.js +28 -21
  7. package/build/LslOutlet.js.map +1 -1
  8. package/build/TimeMarkerOutlet.d.ts +4 -0
  9. package/build/TimeMarkerOutlet.js +26 -0
  10. package/build/TimeMarkerOutlet.js.map +1 -0
  11. package/build/__tests__/behavioral/LslOutlet.test.d.ts +10 -12
  12. package/build/__tests__/behavioral/LslOutlet.test.js +47 -98
  13. package/build/__tests__/behavioral/LslOutlet.test.js.map +1 -1
  14. package/build/__tests__/behavioral/TimeMarkerOutlet.test.d.ts +8 -0
  15. package/build/__tests__/behavioral/TimeMarkerOutlet.test.js +85 -0
  16. package/build/__tests__/behavioral/TimeMarkerOutlet.test.js.map +1 -0
  17. package/build/__tests__/implementation/Liblsl.test.d.ts +9 -9
  18. package/build/__tests__/implementation/Liblsl.test.js +76 -66
  19. package/build/__tests__/implementation/Liblsl.test.js.map +1 -1
  20. package/build/__tests__/support/SpyLiblsl.d.ts +14 -0
  21. package/build/__tests__/support/SpyLiblsl.js +27 -0
  22. package/build/__tests__/support/SpyLiblsl.js.map +1 -0
  23. package/build/__tests__/support/consts.d.ts +2 -0
  24. package/build/__tests__/support/consts.js +14 -0
  25. package/build/__tests__/support/consts.js.map +1 -0
  26. package/build/__tests__/support/generateRandomOutletOptions.d.ts +2 -0
  27. package/build/__tests__/support/generateRandomOutletOptions.js +21 -0
  28. package/build/__tests__/support/generateRandomOutletOptions.js.map +1 -0
  29. package/build/errors/SpruceError.js.map +1 -1
  30. package/build/index.d.ts +1 -0
  31. package/build/index.js +3 -1
  32. package/build/index.js.map +1 -1
  33. package/package.json +1 -1
  34. package/src/Liblsl.ts +76 -73
  35. package/src/LslOutlet.ts +39 -37
  36. package/src/TimeMarkerOutlet.ts +19 -0
  37. package/src/__tests__/behavioral/LslOutlet.test.ts +50 -119
  38. package/src/__tests__/behavioral/TimeMarkerOutlet.test.ts +54 -0
  39. package/src/__tests__/implementation/Liblsl.test.ts +96 -84
  40. package/src/__tests__/support/SpyLiblsl.ts +41 -0
  41. package/src/__tests__/support/consts.ts +12 -0
  42. package/src/__tests__/support/generateRandomOutletOptions.ts +19 -0
  43. package/src/index.ts +2 -0
package/README.md CHANGED
@@ -1,2 +1,2 @@
1
1
  # node-lsl
2
- Lab Streaming Layer (LSL) on Node
2
+ Lab Streaming Layer (LSL) on Node + TypeScript
package/build/Liblsl.d.ts CHANGED
@@ -4,22 +4,21 @@ export default class LiblslImpl implements Liblsl {
4
4
  static ffi: typeof ffi;
5
5
  private bindings;
6
6
  static getInstance(): Liblsl;
7
- static reset(): void;
8
7
  static setInstance(instance: Liblsl): void;
8
+ static resetInstance(): void;
9
9
  constructor();
10
- appendChannelsToStreamInfo(info: LslBindingsStreamInfo, channels: LslChannel[]): void;
11
10
  private loadBindings;
12
- pushSample(outlet: LslBindingsOutlet, sample: LslSample): void;
13
- createOutlet(options: CreateOutletOptions): LslBindingsOutlet;
14
- createStreamInfo(options: CreateStreamInfoOptions): LslBindingsStreamInfo;
11
+ createStreamInfo(options: CreateStreamInfoOptions): BoundStreamInfo;
12
+ appendChannelsToStreamInfo(options: AppendChannelsToStreamInfoOptions): void;
13
+ createOutlet(options: CreateOutletOptions): BoundOutlet;
14
+ pushSample(options: PushSampleOptions): void;
15
15
  }
16
16
  export interface Liblsl {
17
- appendChannelsToStreamInfo(info: LslBindingsStreamInfo, channels: LslChannel[]): void;
18
- createStreamInfo(options: CreateStreamInfoOptions): LslBindingsStreamInfo;
19
- createOutlet(options: CreateOutletOptions): LslBindingsOutlet;
20
- pushSample(outlet: LslBindingsOutlet, sample: LslSample): void;
17
+ createStreamInfo(options: CreateStreamInfoOptions): BoundStreamInfo;
18
+ appendChannelsToStreamInfo(options: AppendChannelsToStreamInfoOptions): void;
19
+ createOutlet(options: CreateOutletOptions): BoundOutlet;
20
+ pushSample(options: PushSampleOptions): void;
21
21
  }
22
- export type LslSample = (number | string | undefined)[];
23
22
  export interface CreateStreamInfoOptions {
24
23
  name: string;
25
24
  type: string;
@@ -30,30 +29,39 @@ export interface CreateStreamInfoOptions {
30
29
  manufacturer?: string;
31
30
  unit?: string;
32
31
  }
32
+ export interface AppendChannelsToStreamInfoOptions {
33
+ info: BoundStreamInfo;
34
+ channels: LslChannel[];
35
+ }
36
+ export interface CreateOutletOptions {
37
+ info: BoundStreamInfo;
38
+ chunkSize: number;
39
+ maxBuffered: number;
40
+ }
41
+ export interface PushSampleOptions {
42
+ outlet: BoundOutlet;
43
+ sample: LslSample;
44
+ }
33
45
  export interface LslChannel {
34
46
  label: string;
35
47
  unit: string;
36
48
  type: string;
37
49
  }
50
+ export type LslSample = (number | string | undefined)[];
38
51
  export interface LiblslBindings {
39
- lsl_create_streaminfo(name: string, type: string, channelCount: number, sampleRate: number, channelFormat: number, sourceId: string): LslBindingsStreamInfo;
40
- lsl_create_outlet(info: LslBindingsStreamInfo, chunkSize: number, maxBuffered: number): LslBindingsOutlet;
41
- lsl_push_sample_ft(outlet: LslBindingsOutlet, sample: LslSample, timestamp: number): void;
52
+ lsl_create_streaminfo(name: string, type: string, channelCount: number, sampleRate: number, channelFormat: number, sourceId: string): BoundStreamInfo;
53
+ lsl_create_outlet(info: BoundStreamInfo, chunkSize: number, maxBuffered: number): BoundOutlet;
54
+ lsl_push_sample_ft(outlet: BoundOutlet, sample: LslSample, timestamp: number): void;
42
55
  lsl_local_clock(): number;
43
- lsl_get_desc(info: LslBindingsStreamInfo): LslBindingsDesc;
44
- lsl_append_child(desc: LslBindingsDesc, name: string): LslBindingsChild;
45
- lsl_append_child_value(child: LslBindingsChild, name: string, value: string): void;
46
- }
47
- export interface CreateOutletOptions {
48
- info: LslBindingsStreamInfo;
49
- chunkSize: number;
50
- maxBuffered: number;
56
+ lsl_get_desc(info: BoundStreamInfo): BoundDesc;
57
+ lsl_append_child(desc: BoundDesc, name: string): BoundChild;
58
+ lsl_append_child_value(child: BoundChild, name: string, value: string): void;
51
59
  }
52
- export interface LslBindingsStreamInfo {
60
+ export interface BoundStreamInfo {
53
61
  }
54
- export interface LslBindingsOutlet {
62
+ export interface BoundOutlet {
55
63
  }
56
- export interface LslBindingsDesc {
64
+ export interface BoundDesc {
57
65
  }
58
- export interface LslBindingsChild {
66
+ export interface BoundChild {
59
67
  }
package/build/Liblsl.js CHANGED
@@ -11,16 +11,16 @@ const SpruceError_1 = __importDefault(require("./errors/SpruceError"));
11
11
  class LiblslImpl {
12
12
  static getInstance() {
13
13
  if (!this.instance) {
14
- this.instance = new this();
14
+ this.setInstance(new this());
15
15
  }
16
16
  return this.instance;
17
17
  }
18
- static reset() {
19
- delete this.instance;
20
- }
21
18
  static setInstance(instance) {
22
19
  this.instance = instance;
23
20
  }
21
+ static resetInstance() {
22
+ delete this.instance;
23
+ }
24
24
  constructor() {
25
25
  const path = process.env.LIBLSL_PATH;
26
26
  if (!path) {
@@ -29,25 +29,13 @@ class LiblslImpl {
29
29
  try {
30
30
  this.bindings = this.loadBindings(path);
31
31
  }
32
- catch (err) {
33
- console.error(err);
32
+ catch (_a) {
34
33
  throw new SpruceError_1.default({
35
34
  code: 'FAILED_TO_LOAD_LIBLSL',
36
35
  liblslPath: path,
37
36
  });
38
37
  }
39
38
  }
40
- appendChannelsToStreamInfo(info, channels) {
41
- (0, schema_1.assertOptions)({ info, channels }, ['info', 'channels']);
42
- const desc = this.bindings.lsl_get_desc(info);
43
- const parent = this.bindings.lsl_append_child(desc, 'channels');
44
- for (const channel of channels) {
45
- const c = this.bindings.lsl_append_child(parent, 'channel');
46
- this.bindings.lsl_append_child_value(c, 'label', channel.label);
47
- this.bindings.lsl_append_child_value(c, 'unit', channel.unit);
48
- this.bindings.lsl_append_child_value(c, 'type', channel.type);
49
- }
50
- }
51
39
  loadBindings(path) {
52
40
  return LiblslImpl.ffi.Library(path, {
53
41
  lsl_create_streaminfo: [
@@ -62,19 +50,6 @@ class LiblslImpl {
62
50
  lsl_append_child_value: [xmlPtr, [xmlPtr, 'string', 'string']],
63
51
  });
64
52
  }
65
- pushSample(outlet, sample) {
66
- (0, schema_1.assertOptions)({ outlet, sample }, ['outlet', 'sample']);
67
- const clock = this.bindings.lsl_local_clock();
68
- this.bindings.lsl_push_sample_ft(outlet, sample, clock);
69
- }
70
- createOutlet(options) {
71
- const { info, chunkSize, maxBuffered } = (0, schema_1.assertOptions)(options, [
72
- 'info',
73
- 'chunkSize',
74
- 'maxBuffered',
75
- ]);
76
- return this.bindings.lsl_create_outlet(info, chunkSize, maxBuffered);
77
- }
78
53
  createStreamInfo(options) {
79
54
  const { name, type, channelCount, sampleRate, channelFormat, sourceId } = (0, schema_1.assertOptions)(options, [
80
55
  'name',
@@ -86,6 +61,30 @@ class LiblslImpl {
86
61
  ]);
87
62
  return this.bindings.lsl_create_streaminfo(name, type, channelCount, sampleRate, channelFormat, sourceId);
88
63
  }
64
+ appendChannelsToStreamInfo(options) {
65
+ const { info, channels } = (0, schema_1.assertOptions)(options, ['info', 'channels']);
66
+ const desc = this.bindings.lsl_get_desc(info);
67
+ const parent = this.bindings.lsl_append_child(desc, 'channels');
68
+ for (const channel of channels) {
69
+ const child = this.bindings.lsl_append_child(parent, 'channel');
70
+ this.bindings.lsl_append_child_value(child, 'label', channel.label);
71
+ this.bindings.lsl_append_child_value(child, 'unit', channel.unit);
72
+ this.bindings.lsl_append_child_value(child, 'type', channel.type);
73
+ }
74
+ }
75
+ createOutlet(options) {
76
+ const { info, chunkSize, maxBuffered } = (0, schema_1.assertOptions)(options, [
77
+ 'info',
78
+ 'chunkSize',
79
+ 'maxBuffered',
80
+ ]);
81
+ return this.bindings.lsl_create_outlet(info, chunkSize, maxBuffered);
82
+ }
83
+ pushSample(options) {
84
+ const { outlet, sample } = (0, schema_1.assertOptions)(options, ['outlet', 'sample']);
85
+ const clock = this.bindings.lsl_local_clock();
86
+ this.bindings.lsl_push_sample_ft(outlet, sample, clock);
87
+ }
89
88
  }
90
89
  LiblslImpl.ffi = ffi_napi_1.default;
91
90
  exports.default = LiblslImpl;
@@ -1 +1 @@
1
- {"version":3,"file":"Liblsl.js","sourceRoot":"","sources":["../src/Liblsl.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Liblsl.js","sourceRoot":"","sources":["../src/Liblsl.ts"],"names":[],"mappings":"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"}
@@ -6,23 +6,27 @@ export default class LslOutletImpl implements LslOutlet {
6
6
  private outlet;
7
7
  protected constructor(options: LslOutletOptions);
8
8
  static Outlet(options: LslOutletOptions): LslOutlet;
9
+ pushSample(sample: LslSample): void;
10
+ private lookupChannelFormat;
9
11
  private assertValidMaxBufferred;
10
12
  private assertValidChunkSize;
11
13
  private assertValidChannelFormat;
12
14
  private assertValidSampleRate;
13
15
  private assertValidChannelCount;
14
- private isPositiveNumber;
15
- private isPositiveIntegerOrZero;
16
+ private isGreaterThanZero;
16
17
  private isPositiveInteger;
18
+ private isPositiveIntegerOrZero;
17
19
  private get lsl();
18
- pushSample(sample: LslSample): void;
19
20
  }
20
21
  declare const CHANNEL_FORMATS: readonly ["undefined", "float32", "double64", "string", "int32", "int16", "int8", "int64"];
21
22
  export type ChannelFormat = (typeof CHANNEL_FORMATS)[number];
23
+ export interface LslOutlet {
24
+ pushSample(sample: LslSample): void;
25
+ }
22
26
  export interface LslOutletOptions {
23
27
  name: string;
24
28
  type: string;
25
- channelLabels: string[];
29
+ channelNames: string[];
26
30
  sampleRate: number;
27
31
  channelFormat: ChannelFormat;
28
32
  sourceId: string;
@@ -31,7 +35,4 @@ export interface LslOutletOptions {
31
35
  chunkSize: number;
32
36
  maxBuffered: number;
33
37
  }
34
- export interface LslOutlet {
35
- pushSample(sample: LslSample): void;
36
- }
37
38
  export {};
@@ -21,7 +21,7 @@ class LslOutletImpl {
21
21
  const { sampleRate, channelFormat } = (0, schema_1.assertOptions)(options, [
22
22
  'name',
23
23
  'type',
24
- 'channelLabels',
24
+ 'channelNames',
25
25
  'sampleRate',
26
26
  'channelFormat',
27
27
  'sourceId',
@@ -32,20 +32,24 @@ class LslOutletImpl {
32
32
  ]);
33
33
  this.outletOptions = options;
34
34
  const _a = this
35
- .outletOptions, { chunkSize, maxBuffered, channelLabels } = _a, streamInfoOptions = __rest(_a, ["chunkSize", "maxBuffered", "channelLabels"]);
36
- this.assertValidChannelCount(channelLabels.length);
35
+ .outletOptions, { chunkSize, maxBuffered, channelNames } = _a, streamInfoOptions = __rest(_a, ["chunkSize", "maxBuffered", "channelNames"]);
36
+ const channelCount = channelNames.length;
37
+ this.assertValidChannelCount(channelCount);
37
38
  this.assertValidSampleRate(sampleRate);
38
39
  this.assertValidChannelFormat(channelFormat);
39
40
  this.assertValidChunkSize(chunkSize);
40
41
  this.assertValidMaxBufferred(maxBuffered);
41
42
  delete streamInfoOptions.manufacturer;
42
43
  delete streamInfoOptions.unit;
43
- this.streamInfo = this.lsl.createStreamInfo(Object.assign(Object.assign({}, streamInfoOptions), { channelCount: channelLabels.length, channelFormat: CHANNEL_FORMATS.indexOf(this.outletOptions.channelFormat) }));
44
- this.lsl.appendChannelsToStreamInfo(this.streamInfo, channelLabels.map((label) => ({
45
- label,
46
- unit: this.outletOptions.unit,
47
- type: this.outletOptions.type,
48
- })));
44
+ this.streamInfo = this.lsl.createStreamInfo(Object.assign(Object.assign({}, streamInfoOptions), { channelCount, channelFormat: this.lookupChannelFormat(channelFormat) }));
45
+ this.lsl.appendChannelsToStreamInfo({
46
+ info: this.streamInfo,
47
+ channels: channelNames.map((label) => ({
48
+ label,
49
+ unit: this.outletOptions.unit,
50
+ type: this.outletOptions.type,
51
+ })),
52
+ });
49
53
  this.outlet = this.lsl.createOutlet({
50
54
  info: this.streamInfo,
51
55
  chunkSize: this.outletOptions.chunkSize,
@@ -56,6 +60,12 @@ class LslOutletImpl {
56
60
  var _a;
57
61
  return new ((_a = this.Class) !== null && _a !== void 0 ? _a : this)(options);
58
62
  }
63
+ pushSample(sample) {
64
+ this.lsl.pushSample({ outlet: this.outlet, sample });
65
+ }
66
+ lookupChannelFormat(channelFormat) {
67
+ return CHANNEL_FORMATS.indexOf(channelFormat);
68
+ }
59
69
  assertValidMaxBufferred(maxBuffered) {
60
70
  if (!this.isPositiveIntegerOrZero(maxBuffered)) {
61
71
  throw new schema_1.SchemaError({
@@ -85,11 +95,11 @@ class LslOutletImpl {
85
95
  }
86
96
  }
87
97
  assertValidSampleRate(sampleRate) {
88
- if (!this.isPositiveNumber(sampleRate)) {
98
+ if (!this.isGreaterThanZero(sampleRate)) {
89
99
  throw new schema_1.SchemaError({
90
100
  code: 'INVALID_PARAMETERS',
91
101
  parameters: ['sampleRate'],
92
- friendlyMessage: 'Sample rate must be a positive number.',
102
+ friendlyMessage: 'Sample rate must be a positive number or zero.',
93
103
  });
94
104
  }
95
105
  }
@@ -97,26 +107,23 @@ class LslOutletImpl {
97
107
  if (!this.isPositiveInteger(channelCount)) {
98
108
  throw new schema_1.SchemaError({
99
109
  code: 'INVALID_PARAMETERS',
100
- parameters: ['channelLabels'],
101
- friendlyMessage: 'channelLabels must have 1 or more labels.',
110
+ parameters: ['channelNames'],
111
+ friendlyMessage: 'channelNames must have 1 or more labels.',
102
112
  });
103
113
  }
104
114
  }
105
- isPositiveNumber(value) {
106
- return value > 0;
107
- }
108
- isPositiveIntegerOrZero(value) {
109
- return Number.isInteger(value) && value >= 0;
115
+ isGreaterThanZero(value) {
116
+ return value >= 0;
110
117
  }
111
118
  isPositiveInteger(value) {
112
119
  return Number.isInteger(value) && value > 0;
113
120
  }
121
+ isPositiveIntegerOrZero(value) {
122
+ return Number.isInteger(value) && value >= 0;
123
+ }
114
124
  get lsl() {
115
125
  return Liblsl_1.default.getInstance();
116
126
  }
117
- pushSample(sample) {
118
- this.lsl.pushSample(this.outlet, sample);
119
- }
120
127
  }
121
128
  exports.default = LslOutletImpl;
122
129
  const CHANNEL_FORMATS = [
@@ -1 +1 @@
1
- {"version":3,"file":"LslOutlet.js","sourceRoot":"","sources":["../src/LslOutlet.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LslOutlet.js","sourceRoot":"","sources":["../src/LslOutlet.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import LslOutletImpl, { LslOutletOptions } from './LslOutlet';
2
+ export default class TimeMarkerOutlet extends LslOutletImpl {
3
+ static Outlet(options?: Partial<LslOutletOptions>): import("./LslOutlet").LslOutlet;
4
+ }
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const LslOutlet_1 = __importDefault(require("./LslOutlet"));
7
+ class TimeMarkerOutlet extends LslOutlet_1.default {
8
+ static Outlet(options) {
9
+ var _a;
10
+ const defaultOptions = {
11
+ name: 'Time markers',
12
+ type: 'Markers',
13
+ channelNames: ['Markers'],
14
+ sampleRate: 0,
15
+ channelFormat: 'string',
16
+ sourceId: 'time-markers',
17
+ manufacturer: 'N/A',
18
+ unit: 'N/A',
19
+ chunkSize: 0,
20
+ maxBuffered: 0,
21
+ };
22
+ return new ((_a = this.Class) !== null && _a !== void 0 ? _a : this)(Object.assign(Object.assign({}, defaultOptions), options));
23
+ }
24
+ }
25
+ exports.default = TimeMarkerOutlet;
26
+ //# sourceMappingURL=TimeMarkerOutlet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TimeMarkerOutlet.js","sourceRoot":"","sources":["../src/TimeMarkerOutlet.ts"],"names":[],"mappings":";;;;;AAAA,4DAA6D;AAE7D,MAAqB,gBAAiB,SAAQ,mBAAa;IACnD,MAAM,CAAC,MAAM,CAAC,OAAmC;;QACvD,MAAM,cAAc,GAAG;YACtB,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE,SAAS;YACf,YAAY,EAAE,CAAC,SAAS,CAAC;YACzB,UAAU,EAAE,CAAC;YACb,aAAa,EAAE,QAAQ;YACvB,QAAQ,EAAE,cAAc;YACxB,YAAY,EAAE,KAAK;YACnB,IAAI,EAAE,KAAK;YACX,SAAS,EAAE,CAAC;YACZ,WAAW,EAAE,CAAC;SACM,CAAA;QACrB,OAAO,IAAI,CAAC,MAAA,IAAI,CAAC,KAAK,mCAAI,IAAI,CAAC,iCAAM,cAAc,GAAK,OAAO,EAAG,CAAA;IACnE,CAAC;CACD;AAhBD,mCAgBC"}
@@ -1,29 +1,27 @@
1
1
  import AbstractSpruceTest from '@sprucelabs/test-utils';
2
2
  import { LslSample } from '../../Liblsl';
3
- export declare const CHANNEL_FORMATS: readonly ["undefined", "float32", "double64", "string", "int32", "int16", "int8", "int64"];
4
3
  export default class LslOutletTest extends AbstractSpruceTest {
5
- private static spyLsl;
4
+ private static spyLiblsl;
6
5
  private static randomOutletOptions;
7
- private static channelIdx;
6
+ private static channelFormatIdx;
8
7
  protected static beforeEach(): Promise<void>;
9
- protected static throwsWhenMissingRequiredParameters(): Promise<void>;
10
- protected static canCreateWithRequiredParams(): Promise<void>;
11
- protected static throwsWithInvalidChannelCount(): Promise<void>;
8
+ protected static throwsWhenMissingRequiredParams(): Promise<void>;
9
+ protected static throwsWithInvalidChannelNames(): Promise<void>;
12
10
  protected static throwsWithInvalidSampleRate(): Promise<void>;
13
11
  protected static throwsWithInvalidChannelFormat(): Promise<void>;
14
- protected static supportsAllKnownChannelFormats(): Promise<void>;
15
- protected static throwWithInvalidChunkSize(): Promise<void>;
12
+ protected static throwsWithInvalidChunkSize(): Promise<void>;
16
13
  protected static throwsWithInvalidMaxBuffered(): Promise<void>;
17
- protected static pushingSampleSendsToLsl(sample: LslSample): Promise<void>;
18
- protected static constructionPassesCorrectOptionsToCreateStreamInfo(): Promise<void>;
19
- protected static canOverrideClasInstantiatedInFactory(): Promise<void>;
14
+ protected static supportsAllKnownChannelFormats(): Promise<void>;
15
+ protected static canPushSampleToLsl(sample: LslSample): Promise<void>;
16
+ protected static constructionCreatesStreamInfo(): Promise<void>;
17
+ protected static canOverrideClassInstantiatedInFactory(): Promise<void>;
20
18
  protected static appendsChannelsBasedOnCount(labels: string[]): Promise<void>;
21
19
  protected static pushSampleShouldNotCreateMultipleOutlets(): Promise<void>;
22
20
  private static pushSample;
23
21
  private static assertThrowsInvalidMaxBuffered;
24
22
  private static assertThrowsInvalidChunkSize;
25
23
  private static assertThrowsInvalidSampleRate;
26
- private static assertThrowsInvalidChannelLabels;
24
+ private static assertThrowsInvalidChannelNames;
27
25
  private static assertDoesThrowInvalidParameters;
28
26
  private static Outlet;
29
27
  }