/// <reference types="node" />
import { NosBaseClient } from '../client';
import { Callback } from '../type/callback';
import { CopyObjectParams, DeleteMultiObjectErrorInfo, DeleteMultiObjectParams, DeleteObjectParams, GetObjectBufferParams, GetObjectStreamParams, GetObjectStringParams, GetObjectUrlParams, HeadObjectParams, HeadObjectResult, ListObjectParams, ListObjectResult, MoveObjectParams, OperateObjectParams, PutObjectParams, PutObjectResult } from '../type/object';
export declare class NosClientObjectExt extends NosBaseClient {
    /**
     * 获取对象列表
     */
    listObject(params?: ListObjectParams): Promise<ListObjectResult>;
    listObject(params: ListObjectParams, cb: Callback<ListObjectResult>): void;
    /**
     * 上传对象
     */
    putObject(params: PutObjectParams): Promise<PutObjectResult>;
    putObject(params: PutObjectParams, cb: Callback<PutObjectResult>): void;
    /**
     * 获取对象内容。支持以 Buffer/string/Stream 的形式返回，建议使用 Stream 形式。
     * 如果你能确保返回的文件大小在合理的范围，不会导致占用过多的内容，比如说一张图片，一个文本文件等，
     * 可以直接使用 Buffer 或者 string，否则请使用 Stream
     */
    getObject(params: GetObjectStreamParams): Promise<NodeJS.ReadableStream>;
    getObject(params: GetObjectBufferParams): Promise<Buffer>;
    getObject(params: GetObjectStringParams): Promise<string>;
    getObject(params: GetObjectStreamParams, cb: Callback<NodeJS.ReadableStream>): void;
    getObject(params: GetObjectBufferParams, cb: Callback<Buffer>): void;
    getObject(params: GetObjectStringParams, cb: Callback<string>): void;
    /**
     * 获取对象元信息。类似于 HTTP head 操作。
     */
    headObject(params: HeadObjectParams): Promise<HeadObjectResult>;
    headObject(params: HeadObjectParams, cb: Callback<HeadObjectResult>): void;
    /**
     * 检查文件是否存在
     */
    isObjectExist(params: OperateObjectParams): Promise<boolean>;
    isObjectExist(params: OperateObjectParams, cb: Callback<boolean>): void;
    /**
     * 复制对象
     */
    copyObject(params: CopyObjectParams): Promise<void>;
    copyObject(params: CopyObjectParams, cb: Callback<void>): void;
    /**
     * 获取对象的可访问 Url
     */
    getObjectUrl(params: GetObjectUrlParams): Promise<string>;
    getObjectUrl(params: GetObjectUrlParams, cb: Callback<string>): void;
    /**
     * 删除对象
     */
    deleteObject(params: DeleteObjectParams): Promise<void>;
    deleteObject(params: DeleteObjectParams, cb: Callback<void>): void;
    /**
     * 移动对象
     */
    moveObject(params: MoveObjectParams): Promise<void>;
    moveObject(params: MoveObjectParams, cb: Callback<void>): void;
    /**
     * 批量删除对象。
     * @return errors 删除失败的错误列表
     */
    deleteMultiObject(params: DeleteMultiObjectParams): Promise<DeleteMultiObjectErrorInfo[]>;
    deleteMultiObject(params: DeleteMultiObjectParams, cb: Callback<DeleteMultiObjectErrorInfo[]>): void;
}
