import { Tabs } from '../tabs';
import { Node } from './types';
import { location } from '@synnaxlabs/x';
import { ReactElement } from 'react';

/** Props for the {@link Mosaic} component */
export interface MosaicProps extends Omit<Tabs.TabsProps, "onDrop" | "tabs" | "onResize" | "onCreate" | "children"> {
    root: Node;
    onDrop: (key: number, tabKey: string, loc: location.Location) => void;
    onResize: (key: number, size: number) => void;
    onCreate?: (key: number, loc: location.Location, tabKeys?: string[]) => void;
    children: Tabs.TabRenderProp;
}
export declare const Mosaic: import('react').MemoExoticComponent<({ children, ...props }: MosaicProps) => ReactElement>;
/**
 * This type should be used when the user wants to drop a tab in the mosaic.
 * Dropping an item with this signature will call the {@link Mosaic} onDrop handler.
 */
export declare const HAUL_DROP_TYPE = "pluto-mosaic-tab-drop";
/** This type should be used when the user wants to create a new tab in the mosaic.
Dropping an item with this signature will call the {@link Mosaic} onCreate handler. */
export declare const HAUL_CREATE_TYPE = "pluto-mosaic-tab-create";
//# sourceMappingURL=Mosaic.d.ts.map