import * as swiper_types from 'swiper/types';
import * as i0 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;
    thumbnail?: string;
};
declare class AXMediaViewerBaseComponent {
    message: AXMediaViewerData;
    static ɵfac: i0.ɵɵFactoryDeclaration<AXMediaViewerBaseComponent, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<AXMediaViewerBaseComponent>;
}

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

type Thumbnail = {
    tubmnailImage: string;
    svg: string;
    type: string;
    id: string;
};
declare class AXMediaViewerContainerComponent implements OnDestroy {
    #private;
    dataArray: i0.InputSignal<AXMediaViewerData[]>;
    thumbnail: i0.InputSignal<boolean>;
    protected service: AXMediaViewerService;
    protected sanitizer: DomSanitizer;
    protected thumbnailArray: i0.WritableSignal<Thumbnail[]>;
    protected option: i0.WritableSignal<swiper_types.SwiperOptions>;
    protected option2: i0.WritableSignal<swiper_types.SwiperOptions>;
    isFullScreen: i0.WritableSignal<boolean>;
    private swiperRef;
    private swiperRef2;
    private fullScreenButton;
    private globalOptions;
    private setActiveIndex;
    getActiveIndex(): number;
    ngOnDestroy(): void;
    next(): void;
    prev(): void;
    interVal: any;
    goToIndex(index: number, speed?: number): void;
    protected closeHandler(): void;
    /** @ignore */
    get __hostClass(): string;
    static ɵfac: i0.ɵɵFactoryDeclaration<AXMediaViewerContainerComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<AXMediaViewerContainerComponent, "ax-media-viewer-container", never, { "dataArray": { "alias": "dataArray"; "required": false; "isSignal": true; }; "thumbnail": { "alias": "thumbnail"; "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: i0.ɵɵFactoryDeclaration<AXMediaViewerTypeRegistryService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<AXMediaViewerTypeRegistryService>;
}

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

declare class AXAudioPlayerComponent extends AXMediaViewerBaseComponent {
    dataObject: i0.WritableSignal<AXMediaViewerData>;
    constructor();
    static ɵfac: i0.ɵɵFactoryDeclaration<AXAudioPlayerComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<AXAudioPlayerComponent, "ax-audio-player", never, {}, {}, never, never, true, never>;
}

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

declare class AXImageViewerComponent extends AXMediaViewerBaseComponent {
    static ɵfac: i0.ɵɵFactoryDeclaration<AXImageViewerComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<AXImageViewerComponent, "ax-image-viewer", never, {}, {}, never, never, true, never>;
}

declare class PdfComponent extends AXMediaViewerBaseComponent {
    sanitizer: DomSanitizer;
    static ɵfac: i0.ɵɵFactoryDeclaration<PdfComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<PdfComponent, "ax-pdf", never, {}, {}, never, never, true, never>;
}

declare class VideoPlayerComponent extends AXMediaViewerBaseComponent {
    dataObject: i0.WritableSignal<AXMediaViewerData>;
    constructor();
    static ɵfac: i0.ɵɵFactoryDeclaration<VideoPlayerComponent, never>;
    static ɵcmp: i0.ɵɵ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: i0.ɵɵFactoryDeclaration<AXMediaViewerModule, never>;
    static ɵmod: i0.ɵɵ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 AXMediaViewerContainerComponent, typeof AXMediaViewerSliderComponent, typeof AXAudioPlayerComponent, typeof AXImageViewerComponent, typeof PdfComponent, typeof VideoPlayerComponent, typeof AXFileInfoComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<AXMediaViewerModule>;
}

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