export type Hook = (props: T) => void; export interface Slider { element: HTMLElement wrapper: HTMLElement, wrapperPosition: number, slides: HTMLElement[] slideStyles: Record slideWidth: number slideHeight?: number activeView: number slidesPerView: number spaceBetween: number direction?: 'vertical' middlewares: Middleware[], next: () => void prev: () => void render: () => void slideTo: (index: number, silent?: boolean) => void updateSlideStyles: () => void scrollWrapperTo: (y: number) => void, onSlideChange: (callback: Hook) => void onBeforeSlideChange: (callback: Hook) => void onCleanUp: (callback: Hook) => void removeSlideChangeHook: (hook: Hook) => void removeBeforeSlideChangeHook: (hook: Hook) => void removeCleanUpHook: (hook: Hook) => void runBeforeSlideChangeHooks: (slider: Slider) => void runSlideChangeHooks: (slider: Slider) => void } export type Middleware = { name: string callback: (slider: Slider) => void };