import { PanGestureHandlerOptions } from '@nativescript-community/gesturehandler';
import { AbsoluteLayout, AnimationDefinition, Color, EventData, Property, ScrollView, View } from '@nativescript/core';
import { VelocityTracker } from './VelocityTracker';
export declare let PAN_GESTURE_TAG: number;
export interface BottomSheetEventData extends EventData {
    duration?: number;
}
export declare const scrollViewProperty: Property<PersistentBottomSheet, string>;
export declare const bottomSheetProperty: Property<PersistentBottomSheet, View>;
export declare const gestureEnabledProperty: Property<PersistentBottomSheet, boolean>;
export declare const stepIndexProperty: Property<PersistentBottomSheet, number>;
export declare const backdropColorProperty: Property<PersistentBottomSheet, Color>;
export declare const translationFunctionProperty: Property<PersistentBottomSheet, Function>;
export declare class PersistentBottomSheet extends AbsoluteLayout {
    [gestureEnabledProperty.setNative]: (value: boolean) => void;
    [stepIndexProperty.setNative]: (value: number) => void;
    [backdropColorProperty.setNative]: (value: Color) => void;
    bottomSheet: View;
    scrollViewId: string;
    backdropColor: any;
    stepIndex: number;
    panGestureOptions: PanGestureHandlerOptions & {
        gestureId?: number;
    };
    private backDrop;
    private panGestureHandler;
    private _steps;
    private isAnimating;
    private prevDeltaY;
    private viewHeight;
    private lastTouchY;
    private touchStartY;
    private wasDraggingPanel;
    private gestureModeDecided;
    private _translationY;
    gestureEnabled: boolean;
    private _scrollView;
    private _isScrollEnabled;
    private animation;
    private _allowBottomSheetAdd;
    dragToss: number;
    constructor();
    get steps(): number[];
    set steps(value: number[]);
    translationFunction?: (delta: number, max: number, progress: number) => {
        bottomSheet?: AnimationDefinition;
        backDrop?: AnimationDefinition;
    };
    protected initGestures(): void;
    protected shouldStartGesture(data: any): boolean;
    get translationY(): number;
    set translationY(value: number);
    get translationMaxOffset(): number;
    initNativeView(): void;
    disposeNativeView(): void;
    protected addBackdropView(index: number): void;
    get scrollView(): ScrollView;
    set scrollView(value: ScrollView);
    private _onScrollViewIdChanged;
    addChild(child: any): void;
    _onBottomSheetChanged(oldValue: View, newValue: View): void;
    computeTranslationData(): {
        bottomSheet?: AnimationDefinition;
        backDrop?: AnimationDefinition;
    } | {
        bottomSheet: {
            translateY: number;
        };
        backDrop: {
            opacity: number;
        };
    };
    private alignToStepPosition;
    private onLayoutChanged;
    private get scrollViewVerticalOffset();
    get isScrollEnabled(): boolean;
    set isScrollEnabled(value: boolean);
    scrollViewTouched: boolean;
    private onBottomSheetTouch;
    private onScrollViewTouch;
    vt: VelocityTracker | null;
    private onTouch;
    private onGestureState;
    canAnimateToStep(step: number): boolean;
    private computeAndAnimateEndGestureAnimation;
    animateStepIndex(stepIndex: any, duration?: number, curve?: any): void;
    private onGestureTouch;
    private applyTrData;
    private constrainY;
    animating: boolean;
    private animateToPosition;
}
export declare function install(): void;
