import { TemplateRef } from '@angular/core';
import { Color } from '@ionic/core';
/**
 * Estado del componente refresher.
 */
export type RefresherState = 'idle' | 'pulling' | 'refreshing' | 'completing';
/**
 * Tipos de spinner disponibles.
 */
export type RefresherSpinnerType = 'circular' | 'crescent' | 'dots' | 'lines-sharp';
/**
 * Evento emitido cuando se activa el refresh.
 */
export interface RefreshEvent {
    /** Llamar cuando la operacion de refresh completa */
    complete: () => void;
    /** Llamar para cancelar el refresh */
    cancel: () => void;
    /** Timestamp cuando inicio el refresh */
    timestamp: Date;
}
/**
 * Evento de progreso durante el gesto de pull.
 */
export interface RefreshPullEvent {
    /** Valor de progreso entre 0 y 1 */
    progress: number;
    /** Si se ha alcanzado el umbral de pull */
    thresholdReached: boolean;
}
/**
 * Configuracion de indicador personalizado.
 */
export interface RefresherIndicatorConfig {
    /** Template personalizado para estado pulling */
    pullingTemplate?: TemplateRef<{
        progress: number;
    }>;
    /** Template personalizado para estado refreshing */
    refreshingTemplate?: TemplateRef<void>;
    /** Template personalizado para estado completing */
    completingTemplate?: TemplateRef<void>;
}
/**
 * Metadata para el componente val-refresher.
 */
export interface RefresherMetadata {
    /** Si el refresher esta deshabilitado */
    disabled?: boolean;
    /** Umbral de pull en pixels (default: 70) */
    pullThreshold?: number;
    /** Distancia maxima de pull en pixels (default: 200) */
    pullMax?: number;
    /** Factor de resistencia del pull (0-1, default: 0.5) */
    pullFactor?: number;
    /** Duracion de snap back en ms (default: 280) */
    snapbackDuration?: number;
    /** Duracion de cierre en ms (default: 280) */
    closeDuration?: number;
    /** Color del spinner */
    color?: Color;
    /** Tipo de spinner */
    spinnerType?: RefresherSpinnerType;
    /** Texto mostrado mientras se arrastra */
    pullingText?: string;
    /** Texto mostrado mientras se actualiza */
    refreshingText?: string;
    /** Configuracion de indicador personalizado */
    indicatorConfig?: RefresherIndicatorConfig;
    /** Habilitar feedback haptico en movil (default: true) */
    hapticFeedback?: boolean;
    /** Modo web - habilita pull-to-refresh en navegadores desktop */
    webMode?: boolean;
    /** Identificador unico */
    token?: string;
    /** Key de traduccion para texto pulling */
    pullingTextKey?: string;
    /** Key de traduccion para texto refreshing */
    refreshingTextKey?: string;
    /** Clase CSS adicional */
    contentClass?: string;
}
/**
 * Valores por defecto para el refresher.
 */
export declare const DEFAULT_REFRESHER_METADATA: Partial<RefresherMetadata>;
