/**
 * @license chowa v1.1.3
 *
 * Copyright (c) Chowa Techonlogies Co.,Ltd.(http://www.chowa.cn).
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */
import * as React from 'react';
import * as PropTypes from 'prop-types';
export interface AffixProps {
    className?: string;
    style?: React.CSSProperties;
    offsetTop?: number;
    offsetBottom?: number;
    target?: () => Window | HTMLElement;
    onTargetScroll?: () => void;
    onTargetResize?: () => void;
    onChange?: (affixed?: boolean) => void;
}
export declare type Position = 'static' | 'absolute' | 'fixed' | 'relative';
export interface AffixState {
    contentTop: number;
    contentLeft: number;
    contentWidth: number;
    contentHeight: number;
    targetTop: number;
    targetHeight: number;
    targetLeft: number;
    affixTop: number;
    affixBottom: number;
    affixLeft: number;
    position: Position;
    affixed: boolean;
    isBlock: boolean;
    isWindow: boolean;
}
declare class Affix extends React.PureComponent<AffixProps, AffixState> {
    static propTypes: {
        children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
        offsetTop: PropTypes.Requireable<number>;
        offsetBottom: PropTypes.Requireable<number>;
        target: PropTypes.Requireable<(...args: any[]) => any>;
        onTargetScroll: PropTypes.Requireable<(...args: any[]) => any>;
        onTargetResize: PropTypes.Requireable<(...args: any[]) => any>;
        onChange: PropTypes.Requireable<(...args: any[]) => any>;
        style: PropTypes.Requireable<object>;
        className: PropTypes.Requireable<string>;
    };
    static defaultProps: {
        offsetTop: number;
        target: () => Window & typeof globalThis;
    };
    private resizeObserver;
    private node;
    constructor(props: AffixProps);
    componentDidMount(): void;
    componentWillUnmount(): void;
    componentDidUpdate(preProps: AffixProps): void;
    private onScrollHandler;
    private onResizeHandler;
    private updatePosition;
    render(): JSX.Element;
}
export default Affix;
