import React, { ReactNode } from 'react';
import PropTypes from 'prop-types';
import { strings } from '@douyinfe/semi-foundation/lib/es/anchor/constants';
import AnchorFoundation, { AnchorAdapter } from '@douyinfe/semi-foundation/lib/es/anchor/foundation';
import BaseComponent from '../_base/baseComponent';
import Link from './link';
import '@douyinfe/semi-foundation/lib/es/anchor/anchor.css';
import { ArrayElement } from '../_base/base';
import { ContextValue } from '../configProvider/context';
import { ShowTooltip } from '../typography/interface';
export type { LinkProps } from './link';
export interface AnchorProps {
    autoCollapse?: boolean;
    className?: string;
    children?: ReactNode;
    defaultAnchor?: string;
    getContainer?: () => HTMLElement | Window;
    maxHeight?: string | number;
    maxWidth?: string | number;
    offsetTop?: number;
    position?: ArrayElement<typeof strings.POSITION_SET>;
    railTheme?: ArrayElement<typeof strings.SLIDE_COLOR>;
    scrollMotion?: boolean;
    showTooltip?: boolean | ShowTooltip;
    size?: ArrayElement<typeof strings.SIZE>;
    style?: React.CSSProperties;
    targetOffset?: number;
    onChange?: (currentLink: string, previousLink: string) => void;
    onClick?: (e: React.MouseEvent<HTMLElement>, currentLink: string) => void;
    'aria-label'?: React.AriaAttributes['aria-label'];
}
export interface AnchorState {
    activeLink: string;
    links: string[];
    clickLink: boolean;
    scrollHeight: string;
    slideBarTop: string;
}
declare class Anchor extends BaseComponent<AnchorProps, AnchorState> {
    static contextType: React.Context<ContextValue>;
    static Link: typeof Link;
    static PropTypes: {
        size: PropTypes.Requireable<"default" | "small">;
        railTheme: PropTypes.Requireable<"primary" | "tertiary" | "muted">;
        className: PropTypes.Requireable<string>;
        style: PropTypes.Requireable<object>;
        scrollMotion: PropTypes.Requireable<boolean>;
        autoCollapse: PropTypes.Requireable<boolean>;
        offsetTop: PropTypes.Requireable<number>;
        targetOffset: PropTypes.Requireable<number>;
        showTooltip: PropTypes.Requireable<boolean>;
        position: PropTypes.Requireable<"left" | "top" | "right" | "bottom" | "topLeft" | "topRight" | "leftTop" | "leftBottom" | "rightTop" | "rightBottom" | "bottomLeft" | "bottomRight" | "leftTopOver" | "rightTopOver">;
        maxWidth: PropTypes.Requireable<NonNullable<string | number>>;
        maxHeight: PropTypes.Requireable<NonNullable<string | number>>;
        getContainer: PropTypes.Requireable<(...args: any[]) => any>;
        onChange: PropTypes.Requireable<(...args: any[]) => any>;
        onClick: PropTypes.Requireable<(...args: any[]) => any>;
        defaultAnchor: PropTypes.Requireable<string>;
        'aria-label': PropTypes.Requireable<string>;
    };
    static defaultProps: {
        size: string;
        railTheme: string;
        className: string;
        scrollMotion: boolean;
        autoCollapse: boolean;
        offsetTop: number;
        targetOffset: number;
        showTooltip: boolean;
        maxWidth: "200px";
        maxHeight: "750px";
        getContainer: (...args: any[]) => void;
        onChange: (...args: any[]) => void;
        onClick: (...args: any[]) => void;
        defaultAnchor: string;
    };
    foundation: AnchorFoundation;
    anchorID: string;
    scrollContainer: HTMLElement | Window;
    childMap: Record<string, Set<string>>;
    handler: () => void;
    clickHandler: () => void;
    context: ContextValue;
    linkWrapperRef: React.RefObject<HTMLDivElement>;
    resizeObserver: ResizeObserver | null;
    constructor(props: AnchorProps);
    get adapter(): AnchorAdapter<AnchorProps, AnchorState>;
    addLink: (link: string) => void;
    removeLink: (link: string) => void;
    handleScroll: () => void;
    handleClick: (e: React.MouseEvent<HTMLElement>, link: string) => void;
    handleClickLink: () => void;
    handleResize: (entries: ResizeObserverEntry[]) => void;
    setChildMap: () => void;
    setScrollHeight: () => void;
    updateScrollHeight: (prevState: AnchorState, state: AnchorState) => void;
    updateChildMap: (prevState: AnchorState, state: AnchorState) => void;
    renderChildren: () => any;
    componentDidMount(): void;
    componentDidUpdate(prevProps: AnchorProps, prevState: AnchorState): void;
    componentWillUnmount(): void;
    render(): React.JSX.Element;
}
export default Anchor;
