import type { DimensionType, ViewPortScrollEvent } from "../types/index";
import { type ScrollDimension } from './scroll.dimension.helpers';
interface Config {
    skipAnimationFrame?: boolean;
    runScroll(e: ViewPortScrollEvent): void;
    applyScroll(e: ViewPortScrollEvent): void;
}
type Params = {
    contentSize: number;
    virtualContentSize?: number;
    clientSize: number;
    virtualSize: number;
    maxSize?: number;
    maxScrollSize?: number;
    scrollDimension?: ScrollDimension;
};
/**
 * Based on content size, client size and virtual size
 * return full size
 */
export declare function getContentSize(contentSize: number, clientSize: number, virtualSize?: number): number;
export default class LocalScrollService {
    private cfg;
    private preventArtificialScroll;
    private previousScroll;
    private previousLogicalScroll;
    private params;
    constructor(cfg: Config);
    setParams(params: Params, dimension: DimensionType): void;
    setScroll(e: ViewPortScrollEvent): Promise<void>;
    setScrollByDelta(e: ViewPortScrollEvent, currentPhysicalCoordinate: number): Promise<ViewPortScrollEvent>;
    /**
     * On scroll event started
     */
    scroll(coordinate: number, dimension: DimensionType, force?: boolean, delta?: number, outside?: boolean): void;
    private getParams;
    private wrapPhysicalCoordinate;
    private wrapLogicalCoordinate;
    private cancelScroll;
    private toLogicalScrollCoordinate;
    private toPhysicalCoordinate;
    private toLogicalCoordinate;
}
export {};
