import { Observable } from '@nativescript/core';
export declare abstract class DownloaderBase extends Observable {
    downloadsData: Map<String, any>;
    /**
     * Native android instance
     */
    android: any;
    /**
     * Native ios instance of [AFURLSessionManager](http://cocoadocs.org/docsets/AFNetworking/3.1.0/Classes/AFURLSessionManager.html)
     */
    ios: any;
    constructor();
    abstract createDownload(options: DownloadOptions): string;
    abstract start(id: string, progress?: Function): Promise<DownloadEventData>;
    abstract resume(id: string): void;
    abstract pause(id: string): void;
    abstract cancel(id: string): void;
    abstract getStatus(id: string): StatusCode;
    abstract getPath(id: string): string;
}
export declare function generateId(): string;
export interface DownloadEventError {
    status: string;
    message: string;
    native: any;
}
export interface DownloadEventData {
    status: string;
    path: string;
    message?: string;
}
export interface ProgressEventData {
    value: number;
    currentSize: number;
    totalSize: number;
    speed: number;
}
export declare enum StatusCode {
    PENDING = "pending",
    PAUSED = "paused",
    DOWNLOADING = "downloading",
    COMPLETED = "completed",
    ERROR = "error"
}
export interface DownloadOptions {
    url: string;
    query?: Object | string;
    headers?: Record<string, string>;
    path?: string;
    fileName?: string;
}
export interface DownloadsData {
    status?: StatusCode;
    resolve?: Function;
    reject?: Function;
    callback?: Function;
    request?: any;
    path?: string;
}
