/// <reference types="node" resolution-mode="require"/>
/// <reference types="node" resolution-mode="require"/>
import * as plugins from './smartbucket.plugins.js';
import { SmartBucket } from './smartbucket.classes.smartbucket.js';
import { Directory } from './smartbucket.classes.directory.js';
export declare class Bucket {
    static getBucketByName(smartbucketRef: SmartBucket, bucketNameArg: string): Promise<Bucket>;
    static createBucketByName(smartbucketRef: SmartBucket, bucketName: string): Promise<Bucket>;
    static removeBucketByName(smartbucketRef: SmartBucket, bucketName: string): Promise<void>;
    smartbucketRef: SmartBucket;
    name: string;
    constructor(smartbucketRef: SmartBucket, bucketName: string);
    /**
     * gets the base directory of the bucket
     */
    getBaseDirectory(): Promise<Directory>;
    /**
     * store file
     */
    fastPut(optionsArg: {
        path: string;
        contents: string | Buffer;
    }): Promise<void>;
    /**
     * get file
     */
    fastGet(optionsArg: Parameters<typeof this.fastGetStream>[0]): Promise<Buffer>;
    fastGetStream(optionsArg: {
        path: string;
    }): Promise<plugins.smartrx.rxjs.ReplaySubject<Buffer>>;
    /**
     * store file as stream
     */
    fastPutStream(optionsArg: {
        path: string;
        dataStream: plugins.stream.Readable;
        nativeMetadata?: {
            [key: string]: string;
        };
    }): Promise<void>;
    copyObject(optionsArg: {
        /**
         * the
         */
        objectKey: string;
        /**
         * in case you want to copy to another bucket specify it here
         */
        targetBucket?: Bucket;
        targetBucketKey?: string;
        /**
         * metadata will be merged with existing metadata
         */
        nativeMetadata?: {
            [key: string]: string;
        };
        deleteExistingNativeMetadata?: boolean;
    }): Promise<void>;
    /**
     * removeObject
     */
    fastRemove(optionsArg: {
        path: string;
    }): Promise<void>;
    doesObjectExist(optionsArg: {
        path: string;
    }): Promise<boolean>;
}
