import { FirebaseApp, FirebaseError } from '@nativescript/firebase-core';
import { TaskState, TaskEvent, StringFormat } from './common';
import { IMetadata, IListResult, IReference, IStorage, ITask, ITaskSnapshot, TaskSnapshotObserver, ListOptions } from '.';
export { TaskSnapshotObserver, StringFormat, TaskEvent };
export declare class TaskSnapshot implements ITaskSnapshot {
    _native: FIRStorageTaskSnapshot;
    static fromNative(value: FIRStorageTaskSnapshot): TaskSnapshot;
    get native(): FIRStorageTaskSnapshot;
    get ios(): FIRStorageTaskSnapshot;
    get bytesTransferred(): number;
    get error(): FirebaseError;
    get metadata(): Metadata;
    get ref(): Reference;
    get state(): TaskState.ERROR | TaskState.PAUSED | TaskState.RUNNING | TaskState.SUCCESS | TaskState.UNKNOWN;
    get task(): Task;
    get totalBytes(): number;
}
export declare class Task implements ITask {
    _native: FIRStorageUploadTask | FIRStorageDownloadTask;
    static fromNative(value: FIRStorageUploadTask | FIRStorageDownloadTask): Task;
    get native(): FIRStorageUploadTask | FIRStorageDownloadTask;
    get ios(): FIRStorageUploadTask | FIRStorageDownloadTask;
    get snapshot(): TaskSnapshot;
    cancel(): boolean;
    on(event: TaskEvent, nextOrObserver?: TaskSnapshotObserver | ((a: TaskSnapshot) => any), error?: (a: FirebaseError) => any, complete?: () => void): void;
    pause(): boolean;
    resume(): boolean;
}
export declare class ListResult implements IListResult {
    _native: FIRStorageListResult;
    static fromNative(value: FIRStorageListResult): ListResult;
    get native(): FIRStorageListResult;
    get ios(): FIRStorageListResult;
    get items(): Reference[];
    get nextPageToken(): string;
    get prefixes(): Reference[];
}
export declare class Metadata implements IMetadata {
    _native: FIRStorageMetadata;
    constructor();
    static fromNative(value: FIRStorageMetadata): Metadata;
    get native(): FIRStorageMetadata;
    get ios(): FIRStorageMetadata;
    get bucket(): string;
    get cacheControl(): string;
    set cacheControl(value: string);
    get contentDisposition(): string;
    set contentDisposition(value: string);
    get contentEncoding(): string;
    set contentEncoding(value: string);
    get contentLanguage(): string;
    set contentLanguage(value: string);
    get contentType(): string;
    set contentType(value: string);
    get customMetadata(): {
        [key: string]: string;
    };
    set customMetadata(value: {
        [key: string]: string;
    });
    get fullPath(): string;
    get generation(): string;
    get md5hash(): string;
    get metageneration(): string;
    get name(): string;
    get size(): number;
    get timeCreated(): Date;
    get updated(): Date;
}
export declare class Reference implements IReference {
    _native: FIRStorageReference;
    static fromNative(value: FIRStorageReference): Reference;
    get native(): FIRStorageReference;
    get ios(): FIRStorageReference;
    get bucket(): string;
    get fullPath(): string;
    get name(): string;
    get parent(): Reference;
    get root(): Reference;
    get storage(): Storage;
    child(path: string): Reference;
    delete(): Promise<void>;
    getDownloadURL(): Promise<string>;
    getMetadata(): Promise<Metadata>;
    list(options?: ListOptions): Promise<ListResult>;
    listAll(): Promise<ListResult>;
    put(data: Blob | Uint8Array | ArrayBuffer, metadata?: Metadata): Task;
    putString(data: string, format?: StringFormat, metadata?: Metadata): Task;
    putFile(path: string, metadata?: Metadata): Task;
    updateMetadata(metadata: Metadata): Promise<Metadata>;
    writeToFile(localFilePath: string): Task;
}
export declare class Storage implements IStorage {
    _native: FIRStorage;
    _app: FirebaseApp;
    constructor(app?: FirebaseApp);
    static fromNative(storage: FIRStorage): Storage;
    useEmulator(host: string, port: number): void;
    ref(path?: string): Reference;
    refFromURL(url: string): Reference;
    get native(): FIRStorage;
    get ios(): FIRStorage;
    get app(): FirebaseApp;
    get maxDownloadRetryTime(): number;
    set maxDownloadRetryTime(value: number);
    get maxOperationRetryTime(): number;
    set maxOperationRetryTime(value: number);
    get maxUploadRetryTime(): number;
    set maxUploadRetryTime(value: number);
}
