import type { StringPluginArgChoices } from './types'; import { type BaseElem } from "base-elem-js"; type Axis = 'x' | 'y'; export interface IParallaxDefaults { speed: number; zSpeed: number; axis: Axis; cssPrefix: string; scrollAxis: Axis; zAxis: boolean; relativeElem: false | BaseElem; bgFill: boolean; rootMargin: number | [number, number]; minWidth: number | null; maxWidth: number | null; scrollMaxPxStop: number; zScrollMaxPxStop: number; } interface IElementInView { top: number; left: number; bottom: number; right: number; } export interface IParallaxOptions extends Partial { } export default class Parallax { #private; params: IParallaxDefaults; zInitOffset: number; index: number; instanceEvent: string; $window: BaseElem; $element: BaseElem; element: HTMLElement; elementOffset: IElementInView; $relElem: BaseElem; winHeight: number; winWidth: number; elemHeight: number; elemWidth: number; speed: number; zSpeed: number; fillAmount: number; bgFill: boolean; bgFillProp: 'height' | 'width'; axis: Axis; zAxis: boolean; scrollMaxPxStop: number; zScrollMaxPxStop: number; rootMargin: [number, number]; lastZSpeed: number; lastCssInProps: Record; minWidthIfSet: boolean; maxWidthIfSet: boolean; effectCleared: boolean; cssPrevDir: string[] | string; static defaults: IParallaxDefaults; static version: string; static pluginName: string; constructor(element: HTMLElement, options: IParallaxOptions | StringPluginArgChoices, index: number); getElementRects(): IElementInView; parallax(s: Parallax): void; isInView(scrollVertical: boolean, pixelStart: number, scrollDir: number, rootMargin: number): boolean; static remove(element: BaseElem, plugin?: Parallax): void; } export interface ParallaxPlugin { parallax(options?: IParallaxOptions | StringPluginArgChoices): BaseElem; } declare module 'base-elem-js' { interface BaseElem extends ParallaxPlugin { } } export {};