import { CSSProperties, ComponentPublicInstance, ExtractPropTypes, PropType, CreateComponentPublicInstanceWithMixins, ComponentOptionsMixin, PublicProps, GlobalComponents, GlobalDirectives, ComponentProvideOptions, ComponentOptionsBase, VNodeProps, AllowedComponentProps, ComponentCustomProps, Plugin } from 'vue';
import { VueNode } from '../_util/type';
declare function getDefaultTarget(): (Window & typeof globalThis) | null;
declare enum AffixStatus {
    None = 0,
    Prepare = 1
}
export interface AffixState {
    affixStyle?: CSSProperties;
    placeholderStyle?: CSSProperties;
    status: AffixStatus;
    lastAffix: boolean;
    prevTarget: Window | HTMLElement | null;
}
export declare function affixProps(): {
    /**
     * 距离窗口顶部达到指定偏移量后触发
     */
    offsetTop: NumberConstructor;
    /** 距离窗口底部达到指定偏移量后触发 */
    offsetBottom: NumberConstructor;
    /** 设置 Affix 需要监听其滚动事件的元素，值为一个返回对应 DOM 元素的函数 */
    target: {
        type: PropType<() => Window | HTMLElement | null>;
        default: typeof getDefaultTarget;
    };
    prefixCls: StringConstructor;
    /** 固定状态改变时触发的回调函数 */
    onChange: PropType<AffixEmits["change"]>;
    onTestUpdatePosition: PropType<AffixEmits["testUpdatePosition"]>;
};
export type AffixProps = Partial<ExtractPropTypes<ReturnType<typeof affixProps>>>;
export interface AffixEmits {
    change: (lastAffix: boolean) => void;
    testUpdatePosition: () => void;
}
export interface AffixExpose {
    updatePosition: (...args: any[]) => void;
    lazyUpdatePosition: (...args: any[]) => void;
}
export type AffixInstance = ComponentPublicInstance<AffixProps, AffixExpose>;
declare const _default: {
    new (...args: any[]): CreateComponentPublicInstanceWithMixins<Readonly<ExtractPropTypes<{
        /**
         * 距离窗口顶部达到指定偏移量后触发
         */
        offsetTop: NumberConstructor;
        /** 距离窗口底部达到指定偏移量后触发 */
        offsetBottom: NumberConstructor;
        /** 设置 Affix 需要监听其滚动事件的元素，值为一个返回对应 DOM 元素的函数 */
        target: {
            type: PropType<() => Window | HTMLElement | null>;
            default: typeof getDefaultTarget;
        };
        prefixCls: StringConstructor;
        /** 固定状态改变时触发的回调函数 */
        onChange: PropType<AffixEmits["change"]>;
        onTestUpdatePosition: PropType<AffixEmits["testUpdatePosition"]>;
    }>> & Readonly<{}>, () => VueNode, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, PublicProps, {
        target: () => Window | HTMLElement | null;
    }, true, {}, {}, GlobalComponents, GlobalDirectives, string, {}, any, ComponentProvideOptions, {
        P: {};
        B: {};
        D: {};
        C: {};
        M: {};
        Defaults: {};
    }, Readonly<ExtractPropTypes<{
        /**
         * 距离窗口顶部达到指定偏移量后触发
         */
        offsetTop: NumberConstructor;
        /** 距离窗口底部达到指定偏移量后触发 */
        offsetBottom: NumberConstructor;
        /** 设置 Affix 需要监听其滚动事件的元素，值为一个返回对应 DOM 元素的函数 */
        target: {
            type: PropType<() => Window | HTMLElement | null>;
            default: typeof getDefaultTarget;
        };
        prefixCls: StringConstructor;
        /** 固定状态改变时触发的回调函数 */
        onChange: PropType<AffixEmits["change"]>;
        onTestUpdatePosition: PropType<AffixEmits["testUpdatePosition"]>;
    }>> & Readonly<{}>, () => VueNode, {}, {}, {}, {
        target: () => Window | HTMLElement | null;
    }>;
    __isFragment?: never;
    __isTeleport?: never;
    __isSuspense?: never;
} & ComponentOptionsBase<Readonly<ExtractPropTypes<{
    /**
     * 距离窗口顶部达到指定偏移量后触发
     */
    offsetTop: NumberConstructor;
    /** 距离窗口底部达到指定偏移量后触发 */
    offsetBottom: NumberConstructor;
    /** 设置 Affix 需要监听其滚动事件的元素，值为一个返回对应 DOM 元素的函数 */
    target: {
        type: PropType<() => Window | HTMLElement | null>;
        default: typeof getDefaultTarget;
    };
    prefixCls: StringConstructor;
    /** 固定状态改变时触发的回调函数 */
    onChange: PropType<AffixEmits["change"]>;
    onTestUpdatePosition: PropType<AffixEmits["testUpdatePosition"]>;
}>> & Readonly<{}>, () => VueNode, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, {
    target: () => Window | HTMLElement | null;
}, {}, string, {}, GlobalComponents, GlobalDirectives, string, ComponentProvideOptions> & VNodeProps & AllowedComponentProps & ComponentCustomProps & Plugin;
export default _default;
