import React from "react";
declare type BoundaryElement = {
    positionX: HTMLElement;
    positionY: HTMLElement;
};
interface ThreadProps {
    resizeSpy?: React.RefObject<HTMLElement>;
    disableMotionEffect?: boolean;
}
interface ChildrenWithRenderProps {
    children?: React.ReactNode | ((refCallback: (element: HTMLElement | Partial<BoundaryElement> | null) => void) => React.ReactNode);
}
/**
 * This is how the thread structure is supposed to look like:
 *
 * <Thread>
 *   <Post>
 *   <Thread.Indent>
 *     <Thread.Item><Post></Thread.Item>
 *     <Thread.Item><Post></Thread.Item>
 *     <Thread.Item><Post></Thread.Item>
 *     <Thread.Item>
 *        <Post>
 *        <Thread.Indent>
 *          <Thread.Item><Post></Thread.Item>
 *          <Thread.Item><Post></Thread.Item>
 *        </Thread.Indent>
 *      </Thread.Item>
 *   </Thread.Indent>
 * </Thread>
 *
 * IMPORTANT NOTE: Thread.Indent should always be a direct discendant of Thread.Item.
 * If a component is wrapped around levels of these tree, make sure that it wraps a
 * Thread.Item and not simply the indentation.
 */
declare const Thread: React.FC<ThreadProps & ChildrenWithRenderProps> & {
    Indent: typeof Indent;
    Item: typeof Item;
};
declare const Item: React.FC<ChildrenWithRenderProps>;
export declare const Stem: React.FC;
interface IndentProps {
    id: string | null;
    collapsed?: boolean;
    _childOfItem?: boolean;
}
export declare const Indent: React.FC<IndentProps>;
export default Thread;
