import { EventEmitter, OnInit, OnDestroy, OnChanges, SimpleChanges, ElementRef } from '@angular/core';
import { PdfOptions, PdfError } from '../models/pdf-options.model';
import * as i0 from "@angular/core";
/**
 * Main component for rendering PDFs
 * Uses modern Angular patterns including standalone components and signals
 */
export declare class PdfViewerComponent implements OnInit, OnDestroy, OnChanges {
    src: string | Uint8Array;
    options?: PdfOptions;
    pageChange: EventEmitter<number>;
    documentLoaded: EventEmitter<any>;
    loadingStateChange: EventEmitter<boolean>;
    errorOccurred: EventEmitter<PdfError>;
    documentLoadError: EventEmitter<any>;
    errorStateChange: EventEmitter<string | null>;
    canvasContainer: ElementRef<HTMLDivElement>;
    private pdfService;
    private destroy$;
    currentPage: import("@angular/core").WritableSignal<number>;
    totalPages: import("@angular/core").WritableSignal<number>;
    zoom: import("@angular/core").WritableSignal<number>;
    rotation: import("@angular/core").WritableSignal<number>;
    loading: import("@angular/core").WritableSignal<boolean>;
    error: import("@angular/core").WritableSignal<string | null>;
    private currentRenderTask;
    /**
     * Set loading state and emit event
     */
    private setLoadingState;
    /**
     * Set error state and emit event
     */
    private setErrorState;
    /**
     * Handle input changes - CRITICAL for src changes
     */
    ngOnChanges(changes: SimpleChanges): void;
    /**
     * Initialize the component
     */
    ngOnInit(): void;
    /**
     * Perform complete cleanup of all PDF rendering artifacts
     */
    private performCompleteCleanup;
    /**
     * Clean up and reload PDF when src changes
     */
    private cleanupAndReload;
    /**
     * Clean up subscriptions on component destruction
     */
    ngOnDestroy(): void;
    /**
     * Load the PDF document
     */
    private loadDocument;
    /**
     * Render a specific page of the PDF
     * @param pageNumber The page number to render
     */
    private renderPage;
    /**
     * Render all pages of the PDF in continuous mode
     */
    private renderAllPages;
    /**
     * Observe page visibility to update current page number
     */
    private observePageVisibility;
    /**
     * Handle page change event from controls
     * @param pageNumber The new page number
     */
    onPageChange(pageNumber: number): void;
    /**
     * Handle zoom change event from controls
     * @param zoom The new zoom level
     */
    onZoomChange(zoom: number): void;
    /**
     * Handle rotation change event from controls
     * @param rotation The rotation change in degrees
     */
    onRotationChange(rotation: number): void;
    /**
     * Handle download button click
     */
    onDownload(): void;
    /**
     * Handle print button click
     */
    onPrint(): void;
    /**
     * Handle search request
     * @param text The text to search for
     */
    onSearch(text: string): Promise<void>;
    /**
     * Clear all search highlights
     */
    private clearSearchHighlights;
    /**
     * Handle and emit PDF errors with proper categorization
     */
    private handlePdfError;
    /**
     * Get user-friendly error messages based on error type
     */
    private getErrorMessage;
    /**
     * Categorize errors based on their characteristics
     */
    private categorizeError;
    static ɵfac: i0.ɵɵFactoryDeclaration<PdfViewerComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<PdfViewerComponent, "ng-pdf-viewer", never, { "src": { "alias": "src"; "required": false; }; "options": { "alias": "options"; "required": false; }; }, { "pageChange": "pageChange"; "documentLoaded": "documentLoaded"; "loadingStateChange": "loadingStateChange"; "errorOccurred": "errorOccurred"; "documentLoadError": "documentLoadError"; "errorStateChange": "errorStateChange"; }, never, never, true, never>;
}
