import { EventEmitter, OnInit, OnDestroy } from '@angular/core';
import { I18nService } from '../../../services/i18n';
import { IonInfiniteScroll } from '@ionic/angular/standalone';
import { InfiniteListMetadata, InfiniteListState, LoadMoreEvent } from './types';
import { RefreshEvent, RefresherMetadata } from '../../molecules/refresher/types';
import * as i0 from "@angular/core";
/**
* Componente wrapper para listas con infinite scroll.
*
* @example
*
*
*
*
*
* {{ user.bio }}
*
*
*
* @example
*
*
*/
export declare class InfiniteListComponent implements OnInit, OnDestroy {
private readonly skeletonService;
private readonly cdr;
protected readonly i18n: I18nService;
infiniteScroll?: IonInfiniteScroll;
/** Configuracion del componente */
props: InfiniteListMetadata;
loadMore: EventEmitter;
refresh: EventEmitter;
stateChange: EventEmitter;
itemsChange: EventEmitter;
errorOccurred: EventEmitter;
readonly items: import("@angular/core").WritableSignal;
readonly state: import("@angular/core").WritableSignal;
readonly hasMoreBottom: import("@angular/core").WritableSignal;
readonly hasMoreTop: import("@angular/core").WritableSignal;
readonly error: import("@angular/core").WritableSignal;
readonly isInitialLoad: import("@angular/core").WritableSignal;
private currentPage;
private currentCursor;
/** Progreso de carga (0-1 si totalCount conocido) */
readonly loadProgress: import("@angular/core").Signal;
/** Props combinados con defaults */
get mergedProps(): InfiniteListMetadata;
/** Config del refresher */
get refresherConfig(): RefresherMetadata;
/** Componente de skeleton a usar */
get skeletonComponent(): import("@angular/core").Type;
/** Inputs para el skeleton */
get skeletonInputs(): {
config: unknown;
};
/** Anuncio de estado para lectores de pantalla */
readonly statusAnnouncement: import("@angular/core").Signal;
ngOnInit(): void;
ngOnDestroy(): void;
/** Funcion de tracking para ngFor */
trackByFn(index: number, item: T): unknown;
/** Si debe mostrar el scroll inferior */
shouldShowBottomScroll(): boolean;
/** Carga inicial de datos */
loadInitial(): Promise;
/** Cargar mas items en la parte inferior */
loadBottom(): Promise;
/** Cargar mas items en la parte superior */
loadTop(): Promise;
/** Refresh - recargar desde cero */
refreshList(): Promise;
/** Reintentar despues de error */
retry(): Promise;
/** Reset completo */
reset(): Promise;
/** Agregar items al inicio */
prependItems(newItems: T[]): void;
/** Agregar items al final */
appendItems(newItems: T[]): void;
/** Actualizar un item por indice */
updateItem(index: number, item: T): void;
/** Remover un item por indice */
removeItem(index: number): void;
/** Handler para evento de infinite scroll */
onInfiniteScroll(event: CustomEvent): Promise;
/** Handler para evento de refresh */
onRefreshTriggered(event: RefreshEvent): Promise;
private executeLoad;
private handleError;
static ɵfac: i0.ɵɵFactoryDeclaration, never>;
static ɵcmp: i0.ɵɵComponentDeclaration, "val-infinite-list", never, { "props": { "alias": "props"; "required": false; }; }, { "loadMore": "loadMore"; "refresh": "refresh"; "stateChange": "stateChange"; "itemsChange": "itemsChange"; "errorOccurred": "errorOccurred"; }, never, never, true, never>;
}