import { MediaPickerEnums, MediaPickerRenditionData, MediaPickerTransformedBase64Image } from "..";
import { MediaPickerBase64Image } from "./MediaPickerBase64Image";
import { MediaPickerImageRatioDefinition, MediaPickerRollupImageRatio } from "./MediaPickerImageRatio";
import { MediaPickerImageScalingDefinition } from "./MediaPickerImageScaling";
import { MediaPickerPersistedImageInformation } from "./MediaPickerPersistedImageDetails";
export interface MediaInformation {
    mediaType: MediaPickerEnums.OmniaMediaTypes;
}
export interface ImageInformation extends MediaInformation, MediaPickerBase64Image {
    sizeInBytes: number;
    sourceUrl?: string;
}
export interface VideoInformation extends MediaInformation {
    videoUrl: string;
    thumbnailUrl?: string;
    graphDriveId?: string;
    graphDriveItemId?: string;
}
export interface MediaItem {
    mediaType: MediaPickerEnums.OmniaMediaTypes;
    thumbnailUrl: string;
}
export interface ImageItem extends MediaItem {
    imageUrl: string;
    fileName: string;
}
export interface VideoItem extends MediaItem {
    videoUrl: string;
}
export interface BingMediaItem extends ImageItem {
    height: number;
    width: number;
    contentSize: number;
    encodingFormat: string;
}
export interface ImageEditorData {
    transformedBase64?: MediaPickerTransformedBase64Image;
    renditionData?: Array<MediaPickerRenditionData>;
    imageAlternateText?: string;
}
export interface MediaPickerLimitedSizeSettings {
    fileSizeBytesLimit: number;
}
export interface ImageDataInfo {
    base64String: string;
    imageWidth: number;
    imageHeight: number;
    size: number;
    mimeType: string;
    format: string;
}
export interface MediaPickerImageInformation {
    width: number;
    height: number;
    sizeBytes: number;
}
export interface MediaPickerPersistedImage {
    providerImageInformation: MediaPickerPersistedImageInformation;
    metadata: Array<MediaPickerImageMetadata>;
}
export interface MediaPickerImageMetadata {
    name: string;
    value: string;
}
export interface MediaPickerImageSettings {
    /** Null is always show scaling options */
    imageScalingOptions?: MediaPickerImageScalingOptions;
    /** Null is hide crop button, Empty array is free transform */
    selectableRatios?: Array<MediaPickerImageRatioDefinition>;
    rollupRatios?: Array<MediaPickerRollupImageRatio>;
    /** True: show transformation step. False: do not show transformation but still handle scaling, rollup image will not be generated */
    disableTransformations: boolean;
    /** force using a custom image scaling options, i.e. hard-code a scaling option based on specific requirements */
    customImageScalingDefinition?: MediaPickerImageScalingDefinition;
}
export interface MediaPickerImageScalingOptions {
    /** Scaling option that will be selected by default*/
    preSelectedScalingOption: MediaPickerImageScalingDefinition;
    /** True: show scaling options and auto select default value. False: scale image by default value without showing scaling options  */
    showScalingOptions: boolean;
}
export interface ImageCropzoneRect {
    left: number;
    top: number;
    width: number;
    height: number;
}
export interface ImageTransformerOptions {
    editor: ImageTransformerEditorOptions;
    rollup: boolean;
    setting: boolean;
}
export interface ImageTransformerEditorOptions {
    crop: boolean;
    flip: boolean;
    filter: boolean;
    reset: boolean;
}
