import { EmbeddedViewRef, IterableChanges } from '@angular/core';
import { RxListViewContext } from '@rx-angular/cdk/template';
import { TemplateSettings } from './model';
export interface RxVirtualListChange<T, C> {
    index?: number;
    view?: EmbeddedViewRef<C>;
    item: T;
}
export type RxVirtualListChanges<T, C> = [
    number,
    () => RxVirtualListChange<T, C>,
    boolean?
][];
/**
 * @internal
 *
 * An object that holds methods needed to introduce actions to a list e.g. move, remove, insert
 */
export interface RxVirtualListTemplateManager<T, C> {
    getListChanges(changes: IterableChanges<T>, items: T[], renderCount: number, adjustIndexWith: number): [RxVirtualListChanges<T, C>, boolean];
    setItemCount(itemCount: number): void;
    detach(): void;
}
/**
 * @internal
 *
 * Factory that returns a `ListTemplateManager` for the passed params.
 *
 * @param templateSettings
 */
export declare function createVirtualListTemplateManager<C extends RxListViewContext<T>, T>({ viewContainerRef, templateRef, createViewContext, updateViewContext, templateCacheSize, }: TemplateSettings<T, C, any>): RxVirtualListTemplateManager<T, C>;
