export interface ScrollStickOptions {
    elements: string | HTMLElement[] | Set<HTMLElement>;
    scrollContainer?: Stickers['scrollContainer'];
    offset?: number;
}
interface Sticker {
    element: HTMLElement;
    top: number;
    bottom: number;
    height: number;
    isStuck: boolean;
    priorStickHeight: number;
}
type ElementsOption = ScrollStickOptions['elements'];
declare class Stickers {
    #private;
    scrollContainer: HTMLElement | Window;
    offset: number;
    constructor({ elements, scrollContainer, offset }: ScrollStickOptions);
    setStickers(elements: ElementsOption): Set<Sticker>;
    addHandlers(): void;
    rmHandlers(): void;
    snapshotItemRects(): void;
    onScroll(): void;
    onResize(): void;
    getScrollY(): number;
    getViewportHeight(): number;
    getScrollFrameHeight(): number;
    testBottomInView(sticker: Sticker): boolean;
    testForStick(): this | undefined;
    addStick(sticker: Sticker): this;
    removeStick(sticker: Sticker): this;
    getStickTop(sticker: Sticker): number;
    cleanup(): void;
}
/**
 * @example useScrollStick({ elements: [myColumnElements] | '.my-columns', offset: 20 });
 * @param options An object to set the sticky elements, the scroll container and an stuck offset in pixels.
 * @returns void.
 */
declare const useScrollStick: (options?: ScrollStickOptions) => void;
export default useScrollStick;
//# sourceMappingURL=useScrollStick.d.ts.map