export interface StreamGetKeyRequest {
    channelId: string;
}
export interface StreamGetKeyOptions {
    channelId: string;
    output?: 'table' | 'json';
}
export interface StreamInfoModel {
    deployAddress: string;
    inAddress: string;
    streamName: string;
    fps: number;
    lfr: number;
    inBandWidth: number;
}
export interface StreamKeyDisplayModel {
    channelId: string;
    rtmpUrl: string;
    streamKey: string;
    isMasked: boolean;
    streamInfo?: {
        fps: number;
        bandwidth: number;
    };
}
export interface StreamCredentials {
    channelId: string;
    rtmpUrl: string;
    streamKey: string;
    deployAddress: string;
    inAddress: string;
    metrics: {
        fps: number;
        lfr: number;
        bandwidth: number;
    };
}
export interface StreamStartRequest {
    channelId: string;
}
export interface StreamStartOptions {
    channelId: string;
}
export interface StreamStartResponse {
    code: number;
    status: string;
    message: string;
    data: string;
}
export interface StreamStopRequest {
    channelId: string;
}
export interface StreamStopOptions {
    channelId: string;
}
export interface StreamStopResponse {
    code: number;
    status: string;
    message: string;
    data: string;
}
export interface StreamStatusRequest {
    channelId: string;
}
export interface StreamMonitorData {
    deployAddress?: string;
    inAddress?: string;
    streamName: string;
    fps: string;
    lfr?: string;
    inBandWidth: string;
    retrievedAt: Date;
    channelId: string;
}
export interface StreamStatusInfo {
    channelId: string;
    status: 'live' | 'stopped' | 'waiting' | 'error' | 'unknown';
    statusText: string;
    isLive: boolean;
    duration?: number;
    durationText?: string;
    metrics?: {
        fps: number;
        lfr: number;
        bandwidth: number;
        bandwidthText: string;
    };
    network?: {
        deployAddress?: string;
        inAddress?: string;
        streamName?: string;
    };
    lastUpdated: Date;
    error?: {
        code: string;
        message: string;
    };
}
export interface StreamStatusOptions {
    channelId: string;
    output?: 'table' | 'json';
    watch?: boolean;
}
export interface StreamPushOptions {
    channelId: string;
    file: string;
    verify?: boolean;
    verificationInterval?: number;
    qualityThreshold?: number;
    showViewerLinks?: boolean;
}
export interface StreamVerificationOptions {
    channelId: string;
    duration?: number;
    interval?: number;
    qualityThreshold?: number;
    showViewerLinks?: boolean;
    saveReport?: string;
    output?: 'table' | 'json';
}
export interface StreamMonitorOptions {
    channelId: string;
    refresh?: number;
    alerts?: boolean;
    output?: 'table' | 'json';
}
export interface QualityMetrics {
    fps: number;
    bandwidth: number;
    latency?: number;
    lfr?: number;
}
export interface QualityIssue {
    timestamp: Date;
    type: 'fps_low' | 'bandwidth_low' | 'connection_lost' | 'encoding_error' | 'other';
    severity: 'warning' | 'error' | 'critical';
    message: string;
    metrics?: Partial<QualityMetrics>;
}
export interface ViewerLink {
    protocol: 'HLS' | 'RTMP' | 'WebRTC' | 'HTTP-FLV';
    url: string;
    description: string;
}
export interface VerificationPoint {
    checkNumber: number;
    timestamp: Date;
    status: 'healthy' | 'warning' | 'error';
    metrics: QualityMetrics;
    issues: QualityIssue[];
}
export interface VerificationSummary {
    overallStatus: 'excellent' | 'good' | 'fair' | 'poor';
    reliability: number;
    averageQuality: QualityMetrics;
    totalIssues: number;
    recommendations: string[];
}
export interface StreamVerificationResult {
    channelId: string;
    verificationId: string;
    startTime: Date;
    endTime: Date;
    totalChecks: number;
    successfulChecks: number;
    failedChecks: number;
    averageMetrics: QualityMetrics;
    qualityIssues: QualityIssue[];
    viewerLinks: ViewerLink[];
    summary: VerificationSummary;
}
export interface VerificationReport {
    metadata: {
        channelId: string;
        testDuration: number;
        testInterval: number;
        timestamp: Date;
        version: string;
    };
    summary: VerificationSummary;
    timeline: VerificationPoint[];
    issues: QualityIssue[];
    viewerLinks: ViewerLink[];
}
export interface StreamActivity {
    timestamp: Date;
    type: 'status_change' | 'quality_change' | 'viewer_change' | 'error' | 'info';
    message: string;
    data?: Record<string, unknown>;
}
//# sourceMappingURL=stream.d.ts.map