import { IWebComponentInstance, OmniaContext } from "../../../";
import { MediaPickerImageSettings, MediaPickerEnums, ImageInformation, MediaPickerVideo, MediaPickerStorageProviderContext, GuidValue, MediaPickerMedia, MediaPickerImageTransformationResult, Future } from "../../../models";
import { OmniaUxLocalization } from "../../UxModels";
import { MediaPickerProviderComponentProps } from "../../mediapicker";
import { VueComponentBase } from "../../VueComponentBase";
import { SettingsService, WebImageService, MediaPickerService } from "../../../services";
import { MediaProviderBaseLocalization } from "./loc/localize";
import { MediaPickerStore, MultilingualStore } from "../../../stores";
export interface MediaProviderComponentBaseSlots {
    bottom?: () => JSX.Element | Array<JSX.Element>;
}
export declare abstract class MediaProviderComponentBase extends VueComponentBase implements IWebComponentInstance, MediaPickerProviderComponentProps {
    providerContext: MediaPickerStorageProviderContext;
    providerId: GuidValue;
    saved: (result: MediaPickerMedia) => void;
    closed?: () => void;
    imageSettings?: MediaPickerImageSettings;
    preSelectedMedia?: MediaPickerVideo;
    selectableMediaTypes?: Array<MediaPickerEnums.OmniaMediaTypes>;
    setSearchKeyword: (value: string) => void;
    onChanged: (state: any) => void;
    enableMediaCaption?: boolean;
    uxLoc: OmniaUxLocalization;
    mediaProviderBaseLoc: MediaProviderBaseLocalization.locInterface;
    /** Define method to get data based on search keyword. Null is to hide the search box in media picker. */
    onSearch: (searchKeyword: string) => Promise<void>;
    protected providerSlots: MediaProviderComponentBaseSlots;
    protected onScroll: (payLoad: UIEvent) => void;
    protected settingsService: SettingsService<any>;
    protected webImageService: WebImageService;
    protected omniaContext: OmniaContext;
    protected mediaPickerService: MediaPickerService;
    protected mediaPickerStore: MediaPickerStore;
    protected multilingualStore: MultilingualStore;
    private limitedSizeScalingSettings;
    private imageTransformComponentInput;
    protected imageProviderResult: MediaPickerImageTransformationResult;
    private keepOriginalSizeOptionValue;
    private selectedScalingOption;
    private selectedImageScaling;
    private isRetryingScalingImage;
    private isShowLoading;
    private isShowLoadingOverlay;
    private isShowRetryImageScalingDialog;
    private isFileTypeIsNotSupportedDialog;
    private isShowImageScalingDialog;
    private selectedImageResolvablePromise;
    private isSaved;
    private selectedMediaInformation;
    constructor();
    protected save(resultToBeSaved: MediaPickerImageTransformationResult | MediaPickerVideo): void;
    protected transformImage(imageInfo: ImageInformation): Future<MediaPickerImageTransformationResult>;
    protected toggleLoadingUI(show: boolean, loadingStyle?: MediaPickerEnums.LoadingStyle): void;
    private setImageTransformInput;
    private getImageScalingSettingsKey;
    protected onImageTransformResultChanged(transformationResult: MediaPickerImageTransformationResult): void;
    private ensureRemoveBase64Format;
    private addNewImage;
    private initLimitedSizeScalingSettings;
    private checkIfFileSizeExceededLimitation;
    private handleValidatedImage;
    private handleImageScaling;
    private retryToScaleImage;
    private processLimitedImageFileSize;
    private onImageScalingOptionSelected;
    private handleSelectedScalingOptionFromDialog;
    private resizeImage;
    private closeImageScalingDialog;
    private renderImageTransformationBottomButtons;
    private resolveSavingImagePromise;
    private closeRetryImageScalingDialog;
    private closeFileTypeIsNotSupportedDialog;
    private onProviderContentScroll;
    private renderLoading;
    private renderCloseButton;
    private renderFileTypeIsNotSupportedDialog;
    private renderRetryImageScalingDialog;
    private renderImageTransformComponent;
    private renderImageScalingDialogDialog;
    private renderImageScalingDialogs;
    protected renderBase(getProviderSlotsFunc: () => Array<JSX.Element> | JSX.Element): VueTsxSupport.JSX.Element;
}
