import { ApiError } from '@dvn/core/api';
import { UserSettings } from '@dvn/kimlik/api/models/UserSettings';
import { Availability, CalendarConfig } from '@dvn/takvim/api/models';
import { TakvimApi } from '@dvn/takvim/api/takvimApi';
import { TimeSelection } from '@dvn/takvim/components/takvim-available-time-picker-selected-day/events';
import { TakvimAvailableTimePickerSelectedDayI18n } from '@dvn/takvim/components/takvim-available-time-picker-selected-day/i18n';
import { Slot } from '@dvn/takvim/models/Slot';
import { EventEmitter } from '../../../../../stencil-public-runtime';
export declare class TakvimAvailableTimePickerSelectedDay {
  /**
   * Availabilities filtered by the selected date.
   */
  availabilitiesForTheSelectedDate: Availability[];
  /**
   * Duration options of the selected date. Used when there are multiple
   * availabilities for the same date with different durations.
   */
  durationForTheSelectedDate: number[];
  /**
   * Availabilities that are in availabilitiesForTheSelectedDate
   * and filtered by the selected duration.
   */
  selectedDurationAvailabilities?: Availability[];
  /**
   * Time slots that are generated when duration (if needed)
   * and availabilities are selected.
   */
  timeSlots?: Slot[];
  /**
   * Custom time values.
   */
  isPickingCustomTime: boolean;
  customTime: {
    hour: number;
    minute: number;
  };
  customDuration: number;
  /**
   * API related values.
   */
  isProgressing: boolean;
  error: ApiError;
  availabilities: Availability[];
  calenderConfig: CalendarConfig;
  selectedDate?: Date;
  userId: string;
  membershipConfigId: string;
  userSettings: UserSettings;
  viewedUserId: string;
  viewedUserMembershipConfigId: string;
  calendarConfigId: string;
  apiTakvim: TakvimApi;
  strings: TakvimAvailableTimePickerSelectedDayI18n;
  selectTime: EventEmitter<TimeSelection>;
  durations: number[];
  componentWillLoad(): void;
  onSelectedDateChange(selectedDate: Date): void;
  onSelectSlot: (slot: {
    start: Date;
    end: Date;
    availabilityId?: string;
  }) => void;
  onSelectCustomTime: () => void;
  onSelectDuration: (duration: number) => Promise<void>;
  render(): any;
}
