import { MediaItemType } from '../../../models/swagger/DDD/Domain/Common/Entities/MediaItems/MediaItem';
import { ExtendedCropperProps } from '../../Cropper/Cropper';
import { ContentType } from '../../Documents/Document.types';
import { TextReplacements } from '../../Text/Text';
import { default as Compressor } from 'compressorjs';
import { FilePriority } from '../../FileSelect/MediaItemSelectInput';
import { GalleryPlaceholderFormat } from './PhotoPlaceholder/PhotoPlaceholder';
export declare const GALLERY_PHOTO_SCOPE: string;
export type MediaItemFile = {
    publicUrl?: string;
    publicThumbnailUrl?: string;
    id?: number;
    settings?: {
        toBeDeleted?: boolean;
        isAIGenerated?: boolean;
        removed?: boolean;
        objectType: string;
    };
    mediaItemContent?: {
        base64EncodedContent?: string;
        fileFormat?: string;
        objectType: string;
    };
    scope?: string;
    objectType: string;
    uuid?: string;
    filePriority?: FilePriority;
    mediaItemName?: string;
    mediaItemLabel?: string;
    file?: File | Blob;
    fileType?: ContentType;
    metadata?: MediaItemMetadata;
    type?: (typeof MediaItemType)[keyof typeof MediaItemType];
    isInvalid?: boolean;
    validationErrors?: {
        text: string;
        replacements?: TextReplacements;
    }[];
};
export type MediaItemMetadata = {
    videoMetadata?: VideoMetadata;
    imageMetadata?: ImageMetadata;
};
export type VideoMetadata = {
    duration?: number;
    width?: number;
    height?: number;
};
export type ImageMetadata = {
    width?: number;
    height?: number;
};
export type MediaItemFileWithMandatoryUid = MediaItemFile & {
    uuid: string;
};
export type GalleryChange = (type: 'ADD' | 'DELETE', modified: MediaItemFile[], allMediaItems: MediaItemFile[]) => void;
interface Props {
    className?: string;
    mediaItems: MediaItemFile[];
    editMode: boolean;
    onChange?: GalleryChange;
    canDownload?: boolean;
    downloading?: boolean;
    downloadCallback?: (mediaItem: MediaItemFile) => void;
    onSecondaryChange?: GalleryChange;
    placeholderConfig?: {
        text: string;
        format?: GalleryPlaceholderFormat;
    };
    config?: {
        maxNumberOfMediaItems?: number;
        maxNumberOfMediaItemsPerType?: Record<string, number>;
        removeDuplicates?: boolean;
        useCompressor?: boolean;
        compressorOptions?: Compressor.Options | undefined;
        useCropper?: boolean;
        cropperOptions?: ExtendedCropperProps | undefined;
        showFeedbackModal?: boolean;
        showLoadingModalDuringCompression?: boolean;
        acceptTypes?: ContentType[];
        acceptDifferentFileTypes?: boolean;
        alertType?: 'snackbar' | 'inline';
        forceOpenFileSelect?: boolean;
    };
}
export declare const Gallery: (props: Props) => import("react/jsx-runtime").JSX.Element;
export {};
