import { ModuleName } from "@readium/navigator-html-injectables";
import { Locator, Publication, Page, Link } from "@readium/shared";
import { FrameCommsListener } from "../frame";
import { FXLFrameManager } from "./FXLFrameManager";
import { FXLPeripherals } from "./FXLPeripherals";
import { VisualNavigatorViewport, IContentProtectionConfig, IKeyboardPeripheralsConfig } from "../../Navigator";
import { Injector } from "../../injection/Injector";
export declare class FXLFramePoolManager {
    private readonly container;
    private readonly positions;
    private readonly pool;
    private readonly blobs;
    private readonly inprogress;
    private readonly delayedShow;
    private readonly delayedTimeout;
    private currentBaseURL;
    private previousFrames;
    private readonly injector;
    private readonly contentProtectionConfig;
    private readonly keyboardPeripheralsConfig;
    private readonly bookElement;
    readonly spineElement: HTMLDivElement;
    private readonly pub;
    width: number;
    height: number;
    private transform;
    currentSlide: number;
    private spreader;
    private spread;
    private readonly spreadPresentation;
    private orientationInternal;
    private containerHeightCached;
    private resizeTimeout;
    readonly peripherals: FXLPeripherals;
    constructor(container: HTMLElement, positions: Locator[], pub: Publication, injector?: Injector | null, contentProtectionConfig?: IContentProtectionConfig, keyboardPeripheralsConfig?: IKeyboardPeripheralsConfig);
    private _listener;
    set listener(listener: FrameCommsListener);
    get listener(): FrameCommsListener;
    get doNotDisturb(): boolean;
    /**
     * When window resizes, resize slider components as well
     */
    resizeHandler(slide?: boolean, fast?: boolean): void;
    /**
     * It is important that these values be cached to avoid spamming them on redraws, they are expensive.
     */
    private updateDimensions;
    get rtl(): boolean;
    private get single();
    get perPage(): 1 | 2;
    get threshold(): number;
    get portrait(): boolean;
    updateSpineStyle(animate: boolean, fast?: boolean): void;
    updateBookStyle(initial?: boolean): void;
    /**
     * Go to slide with particular index
     * @param {number} index - Item index to slide to.
     */
    goTo(index: number): void;
    onChange(): void;
    private get offset();
    get length(): number;
    get slength(): number;
    get shift(): boolean;
    private get nLandscape();
    setPerPage(perPage: number | null): void;
    /**
     * Moves sliders frame to position of currently active slide
     */
    slideToCurrent(enableTransition?: boolean, fast?: boolean): void;
    bounce(rtl?: boolean): void;
    /**
     * Go to next slide.
     * @param {number} [howManySlides=1] - How many items to slide forward.
     * @returns {boolean} Whether or not going to next was possible
     */
    next(howManySlides?: number): boolean;
    /**
     * Go to previous slide.
     * @param {number} [howManySlides=1] - How many items to slide backward.
     * @returns {boolean} Whether or not going to prev was possible
     */
    prev(howManySlides?: number): boolean;
    get ownerWindow(): Window & typeof globalThis;
    destroy(): Promise<void>;
    makeSpread(itemIndex: number): Link[];
    reAlign(index?: number): number;
    spreadPosition(spread: Link[], target: Link): Page;
    waitForItem(href: string): Promise<void>;
    cancelShowing(href: string): Promise<void>;
    update(pub: Publication, locator: Locator, modules: ModuleName[], _force?: boolean): Promise<void>;
    get currentFrames(): (FXLFrameManager | undefined)[];
    get currentBounds(): DOMRect;
    get viewport(): VisualNavigatorViewport;
    private getCurrentNumbers;
    deselect(): void;
}
