import { ResponsiveSize, ResponsiveUIHelper } from '@dvn/alaca/utils/ui';
import { ApiError } from '@dvn/core/api';
import { FormSubmitEvent } from '@dvn/core/doldurma/src/form/doldurma-form';
import { UserSettings } from '@dvn/kimlik/api/models/UserSettings';
import { Availability, CalendarConfig, Event as TakvimEvent } from '@dvn/takvim/api/models';
import { TakvimApi } from '@dvn/takvim/api/takvimApi';
import { SelectTimeEvent, TimeSelection } from '@dvn/takvim/components/takvim-available-time-picker-selected-day/events';
import { MeetingType } from '@dvn/takvim/models/MeetingType';
import { EventEmitter } from '../../../../../stencil-public-runtime';
import { HTMLStencilElement } from '../../../../../stencil-public-runtime';
export declare class TakvimAvailableTimePicker {
  uiHelper: ResponsiveUIHelper;
  el: HTMLStencilElement;
  /**
   * Calendar config fetched from the API.
   */
  calendarConfig: CalendarConfig;
  /**
   * Meetings of the users. Used to filter out the meeting types in
   * the form if there are enough number of meetings for the meeting types.
   */
  meetings: TakvimEvent[];
  meetingsByMeetingTypes: {
    [meetingType: string]: TakvimEvent;
  };
  /**
   * Raw availabilities fetched from the api.
   */
  availabilities: Availability[];
  /**
   * Availabilities that are generated by the raw availabilities considering their recurrence.
   * MAX_MONTH_FOR_RECURRENCE is used to limit the availabilities for the future.
   */
  generatedAvailabilities: Availability[];
  /**
   * Date that is picked by the user with date picker.
   */
  selectedDate?: Date;
  /**
   * Selected time slot info. Either set by selecting
   * an availability slot or setting the custom time.
   */
  selectedTime?: TimeSelection;
  meetingLocationType: 'custom' | 'jitsi' | 'zoom';
  meetingLocation: string;
  isProgressing: boolean;
  error: ApiError;
  createMeetingError: ApiError;
  size: ResponsiveSize;
  userId: string;
  membershipConfigId: string;
  userSettings: UserSettings;
  viewedUserId: string;
  viewedUserMembershipConfigId: string;
  calendarConfigId: string;
  meetingTypes?: MeetingType[];
  apiTakvim: TakvimApi;
  createMeeting: EventEmitter;
  componentWillLoad(): Promise<void>;
  componentDidLoad(): Promise<void>;
  onSizeChange: (size: ResponsiveSize) => void;
  isMobileUI: () => boolean;
  onSelectTime: (e: SelectTimeEvent) => Promise<void>;
  onSubmitForm: (event: FormSubmitEvent) => Promise<void>;
  render(): any;
}
