/**
* DevExtreme (ui/scroll_view/ui.scrollable.d.ts)
* Version: 21.1.0 (build 21016-0316)
* Build date: Sat Jan 16 2021
*
* Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED
* Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
*/
import '../../jquery_augmentation';

import DOMComponent, {
    DOMComponentOptions
} from '../../core/dom_component';

import {
    dxElement
} from '../../core/element';

import {
    event
} from '../../events/index';

/**
 * Warning! This type is used for internal purposes. Do not import it directly.
 */
export interface dxScrollableOptions<T = dxScrollable> extends DOMComponentOptions<T> {
    /**
     */
    bounceEnabled?: boolean;
    /**
     */
    direction?: 'both' | 'horizontal' | 'vertical';
    /**
     */
    disabled?: boolean;
    /**
     */
    onScroll?: ((e: { component?: T, element?: dxElement, model?: any, event?: event, scrollOffset?: any, reachedLeft?: boolean, reachedRight?: boolean, reachedTop?: boolean, reachedBottom?: boolean }) => any);
    /**
     */
    onUpdated?: ((e: { component?: T, element?: dxElement, model?: any, event?: event, scrollOffset?: any, reachedLeft?: boolean, reachedRight?: boolean, reachedTop?: boolean, reachedBottom?: boolean }) => any);
    /**
     */
    scrollByContent?: boolean;
    /**
     */
    scrollByThumb?: boolean;
    /**
     */
    showScrollbar?: 'onScroll' | 'onHover' | 'always' | 'never';
    /**
     */
    useNative?: boolean;
}
/**
 * Warning! This type is used for internal purposes. Do not import it directly.
 */
export default class dxScrollable extends DOMComponent {
    constructor(element: Element, options?: dxScrollableOptions)
    constructor(element: JQuery, options?: dxScrollableOptions)
    /**
     */
    clientHeight(): number;
    /**
     */
    clientWidth(): number;
    /**
     */
    content(): dxElement;
    /**
     */
    scrollBy(distance: number): void;
    /**
     */
    scrollBy(distanceObject: any): void;
    /**
     */
    scrollHeight(): number;
    /**
     */
    scrollLeft(): number;
    /**
     */
    scrollOffset(): any;
    /**
     */
    scrollTo(targetLocation: number): void;
    /**
     */
    scrollTo(targetLocation: any): void;
    /**
     */
    scrollToElement(element: Element | JQuery): void;
    /**
     */
    scrollTop(): number;
    /**
     */
    scrollWidth(): number;
    /**
     */
    update(): Promise<void> & JQueryPromise<void>;
}
