import type { CSSProperties, ExtractPropTypes, ImgHTMLAttributes, Plugin, PropType, VNode } from 'vue';
import { type ImagePreviewType, imageProps } from '../vc-image/src/Image';
import PreviewGroup from './PreviewGroup';
import type { CustomSlotsType, VueNode } from '../_util/type';
import { type JSX } from 'vue/jsx-runtime';
import type { ImgInfo } from '../vc-image/src/Preview';
export interface ImageProgressConfig {
    percent?: number;
    /** Custom render function, receives default progress UI and percent */
    render?: (progress: VNode, percent: number) => VueNode;
}
export type PlaceholderType = VNode | {
    progress?: boolean | ImageProgressConfig;
};
declare const _imageProps: () => {
    placeholder: {
        type: PropType<PlaceholderType>;
        default: PlaceholderType;
    };
    style: PropType<CSSProperties>;
    src: StringConstructor;
    wrapperClassName: StringConstructor;
    wrapperStyle: {
        type: PropType<CSSProperties>;
        default: CSSProperties;
    };
    rootClassName: StringConstructor;
    prefixCls: StringConstructor;
    previewPrefixCls: StringConstructor;
    width: (StringConstructor | NumberConstructor)[];
    height: (StringConstructor | NumberConstructor)[];
    fallback: StringConstructor;
    preview: {
        type: PropType<boolean | ImagePreviewType>;
        default: boolean | ImagePreviewType;
    };
    onClick: {
        type: PropType<import("../_util/EventInterface").MouseEventHandler>;
    };
    onError: {
        type: PropType<OnErrorEventHandlerNonNull>;
    };
};
export type ImageProps = Partial<ExtractPropTypes<ReturnType<typeof _imageProps>> & Omit<ImgHTMLAttributes, 'placeholder' | 'onClick'>>;
type Noop = () => void;
export type ImageToolbarRenderSlotType = {
    originalNodes: JSX.Element[];
    actions: {
        onFlipX: Noop;
        onFlipY: Noop;
        onRotateLeft: Noop;
        onRotateRight: Noop;
        onZoomIn: Noop;
        onZoomOut: Noop;
    };
    transform: {
        x: number;
        y: number;
        scale: number;
        rotate: number;
        flip: {
            x: number;
            y: number;
        };
    };
    image: ImgInfo;
    current?: number;
    total?: number;
};
export declare function mergeCover(cover?: ImagePreviewType['cover'], coverSlot?: () => any): false | {
    placement: "top" | "bottom" | "center";
    coverNode: any;
};
export { imageProps };
export { PreviewGroup as ImagePreviewGroup };
declare const _default: {
    new (...args: any[]): import("vue").CreateComponentPublicInstanceWithMixins<Readonly<ExtractPropTypes<{
        placeholder: {
            type: PropType<PlaceholderType>;
            default: PlaceholderType;
        };
        style: PropType<CSSProperties>;
        src: StringConstructor;
        wrapperClassName: StringConstructor;
        wrapperStyle: {
            type: PropType<CSSProperties>;
            default: CSSProperties;
        };
        rootClassName: StringConstructor;
        prefixCls: StringConstructor;
        previewPrefixCls: StringConstructor;
        width: (StringConstructor | NumberConstructor)[];
        height: (StringConstructor | NumberConstructor)[];
        fallback: StringConstructor;
        preview: {
            type: PropType<boolean | ImagePreviewType>;
            default: boolean | ImagePreviewType;
        };
        onClick: {
            type: PropType<import("../_util/EventInterface").MouseEventHandler>;
        };
        onError: {
            type: PropType<OnErrorEventHandlerNonNull>;
        };
    }>> & Readonly<{}>, () => VueNode, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, import("vue").PublicProps, {
        placeholder: VNode<import("vue").RendererNode, import("vue").RendererElement, {
            [key: string]: any;
        }> | {
            progress?: boolean | ImageProgressConfig;
        };
        wrapperStyle: CSSProperties;
        preview: boolean | ImagePreviewType;
    }, true, {}, CustomSlotsType<{
        placeholder: any;
        cover: any;
        closeIcon: any;
        toolbarRender: (props: ImageToolbarRenderSlotType) => any;
    }>, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, {}, any, import("vue").ComponentProvideOptions, {
        P: {};
        B: {};
        D: {};
        C: {};
        M: {};
        Defaults: {};
    }, Readonly<ExtractPropTypes<{
        placeholder: {
            type: PropType<PlaceholderType>;
            default: PlaceholderType;
        };
        style: PropType<CSSProperties>;
        src: StringConstructor;
        wrapperClassName: StringConstructor;
        wrapperStyle: {
            type: PropType<CSSProperties>;
            default: CSSProperties;
        };
        rootClassName: StringConstructor;
        prefixCls: StringConstructor;
        previewPrefixCls: StringConstructor;
        width: (StringConstructor | NumberConstructor)[];
        height: (StringConstructor | NumberConstructor)[];
        fallback: StringConstructor;
        preview: {
            type: PropType<boolean | ImagePreviewType>;
            default: boolean | ImagePreviewType;
        };
        onClick: {
            type: PropType<import("../_util/EventInterface").MouseEventHandler>;
        };
        onError: {
            type: PropType<OnErrorEventHandlerNonNull>;
        };
    }>> & Readonly<{}>, () => VueNode, {}, {}, {}, {
        placeholder: VNode<import("vue").RendererNode, import("vue").RendererElement, {
            [key: string]: any;
        }> | {
            progress?: boolean | ImageProgressConfig;
        };
        wrapperStyle: CSSProperties;
        preview: boolean | ImagePreviewType;
    }>;
    __isFragment?: never;
    __isTeleport?: never;
    __isSuspense?: never;
} & import("vue").ComponentOptionsBase<Readonly<ExtractPropTypes<{
    placeholder: {
        type: PropType<PlaceholderType>;
        default: PlaceholderType;
    };
    style: PropType<CSSProperties>;
    src: StringConstructor;
    wrapperClassName: StringConstructor;
    wrapperStyle: {
        type: PropType<CSSProperties>;
        default: CSSProperties;
    };
    rootClassName: StringConstructor;
    prefixCls: StringConstructor;
    previewPrefixCls: StringConstructor;
    width: (StringConstructor | NumberConstructor)[];
    height: (StringConstructor | NumberConstructor)[];
    fallback: StringConstructor;
    preview: {
        type: PropType<boolean | ImagePreviewType>;
        default: boolean | ImagePreviewType;
    };
    onClick: {
        type: PropType<import("../_util/EventInterface").MouseEventHandler>;
    };
    onError: {
        type: PropType<OnErrorEventHandlerNonNull>;
    };
}>> & Readonly<{}>, () => VueNode, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, {
    placeholder: VNode<import("vue").RendererNode, import("vue").RendererElement, {
        [key: string]: any;
    }> | {
        progress?: boolean | ImageProgressConfig;
    };
    wrapperStyle: CSSProperties;
    preview: boolean | ImagePreviewType;
}, {}, string, CustomSlotsType<{
    placeholder: any;
    cover: any;
    closeIcon: any;
    toolbarRender: (props: ImageToolbarRenderSlotType) => any;
}>, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & Plugin<any[], any[]> & {
    readonly PreviewGroup: typeof PreviewGroup;
};
export default _default;
