import { EventEmitter, TemplateRef } from '@angular/core';
import { IonRefresher } from '@ionic/angular/standalone';
import { RefresherMetadata, RefresherState, RefreshEvent, RefreshPullEvent } from './types';
import * as i0 from "@angular/core";
/**
 * Componente de pull-to-refresh para movil y web.
 *
 * @example
 * <!-- Uso basico -->
 * <val-refresher
 *   [props]="{
 *     color: 'primary',
 *     pullingText: 'Arrastra para actualizar',
 *     refreshingText: 'Cargando...'
 *   }"
 *   (refresh)="onRefresh($event)"
 * >
 *   <ion-content>
 *     <!-- Contenido scrolleable -->
 *   </ion-content>
 * </val-refresher>
 *
 * @example
 * <!-- Con indicador personalizado -->
 * <val-refresher [props]="{ color: 'primary' }" (refresh)="onRefresh($event)">
 *   <ng-template #pullingIndicator let-progress="progress">
 *     <div class="custom-indicator">
 *       <ion-icon name="arrow-down" [style.transform]="'rotate(' + progress * 180 + 'deg)'"></ion-icon>
 *     </div>
 *   </ng-template>
 *   <ion-content>...</ion-content>
 * </val-refresher>
 */
export declare class RefresherComponent {
    ionRefresher: IonRefresher;
    /** Templates personalizados via content projection */
    pullingIndicator?: TemplateRef<{
        progress: number;
    }>;
    refreshingIndicator?: TemplateRef<void>;
    completingIndicator?: TemplateRef<void>;
    /** Configuracion del refresher */
    props: RefresherMetadata;
    /** Evento emitido cuando se activa el refresh */
    refresh: EventEmitter<RefreshEvent>;
    /** Evento de progreso durante el pull */
    pullProgressChange: EventEmitter<RefreshPullEvent>;
    /** Evento de cambio de estado */
    stateChange: EventEmitter<RefresherState>;
    private i18n;
    /** Estado actual del refresher */
    readonly state: import("@angular/core").WritableSignal<RefresherState>;
    /** Progreso actual del pull (0-1) */
    readonly pullProgress: import("@angular/core").WritableSignal<number>;
    /** Get pulling text with i18n fallback */
    getPullingText(): string;
    /** Get refreshing text with i18n fallback */
    getRefreshingText(): string;
    /** Props combinados con defaults */
    get mergedProps(): RefresherMetadata;
    /** Si hay indicadores personalizados */
    get hasCustomIndicator(): boolean;
    /**
     * Activa programaticamente el refresh.
     */
    triggerRefresh(): void;
    /**
     * Completa la operacion de refresh actual.
     */
    complete(): void;
    /**
     * Cancela la operacion de refresh actual.
     */
    cancel(): void;
    /** Handler para evento ionRefresh */
    onIonRefresh(event: CustomEvent): void;
    /** Handler para evento ionPull */
    onIonPull(event: CustomEvent): void;
    /** Handler para evento ionStart */
    onIonStart(): void;
    private emitRefreshEvent;
    static ɵfac: i0.ɵɵFactoryDeclaration<RefresherComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<RefresherComponent, "val-refresher", never, { "props": { "alias": "props"; "required": false; }; }, { "refresh": "refresh"; "pullProgressChange": "pullProgressChange"; "stateChange": "stateChange"; }, ["pullingIndicator", "refreshingIndicator", "completingIndicator"], ["*"], true, never>;
}
