import { AccountEntity, CalendarApi, CompanyEntity, Logger, ServiceEntity, StaffEntity } from "@agendize/js-calendar-api";
import { Locale } from "@agendize/az-i18n";
import { ComputedRef, Ref } from "vue";
import { Router } from "vue-router";
import { PageWithTabsAndPanelOptions, Mandatory } from "@agendize/design-system";
export declare function ServiceDetailsViewModel(api: CalendarApi, organisation: AccountEntity, locale: Locale, companyId: string, serviceId?: string, logger?: Logger, newService?: boolean, cloneService?: boolean, router?: Router): ServiceDetailsViewModelType;
interface ServiceDetailsViewModelType {
    company: Ref<CompanyEntity>;
    service: Ref<ServiceEntity | undefined>;
    pageTitle: () => string;
    loading: Ref<boolean>;
    validatedField: (item: string, isValid: boolean | {
        isValid: boolean;
        values: any;
        id: string;
    }) => void;
    submitReady: ComputedRef<boolean>;
    serviceName: Ref<string>;
    serviceDescription: Ref<string>;
    serviceLogo: Ref<string>;
    serviceLogoFile: Ref<File | undefined>;
    serviceLogoFileData: Ref<string | undefined>;
    onServiceLogoUpdated: (item: File | undefined) => void;
    serviceQuantity: Ref<number>;
    serviceColor: Ref<string[]>;
    serviceVisibility: Ref<string[]>;
    serviceWidgetUrl: Ref<string | undefined>;
    serviceActif: Ref<boolean>;
    serviceDuration: Ref<number>;
    serviceLocations: Ref<string[][]>;
    servicePrice: Ref<number | undefined>;
    serviceGroups: Ref<string[]>;
    serviceGroupValues: Ref<{
        label: string;
        value: string;
    }[]>;
    serviceStaffs: Ref<StaffEntity[]>;
    servicePreparationDuration: Ref<string[]>;
    serviceBufferAfterDuration: Ref<string[]>;
    serviceValidation: Ref<string[]>;
    serviceExternalId: Ref<string>;
    validations: Ref<{
        label: string;
        value: string;
    }[]>;
    locations: ComputedRef<{
        label: string;
        value: string;
    }[][]>;
    colors: Ref<{
        label: string;
        value: string;
    }[]>;
    durations: Ref<{
        label: string;
        value: string;
    }[]>;
    visibilities: Ref<{
        label: string;
        value: string;
    }[]>;
    onSave: () => void;
    back: () => void;
    pageOptions: Ref<PageWithTabsAndPanelOptions>;
    addLocation: () => void;
    sliceLocation: (location: string, index: number) => void;
    allPossibleLocation: {
        value: string;
        label: string;
    }[];
    customLoc: Ref<string>;
    changeStaffs: (staffs: StaffEntity[]) => void;
    serviceCancellationDelayEnable: Ref<boolean>;
    serviceCancellationDelayValue: Ref<number | undefined>;
    serviceCancellationDelayHelper: Ref<string | undefined>;
    serviceCancellationDelayMandatory: Ref<Mandatory>;
    minAppointmentValue: Ref<number>;
    minAppointmentUnit: Ref<string>;
    maxAppointmentValue: Ref<number>;
    maxAppointmentUnit: Ref<string>;
    changeInterval: (minV: number, minU: string, maxV: number, maxU: string) => void;
    hasIntervalByService: Ref<boolean>;
}
export {};
