tci-client-node 0.1.2 → 0.2.0

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 (41) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/README.md +32 -6
  3. package/dist/audio/index.cjs +41 -11
  4. package/dist/audio/index.cjs.map +1 -1
  5. package/dist/audio/index.d.cts +16 -3
  6. package/dist/audio/index.d.ts +16 -3
  7. package/dist/audio/index.js +41 -11
  8. package/dist/audio/index.js.map +1 -1
  9. package/dist/dialect/index.cjs +331 -0
  10. package/dist/dialect/index.cjs.map +1 -0
  11. package/dist/dialect/index.d.cts +29 -0
  12. package/dist/dialect/index.d.ts +29 -0
  13. package/dist/dialect/index.js +292 -0
  14. package/dist/dialect/index.js.map +1 -0
  15. package/dist/{index-CK3XdXP3.d.cts → index-lbK6NGY4.d.cts} +1 -1
  16. package/dist/{index-Dfmrk2MR.d.ts → index-paj1AOJY.d.ts} +1 -1
  17. package/dist/index.cjs +854 -215
  18. package/dist/index.cjs.map +1 -1
  19. package/dist/index.d.cts +53 -12
  20. package/dist/index.d.ts +53 -12
  21. package/dist/index.js +840 -215
  22. package/dist/index.js.map +1 -1
  23. package/dist/protocol/index.cjs.map +1 -1
  24. package/dist/protocol/index.d.cts +1 -1
  25. package/dist/protocol/index.d.ts +1 -1
  26. package/dist/protocol/index.js.map +1 -1
  27. package/dist/testing/index.cjs +53 -14
  28. package/dist/testing/index.cjs.map +1 -1
  29. package/dist/testing/index.d.cts +2 -0
  30. package/dist/testing/index.d.ts +2 -0
  31. package/dist/testing/index.js +53 -14
  32. package/dist/testing/index.js.map +1 -1
  33. package/dist/transport/index.cjs +175 -0
  34. package/dist/transport/index.cjs.map +1 -0
  35. package/dist/transport/index.d.cts +37 -0
  36. package/dist/transport/index.d.ts +37 -0
  37. package/dist/transport/index.js +138 -0
  38. package/dist/transport/index.js.map +1 -0
  39. package/dist/types-9seY9Th-.d.ts +63 -0
  40. package/dist/types-xRotf9gW.d.cts +63 -0
  41. package/package.json +15 -1
package/dist/index.d.cts CHANGED
@@ -1,11 +1,17 @@
1
- import { Q as QueueCommandOptions, T as TciError } from './index-CK3XdXP3.cjs';
2
- export { a as QueuedCommandResult, b as TciCommandMatcher, c as TciCommandQueue, d as TciCommandQueueOptions, e as TciErrorCode, t as toTciError } from './index-CK3XdXP3.cjs';
1
+ import { Q as QueueCommandOptions, T as TciError } from './index-lbK6NGY4.cjs';
2
+ export { a as QueuedCommandResult, b as TciCommandMatcher, c as TciCommandQueue, d as TciCommandQueueOptions, e as TciErrorCode, t as toTciError } from './index-lbK6NGY4.cjs';
3
3
  import { EventEmitter } from 'eventemitter3';
4
4
  import WebSocket from 'ws';
5
5
  import { TciSampleType, TciSampleTypeName, TciStreamFrame, BuildTxAudioFrameOptions } from './audio/index.cjs';
6
- export { BuildStreamFrameOptions, TCI_STREAM_HEADER_BYTES, TciStreamType, buildStreamFrame, buildTxAudioFrame, deinterleaveChannels, float32ToPcm16, mixToMono, normalizeSampleType, normalizeStreamType, parseStreamFrame, payloadToFloat32, pcm16ToFloat32, sampleTypeBytes, sampleTypeName, samplesToPayload } from './audio/index.cjs';
6
+ export { BuildStreamFrameOptions, ParseStreamFrameOptions, TCI_STREAM_HEADER_BYTES, TciStreamType, buildStreamFrame, buildTxAudioFrame, deinterleaveChannels, float32ToPcm16, mixToMono, normalizeSampleType, normalizeStreamType, parseStreamFrame, payloadToFloat32, pcm16ToFloat32, sampleTypeBytes, sampleTypeName, samplesToPayload } from './audio/index.cjs';
7
7
  import { T as TciCommand } from './text-BwCWY1k1.cjs';
8
8
  export { a as TciCommandInput, c as commandKey, e as escapeTciText, f as formatTciCommand, i as isCommandReplyTo, n as normalizeCommandName, p as parseTciCommand, b as parseTciText, u as unescapeTciText } from './text-BwCWY1k1.cjs';
9
+ import { T as TciDialectId, a as TciHandshakeResult, b as TciDialectSelection, c as TciWriteResult } from './types-xRotf9gW.cjs';
10
+ export { B as BuiltInTciDialectId, d as TciDialect, e as TciDialectDetection, f as TciDialectDetectionContext, g as TciDialectScore, h as TciDriveState, i as TciProtocolIdentity, j as TciStreamLengthSemantics } from './types-xRotf9gW.cjs';
11
+ import { TciDialectRegistry } from './dialect/index.cjs';
12
+ export { aetherSdrDialect, assertValidTciHandshake, builtInDialects, compareTciVersion, defaultTciDialectRegistry, expertSdr14Dialect, expertSdrLegacyDialect, expertSdrModernDialect, genericObservedDialect, parseProtocolIdentity, parseTciVersion, thetisDialect } from './dialect/index.cjs';
13
+ import { TciTransportFactory } from './transport/index.cjs';
14
+ export { TciTransport, TciTransportEvents, WebSocketTciTransport } from './transport/index.cjs';
9
15
 
10
16
  interface TciClientOptions {
11
17
  url: string;
@@ -13,12 +19,16 @@ interface TciClientOptions {
13
19
  trx?: number;
14
20
  vfo?: number;
15
21
  connectTimeoutMs?: number;
22
+ handshakeTimeoutMs?: number;
16
23
  commandTimeoutMs?: number;
17
24
  writeAckMode?: TciWriteAckMode;
18
25
  writeTimeoutMs?: number;
19
26
  writeSettleMs?: number;
20
27
  frequencyWriteSettleMs?: number;
28
+ dialect?: TciDialectSelection;
29
+ dialectRegistry?: TciDialectRegistry;
21
30
  WebSocketImpl?: typeof WebSocket;
31
+ transportFactory?: TciTransportFactory;
22
32
  }
23
33
  interface TciAudioConfig {
24
34
  sampleRate: 8_000 | 12_000 | 24_000 | 48_000 | number;
@@ -47,11 +57,17 @@ interface TciTxChronoRequest {
47
57
  channels: number;
48
58
  sampleType: TciSampleType;
49
59
  sampleCount: number;
60
+ frameCount: number;
50
61
  }
51
62
  interface TciClientState {
52
63
  connected: boolean;
53
64
  ready: boolean;
54
65
  protocol?: string;
66
+ protocolName?: string;
67
+ protocolVersion?: string;
68
+ dialectId?: TciDialectId;
69
+ dialectConfidence?: TciHandshakeResult['dialect']['confidence'];
70
+ dialectWarnings: string[];
55
71
  device?: string;
56
72
  receiveOnly?: boolean;
57
73
  trxCount?: number;
@@ -65,6 +81,7 @@ interface TciClientState {
65
81
  pttSource: Record<string, string | undefined>;
66
82
  tune: Record<string, boolean>;
67
83
  drive: Record<string, number>;
84
+ tuneDrive: Record<string, number>;
68
85
  split: Record<string, boolean>;
69
86
  rxSensors: Record<string, Record<string, number | string | boolean>>;
70
87
  txSensors: Record<string, Record<string, number | string | boolean>>;
@@ -77,6 +94,7 @@ interface TciClientEvents {
77
94
  connected: () => void;
78
95
  disconnected: (reason?: unknown) => void;
79
96
  ready: (state: TciClientState) => void;
97
+ handshake: (result: TciHandshakeResult) => void;
80
98
  state: (state: TciClientState) => void;
81
99
  command: (command: TciCommand) => void;
82
100
  binary: (frame: TciStreamFrame) => void;
@@ -92,16 +110,27 @@ interface SendCommandOptions extends QueueCommandOptions {
92
110
  waitForReply?: boolean;
93
111
  }
94
112
  declare class TciClient extends EventEmitter<TciClientEvents> {
95
- readonly options: Required<Pick<TciClientOptions, 'receiver' | 'trx' | 'vfo' | 'connectTimeoutMs' | 'commandTimeoutMs' | 'writeAckMode' | 'writeTimeoutMs' | 'writeSettleMs' | 'frequencyWriteSettleMs'>> & Pick<TciClientOptions, 'url'>;
113
+ readonly options: Required<Pick<TciClientOptions, 'receiver' | 'trx' | 'vfo' | 'connectTimeoutMs' | 'handshakeTimeoutMs' | 'commandTimeoutMs' | 'writeAckMode' | 'writeTimeoutMs' | 'writeSettleMs' | 'frequencyWriteSettleMs'>> & Pick<TciClientOptions, 'url'> & {
114
+ dialect: TciDialectSelection;
115
+ };
96
116
  private readonly WebSocketImpl;
97
- private ws?;
117
+ private readonly transportFactory;
118
+ private transport?;
98
119
  private readonly queue;
99
120
  private readonly state;
121
+ private readonly stateReducers;
122
+ private readonly dialectRegistry;
123
+ private activeDialect?;
124
+ private handshakeResult?;
125
+ private handshakeError?;
126
+ private initializationCommands;
127
+ private handshakeWaiter?;
100
128
  constructor(options: TciClientOptions);
101
- connect(): Promise<void>;
129
+ connect(): Promise<TciHandshakeResult>;
102
130
  disconnect(code?: number, reason?: string): Promise<void>;
103
131
  isConnected(): boolean;
104
132
  getState(): TciClientState;
133
+ getHandshakeResult(): TciHandshakeResult | undefined;
105
134
  sendCommand(name: string, args?: readonly unknown[], options?: SendCommandOptions): Promise<TciCommand | undefined>;
106
135
  request(name: string, args?: readonly unknown[], options?: QueueCommandOptions): Promise<TciCommand>;
107
136
  sendStateWrite(name: string, args: readonly unknown[], isApplied: (state: TciClientState) => boolean, description?: string, options?: TciWriteOptions): Promise<void>;
@@ -111,9 +140,13 @@ declare class TciClient extends EventEmitter<TciClientEvents> {
111
140
  getMode(receiver?: number): Promise<string | undefined>;
112
141
  setPtt(enabled: boolean, options?: TciPttOptions): Promise<void>;
113
142
  getPtt(trx?: number): Promise<boolean | undefined>;
114
- setTune(enabled: boolean, trx?: number): Promise<void>;
143
+ setTune(enabled: boolean, trx?: number, options?: TciWriteOptions): Promise<void>;
115
144
  setDrive(value: number, trx?: number): Promise<void>;
116
- setSplit(enabled: boolean, trx?: number): Promise<void>;
145
+ setDriveWithResult(value: number, trx?: number, options?: TciWriteOptions): Promise<TciWriteResult<number>>;
146
+ getDrive(trx?: number): Promise<number | undefined>;
147
+ setTuneDrive(value: number, trx?: number, options?: TciWriteOptions): Promise<TciWriteResult<number>>;
148
+ getTuneDrive(trx?: number): Promise<number | undefined>;
149
+ setSplit(enabled: boolean, trx?: number, options?: TciWriteOptions): Promise<void>;
117
150
  configureAudio(config: TciAudioConfig): Promise<void>;
118
151
  startAudio(receiver?: number): Promise<void>;
119
152
  stopAudio(receiver?: number): Promise<void>;
@@ -125,18 +158,26 @@ declare class TciClient extends EventEmitter<TciClientEvents> {
125
158
  sendCwMessage(message: string): Promise<void>;
126
159
  stopCw(): Promise<void>;
127
160
  private waitForState;
128
- private waitForOpen;
129
- private attachSocket;
161
+ private waitForCommand;
162
+ private resetHandshake;
163
+ private waitForHandshake;
164
+ private finalizeHandshake;
165
+ private rejectHandshake;
166
+ private requireDialect;
167
+ private attachTransport;
130
168
  private sendRaw;
131
169
  private sendRawBinary;
132
- private handleMessage;
170
+ private handleText;
133
171
  private handleBinary;
134
172
  private applyCommand;
173
+ private createStateReducers;
135
174
  private applyVfo;
136
175
  private applyModulation;
137
176
  private applyTrx;
138
177
  private applyBooleanByFirstArg;
139
178
  private applyDrive;
179
+ private applyTuneDrive;
180
+ private updateAudioState;
140
181
  private applyRxChannelSensors;
141
182
  private applyRxSensors;
142
183
  private applyTxSensors;
@@ -146,4 +187,4 @@ declare class TciClient extends EventEmitter<TciClientEvents> {
146
187
  }
147
188
  declare function createTciClient(options: TciClientOptions): TciClient;
148
189
 
149
- export { BuildTxAudioFrameOptions, QueueCommandOptions, type SendCommandOptions, type TciAudioConfig, TciClient, type TciClientEvents, type TciClientOptions, type TciClientState, TciCommand, TciError, type TciPttOptions, TciSampleType, TciSampleTypeName, TciStreamFrame, type TciTxChronoRequest, type TciWriteAckMode, type TciWriteOptions, createTciClient };
190
+ export { BuildTxAudioFrameOptions, QueueCommandOptions, type SendCommandOptions, type TciAudioConfig, TciClient, type TciClientEvents, type TciClientOptions, type TciClientState, TciCommand, TciDialectId, TciDialectRegistry, TciDialectSelection, TciError, TciHandshakeResult, type TciPttOptions, TciSampleType, TciSampleTypeName, TciStreamFrame, TciTransportFactory, type TciTxChronoRequest, type TciWriteAckMode, type TciWriteOptions, TciWriteResult, createTciClient };
package/dist/index.d.ts CHANGED
@@ -1,11 +1,17 @@
1
- import { Q as QueueCommandOptions, T as TciError } from './index-Dfmrk2MR.js';
2
- export { a as QueuedCommandResult, b as TciCommandMatcher, c as TciCommandQueue, d as TciCommandQueueOptions, e as TciErrorCode, t as toTciError } from './index-Dfmrk2MR.js';
1
+ import { Q as QueueCommandOptions, T as TciError } from './index-paj1AOJY.js';
2
+ export { a as QueuedCommandResult, b as TciCommandMatcher, c as TciCommandQueue, d as TciCommandQueueOptions, e as TciErrorCode, t as toTciError } from './index-paj1AOJY.js';
3
3
  import { EventEmitter } from 'eventemitter3';
4
4
  import WebSocket from 'ws';
5
5
  import { TciSampleType, TciSampleTypeName, TciStreamFrame, BuildTxAudioFrameOptions } from './audio/index.js';
6
- export { BuildStreamFrameOptions, TCI_STREAM_HEADER_BYTES, TciStreamType, buildStreamFrame, buildTxAudioFrame, deinterleaveChannels, float32ToPcm16, mixToMono, normalizeSampleType, normalizeStreamType, parseStreamFrame, payloadToFloat32, pcm16ToFloat32, sampleTypeBytes, sampleTypeName, samplesToPayload } from './audio/index.js';
6
+ export { BuildStreamFrameOptions, ParseStreamFrameOptions, TCI_STREAM_HEADER_BYTES, TciStreamType, buildStreamFrame, buildTxAudioFrame, deinterleaveChannels, float32ToPcm16, mixToMono, normalizeSampleType, normalizeStreamType, parseStreamFrame, payloadToFloat32, pcm16ToFloat32, sampleTypeBytes, sampleTypeName, samplesToPayload } from './audio/index.js';
7
7
  import { T as TciCommand } from './text-BwCWY1k1.js';
8
8
  export { a as TciCommandInput, c as commandKey, e as escapeTciText, f as formatTciCommand, i as isCommandReplyTo, n as normalizeCommandName, p as parseTciCommand, b as parseTciText, u as unescapeTciText } from './text-BwCWY1k1.js';
9
+ import { T as TciDialectId, a as TciHandshakeResult, b as TciDialectSelection, c as TciWriteResult } from './types-9seY9Th-.js';
10
+ export { B as BuiltInTciDialectId, d as TciDialect, e as TciDialectDetection, f as TciDialectDetectionContext, g as TciDialectScore, h as TciDriveState, i as TciProtocolIdentity, j as TciStreamLengthSemantics } from './types-9seY9Th-.js';
11
+ import { TciDialectRegistry } from './dialect/index.js';
12
+ export { aetherSdrDialect, assertValidTciHandshake, builtInDialects, compareTciVersion, defaultTciDialectRegistry, expertSdr14Dialect, expertSdrLegacyDialect, expertSdrModernDialect, genericObservedDialect, parseProtocolIdentity, parseTciVersion, thetisDialect } from './dialect/index.js';
13
+ import { TciTransportFactory } from './transport/index.js';
14
+ export { TciTransport, TciTransportEvents, WebSocketTciTransport } from './transport/index.js';
9
15
 
10
16
  interface TciClientOptions {
11
17
  url: string;
@@ -13,12 +19,16 @@ interface TciClientOptions {
13
19
  trx?: number;
14
20
  vfo?: number;
15
21
  connectTimeoutMs?: number;
22
+ handshakeTimeoutMs?: number;
16
23
  commandTimeoutMs?: number;
17
24
  writeAckMode?: TciWriteAckMode;
18
25
  writeTimeoutMs?: number;
19
26
  writeSettleMs?: number;
20
27
  frequencyWriteSettleMs?: number;
28
+ dialect?: TciDialectSelection;
29
+ dialectRegistry?: TciDialectRegistry;
21
30
  WebSocketImpl?: typeof WebSocket;
31
+ transportFactory?: TciTransportFactory;
22
32
  }
23
33
  interface TciAudioConfig {
24
34
  sampleRate: 8_000 | 12_000 | 24_000 | 48_000 | number;
@@ -47,11 +57,17 @@ interface TciTxChronoRequest {
47
57
  channels: number;
48
58
  sampleType: TciSampleType;
49
59
  sampleCount: number;
60
+ frameCount: number;
50
61
  }
51
62
  interface TciClientState {
52
63
  connected: boolean;
53
64
  ready: boolean;
54
65
  protocol?: string;
66
+ protocolName?: string;
67
+ protocolVersion?: string;
68
+ dialectId?: TciDialectId;
69
+ dialectConfidence?: TciHandshakeResult['dialect']['confidence'];
70
+ dialectWarnings: string[];
55
71
  device?: string;
56
72
  receiveOnly?: boolean;
57
73
  trxCount?: number;
@@ -65,6 +81,7 @@ interface TciClientState {
65
81
  pttSource: Record<string, string | undefined>;
66
82
  tune: Record<string, boolean>;
67
83
  drive: Record<string, number>;
84
+ tuneDrive: Record<string, number>;
68
85
  split: Record<string, boolean>;
69
86
  rxSensors: Record<string, Record<string, number | string | boolean>>;
70
87
  txSensors: Record<string, Record<string, number | string | boolean>>;
@@ -77,6 +94,7 @@ interface TciClientEvents {
77
94
  connected: () => void;
78
95
  disconnected: (reason?: unknown) => void;
79
96
  ready: (state: TciClientState) => void;
97
+ handshake: (result: TciHandshakeResult) => void;
80
98
  state: (state: TciClientState) => void;
81
99
  command: (command: TciCommand) => void;
82
100
  binary: (frame: TciStreamFrame) => void;
@@ -92,16 +110,27 @@ interface SendCommandOptions extends QueueCommandOptions {
92
110
  waitForReply?: boolean;
93
111
  }
94
112
  declare class TciClient extends EventEmitter<TciClientEvents> {
95
- readonly options: Required<Pick<TciClientOptions, 'receiver' | 'trx' | 'vfo' | 'connectTimeoutMs' | 'commandTimeoutMs' | 'writeAckMode' | 'writeTimeoutMs' | 'writeSettleMs' | 'frequencyWriteSettleMs'>> & Pick<TciClientOptions, 'url'>;
113
+ readonly options: Required<Pick<TciClientOptions, 'receiver' | 'trx' | 'vfo' | 'connectTimeoutMs' | 'handshakeTimeoutMs' | 'commandTimeoutMs' | 'writeAckMode' | 'writeTimeoutMs' | 'writeSettleMs' | 'frequencyWriteSettleMs'>> & Pick<TciClientOptions, 'url'> & {
114
+ dialect: TciDialectSelection;
115
+ };
96
116
  private readonly WebSocketImpl;
97
- private ws?;
117
+ private readonly transportFactory;
118
+ private transport?;
98
119
  private readonly queue;
99
120
  private readonly state;
121
+ private readonly stateReducers;
122
+ private readonly dialectRegistry;
123
+ private activeDialect?;
124
+ private handshakeResult?;
125
+ private handshakeError?;
126
+ private initializationCommands;
127
+ private handshakeWaiter?;
100
128
  constructor(options: TciClientOptions);
101
- connect(): Promise<void>;
129
+ connect(): Promise<TciHandshakeResult>;
102
130
  disconnect(code?: number, reason?: string): Promise<void>;
103
131
  isConnected(): boolean;
104
132
  getState(): TciClientState;
133
+ getHandshakeResult(): TciHandshakeResult | undefined;
105
134
  sendCommand(name: string, args?: readonly unknown[], options?: SendCommandOptions): Promise<TciCommand | undefined>;
106
135
  request(name: string, args?: readonly unknown[], options?: QueueCommandOptions): Promise<TciCommand>;
107
136
  sendStateWrite(name: string, args: readonly unknown[], isApplied: (state: TciClientState) => boolean, description?: string, options?: TciWriteOptions): Promise<void>;
@@ -111,9 +140,13 @@ declare class TciClient extends EventEmitter<TciClientEvents> {
111
140
  getMode(receiver?: number): Promise<string | undefined>;
112
141
  setPtt(enabled: boolean, options?: TciPttOptions): Promise<void>;
113
142
  getPtt(trx?: number): Promise<boolean | undefined>;
114
- setTune(enabled: boolean, trx?: number): Promise<void>;
143
+ setTune(enabled: boolean, trx?: number, options?: TciWriteOptions): Promise<void>;
115
144
  setDrive(value: number, trx?: number): Promise<void>;
116
- setSplit(enabled: boolean, trx?: number): Promise<void>;
145
+ setDriveWithResult(value: number, trx?: number, options?: TciWriteOptions): Promise<TciWriteResult<number>>;
146
+ getDrive(trx?: number): Promise<number | undefined>;
147
+ setTuneDrive(value: number, trx?: number, options?: TciWriteOptions): Promise<TciWriteResult<number>>;
148
+ getTuneDrive(trx?: number): Promise<number | undefined>;
149
+ setSplit(enabled: boolean, trx?: number, options?: TciWriteOptions): Promise<void>;
117
150
  configureAudio(config: TciAudioConfig): Promise<void>;
118
151
  startAudio(receiver?: number): Promise<void>;
119
152
  stopAudio(receiver?: number): Promise<void>;
@@ -125,18 +158,26 @@ declare class TciClient extends EventEmitter<TciClientEvents> {
125
158
  sendCwMessage(message: string): Promise<void>;
126
159
  stopCw(): Promise<void>;
127
160
  private waitForState;
128
- private waitForOpen;
129
- private attachSocket;
161
+ private waitForCommand;
162
+ private resetHandshake;
163
+ private waitForHandshake;
164
+ private finalizeHandshake;
165
+ private rejectHandshake;
166
+ private requireDialect;
167
+ private attachTransport;
130
168
  private sendRaw;
131
169
  private sendRawBinary;
132
- private handleMessage;
170
+ private handleText;
133
171
  private handleBinary;
134
172
  private applyCommand;
173
+ private createStateReducers;
135
174
  private applyVfo;
136
175
  private applyModulation;
137
176
  private applyTrx;
138
177
  private applyBooleanByFirstArg;
139
178
  private applyDrive;
179
+ private applyTuneDrive;
180
+ private updateAudioState;
140
181
  private applyRxChannelSensors;
141
182
  private applyRxSensors;
142
183
  private applyTxSensors;
@@ -146,4 +187,4 @@ declare class TciClient extends EventEmitter<TciClientEvents> {
146
187
  }
147
188
  declare function createTciClient(options: TciClientOptions): TciClient;
148
189
 
149
- export { BuildTxAudioFrameOptions, QueueCommandOptions, type SendCommandOptions, type TciAudioConfig, TciClient, type TciClientEvents, type TciClientOptions, type TciClientState, TciCommand, TciError, type TciPttOptions, TciSampleType, TciSampleTypeName, TciStreamFrame, type TciTxChronoRequest, type TciWriteAckMode, type TciWriteOptions, createTciClient };
190
+ export { BuildTxAudioFrameOptions, QueueCommandOptions, type SendCommandOptions, type TciAudioConfig, TciClient, type TciClientEvents, type TciClientOptions, type TciClientState, TciCommand, TciDialectId, TciDialectRegistry, TciDialectSelection, TciError, TciHandshakeResult, type TciPttOptions, TciSampleType, TciSampleTypeName, TciStreamFrame, TciTransportFactory, type TciTxChronoRequest, type TciWriteAckMode, type TciWriteOptions, TciWriteResult, createTciClient };