import { View } from '@nativescript/core';
import { ElementRef, TemplateRef, EmbeddedViewRef, IterableDiffers, ViewContainerRef, OnInit, EventEmitter, TrackByFunction, NgZone, ComponentRef } from '@angular/core';
import { NativeScriptRendererFactory, DetachedLoader } from '@nativescript/angular';
import { RadListView } from 'nativescript-ui-listview';
import * as i0 from "@angular/core";
export declare class ListItemContext extends ElementRef {
    $implicit?: any;
    item?: any;
    index?: number;
    even?: boolean;
    odd?: boolean;
    category?: string;
    constructor($implicit?: any, item?: any, index?: number, even?: boolean, odd?: boolean, category?: string);
}
export declare type RootLocator = (nodes: Array<any>, nestLevel: number) => View;
export declare class RadListViewComponent {
    private _elementRef;
    private _iterableDiffers;
    private _renderer;
    private _ngZone;
    private _listView;
    private _items;
    private _differ;
    private _loaders;
    private _headerTemplate;
    private _footerTemplate;
    private _itemTemplate;
    private _groupTemplate;
    private _itemSwipeTemplate;
    private _loadOnDemandTemplate;
    private _templateMap;
    loader: ViewContainerRef;
    itemTemplateQuery: TemplateRef<ListItemContext>;
    setupItemView: EventEmitter<any>;
    autoReuseViews: boolean;
    detachedLoaderFactory(): ComponentRef<DetachedLoader>;
    constructor(_elementRef: ElementRef, _iterableDiffers: IterableDiffers, _renderer: NativeScriptRendererFactory, _ngZone: NgZone);
    ngAfterViewInit(): void;
    ngOnDestroy(): void;
    get nativeElement(): RadListView;
    get listView(): RadListView;
    set loadOnDemandTemplate(value: TemplateRef<any>);
    set headerTemplate(value: TemplateRef<ElementRef>);
    set groupTemplate(value: TemplateRef<ElementRef>);
    set footerTemplate(value: TemplateRef<ElementRef>);
    set itemTemplate(value: TemplateRef<ElementRef>);
    set itemSwipeTemplate(value: TemplateRef<ElementRef>);
    changeAnimationsEnabled: boolean;
    trackBy: TrackByFunction<any>;
    set items(value: any);
    ngDoCheck(): void;
    onItemLoadingInternal(args: any): void;
    onItemReappearingInternal(args: any): void;
    onItemRecyclingInternal(args: any): void;
    onItemDisposingInternal(args: any): void;
    setupViewRef(viewRef: EmbeddedViewRef<any>, data: any, index: number): void;
    setLayout(layout: any): void;
    private attachChild;
    private detectChangesOnChild;
    private setItemTemplates;
    registerTemplate(key: string, template: TemplateRef<ListItemContext>): void;
    viewPool: Map<TemplateRef<ListItemContext>, {
        scrapSize: number;
        scrapHead: Set<EmbeddedViewRef<ListItemContext>>;
    }>;
    private storeViewRef;
    viewToTemplate: WeakMap<EmbeddedViewRef<any>, TemplateRef<any>>;
    viewToLoader: WeakMap<EmbeddedViewRef<any>, ComponentRef<DetachedLoader>>;
    private getOrCreate;
    private getView;
    private templatesChanges;
    private getViewPool;
    static ɵfac: i0.ɵɵFactoryDeclaration<RadListViewComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<RadListViewComponent, "RadListView", never, { "autoReuseViews": "autoReuseViews"; "changeAnimationsEnabled": "changeAnimationsEnabled"; "trackBy": "trackBy"; "items": "items"; }, { "setupItemView": "setupItemView"; }, ["itemTemplateQuery"], never, false>;
}
export declare class ListViewLinearLayoutDirective {
    constructor();
    static ɵfac: i0.ɵɵFactoryDeclaration<ListViewLinearLayoutDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<ListViewLinearLayoutDirective, "ListViewLinearLayout", never, {}, {}, never, never, false>;
}
export declare class ListViewGridLayoutDirective {
    constructor();
    static ɵfac: i0.ɵɵFactoryDeclaration<ListViewGridLayoutDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<ListViewGridLayoutDirective, "ListViewGridLayout", never, {}, {}, never, never, false>;
}
export declare class ListViewStaggeredLayoutDirective {
    constructor();
    static ɵfac: i0.ɵɵFactoryDeclaration<ListViewStaggeredLayoutDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<ListViewStaggeredLayoutDirective, "ListViewStaggeredLayout", never, {}, {}, never, never, false>;
}
export declare class ReorderHandleDirective {
    constructor();
    static ɵfac: i0.ɵɵFactoryDeclaration<ReorderHandleDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<ReorderHandleDirective, "ReorderHandle", never, {}, {}, never, never, false>;
}
export declare class TKListViewHeaderDirective implements OnInit {
    private owner;
    private template;
    constructor(owner: RadListViewComponent, template: TemplateRef<any>);
    ngOnInit(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<TKListViewHeaderDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<TKListViewHeaderDirective, "[tkListViewHeader]", never, {}, {}, never, never, false>;
}
export declare class TKListViewFooterDirective implements OnInit {
    private owner;
    private template;
    constructor(owner: RadListViewComponent, template: TemplateRef<any>);
    ngOnInit(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<TKListViewFooterDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<TKListViewFooterDirective, "[tkListViewFooter]", never, {}, {}, never, never, false>;
}
export declare class TKListViewItemSwipeDirective implements OnInit {
    private owner;
    private template;
    constructor(owner: RadListViewComponent, template: TemplateRef<any>);
    ngOnInit(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<TKListViewItemSwipeDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<TKListViewItemSwipeDirective, "[tkListItemSwipeTemplate]", never, {}, {}, never, never, false>;
}
export declare class TKListViewItemDirective implements OnInit {
    private owner;
    private template;
    constructor(owner: RadListViewComponent, template: TemplateRef<any>);
    ngOnInit(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<TKListViewItemDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<TKListViewItemDirective, "[tkListItemTemplate]", never, {}, {}, never, never, false>;
}
export declare class TKGroupTemplateDirective implements OnInit {
    private owner;
    private template;
    constructor(owner: RadListViewComponent, template: TemplateRef<any>);
    ngOnInit(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<TKGroupTemplateDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<TKGroupTemplateDirective, "[tkGroupTemplate]", never, {}, {}, never, never, false>;
}
export declare class TKTemplateKeyDirective {
    private templateRef;
    private owner;
    constructor(templateRef: TemplateRef<any>, owner: RadListViewComponent);
    set tkTemplateKey(value: any);
    static ɵfac: i0.ɵɵFactoryDeclaration<TKTemplateKeyDirective, [null, { host: true; }]>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<TKTemplateKeyDirective, "[tkTemplateKey]", never, { "tkTemplateKey": "tkTemplateKey"; }, {}, never, never, false>;
}
export declare class TKListViewLoadOnDemandDirective implements OnInit {
    private owner;
    private template;
    constructor(owner: RadListViewComponent, template: TemplateRef<any>);
    ngOnInit(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<TKListViewLoadOnDemandDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<TKListViewLoadOnDemandDirective, "[tkListLoadOnDemandTemplate]", never, {}, {}, never, never, false>;
}
export declare class TKListViewLayoutDirective implements OnInit {
    private owner;
    private _elementRef;
    constructor(owner: RadListViewComponent, _elementRef: ElementRef);
    ngOnInit(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<TKListViewLayoutDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<TKListViewLayoutDirective, "[tkListViewLayout]", never, {}, {}, never, never, false>;
}
export declare function getItemViewRoot(viewRef: EmbeddedViewRef<any>, rootLocator?: RootLocator): View;
export declare const LISTVIEW_DIRECTIVES: (typeof RadListViewComponent | typeof ListViewLinearLayoutDirective | typeof TKListViewHeaderDirective | typeof TKListViewFooterDirective | typeof TKListViewItemSwipeDirective | typeof TKListViewItemDirective | typeof TKGroupTemplateDirective | typeof TKTemplateKeyDirective | typeof TKListViewLoadOnDemandDirective | typeof TKListViewLayoutDirective)[];
export declare class NativeScriptUIListViewModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<NativeScriptUIListViewModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<NativeScriptUIListViewModule, [typeof RadListViewComponent, typeof TKListViewItemDirective, typeof TKListViewItemSwipeDirective, typeof TKListViewHeaderDirective, typeof TKListViewFooterDirective, typeof TKListViewLoadOnDemandDirective, typeof TKListViewLayoutDirective, typeof ListViewGridLayoutDirective, typeof ListViewStaggeredLayoutDirective, typeof ReorderHandleDirective, typeof ListViewLinearLayoutDirective, typeof TKTemplateKeyDirective, typeof TKGroupTemplateDirective], never, [typeof RadListViewComponent, typeof TKListViewItemDirective, typeof TKListViewItemSwipeDirective, typeof TKListViewHeaderDirective, typeof TKListViewFooterDirective, typeof TKListViewLoadOnDemandDirective, typeof TKListViewLayoutDirective, typeof ListViewGridLayoutDirective, typeof ListViewStaggeredLayoutDirective, typeof ReorderHandleDirective, typeof ListViewLinearLayoutDirective, typeof TKTemplateKeyDirective, typeof TKGroupTemplateDirective]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<NativeScriptUIListViewModule>;
}
