import ScrollElement from './core/ScrollElement'; export interface IModular { el: HTMLElement; events: any; modules: any; $(): any; parent(): any; call(func: string, args: any | null, moduleName: string, moduleId?: string): any; on(): any; getData(): any; setData(): any; } export interface ILenisOptions { wrapper?: HTMLElement | Window; content?: HTMLElement; eventsTarget?: HTMLElement | Window; lerp?: number; duration?: number; orientation?: scrollOrientation; gestureOrientation?: gestureOrientation; smoothWheel?: boolean; smoothTouch?: boolean; syncTouch?: boolean; syncTouchLerp?: number; touchInertiaMultiplier?: number; wheelMultiplier?: number; touchMultiplier?: number; normalizeWheel?: boolean; autoResize?: boolean; easing?(t: number): number; } export interface ILenisScrollValues { scroll: number; limit: number; velocity: number; direction: number; progress: number; } export type lenisTargetScrollTo = number | HTMLElement | string; export interface ILenisScrollTo { target: number | HTMLElement | string; options?: ILenisScrollToOptions; } export interface ILenisScrollToOptions { offset?: number; lerp?: number; duration?: number; immediate?: boolean; lock?: boolean; force?: boolean; easing?(t: number): number; onComplete?(): void; } export interface ILocomotiveScrollOptions { lenisOptions?: ILenisOptions; modularInstance?: IModular; triggerRootMargin?: string; rafRootMargin?: string; autoResize?: boolean; autoStart?: boolean; scrollCallback?(scrollValues: ILenisScrollValues): void; initCustomTicker?(render: () => void): void; destroyCustomTicker?(render: () => void): void; } export interface IScrollElementOptions { $el: HTMLElement; id: number; needRaf: boolean; scrollOrientation: scrollOrientation; modularInstance?: IModular; subscribeElementUpdateFn(scrollElement: ScrollElement): void; unsubscribeElementUpdateFn(scrollElement: ScrollElement): void; scrollCallback?(scrollValues: ILenisScrollValues): void; } export interface IScrollElementAttributes { scrollClass: string; scrollDelay: number | null; scrollOffset: string; scrollPosition: string; scrollModuleProgress: boolean; scrollCssProgress: boolean; scrollEventProgress: string | null; scrollSpeed: number | null; scrollRepeat: boolean; scrollCall: string | null; scrollCallSelf: boolean; scrollIgnoreFold: boolean; scrollEnableTouchSpeed: boolean; } export interface IScrollElementIntersection { start: number; end: number; } export interface IScrollElementMetrics { offsetStart: number; offsetEnd: number; bcr: DOMRect; } export interface IScrollElementCallbacksValues { currentScroll: number; smooth: boolean | null; } export interface IProgressModularModules { moduleName: string; moduleId: string; } export type scrollCallWay = 'enter' | 'leave'; export type scrollCallFrom = 'start' | 'end'; export interface IIOOptions { scrollElements: ScrollElement[]; IORaf: boolean; rootMargin?: string; } export interface CoreOptions { $el: HTMLElement; modularInstance?: IModular; triggerRootMargin?: string; rafRootMargin?: string; scrollOrientation: scrollOrientation; } export type scrollOrientation = 'vertical' | 'horizontal'; export type gestureOrientation = 'vertical' | 'horizontal' | 'both'; export interface IROOptions { resizeElements: HTMLElement[]; resizeCallback(): void; }