import { CameraController, CameraStreamingDelegate, PrepareStreamCallback, PrepareStreamRequest, SnapshotRequest, SnapshotRequestCallback, SRTPCryptoSuites, StreamingRequest, StreamRequestCallback } from 'homebridge';
import { Socket } from 'dgram';
import { FFmpeg } from '../utils/ffmpeg';
import { LocalLivestreamManager } from './LocalLivestreamManager';
import { TalkbackStream } from '../utils/Talkback';
import { CameraAccessory } from '../accessories/CameraAccessory';
import { Logger, ILogObj } from 'tslog';
export type SessionInfo = {
    address: string;
    ipv6: boolean;
    videoPort: number;
    videoReturnPort: number;
    videoCryptoSuite: SRTPCryptoSuites;
    videoSRTP: Buffer;
    videoSSRC: number;
    audioPort: number;
    audioReturnPort: number;
    audioCryptoSuite: SRTPCryptoSuites;
    audioSRTP: Buffer;
    audioSSRC: number;
};
type ActiveSession = {
    videoProcess?: FFmpeg;
    audioProcess?: FFmpeg;
    returnProcess?: FFmpeg;
    timeout?: NodeJS.Timeout;
    socket?: Socket;
    talkbackStream?: TalkbackStream;
};
export declare class StreamingDelegate implements CameraStreamingDelegate {
    private camera;
    private videoConfig;
    private controller?;
    private platform;
    private device;
    readonly log: Logger<ILogObj>;
    private localLivestreamManager;
    private snapshotManager;
    pendingSessions: Map<string, SessionInfo>;
    ongoingSessions: Map<string, ActiveSession>;
    timeouts: Map<string, NodeJS.Timeout>;
    constructor(camera: CameraAccessory);
    setController(controller: CameraController): void;
    getLivestreamManager(): LocalLivestreamManager;
    handleSnapshotRequest(request: SnapshotRequest, callback: SnapshotRequestCallback): Promise<void>;
    prepareStream(request: PrepareStreamRequest, callback: PrepareStreamCallback): Promise<void>;
    private startStream;
    handleStreamRequest(request: StreamingRequest, callback: StreamRequestCallback): void;
    stopStream(sessionId: string): void;
}
export {};
//# sourceMappingURL=streamingDelegate.d.ts.map