// Generated by dts-bundle-generator v9.5.1

export interface VirtualScrollConfig {
	mouseMultiplier: number;
	touchMultiplier: number;
	firefoxMultiplier: number;
	useKeyboard: boolean;
	passive: boolean;
}
export interface Viewport {
	itemWidth: number;
	wrapperWidth: number;
	totalWidth: number;
	itemHeight: number;
	wrapperHeight: number;
	totalHeight: number;
	vertical: boolean;
}
export interface CoreConfig {
	infinite: boolean;
	snap: boolean;
	variableWidth: boolean;
	vertical: boolean;
	dragSensitivity: number;
	lerpFactor: number;
	scrollSensitivity: number;
	snapStrength: number;
	speedDecay: number;
	bounceLimit: number;
	virtualScroll: VirtualScrollConfig;
	setOffset: (viewport: Viewport) => number;
	scrollInput: boolean;
	onSlideChange?: (current: number, previous: number) => void;
	onResize?: (core: Core) => void;
	onUpdate?: (core: Core) => void;
}
declare class Core {
	#private;
	speed: number;
	deltaTime: number;
	config: CoreConfig;
	wrapper: HTMLElement;
	items: HTMLElement[];
	viewport: Viewport;
	itemWidths: number[];
	itemOffsets: number[];
	itemHeights: number[];
	itemHeightOffsets: number[];
	isDragging: boolean;
	isTouching: boolean;
	dragStart: number;
	dragStartTarget: number;
	isVisible: boolean;
	current: number;
	target: number;
	maxScroll: number;
	resizeTimeout?: ReturnType<typeof setTimeout>;
	virtualScroll?: any;
	observer?: IntersectionObserver;
	touchStartY?: number;
	touchStartX?: number;
	touchPreviousX?: number;
	touchPreviousY?: number;
	scrollDirection?: "horizontal" | "vertical";
	parallaxValues?: number[];
	webglValue: number;
	onSlideChange?: (current: number, previous: number) => void;
	onResize?: (core: Core) => void;
	onUpdate?: (core: Core) => void;
	constructor(wrapper: HTMLElement, config?: Partial<CoreConfig>);
	/** Update */
	update(): void;
	goToNext(): void;
	goToPrev(): void;
	goToIndex(index: number): void;
	set snap(value: boolean);
	getProgress(): number;
	destroy(): void;
	get currentSlide(): number;
	/** Interfaces */
	kill(): void;
	init(): void;
	set paused(value: boolean);
	get paused(): boolean;
	get progress(): number;
	resize(): void;
}
export declare function lerp(v0: number, v1: number, t: number): number;
export declare function damp(a: number, b: number, lambda: number, deltaTime: number): number;
export declare function symmetricMod(value: number, base: number): number;

export {
	Core as default,
};

export {};
