import { ChangedData, CoreTypes, View, ViewBase } from '@nativescript/core';
import { CollectionViewBase } from './common';
import { TypedArray } from '@nativescript-community/arraybuffers';
export * from './common';
declare module '@nativescript/core/ui/core/view' {
    interface ViewCommon {
        layoutChangeListenerIsSet: boolean;
        layoutChangeListener: android.view.View.OnLayoutChangeListener;
        _raiseLayoutChangedEvent(): any;
        handleGestureTouch(event: android.view.MotionEvent): any;
    }
}
interface CollectionViewCellHolder extends com.nativescript.collectionview.CollectionViewCellHolder {
    new (androidView: android.view.View): CollectionViewCellHolder;
    view: View;
    clickListener: android.view.View.OnClickListener;
}
export interface CollectionViewRecyclerView extends com.nativescript.collectionview.RecyclerView {
    new (context: any): CollectionViewRecyclerView;
}
declare let CollectionViewCellHolder: CollectionViewCellHolder;
export declare enum SnapPosition {
    START = 0,
    END = 1
}
export declare class CollectionView extends CollectionViewBase {
    static layoutCompletedEvent: string;
    static DEFAULT_TEMPLATE_VIEW_TYPE: number;
    static CUSTOM_TEMPLATE_ITEM_TYPE: number;
    nativeViewProtected: CollectionViewRecyclerView & {
        scrollListener: com.nativescript.collectionview.OnScrollListener;
        layoutManager: androidx.recyclerview.widget.RecyclerView.LayoutManager;
        owner?: WeakRef<CollectionView>;
    };
    private recyclerListener;
    private templateTypeNumberString;
    private templateStringTypeNumber;
    private _currentNativeItemType;
    private currentSpanCount;
    private _viewHolders;
    private _scrollOrLoadMoreChangeCount;
    private _nScrollListener;
    scrolling: boolean;
    needsScrollStartEvent: boolean;
    private _hlayoutParams;
    private _vlayoutParams;
    private _lastLayoutKey;
    private _listViewAdapter;
    private _simpleItemTouchCallback;
    private _itemTouchHelper;
    animateItemUpdate: boolean;
    nestedScrollingEnabled: boolean;
    itemViewCacheSize: number;
    extraLayoutSpace: number;
    recycledViewPool: com.nativescript.collectionview.RecycledViewPool;
    recycledViewPoolDisposeListener: com.nativescript.collectionview.RecycledViewPool.ViewPoolListener;
    mInPropertiesSet: boolean;
    mShouldUpdateInnerSize: boolean;
    mShouldUpdateSpanCount: boolean;
    mShouldRefresh: boolean;
    onResumeNativeUpdates(): void;
    createNativeView(): com.nativescript.collectionview.RecyclerView;
    initNativeView(): void;
    disposeNativeView(): void;
    onLoaded(): void;
    getViewForItemAtIndex(index: number): View;
    _getSpanSize: (item: any, index: any) => number;
    set spanSize(inter: (item: any, index: any) => number);
    get spanSize(): (item: any, index: any) => number;
    decorator: com.nativescript.collectionview.OverlapDecoration;
    decoratorBuffer: TypedArray;
    decoratorListener: com.nativescript.collectionview.OverlapDecoration.OverlapDecorationListener;
    nativeGetItemOverlap(position: number): TypedArray;
    private attachScrollListenerIfNecessary;
    private detachScrollListenerIfNecessary;
    private computeScrollEventData;
    onScrolled(view: androidx.recyclerview.widget.RecyclerView, dx: number, dy: number): void;
    onScrollStateChanged(view: androidx.recyclerview.widget.RecyclerView, newState: number): void;
    addEventListener(arg: string, callback: any, thisArg?: any): void;
    removeEventListener(arg: string, callback: any, thisArg?: any): void;
    get android(): androidx.recyclerview.widget.RecyclerView;
    get layoutManager(): androidsupportv7widgetRecyclerView.LayoutManager;
    _getViewLayoutParams(): androidviewViewGroup.LayoutParams;
    defaultPoolSize: number;
    desiredPoolSize: Map<string, number>;
    private setNativePoolSize;
    private setPoolSizes;
    setPoolSize(key: string, size: number): void;
    protected updateScrollBarVisibility(value: any): void;
    private enumerateViewHolders;
    private enumerateViewHoldersAsync;
    startDragging(index: number): void;
    isDragging: boolean;
    startViewHolderDragging(index: any, viewHolder: CollectionViewCellHolder): void;
    onReorderLongPress(motionEvent: android.view.MotionEvent): void;
    _reorderItemInSource(oldPosition: number, newPosition: number): void;
    _longPressGesture: androidx.core.view.GestureDetectorCompat;
    _itemTouchListerner: androidx.recyclerview.widget.RecyclerView.OnItemTouchListener;
    onItemViewLoaderChanged(): void;
    onItemTemplateSelectorChanged(oldValue: any, newValue: any): void;
    onItemTemplateChanged(oldValue: any, newValue: any): void;
    onItemTemplatesChanged(oldValue: any, newValue: any): void;
    updateSpanCount(requestLayout?: boolean): boolean;
    updateInnerSize(): boolean;
    _onColWidthPropertyChanged(oldValue: CoreTypes.PercentLengthType, newValue: CoreTypes.PercentLengthType): void;
    _onRowHeightPropertyChanged(oldValue: CoreTypes.PercentLengthType, newValue: CoreTypes.PercentLengthType): void;
    onLayout(left: number, top: number, right: number, bottom: number): void;
    onMeasure(widthMeasureSpec: number, heightMeasureSpec: number): void;
    onSourceCollectionChanged(event: ChangedData<any>): void;
    eachChild(callback: (child: ViewBase) => boolean): void;
    eachChildAsync(callback: any): Promise<void>;
    refreshVisibleItems(): void;
    isItemAtIndexVisible(index: number): boolean;
    findFirstVisibleItemIndex(): number;
    findLastVisibleItemIndex(): number;
    _layedOut: boolean;
    refresh(forceRefresh?: boolean, updateSpanCountRequestsLayout?: boolean): void;
    get scrollOffset(): number;
    get verticalOffsetX(): number;
    get verticalOffsetY(): number;
    scrollToIndex(index: number, animated?: boolean, snap?: SnapPosition): void;
    scrollToOffset(offSetValue: any): void;
    private _setPadding;
    private createComposedAdapter;
    getItemCount(): number;
    getItem(i: number): any;
    getItemId(i: number): any;
    onItemIdGeneratorChanged(oldValue: any, newValue: any): void;
    clearTemplateTypes(): void;
    getItemViewType(position: number): number;
    templateKeyToNativeItem(key: string): number;
    disposeViewHolderViews(): void;
    getKeyByValue(viewType: number): string;
    onCreateViewHolder(parent: android.view.ViewGroup, viewType: number): CollectionViewCellHolder;
    notifyForItemAtIndex(eventName: string, view: View, index: number, bindingContext?: any, native?: any): any;
    bindedViewHolders: Set<number>;
    onBindViewHolder(holder: CollectionViewCellHolder, position: number): void;
    onViewRecycled(holder: any): void;
}
