import { Readable } from "stream";
import { BaseDirectory, ContentHeaders, EntityPageListIterator, ExpiryOptions, Metadata, MultipartUploadData, MultipartUploadOptions, ObjectDirectory, ObjectProperties, ObjectReference, ServerStorage, TransferConfig, TransferData } from "@itwin/object-storage-core";
import { GoogleTransferConfig } from "../common";
import { StorageWrapper } from "./wrappers";
import { GoogleStorageConfig } from "./wrappers/GoogleStorageConfig";
import { StorageControlClientWrapper } from "./wrappers/StorageControlClientWrapper";
export declare class GoogleServerStorage extends ServerStorage {
    private readonly _storage;
    private readonly _storageControl;
    private readonly _bucketName;
    constructor(_storage: StorageWrapper, _storageControl: StorageControlClientWrapper, config: GoogleStorageConfig);
    get bucketName(): string;
    download(reference: ObjectReference, transferType: "buffer"): Promise<Buffer>;
    download(reference: ObjectReference, transferType: "stream"): Promise<Readable>;
    download(reference: ObjectReference, transferType: "local", localPath?: string): Promise<string>;
    upload(reference: ObjectReference, data: TransferData, metadata?: Metadata, headers?: ContentHeaders): Promise<void>;
    uploadInMultipleParts(reference: ObjectReference, data: MultipartUploadData, options?: MultipartUploadOptions, headers?: ContentHeaders): Promise<void>;
    createBaseDirectory(directory: BaseDirectory): Promise<void>;
    getListDirectoriesPagedIterator(_maxPageSize: number): EntityPageListIterator<BaseDirectory>;
    getListObjectsPagedIterator(directory: BaseDirectory, maxPageSize: number): EntityPageListIterator<ObjectReference>;
    list(directory: BaseDirectory): Promise<ObjectReference[]>;
    deleteBaseDirectory(directory: BaseDirectory): Promise<void>;
    deleteObject(reference: ObjectReference): Promise<void>;
    baseDirectoryExists(directory: BaseDirectory): Promise<boolean>;
    objectExists(reference: ObjectReference): Promise<boolean>;
    copyObject(sourceStorage: ServerStorage, sourceReference: ObjectReference, targetReference: ObjectReference): Promise<void>;
    updateMetadata(reference: ObjectReference, metadata: Metadata): Promise<void>;
    getObjectProperties(reference: ObjectReference): Promise<ObjectProperties>;
    getDownloadUrl(reference: ObjectReference, expiry?: ExpiryOptions): Promise<string>;
    getUploadUrl(reference: ObjectReference, expiry?: ExpiryOptions): Promise<string>;
    getDownloadConfig(directory: ObjectDirectory, expiry?: ExpiryOptions): Promise<GoogleTransferConfig>;
    getUploadConfig(directory: ObjectDirectory, expiry?: ExpiryOptions): Promise<TransferConfig>;
    getDirectoryAccessConfig(directory: ObjectDirectory, expiry?: ExpiryOptions): Promise<TransferConfig>;
    releaseResources(): Promise<void>;
}
//# sourceMappingURL=GoogleServerStorage.d.ts.map