/**
* Streaming Types and Interfaces
* Core types for real-time streaming and multi-modal communication
*/
///
///
export interface VideoStreamRequest {
id: string;
source: "file" | "camera" | "generated" | "screen";
quality: StreamQuality;
endpoint: string;
metadata?: StreamMetadata;
priority?: "low" | "medium" | "high" | "critical";
streaming?: StreamingOptions;
preview?: PreviewOptions;
constraints?: {
video?: any;
};
}
export interface AudioStreamRequest {
id: string;
source: "file" | "microphone" | "generated";
quality: StreamQuality;
endpoint: string;
processing?: AudioProcessing;
metadata?: StreamMetadata;
constraints?: {
audio?: any;
};
}
export interface StreamQuality {
level: "low" | "medium" | "high" | "ultra" | "auto";
video?: VideoStreamQuality;
audio?: AudioStreamQuality;
bandwidth: number;
latency: number;
}
export interface VideoStreamQuality {
codec: VideoCodec;
resolution: Resolution;
framerate: number;
bitrate: number;
keyframeInterval: number;
adaptiveBitrate: boolean;
}
export interface AudioStreamQuality {
codec: AudioCodec;
sampleRate: number;
channels: number;
bitrate: number;
bufferSize: number;
}
export interface VideoCodec {
name: string;
mimeType: string;
bitrate: number;
}
export interface AudioCodec {
name: string;
mimeType: string;
bitrate: number;
}
export interface Resolution {
width: number;
height: number;
}
export interface StreamMetadata {
timestamp: number;
sessionId: string;
recordingEnabled?: boolean;
multicast?: boolean;
transcriptionEnabled?: boolean;
language?: string;
}
export interface AudioProcessing {
noiseReduction: boolean;
echoCancellation: boolean;
autoGainControl: boolean;
noiseSuppression: boolean;
}
export interface StreamingOptions {
enabled: boolean;
progressUpdates: boolean;
chunkSize: number;
}
export interface PreviewOptions {
enabled: boolean;
updateInterval: number;
previewQuality: string;
}
export interface MultiModalChunk {
id: string;
type: "video" | "audio" | "data";
timestamp: number;
sequenceNumber: number;
data: Buffer;
metadata: ChunkMetadata;
stream?: StreamInfo;
sync?: SyncInfo;
}
export interface ChunkMetadata {
size: number;
duration?: number;
mimeType: string;
encoding: string;
checksum: string;
synchronized: boolean;
priority: "low" | "medium" | "high" | "critical";
}
export interface StreamInfo {
videoStreamId?: string;
audioStreamId?: string;
sessionId: string;
}
export interface SyncInfo {
presentationTimestamp: number;
decodingTimestamp: number;
keyframe: boolean;
dependencies: string[];
}
export interface NetworkConditions {
latency: number | {
rtt: number;
jitter: number;
};
jitter: number;
packetLoss: number;
bandwidth: number | {
upload: number;
download: number;
available: number;
};
quality?: {
packetLoss: number;
stability: number;
congestion: number;
};
timestamp?: number;
}
export interface PerformanceMetrics {
throughput: {
video: number;
audio: number;
total: number;
};
latency: {
average: number;
p95: number;
p99: number;
max: number;
};
quality: {
video: number;
audio: number;
overall: number;
};
reliability: {
packetsLost: number;
errorsRecovered: number;
uptime: number;
};
}
export interface VideoStreamResponse {
id: string;
status: "success" | "error" | "streaming";
data?: Buffer;
metadata?: StreamMetadata;
error?: string;
stream?: any;
quality?: StreamQuality;
endpoints?: string[];
}
export interface AudioStreamResponse {
id: string;
status: "success" | "error" | "streaming";
data?: Buffer;
metadata?: StreamMetadata;
error?: string;
stream?: any;
quality?: StreamQuality;
endpoints?: string[];
transcription?: {
text: string;
confidence: number;
language: string;
enabled?: boolean;
segments: Array<{
start: number;
end: number;
text: string;
}>;
};
}
export interface StreamingSession {
id: string;
status: "active" | "paused" | "stopped";
streams: {
video?: VideoStreamRequest;
audio?: AudioStreamRequest;
};
metadata: StreamMetadata;
startTime: number;
endTime?: number;
}
export interface StreamingContext {
sessionId: string;
userId?: string;
config: StreamingConfig;
performance: PerformanceMetrics;
network: NetworkConditions;
}
export interface StreamingConfig {
maxConcurrentStreams: number;
bufferSize: number;
retryAttempts: number;
timeout: number;
quality: StreamQuality;
}
export interface EdgeCacheConfig {
enabled: boolean;
ttl: number;
regions: string[];
compression: boolean;
warmupEnabled: boolean;
maxSize?: number;
purgeStrategy?: string;
cdnEndpoints?: string[];
strategy?: string;
cacheKeys?: {
includeQuality?: boolean;
includeUser?: boolean;
includeSession?: boolean;
};
edgeLocations?: string[];
}
export interface CDNConfiguration {
provider: string;
endpoints: string[] | {
primary: string;
fallback: string[];
geographic: Record;
};
caching: EdgeCacheConfig;
bandwidth: number;
regions: string[];
}
export interface WebRTCConfig {
iceServers: RTCIceServer[];
enableDataChannels: boolean;
enableTranscoding: boolean;
iceTransportPolicy?: RTCIceTransportPolicy;
bundlePolicy?: RTCBundlePolicy;
rtcpMuxPolicy?: RTCRtcpMuxPolicy;
iceCandidatePoolSize?: number;
}
export interface StreamingError {
code: string;
message: string;
timestamp: number;
recoverable: boolean;
severity?: string;
}
export interface QualityAdaptationRule {
condition: string;
action: string;
threshold: number;
priority?: number;
}
export interface SynchronizationConfig {
enabled: boolean;
bufferSize: number;
syncThreshold: number;
adaptiveSync: boolean;
}
export interface VideoStreamConfig {
codec: string;
bitrate: number;
framerate: number;
resolution: string;
}
export interface AudioStreamConfig {
codec: string;
bitrate: number;
sampleRate: number;
channels: number;
}
//# sourceMappingURL=streaming.d.ts.map