import * as swiper_types from 'swiper/types';
import * as _angular_core from '@angular/core';
import { Type, OnDestroy, ModuleWithProviders } from '@angular/core';
import { DomSanitizer } from '@angular/platform-browser';
import * as i4 from '@angular/cdk/portal';
import { ComponentPortal, CdkPortalOutletAttachedRef } from '@angular/cdk/portal';
import * as i1 from '@angular/common';
import * as i2 from '@acorex/components/button';
import * as i3 from '@acorex/components/decorators';
import * as i5 from '@angular/forms';
import * as i6 from '@acorex/components/image';
import * as i7 from '@acorex/components/loading';
import * as i8 from '@acorex/cdk/carousel';
import * as i9 from '@acorex/components/pdf-reader';
import * as i10 from '@acorex/components/video-player';

interface AXMediaViewerType {
    name: string;
    component: Type<any>;
}
type AXMediaViewerData = {
    id: string;
    name?: string;
    size?: string;
    type: 'image' | 'audio' | 'pdf' | 'video';
    url: string | (() => Promise<string>);
    thumbnailUrl?: string | (() => Promise<string>);
    tooltip?: string;
};
type AXThumbnail = {
    thumbnailImage: string | (() => Promise<string>);
    svg: string;
    type: string;
    id: string;
    tooltip?: string;
    index: number;
};
declare class AXMediaViewerBaseComponent {
    message: {
        data: AXMediaViewerData;
        index: number;
    };
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMediaViewerBaseComponent, never>;
    static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXMediaViewerBaseComponent>;
}

declare class AXMediaViewerService {
    dataArray: _angular_core.WritableSignal<AXMediaViewerData[]>;
    selectedIndex: _angular_core.WritableSignal<number>;
    dirtyItems: Map<any, any>;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMediaViewerService, never>;
    static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXMediaViewerService>;
}

declare class AXMediaViewerContainerComponent implements OnDestroy {
    #private;
    dataArray: _angular_core.InputSignal<AXMediaViewerData[]>;
    thumbnail: _angular_core.InputSignal<boolean>;
    pagination: _angular_core.InputSignal<boolean>;
    protected service: AXMediaViewerService;
    protected sanitizer: DomSanitizer;
    protected isMobile: boolean;
    private readonly elementRef;
    protected thumbnailArray: _angular_core.WritableSignal<AXThumbnail[]>;
    protected option: _angular_core.WritableSignal<swiper_types.SwiperOptions>;
    protected thumbnailOption: _angular_core.WritableSignal<swiper_types.SwiperOptions>;
    protected isFullScreen: _angular_core.WritableSignal<boolean>;
    private swiperRef;
    private swiperRef2;
    private fullScreenButton;
    private globalOptions;
    private setActiveIndex;
    getActiveIndex(): number;
    ngOnDestroy(): void;
    next(): void;
    prev(): void;
    private interVal?;
    goToIndex(index: number, speed?: number): void;
    private init;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMediaViewerContainerComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMediaViewerContainerComponent, "ax-media-viewer-container", never, { "dataArray": { "alias": "dataArray"; "required": false; "isSignal": true; }; "thumbnail": { "alias": "thumbnail"; "required": false; "isSignal": true; }; "pagination": { "alias": "pagination"; "required": false; "isSignal": true; }; }, {}, ["fullScreenButton"], ["ax-header", "ax-suffix", "ax-prefix"], true, never>;
}

declare class AXMediaViewerTypeRegistryService {
    private plugins;
    register(...plugins: AXMediaViewerType[]): void;
    resolve(name: string): AXMediaViewerType | undefined;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMediaViewerTypeRegistryService, never>;
    static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXMediaViewerTypeRegistryService>;
}

declare class AXMediaViewerSliderComponent {
    #private;
    protected service: AXMediaViewerService;
    dataObject: _angular_core.InputSignal<AXMediaViewerData>;
    index: _angular_core.InputSignal<unknown>;
    /**  @ignore */
    protected portal: _angular_core.WritableSignal<ComponentPortal<any>>;
    /**  @ignore */
    protected registryService: AXMediaViewerTypeRegistryService;
    /**  @ignore */
    protected _handleAttached(ref: CdkPortalOutletAttachedRef): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMediaViewerSliderComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMediaViewerSliderComponent, "ax-media-viewer-slider", never, { "dataObject": { "alias": "dataObject"; "required": false; "isSignal": true; }; "index": { "alias": "index"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
}

declare class AXAudioPlayerComponent extends AXMediaViewerBaseComponent {
    #private;
    protected src: _angular_core.WritableSignal<any>;
    protected service: AXMediaViewerService;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXAudioPlayerComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXAudioPlayerComponent, "ax-audio-player", never, {}, {}, never, never, true, never>;
}

declare class AXFileInfoComponent {
    protected service: AXMediaViewerService;
    protected infoData: _angular_core.Signal<AXMediaViewerData>;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXFileInfoComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXFileInfoComponent, "ax-file-info", never, {}, {}, never, never, true, never>;
}

declare class AXImageViewerComponent extends AXMediaViewerBaseComponent {
    #private;
    protected hasError: _angular_core.WritableSignal<boolean>;
    protected src: _angular_core.WritableSignal<any>;
    protected service: AXMediaViewerService;
    protected loading: _angular_core.WritableSignal<boolean>;
    protected handleImageError(): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXImageViewerComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXImageViewerComponent, "ax-image-viewer", never, {}, {}, never, never, true, never>;
}

declare class PdfComponent extends AXMediaViewerBaseComponent {
    #private;
    sanitizer: DomSanitizer;
    protected src: _angular_core.WritableSignal<any>;
    protected service: AXMediaViewerService;
    protected loading: _angular_core.WritableSignal<boolean>;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<PdfComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<PdfComponent, "ax-pdf", never, {}, {}, never, never, true, never>;
}

declare class AXThumbnailViewerComponent extends AXMediaViewerBaseComponent implements OnDestroy {
    #private;
    protected hasError: _angular_core.WritableSignal<boolean>;
    protected src: _angular_core.WritableSignal<any>;
    item: _angular_core.InputSignal<string | (() => Promise<string>)>;
    index: _angular_core.InputSignal<number>;
    protected service: AXMediaViewerService;
    private host;
    protected loading: _angular_core.WritableSignal<boolean>;
    private observer;
    private isElementVisible;
    protected handleImageError(): void;
    private observeElementVisibility;
    private cleanupObserver;
    ngOnDestroy(): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXThumbnailViewerComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXThumbnailViewerComponent, "ax-thumbnail-viewer", never, { "item": { "alias": "item"; "required": false; "isSignal": true; }; "index": { "alias": "index"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
}

declare class VideoPlayerComponent extends AXMediaViewerBaseComponent {
    #private;
    protected src: _angular_core.WritableSignal<any>;
    protected service: AXMediaViewerService;
    protected loading: _angular_core.WritableSignal<boolean>;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<VideoPlayerComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<VideoPlayerComponent, "ax-video", never, {}, {}, never, never, true, never>;
}

interface AXMediaViewerModuleConfig {
    types: AXMediaViewerType[];
}
declare class AXMediaViewerModule {
    constructor();
    static forRoot(config?: AXMediaViewerModuleConfig): ModuleWithProviders<AXMediaViewerModule>;
    static forChild(config?: AXMediaViewerModuleConfig): ModuleWithProviders<AXMediaViewerModule>;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMediaViewerModule, never>;
    static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXMediaViewerModule, never, [typeof i1.CommonModule, typeof i2.AXButtonModule, typeof i3.AXDecoratorModule, typeof i4.CdkPortalOutlet, typeof i5.FormsModule, typeof i6.AXImageModule, typeof i7.AXLoadingModule, typeof i8.AXCarouselDirective, typeof i9.AXPdfReaderModule, typeof i10.AXVideoPlayerModule, typeof AXMediaViewerContainerComponent, typeof AXMediaViewerSliderComponent, typeof AXAudioPlayerComponent, typeof AXImageViewerComponent, typeof PdfComponent, typeof VideoPlayerComponent, typeof AXFileInfoComponent, typeof AXThumbnailViewerComponent], [typeof AXMediaViewerContainerComponent, typeof AXMediaViewerSliderComponent, typeof AXAudioPlayerComponent, typeof AXImageViewerComponent, typeof PdfComponent, typeof VideoPlayerComponent, typeof AXFileInfoComponent, typeof AXThumbnailViewerComponent]>;
    static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXMediaViewerModule>;
}

export { AXAudioPlayerComponent, AXFileInfoComponent, AXImageViewerComponent, AXMediaViewerBaseComponent, AXMediaViewerContainerComponent, AXMediaViewerModule, AXMediaViewerSliderComponent, AXThumbnailViewerComponent, PdfComponent, VideoPlayerComponent };
export type { AXMediaViewerData, AXMediaViewerModuleConfig, AXMediaViewerType, AXThumbnail };
