import { ImgHTMLAttributes, ReactNode } from 'react';
import { IMAGE_KEY_COMPONENT } from './constant';
import { ImageSlots } from './slots/ImageEnum';
import { Theme } from '@mui/material';
import { M4LOverridesStyleRules } from '../../@types/augmentations';
export type Effect = 'blur' | 'black-and-white' | 'opacity';
export type ScrollPosition = {
    x: number;
    y: number;
};
export type IntersectComponentRef = HTMLSpanElement & {
    setIsVisible?: (visible: boolean) => void;
};
export interface IntersectComponentProps {
    setIsVisible: (visible: boolean) => void;
    threshold: number;
    enableIntersectionObserver: boolean;
    scrollPosition?: ScrollPosition;
    dataTestId?: string;
    /** When provided, the placeholder span uses these dimensions while visibility is determined; otherwise 100%. */
    width?: number | string;
    /** When provided, the placeholder span uses these dimensions while visibility is determined; otherwise 100%. */
    height?: number | string;
}
export interface IntersectComponentScrollProps extends IntersectComponentProps {
    delayMethod?: 'debounce' | 'throttle';
    delayTime?: number;
}
export interface LazyLoadComponentProps extends Omit<ImageProps, 'enableIntersectionObserver' | 'threshold'>, Omit<IntersectComponentProps, 'setIsVisible'> {
    children: ReactNode;
}
export interface ImageProps extends Omit<IntersectComponentProps, 'setIsVisible' | 'threshold' | 'enableIntersectionObserver'>, ImgHTMLAttributes<HTMLImageElement> {
    alt?: string;
    threshold?: number;
    enableIntersectionObserver?: boolean;
    className?: string;
    dataTestId?: string;
    /**
     * Si es verdadero, la imagen se ajusta al contenedor y se recorta si es necesario.
     */
    cover?: boolean;
}
export type ImageSlotsType = keyof typeof ImageSlots;
export interface ImageOwnerState {
    isSkeleton?: boolean;
    cover?: boolean;
}
export type ImageStyles = M4LOverridesStyleRules<ImageSlots, typeof IMAGE_KEY_COMPONENT, Theme>;
//# sourceMappingURL=types.d.ts.map