import { InjectionKey } from 'vue';
import { ClassType, StyleType } from '@vexip-ui/config';
import { SkeletonProps } from '../skeleton';
export type ImageObjectFit = 'fill' | 'contain' | 'cover' | 'none' | 'scale-down';
export type ImageSkeletonProps = Pick<SkeletonProps, 'tag' | 'activated' | 'iconScale' | 'imageIcon'> & {
    class?: ClassType;
    StyleType?: StyleType;
};
export interface ImageState {
    src: string;
    index: number;
    total: number;
}
export interface GroupState {
    showAll: boolean;
    preview: boolean;
    increaseItem: (item: ImageState) => void;
    decreaseItem: (item: ImageState) => void;
    handlePreview: (item: ImageState) => void;
}
export interface ImageSlots {
    placeholder?: () => any;
    error?: () => any;
    preview?: (params: {
        src: string;
    }) => any;
}
export interface ImageGroupSlots {
    /**
     * @internal
     */
    default?: () => any;
    preview?: (params: {
        src: string;
    }) => any;
}
export interface ImageViewerSlots {
    default?: (params: {
        src: string;
    }) => any;
    prev?: (params: {
        disabled: boolean;
    }) => any;
    next?: (params: {
        disabled: boolean;
    }) => any;
    close?: () => any;
}
export declare const GROUP_STATE: InjectionKey<GroupState>;
export declare const objectFitValues: readonly ImageObjectFit[];
