import { AfterViewChecked, ChangeDetectorRef, ElementRef, EventEmitter, OnDestroy, OnInit, QueryList } from '@angular/core';
import { FormControl } from '@angular/forms';
import { Subject } from 'rxjs';
import { Amp, Nmp, PaginatedListIterator, VmpGroup } from '@icure/cardinal-be-sam-sdk';
import { MedicationLoaderService } from '../../../internal/services/loaders/medication-loader.service';
import { TooltipContextService } from '../../../internal/services/common/tooltip-context.service';
import { TranslationService } from '../../services/translation/translation.service';
import { SamSdkService } from '../../services/api/sam-sdk.service';
import { MedicationProductType, MedicationType } from '../../types';
import * as i0 from "@angular/core";
export declare class MedicationSearchComponent implements OnInit, OnDestroy, AfterViewChecked {
    private samSdkService;
    private loader;
    private tooltipContext;
    private translationService;
    private cdr;
    deliveryEnvironment: string;
    addPrescription: EventEmitter<[MedicationType, MedicationType[]]>;
    inputRef: ElementRef<HTMLInputElement>;
    scrollAnchor: ElementRef;
    resultRefs: QueryList<ElementRef<HTMLElement>>;
    medicationSearchDropdown: ElementRef<HTMLDivElement>;
    constructor(samSdkService: SamSdkService, loader: MedicationLoaderService, tooltipContext: TooltipContextService, translationService: TranslationService, cdr: ChangeDetectorRef);
    t(key: string): string;
    private intersectionObserver?;
    private observerInitialized;
    private medicationSearchDropdownRectInitialized;
    private language;
    showSpinner: boolean;
    showNoMatchesPlaceholder: boolean;
    destroy$: Subject<void>;
    medications: PaginatedListIterator<Amp> | undefined;
    molecules: PaginatedListIterator<VmpGroup> | undefined;
    products: PaginatedListIterator<Nmp> | undefined;
    pages: MedOrProduct[];
    medicationsPage: MedicationProductType[];
    moleculesPage: MedicationType[];
    productsPage: MedicationType[];
    focusedMedicationIndex: number | undefined;
    focusedSubMedicationIndex: number | undefined;
    searchControl: FormControl<string | null>;
    private medMapper;
    get totalPagesLength(): number;
    get dropdownDisplayed(): boolean;
    ngOnInit(): void;
    ngAfterViewChecked(): void;
    ngOnDestroy(): void;
    handleAddPrescription(med: MedicationType): Promise<void>;
    onResetSearch(): void;
    handleKeyDown(event: KeyboardEvent): void;
    scrollToFocusedItem(): void;
    private initIntersectionObserver;
    get showSearchError(): boolean;
    static ɵfac: i0.ɵɵFactoryDeclaration<MedicationSearchComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<MedicationSearchComponent, "cardinal-medication-search", never, { "deliveryEnvironment": { "alias": "deliveryEnvironment"; "required": true; }; }, { "addPrescription": "addPrescription"; }, never, never, true, never>;
}
interface MedOrProduct {
    product?: MedicationProductType;
    medications?: MedicationType[];
}
export {};
