import { Amp, Nmp, PaginatedListIterator, VmpGroup } from '@icure/cardinal-be-sam-sdk';
import { MedicationType, MedicationProductType, Med } from '../../../shared/types';
import { MergeLazySortedNamedItemsService } from './merge-lazy-sorted-named-items.service';
import { TranslationService } from '../../../shared/services/translation/translation.service';
import * as i0 from "@angular/core";
export declare class MedicationLoaderService {
    private mergeService;
    private translationService;
    constructor(mergeService: MergeLazySortedNamedItemsService, translationService: TranslationService);
    private defaultLanguage;
    private get language();
    loadMedicationsPage(medications: PaginatedListIterator<Amp>, min: number, deliveryEnvironment: string, acc?: MedicationProductType[], filter?: (medication: MedicationType) => MedicationType | undefined): Promise<MedicationProductType[]>;
    loadMoleculesPage(molecules: PaginatedListIterator<VmpGroup>, min: number, acc?: MedicationType[]): Promise<MedicationType[]>;
    loadNonMedicinalPage(products: PaginatedListIterator<Nmp>, min: number, acc?: MedicationType[]): Promise<MedicationType[]>;
    /**
     * Loads elements until a given name or up to a limit if no name is provided.
     */
    loadUntil(toName: string | undefined, loadPage: () => Promise<any[]>, limit?: number): Promise<any[]>;
    loadMore({ untreatedLoadedMedicationProducts, untreatedLoadedMolecules, untreatedLoadNonMedicinals, medicationProductsIterator, moleculesIterator, nonMedicinalesIterator, deliveryEnvironment, limit, }: {
        untreatedLoadedMedicationProducts: MedicationProductType[];
        untreatedLoadedMolecules: MedicationType[];
        untreatedLoadNonMedicinals: MedicationType[];
        medicationProductsIterator: PaginatedListIterator<Amp> | undefined;
        moleculesIterator: PaginatedListIterator<VmpGroup> | undefined;
        nonMedicinalesIterator: PaginatedListIterator<Nmp> | undefined;
        deliveryEnvironment: string;
        limit?: number;
    }): Promise<{
        result: Med[];
        updated: {
            medicationsPage: MedicationProductType[];
            moleculesPage: MedicationType[];
            productsPage: MedicationType[];
        };
    }>;
    static ɵfac: i0.ɵɵFactoryDeclaration<MedicationLoaderService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<MedicationLoaderService>;
}
