import { FirebaseApp, FirebaseError } from '@nativescript/firebase-core';
import { 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: com.google.firebase.storage.FileDownloadTask.TaskSnapshot | com.google.firebase.storage.UploadTask.TaskSnapshot;
    static fromNative(value: com.google.firebase.storage.FileDownloadTask.TaskSnapshot | com.google.firebase.storage.UploadTask.TaskSnapshot): TaskSnapshot;
    get native(): com.google.firebase.storage.FileDownloadTask.TaskSnapshot | com.google.firebase.storage.UploadTask.TaskSnapshot;
    get android(): com.google.firebase.storage.FileDownloadTask.TaskSnapshot | com.google.firebase.storage.UploadTask.TaskSnapshot;
    get bytesTransferred(): number;
    get error(): FirebaseError;
    get metadata(): Metadata;
    get ref(): Reference;
    get state(): any;
    get task(): Task;
    get totalBytes(): number;
}
export declare class Task implements ITask {
    _native: com.google.firebase.storage.FileDownloadTask | com.google.firebase.storage.UploadTask;
    static fromNative(value: com.google.firebase.storage.FileDownloadTask | com.google.firebase.storage.UploadTask): Task;
    get native(): com.google.firebase.storage.FileDownloadTask | com.google.firebase.storage.UploadTask;
    get android(): com.google.firebase.storage.FileDownloadTask | com.google.firebase.storage.UploadTask;
    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: com.google.firebase.storage.ListResult;
    static fromNative(value: com.google.firebase.storage.ListResult): ListResult;
    get native(): com.google.firebase.storage.ListResult;
    get android(): com.google.firebase.storage.ListResult;
    get items(): Reference[];
    get nextPageToken(): string;
    get prefixes(): Reference[];
}
export declare class Metadata implements IMetadata {
    _native: com.google.firebase.storage.StorageMetadata;
    _builder: com.google.firebase.storage.StorageMetadata.Builder;
    constructor();
    static fromNative(value: com.google.firebase.storage.StorageMetadata): Metadata;
    get native(): com.google.firebase.storage.StorageMetadata;
    get android(): com.google.firebase.storage.StorageMetadata;
    get bucket(): string;
    private _createBuilder;
    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: com.google.firebase.storage.StorageReference;
    static fromNative(value: com.google.firebase.storage.StorageReference): Reference;
    get native(): com.google.firebase.storage.StorageReference;
    get android(): com.google.firebase.storage.StorageReference;
    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: com.google.firebase.storage.FirebaseStorage;
    _app: FirebaseApp;
    constructor(app?: FirebaseApp);
    static fromNative(storage: com.google.firebase.storage.FirebaseStorage): Storage;
    useEmulator(host: string, port: number): void;
    ref(path?: string): Reference;
    refFromURL(url: string): Reference;
    get native(): com.google.firebase.storage.FirebaseStorage;
    get android(): com.google.firebase.storage.FirebaseStorage;
    get app(): FirebaseApp;
    get maxDownloadRetryTime(): number;
    set maxDownloadRetryTime(value: number);
    get maxOperationRetryTime(): number;
    set maxOperationRetryTime(value: number);
    get maxUploadRetryTime(): number;
    set maxUploadRetryTime(value: number);
}
