import React from 'react';
import { Component } from '../component';
import { RootProps, Position } from './Props';
interface State {
    hasOpen?: boolean;
    scrollTop: number;
    scrollLeft: number;
    activeKey: null | string;
    openKeys: Map<string, boolean>;
}
export declare const DefaultProps: {
    data: never[];
    level: number;
    keygen: string;
    mode: string;
    inlineIndent: number;
    renderItem: string;
    defaultOpenKeys: never[];
    onClick: () => boolean;
    toggleDuration: number;
    frontCaretType: string;
    style: {};
    disabled: (d: {
        disabled: boolean;
    }) => boolean;
};
declare class Root<U, T extends string> extends Component<RootProps<U, T>, State> {
    static defaultProps: {
        data: never[];
        level: number;
        keygen: string;
        mode: string;
        inlineIndent: number;
        renderItem: string;
        defaultOpenKeys: never[];
        onClick: () => boolean;
        toggleDuration: number;
        frontCaretType: string;
        style: {};
        disabled: (d: {
            disabled: boolean;
        }) => boolean;
    };
    static displayName: string;
    handleScrollLeft: any;
    handleScrollTop: any;
    items: {
        [id: string]: <F, K>(checkActive: F, key: K) => void;
    };
    itemsOpen: {
        [id: string]: <F>(checkOpen: F) => void;
    };
    itemsInPath: {
        [id: string]: <F>(checkInPath: F) => void;
    };
    providerValue: {
        bindItem: <Active, Open, InPath>(id: string, active: Active, open: Open, inPath: InPath) => [Active, Open, InPath];
        unbindItem: (id: string) => void;
    };
    container: HTMLDivElement;
    hasToggled: boolean;
    wrapper: HTMLDivElement;
    rootElement: HTMLUListElement;
    constructor(props: RootProps<U, T>);
    componentDidMount(): void;
    componentDidUpdate(): void;
    componentWillUnmount(): void;
    getOpenKeys(): string[] | undefined;
    bindRootElement(el: HTMLDivElement): void;
    bindItem(id: string, updateActive: () => void, updateOpen: () => void, updateInPath: () => void): ((id: string, data: U) => boolean)[];
    unbindItem(id: string): void;
    checkActive(id: string, data: U): boolean;
    checkOpen(id: string): boolean;
    checkInPath(id: string): boolean;
    updateState(): void;
    updateActive(): void;
    updateOpen(): void;
    updateInPath(): void;
    toggleOpenKeys(id: string, open: boolean): void;
    handleScrollX(pos: Position, param: number): void;
    handleScroll(top: number): void;
    handleWheel(e: WheelEvent & {
        axis: number;
        wheelDelta: number;
        wheelDeltaY: number;
        wheelDeltaX: number;
        HORIZONTAL_AXIS: number;
    }): void;
    handleClick(id: string, data: U): void;
    renderItem(data: U, index: number): React.ReactNode;
    renderScrollBar(): JSX.Element | null;
    render(): JSX.Element;
}
export default Root;
