import * as React from 'react';
import type { CSSProperties } from 'react';
import type { GenerateSemantic } from '../_util/hooks/useMergeSemantic/semanticType';
import type { Breakpoint } from '../_util/responsiveObserver';
import type { RowProps } from '../grid';
import type { MasonryItemType } from './MasonryItem';
export type Gap = number | undefined;
export type Key = string | number;
export type MasonrySemanticType = {
    classNames?: {
        root?: string;
        item?: string;
    };
    styles?: {
        root?: React.CSSProperties;
        item?: React.CSSProperties;
    };
};
export type MasonrySemanticAllType = GenerateSemantic<MasonrySemanticType, MasonryProps>;
export interface MasonryProps<ItemDataType = any> {
    prefixCls?: string;
    className?: string;
    rootClassName?: string;
    style?: CSSProperties;
    classNames?: MasonrySemanticAllType['classNamesAndFn'];
    styles?: MasonrySemanticAllType['stylesAndFn'];
    /** Spacing between items */
    gutter?: RowProps['gutter'];
    items?: MasonryItemType<ItemDataType>[];
    itemRender?: (itemInfo: MasonryItemType<ItemDataType> & {
        index: number;
    }) => React.ReactNode;
    /** Number of columns in the masonry grid layout */
    columns?: number | Partial<Record<Breakpoint, number>>;
    /** Trigger when item layout order changed */
    onLayoutChange?: (sortInfo: {
        key: React.Key;
        column: number;
    }[]) => void;
    fresh?: boolean;
}
export interface MasonryRef {
    nativeElement: HTMLDivElement;
}
declare const _default: (<ItemDataType = any>(props: React.PropsWithChildren<MasonryProps<ItemDataType>> & React.RefAttributes<MasonryRef>) => React.ReactElement) & Pick<React.FC, "displayName">;
export default _default;
