/******************************************
 *  Author : Dr. Sebastian Herden
 *  Created On : Fri Sep 16 2022
 *  File : Event.ts
 *******************************************/
import { Cancellation } from './Cancellation';
export declare type EventDefinition = {
    uri: string;
    name: string;
    status: 'active' | 'canceled';
    start_time: Date;
    end_time: Date;
    event_type: string;
    location: PhysicalLocation | OutboundCallLocation | InboundCallLocation | GoogleConferenceLocation | ZoomConferenceLocation | GoToMeetingLocation | MicrosoftTeamsConferenceLocation | WebexConferenceLocation | CustomLocation | AskInviteeLocation;
    invitees_counter: {
        total: number;
        active: number;
        limit: number;
    };
    created_at: Date;
    updated_at: Date;
    event_memberships: [
        {
            user: string;
        }
    ];
    event_guests: [
        {
            email: string;
            created_at: Date;
            updated_at: Date;
        }
    ];
    cancellation?: Cancellation;
};
/**
 * Information about a scheduled meeting. Provides one more method:
 * - fromJson: Creates an event object from a json object.
 * @export default
 * @interface CalendlyEvent
 * @implements {EventType}
 * @see https://developer.calendly.com/api-docs/504508461e486-event
 */
export default class CalendlyEvent implements EventDefinition {
    uri: string;
    name: string;
    status: 'active' | 'canceled';
    start_time: Date;
    end_time: Date;
    event_type: string;
    location: PhysicalLocation | OutboundCallLocation | InboundCallLocation | GoogleConferenceLocation | ZoomConferenceLocation | GoToMeetingLocation | MicrosoftTeamsConferenceLocation | WebexConferenceLocation | CustomLocation | AskInviteeLocation;
    invitees_counter: {
        total: number;
        active: number;
        limit: number;
    };
    created_at: Date;
    updated_at: Date;
    event_memberships: [
        {
            user: string;
        }
    ];
    event_guests: [
        {
            email: string;
            created_at: Date;
            updated_at: Date;
        }
    ];
    cancellation?: Cancellation;
    uuid: string | undefined;
    private constructor();
    static fromJSON(event: EventDefinition): CalendlyEvent;
}
export declare type PhysicalLocation = {
    type: 'physical';
    location: string;
};
export declare type OutboundCallLocation = {
    type: 'outbound_call';
    location: string;
};
export declare type InboundCallLocation = {
    type: 'inbound_call';
    location: string;
};
export declare type GoogleConferenceLocation = WebConferenceLocation & {
    type: 'google_conference';
};
export declare type ZoomConferenceLocation = WebConferenceLocation & {
    type: 'zoom_conference';
    data: {
        id: string;
        password: string;
        settings: {
            global_dial_in_numbers: [global_dial_in_number];
        };
        extra: {
            intl_numbers_url: string;
        };
    };
};
export declare type GoToMeetingLocation = WebConferenceLocation & {
    type: 'gotomeeting';
    data: {
        uniqueMeetingId: string;
        conferenceCallInfo: string;
    };
};
export declare type MicrosoftTeamsConferenceLocation = WebConferenceLocation & {
    type: 'microsoft_teams_conference';
    data: {
        id: string;
        audioConferencing: {
            conferenceId: string;
            dialinUrl: string;
            tollNumber: string;
        };
    };
};
export declare type WebexConferenceLocation = WebConferenceLocation & {
    type: 'webex_conference';
    data: {
        id: string;
        password: string;
        telephony: {
            callInNumbers: [callInNumber];
        };
    };
};
export declare type CustomLocation = {
    type: 'custom';
    location: string;
};
export declare type AskInviteeLocation = {
    type: 'ask_invitee';
    location: string;
};
export declare type WebConferenceLocation = {
    status: 'initiated' | 'processing' | 'pushed' | 'failed';
    join_url: string;
};
export declare type global_dial_in_number = {
    number: string;
    country: string;
    type: string;
    city: string;
    country_name: string;
};
export declare type callInNumber = {
    label: string;
    callInNumber: string;
    tollType: string;
};
//# sourceMappingURL=Event.d.ts.map