import { Ref } from "@cfcs/core";
import Component from "@egjs/component";
import { OnChangeScroll } from "./types";
export interface ScrollManagerOptions {
    scrollContainer?: HTMLElement | string | Ref<HTMLElement> | null;
    container?: boolean | HTMLElement | string | Ref<HTMLElement>;
    containerTag?: string;
    horizontal?: boolean;
}
export interface ScrollManagerStatus {
    contentSize: number;
    scrollOffset: number;
    prevScrollPos: number;
}
export interface ScrollManagerEvents {
    scroll: OnChangeScroll;
}
export declare class ScrollManager extends Component<ScrollManagerEvents> {
    protected wrapper: HTMLElement;
    options: Required<ScrollManagerOptions>;
    protected prevScrollPos: number | null;
    protected eventTarget: HTMLElement | Window;
    protected scrollOffset: number;
    protected contentSize: number;
    protected container: HTMLElement;
    protected scrollContainer: HTMLElement;
    private _orgCSSText;
    private _isScrollIssue;
    private _isCreateElement;
    constructor(wrapper: HTMLElement, options: ScrollManagerOptions);
    getWrapper(): HTMLElement;
    getContainer(): HTMLElement;
    getScrollContainer(): HTMLElement;
    getScrollOffset(): number;
    getContentSize(): number;
    getRelativeScrollPos(): number;
    getScrollPos(): number;
    setScrollPos(pos: number): void;
    getOrgScrollPos(): number;
    setStatus(status: ScrollManagerStatus): void;
    getStatus(): ScrollManagerStatus;
    scrollTo(pos: number): void;
    scrollBy(pos: number): void;
    /**
     * @return Returns true if scrollOffset or contentSize has changed, otherwise returns false. <ko>scrollOffset 또는 contentSize가 변화가 있으면 true 아니면 false를 반환한다.</ko>
     */
    resize(): boolean;
    destroy(): void;
    private _init;
    private _onCheck;
}
