import type { Cash, Selector } from "cash-dom";
import type { LocationHashTracking, StringPluginArgChoices } from './types';
export interface IScrollSpyDefaults extends LocationHashTracking {
    observerOptions: IntersectionObserverInit;
    cssPrefix: string;
    spyNavElems: 'a' | 'button';
    setActiveCssToLi: boolean;
    spyBody: Selector;
    spyElems: string;
    callback?: ScrollSpyCallBack;
}
export interface IScrollSpyOptions extends Partial<IScrollSpyDefaults> {
    spyBody: Selector;
}
type ScrollSpyCallBack = (topMostEntries: HTMLElement[], navEntries: HTMLElement[]) => void;
export default class ScrollSpy {
    #private;
    inViewEntries: Set<HTMLElement>;
    backUpInViewEntry: HTMLElement;
    params: IScrollSpyOptions;
    element: HTMLElement;
    $spyBody: Cash;
    spyContents: HTMLElement[];
    static defaults: IScrollSpyOptions;
    static version: string;
    static pluginName: string;
    constructor(element: HTMLElement, options: IScrollSpyOptions);
    handleEvents(): void;
    scrollToElement(elemId: string, behavior: ScrollOptions["behavior"]): Cash;
    loadFromUrl(): void;
    static remove(element: Cash, plugin?: ScrollSpy): void;
}
declare module 'cash-dom' {
    interface Cash {
        scrollSpy(options?: IScrollSpyOptions | StringPluginArgChoices): Cash;
    }
}
export {};
