import { Data } from "josm"; import { ScrollAnimationOptions } from "../types"; import "xrray"; import "xtring"; type ReadonlyData = Omit, "set">; export declare class ScrollData extends Data { constructor(scrollPos?: number); scrollTrigger(at: number | ReadonlyData, margin?: number | ReadonlyData): ScrollTrigger; tunnel>(func: (val: number) => Ret, init: boolean | undefined, useThisConstructor: { new (...a: any[]): Dat; }): Dat; tunnel(func: (val: number) => Ret, init: boolean | undefined, useThisConstructor: true): this extends Data ? this : Data; tunnel(func: (val: number) => Ret, init?: boolean, useThisConstructor?: boolean): Data; } declare class InnerElemScrollData extends ScrollData { constructor(elem: Element | Window, usePageEndAsReference?: boolean, _direction?: "x" | "y" | "one", notifyOnAllChanges?: boolean); tunnel(func: (val: number) => Ret, init?: boolean): this extends Data ? this : Data; tunnel(func: (val: number) => Ret, init: boolean | undefined): Data; } export type ElemScrollData = InnerElemScrollData & { set(prog: number, animOptions?: ScrollAnimationOptions, dontTriggerScrollEvent?: boolean): number; }; export declare const ElemScrollData: new (elem: Element | Window, usePageEndAsReference?: boolean, direction?: "x" | "y" | "one", notifyOnAllChanges?: boolean) => ElemScrollData; export declare class ScrollTrigger { private scrollData; protected listener: { forward: ((currentPos: number) => void)[]; backward: ((currentPos: number) => void)[]; }; constructor(scrollData: ReadonlyData, at: number | ReadonlyData, margin?: number | ReadonlyData); currentState: ReadonlyData; on(direction: keyof typeof this.listener, listener: (currentPos: number) => void): this; off(direction: keyof typeof this.listener, listener: (currentPos: number) => void): this; } export {};