import { RtcpMessage } from '../../components/message';
export declare enum RTCPPacketType {
    SR = 200,
    RR = 201,
    SDES = 202,
    BYE = 203,
    APP = 204
}
export interface Rtcp {
    readonly version: number;
    readonly padding: boolean;
    readonly count: number;
    readonly packetType: RTCPPacketType | number;
    readonly length: number;
}
export declare const parseRtcp: (buffer: Buffer) => Rtcp | RtcpSR | RtcpRR | RtcpSDES | RtcpBye | RtcpApp;
export declare const rtcpMessageFromBuffer: (channel: number, buffer: Buffer) => RtcpMessage;
export declare const SR: {
    packetType: number;
};
export interface RtcpReportBlock {
    readonly syncSource: number;
    readonly fractionLost: number;
    readonly cumulativeNumberOfPacketsLost: number;
    readonly extendedHighestSequenceNumberReceived: number;
    readonly interarrivalJitter: number;
    readonly lastSRTimestamp: number;
    readonly delaySinceLastSR: number;
}
export interface RtcpSR extends Rtcp {
    readonly version: RTCPPacketType.SR;
    readonly syncSource: number;
    readonly ntpMost: number;
    readonly ntpLeast: number;
    readonly rtpTimestamp: number;
    readonly sendersPacketCount: number;
    readonly sendersOctetCount: number;
    readonly reports: readonly RtcpReportBlock[];
}
export declare const isRtcpSR: (rtcp: Rtcp) => rtcp is RtcpSR;
export interface RtcpRR extends Rtcp {
    readonly version: RTCPPacketType.RR;
    readonly syncSource: number;
    readonly reports: readonly RtcpReportBlock[];
}
export declare const isRtcpRR: (rtcp: Rtcp) => rtcp is RtcpRR;
export declare enum SDESItem {
    CNAME = 1,
    NAME = 2,
    EMAIL = 3,
    PHONE = 4,
    LOC = 5,
    TOOL = 6,
    NOTE = 7,
    PRIV = 8
}
export interface RtcpSDESBlock {
    readonly source: number;
    readonly items: Array<[number, string] | [SDESItem.PRIV, string, string]>;
}
export interface RtcpSDES extends Rtcp {
    readonly version: RTCPPacketType.SDES;
    readonly syncSource: number;
    readonly sourceDescriptions: readonly RtcpSDESBlock[];
}
export declare const isRtcpSDES: (rtcp: Rtcp) => rtcp is RtcpSDES;
export interface RtcpBye extends Rtcp {
    readonly version: RTCPPacketType.BYE;
    readonly sources: number[];
    readonly reason?: string;
}
export declare const isRtcpBye: (rtcp: Rtcp) => rtcp is RtcpBye;
export interface RtcpApp extends Rtcp {
    readonly version: RTCPPacketType.APP;
    readonly subtype: number;
    readonly source: number;
    readonly name: string;
    readonly data: Buffer;
}
export declare const isRtcpApp: (rtcp: Rtcp) => rtcp is RtcpApp;
