import * as i0 from '@angular/core';
import { OnChanges, OnDestroy, EventEmitter, TemplateRef, QueryList, ElementRef, NgZone, ChangeDetectorRef, SimpleChanges } from '@angular/core';
import * as i1 from '@angular/common';
import { SafeResourceUrl, DomSanitizer } from '@angular/platform-browser';
export * from 'docviewhelper';

type viewerType = 'google' | 'office' | 'mammoth' | 'pdf' | 'url';
type ViewerRenderPhase = 'idle' | 'loading' | 'ready' | 'error';
interface ViewerTemplateContext {
    $implicit: ViewerStateContext;
    state: ViewerStateContext;
}
interface ViewerStateContext {
    viewer: viewerType;
    url: string;
    phase: ViewerRenderPhase;
    errorText: string;
    retry: () => void;
    actionUrl: string;
}
declare class NgxDocViewerComponent implements OnChanges, OnDestroy {
    private domSanitizer;
    private ngZone;
    private cdr;
    loaded: EventEmitter<void>;
    loading: EventEmitter<ViewerStateContext>;
    error: EventEmitter<ViewerStateContext>;
    phaseChange: EventEmitter<ViewerStateContext>;
    url: string;
    queryParams: string;
    viewerUrl: string;
    googleCheckInterval: number;
    googleMaxChecks: number;
    googleFinalRetryDelay: number;
    disableContent: 'none' | 'all' | 'popout' | 'popout-hide';
    googleCheckContentLoaded: boolean;
    viewer: viewerType;
    overrideLocalhost: string;
    loadingText: string;
    errorTextOverride: string;
    retryButtonText: string;
    officeAutoRetry: boolean;
    officeRetryDelay: number;
    officeReloadButtonText: string;
    officeReloadButtonTitle: string;
    secondaryActionText: string;
    secondaryActionMode: 'open' | 'download';
    loadingTemplate?: TemplateRef<unknown>;
    errorTemplate?: TemplateRef<unknown>;
    errorActionsTemplate?: TemplateRef<unknown>;
    officeReloadTemplate?: TemplateRef<unknown>;
    iframes?: QueryList<ElementRef>;
    fullUrl?: SafeResourceUrl;
    externalViewer: boolean;
    docHtml: string;
    configuredViewer: viewerType;
    showIframe: boolean;
    renderPhase: ViewerRenderPhase;
    errorText: string;
    failedUrl: string;
    retryNonce: number;
    loadingTemplateContext: ViewerTemplateContext;
    errorTemplateContext: ViewerTemplateContext;
    private checkIFrameSubscription?;
    private loadVersion;
    private externalLoadTimeoutId?;
    private googleFinalRetryTimeoutId?;
    private googleFinalRetriedSourceKey?;
    private currentGoogleSourceKey?;
    private officeRetryTimeoutId?;
    private officeAutoRetriedSourceKey?;
    private currentOfficeSourceKey?;
    private lastEmittedPhase?;
    constructor(domSanitizer: DomSanitizer, ngZone: NgZone, cdr: ChangeDetectorRef);
    ngOnDestroy(): void;
    ngOnChanges(changes: SimpleChanges): Promise<void>;
    retryLoad(): void;
    private reloadIframe;
    private scheduleViewerRecovery;
    private scheduleGoogleRecovery;
    iframeLoaded(): void;
    objectLoaded(): void;
    private reloadMammoth;
    private scheduleExternalLoadTimeout;
    private clearExternalLoadTimeout;
    private clearGoogleFinalRetry;
    private clearOfficeRetry;
    private scheduleOfficeRetry;
    private scheduleGoogleFinalRetry;
    get displayedErrorText(): string;
    private updateTemplateContexts;
    private createTemplateContext;
    private createStateContext;
    private setRenderPhase;
    private emitLifecycleIfNeeded;
    static ɵfac: i0.ɵɵFactoryDeclaration<NgxDocViewerComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<NgxDocViewerComponent, "ngx-doc-viewer", never, { "url": { "alias": "url"; "required": false; }; "queryParams": { "alias": "queryParams"; "required": false; }; "viewerUrl": { "alias": "viewerUrl"; "required": false; }; "googleCheckInterval": { "alias": "googleCheckInterval"; "required": false; }; "googleMaxChecks": { "alias": "googleMaxChecks"; "required": false; }; "googleFinalRetryDelay": { "alias": "googleFinalRetryDelay"; "required": false; }; "disableContent": { "alias": "disableContent"; "required": false; }; "googleCheckContentLoaded": { "alias": "googleCheckContentLoaded"; "required": false; }; "viewer": { "alias": "viewer"; "required": false; }; "overrideLocalhost": { "alias": "overrideLocalhost"; "required": false; }; "loadingText": { "alias": "loadingText"; "required": false; }; "errorTextOverride": { "alias": "errorTextOverride"; "required": false; }; "retryButtonText": { "alias": "retryButtonText"; "required": false; }; "officeAutoRetry": { "alias": "officeAutoRetry"; "required": false; }; "officeRetryDelay": { "alias": "officeRetryDelay"; "required": false; }; "officeReloadButtonText": { "alias": "officeReloadButtonText"; "required": false; }; "officeReloadButtonTitle": { "alias": "officeReloadButtonTitle"; "required": false; }; "secondaryActionText": { "alias": "secondaryActionText"; "required": false; }; "secondaryActionMode": { "alias": "secondaryActionMode"; "required": false; }; }, { "loaded": "loaded"; "loading": "loading"; "error": "error"; "phaseChange": "phaseChange"; }, ["loadingTemplate", "errorTemplate", "errorActionsTemplate", "officeReloadTemplate"], never, true, never>;
}

declare class NgxDocViewerModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<NgxDocViewerModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<NgxDocViewerModule, never, [typeof i1.CommonModule, typeof NgxDocViewerComponent], [typeof NgxDocViewerComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<NgxDocViewerModule>;
}

export { NgxDocViewerComponent, NgxDocViewerModule };
export type { ViewerStateContext, viewerType };
