/******************************************
 *  Author : Dr. Sebastian Herden
 *  Created On : Fri Sep 16 2022
 *  File : EventTypes.ts
 *******************************************/
import { Options } from './CalendlyApiEndpoint';
import CalendlyApiEndpointWithOrganization from './CalendlyApiEndpointWithOrganization';
import { PaginationResponse } from './PaginationResponse';
import { MeProvider, OrganizationProvider } from './Provider';
import EventType from './types/EventType';
import { EventTypeAvailableTime } from './types/EventTypeAvailableTime';
/**
 * The event types endpoint.
 * @export default
 * @class EventTypes
 * @extends {CalendlyApiEndpointWithOrganization}
 * @see https://developer.calendly.com/api-docs/25a4ece03c1bc-list-user-s-event-types
 */
export default class EventTypes extends CalendlyApiEndpointWithOrganization {
    meProvider: MeProvider;
    constructor(ACCESS_TOKEN: string, organizationProvider: OrganizationProvider, meProvider: MeProvider, params?: Options);
    /**
     * Returns all Event Types associated with a specified User. If user is not specified, the current user is used.
     * @param params
     * @returns {Promise<PaginationResponse<EventType>>} A paginated list of Event Types.
     */
    listUsersEventTypes(params: EventTypeUserRequest): Promise<PaginationResponse<EventType>>;
    /**
     * Returns all Event Types associated with a specified Organization. If organization is not specified, the current organization is used.
     * @param params The request parameters.
     * @returns {Promise<PaginationResponse<EventType>>} A paginated list of Event Types.
     */
    listOrganisationEventTypes(params: EventTypeOrganisationRequest): Promise<PaginationResponse<EventType>>;
    /**
     * Returns information about a specified Event Type.
     * @param param The uuid of the event type.
     * @returns {Promise<EventType>} The event type.
     */
    getEventType({ uuid }: {
        uuid: string;
    }): Promise<EventType>;
    /**
     * Returns a list of available times for an event type within a specified date range.
     * Date range can be no greater than 1 week (7 days).
     *
     * NOTE:
     *
     * This endpoint does not support traditional keyset pagination.
     * @param params The request parameters.
     * @returns {Promise<EventTypeAvailableTimeResponse>} The available times.
     * @note This endpoint does not support traditional keyset pagination.
     * @todo has errors
     */
    listEventAvailableTimes(params: EventTypeAvailableTimeRequest): Promise<EventTypeAvailableTimeResponse>;
    private listEventTypes;
    private getListEventTypesRequestParams;
    private getEventTypeAvailableTimeRequestParams;
}
export declare type EventTypeUserRequest = EventTypeRequest & {
    user?: string;
};
export declare type EventTypeOrganisationRequest = EventTypeRequest & {
    organization?: string;
};
export declare type EventTypeRequest = {
    active?: boolean;
    count?: number;
    page_token?: string;
    sort?: string;
};
export declare type EventTypeAvailableTimeRequest = {
    end_time?: Date;
    start_time?: Date;
    event_type: string;
};
export declare type EventTypeAvailableTimeResponse = {
    collection: EventTypeAvailableTime[];
};
//# sourceMappingURL=EventTypes.d.ts.map