import { ChangeDetectorRef, ElementRef, NgZone, EventEmitter } from '@angular/core';
import type { Components } from '@ionic/core/components';
import type { IonRefresherCustomEvent } from '@ionic/core/components';
import type { RefresherEventDetail as IIonRefresherRefresherEventDetail } from '@ionic/core/components';
import type { RefresherPullEndEventDetail as IIonRefresherRefresherPullEndEventDetail } from '@ionic/core/components';
import * as i0 from "@angular/core";
export declare class IonRefresher {
    protected z: NgZone;
    protected el: HTMLIonRefresherElement;
    ionRefresh: EventEmitter<IonRefresherCustomEvent<IIonRefresherRefresherEventDetail>>;
    ionPull: EventEmitter<IonRefresherCustomEvent<void>>;
    ionStart: EventEmitter<IonRefresherCustomEvent<void>>;
    ionPullStart: EventEmitter<IonRefresherCustomEvent<void>>;
    ionPullEnd: EventEmitter<IonRefresherCustomEvent<IIonRefresherRefresherPullEndEventDetail>>;
    constructor(c: ChangeDetectorRef, r: ElementRef, z: NgZone);
    static ɵfac: i0.ɵɵFactoryDeclaration<IonRefresher, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<IonRefresher, "ion-refresher", never, { "closeDuration": { "alias": "closeDuration"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "mode": { "alias": "mode"; "required": false; }; "pullFactor": { "alias": "pullFactor"; "required": false; }; "pullMax": { "alias": "pullMax"; "required": false; }; "pullMin": { "alias": "pullMin"; "required": false; }; "snapbackDuration": { "alias": "snapbackDuration"; "required": false; }; }, { "ionRefresh": "ionRefresh"; "ionPull": "ionPull"; "ionStart": "ionStart"; "ionPullStart": "ionPullStart"; "ionPullEnd": "ionPullEnd"; }, never, ["*"], true, never>;
}
export declare interface IonRefresher extends Components.IonRefresher {
    /**
     * Emitted when the user lets go of the content and has pulled down
  further than the `pullMin` or pulls the content down and exceeds the pullMax.
  Updates the refresher state to `refreshing`. The `complete()` method should be
  called when the async operation has completed.
     */
    ionRefresh: EventEmitter<IonRefresherCustomEvent<IIonRefresherRefresherEventDetail>>;
    /**
     * Emitted while the user is pulling down the content and exposing the refresher.
     */
    ionPull: EventEmitter<IonRefresherCustomEvent<void>>;
    /**
     * Emitted when the user begins to start pulling down. @deprecated Use `ionPullStart` instead.
     */
    ionStart: EventEmitter<IonRefresherCustomEvent<void>>;
    /**
     * Emitted when the user begins to start pulling down.
     */
    ionPullStart: EventEmitter<IonRefresherCustomEvent<void>>;
    /**
     * Emitted when the refresher has returned to the inactive state
  after a pull gesture. This fires whether the refresh completed
  successfully or was canceled.
     */
    ionPullEnd: EventEmitter<IonRefresherCustomEvent<IIonRefresherRefresherPullEndEventDetail>>;
}
