import Session from './Session';
import type { RecordingResponse } from './Recording';
import Recording from './Recording';
export declare const CALL_LOG_VALID_REQUESTED_VERSION = "24.14";
export type CallLogResponse = {
    answer: string | null | undefined;
    answered: boolean;
    call_direction: string;
    destination_extension: string;
    destination_name: string;
    destination_user_uuid: string | null;
    duration: number;
    end: string | null | undefined;
    id: number;
    source_extension: string;
    source_name: string;
    source_user_uuid: string | null;
    recordings: RecordingResponse[];
    requested_extension: string;
    requested_name: string;
    requested_user_uuid: string | null;
    start: string;
};
export type Response = {
    filtered: number;
    items: Array<CallLogResponse>;
    total: number;
};
type LogOrigin = {
    extension: string;
    name: string;
    uuid?: string | null;
};
type DestinationLogOrigin = LogOrigin & {
    plainExtension: string;
    plainName: string | null;
};
type CallLogArguments = {
    answer: Date | null | undefined;
    answered: boolean;
    newMissedCall?: boolean;
    callDirection: string;
    destination: DestinationLogOrigin;
    requested: LogOrigin;
    source: LogOrigin;
    id: number;
    duration: number;
    start: Date;
    end: Date | null | undefined;
    recordings: Recording[];
};
export default class CallLog {
    type: string;
    answer: Date | null | undefined;
    answered: boolean;
    newMissedCall: boolean;
    callDirection: string;
    destination: DestinationLogOrigin;
    requested: LogOrigin;
    recordings: Recording[];
    source: LogOrigin;
    id: number;
    duration: number;
    start: Date;
    end: Date | null | undefined;
    static merge(current: Array<CallLog>, toMerge: Array<CallLog>): Array<CallLog | null | undefined>;
    static parseMany(plain: Response): Array<CallLog>;
    static parse(plain: CallLogResponse): CallLog;
    static parseNew(plain: CallLogResponse, session: Session): CallLog;
    static newFrom(profile: CallLog): any;
    constructor({ answer, answered, callDirection, destination, requested, source, id, duration, start, end, recordings, }: CallLogArguments);
    isFromSameParty(other: CallLog, session: Session): boolean;
    theOtherParty(session: Session): LogOrigin;
    isNewMissedCall(): boolean;
    acknowledgeCall(): CallLog;
    isAcknowledged(): boolean;
    isAnswered(): boolean;
    isOutgoing(session: Session): boolean;
    isIncoming(session: Session): boolean;
    isIncomingAndForwarded(session: Session): boolean;
    isAnOutgoingCall(session: Session): boolean;
    isAMissedOutgoingCall(session: Session): boolean;
    isAnIncomingCall(session: Session): boolean;
    isADeclinedCall(session: Session): boolean;
    getRecordings(): Recording[];
}
export {};
//# sourceMappingURL=CallLog.d.ts.map