import { Locale } from ".";
export type ReminderTypes = "textMessage" | "email";
export type NotificationSettings = Record<ReminderTypes, boolean>;
/**
 * No enum support in d.ts files,
 * Use NotificationKeysEnum for mapped enum value
 * corresponds with:
 * - acceptedByContact = 0,
 * - assignedByContact= 1,
 * - completedByContact = 2,
 * - invitedByContact = 3,
 * - cancelledByContact = 4,
 * - cancelledByCustomer = 5,
 * - dateCreatedByContact = 6,
 * - dateCreatedByCustomer =7,
 * - dateChangedByContact = 8,
 * - dateChangedByCustomer = 9,
 * - possibilitiesCreatedByCustomer = 10,
 * - possibilitiesChangedByCustomer = 11,
 * - possibilitiesRequestedByContact = 12,
 */
export type NotificationKeys = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;
export type Notifications = {
    [k in NotificationKeys]: NotificationSettings;
};
export interface ReminderInterval {
    time: number;
}
export type ReminderSettings = Record<ReminderTypes, ReminderInterval[]>;
export interface DefaultEnterpriseSettings {
    allow_office_365_login: boolean;
    allowed_sync_providers: string[];
    appointment_block_suggestions: string;
    appointment_completion_max_future_days: number;
    appointment_contact_select: string;
    appointment_max_suggestions: number;
    appointment_min_preparation_time: number;
    appointment_min_suggestions: number;
    appointment_travel_buffer_time: number;
    availability_max_future_days_to_sync: number;
    contact_notifications: Notifications;
    default_language: Locale;
    enterprise_id: number;
    first_time_customer_fields: FirstTimeCustomerFields;
    id: string;
    internal_customer_fields: InternalCustomerFields;
    notifications_window?: unknown;
    notifications: Notifications;
    reminders: ReminderSettings;
    returning_customer_fields: ReturningCustomerFields;
    sender_email_addresses?: null | {
        [locale: string]: string | undefined | null;
    };
    show_qr_code_in_customer_email: boolean;
    video_provider_test_url: string;
    web_app_is_reassign_search_enabled: boolean;
}
export declare enum WebAppCustomerBehaviour {
    ENABLED = "enabled",
    DISABLED = "disabled"
}
export interface EnterpriseTeamSettings {
    allow_team_appointments: boolean;
    allow_team_insights: boolean;
    allow_team_team: boolean;
    allow_team_office: boolean;
    allow_team_scheduling_assignments: boolean;
    allow_team_scheduling_planning_rules: boolean;
    allow_team_scheduling_coverage_regions: boolean;
    allow_team_team_unlink: boolean;
    allow_team_team_profile: boolean;
    allow_team_team_availability: boolean;
    allow_team_team_expertise: boolean;
    allow_team_team_calendar_sync: boolean;
}
export interface EnterprisePersonalSettings {
    allow_personal_account: boolean;
    allow_personal_availability: boolean;
    allow_personal_calendar_sync: boolean;
    allow_personal_application_settings: boolean;
}
export interface EnterpriseAppointmentsSettings {
    allow_personal_appointments: boolean;
}
export interface EnterpriseCustomerSettings {
    appointment_create_allow_change_customer: boolean;
    appointment_create_allow_create_customer: boolean;
    appointment_create_allow_customer_instigator: boolean;
    appointment_create_allow_invite_customer: boolean;
    web_app_customers_behaviour: WebAppCustomerBehaviour;
}
export interface EnterpriseSubjectSettings {
    appointment_create_allow_set_subject: boolean;
    default_subject_id?: string | null;
}
export interface EnterpriseAvailabilitySettings {
    appointment_default_duration: number;
    appointment_earliest_possible: number;
    appointment_latest_possible: number;
    time_slot_granularity: number;
}
export interface EnterprisePluginSettings {
    redirect_url: string;
    localized_redirect_urls: [] | {
        [lang: string]: string;
    };
    terms_conditions_url: string;
}
export interface EnterpriseUserCommunicationSettings {
    send_notification_emails?: boolean;
    send_notification_sms?: boolean;
}
export type EnterpriseSettings = DefaultEnterpriseSettings & EnterpriseCustomerSettings & EnterprisePersonalSettings & EnterpriseTeamSettings & EnterpriseAppointmentsSettings & EnterpriseSubjectSettings & EnterpriseAvailabilitySettings & EnterprisePluginSettings & EnterpriseUserCommunicationSettings;
export interface CustomerFieldSetting {
    ask: boolean;
    required: boolean;
    order: number;
}
export interface FirstTimeCustomerFields {
    cell_phone_number: CustomerFieldSetting;
    company: CustomerFieldSetting;
    customer_number: CustomerFieldSetting;
    /** Mandatory */
    email: CustomerFieldSetting;
    is_existing: CustomerFieldSetting;
    /** Mandatory */
    name: CustomerFieldSetting;
    location: CustomerFieldSetting;
}
export interface ReturningCustomerFields extends FirstTimeCustomerFields {
    /** Mandatory*/
    external_customer_id: CustomerFieldSetting;
}
interface InternalCustomerFieldSetting {
    ask: boolean;
    required: boolean;
    order: number;
    private: boolean;
}
export interface InternalCustomerFields {
    customer_number: InternalCustomerFieldSetting;
    external_id: InternalCustomerFieldSetting;
    first_name: InternalCustomerFieldSetting;
    last_name: InternalCustomerFieldSetting;
    email: InternalCustomerFieldSetting;
    phone_number: InternalCustomerFieldSetting;
    language: InternalCustomerFieldSetting;
}
export {};
//# sourceMappingURL=enterpriseSettings.d.ts.map