import { DataDownload } from '@yuntools/ali-oss/dist/lib/method/download';
import type { Context } from '../interface';
import { BaseOptions, Config, DataBase, DataCp, DataSign, DataStat, FnKey, MkdirOptions, ProcessRet, RmOptions, RmrfOptions, StatOptions, UploadOptions, MvOptions, CpOptions, LinkOptions, SignOptions, SyncLocalOptions, SyncRemoteOptions, DownloadOptions } from './types';
/** 阿里云 OSS ossutils 命令行封装组件 */
export declare class AliOssComponent {
    protected readonly config: Config;
    ctx: Context | undefined;
    private readonly client;
    private readonly querySpanMap;
    constructor(config: Config);
    /**
     * 拷贝文件，
     * - 拷贝本地文件/目录到远程建议使用 `upload()` 或者 `syncRemote()` 方法
     * - 拷贝远程文件/目录到本地建议使用 `download()` 或者 `syncLocal()` 方法
     *
     * 若 force 为空或者 false，且目标文件存在时会卡在命令行提示输入阶段（无显示）最后导致超时异常
     * @link https://help.aliyun.com/document_detail/120057.html
     */
    cp(
    /** 本地文件、目录或者远程 OSS 对象 */
    src: string, 
    /** OSS 对象，不包括 bucket */
    target: string, options?: CpOptions): Promise<ProcessRet<DataCp>>;
    /**
     * 上传本地文件到 OSS
     * 若 force 为空或 false，且目标文件存在时会卡在命令行提示输入阶段（无显示）最后导致超时异常
     * @link https://help.aliyun.com/document_detail/120057.html
     */
    upload(
    /** 本地目录或文件 */
    src: string, 
    /** OSS 对象，不包括 bucket */
    target: string, options?: UploadOptions): Promise<ProcessRet<DataCp>>;
    /**
     * 下载远程文件到本地
     * 若 force 为空或 false，且目标文件存在时会卡在命令行提示输入阶段（无显示）最后导致超时异常
     * @link https://help.aliyun.com/document_detail/120057.html
     */
    download(
    /** OSS 对象，不包括 bucket */
    src: string, 
    /** 本地目录或文件 */
    target: string, options?: DownloadOptions): Promise<ProcessRet<DataDownload>>;
    /**
     * 创建软链接
     * @link https://help.aliyun.com/document_detail/120059.html
     */
    createSymlink(
    /** OSS 对象，不包括 bucket */
    src: string, 
    /** OSS 软连接对象，不包括 bucket */
    target: string, options?: LinkOptions): Promise<ProcessRet>;
    /**
     * 创建目录
     * @link https://help.aliyun.com/document_detail/120062.html
     */
    mkdir(
    /** OSS 对象，不包括 bucket */
    target: string, options?: MkdirOptions): Promise<ProcessRet>;
    /**
     * 移动云端的 OSS 对象
     * 流程为先 `cp()` 然后 `rm()`
     */
    mv(
    /** OSS 源对象，不包括 bucket */
    src: string, 
    /** OSS 目的对象，不包括 bucket */
    target: string, options?: MvOptions): Promise<ProcessRet<DataStat | DataBase>>;
    /**
     * OSS 远程路径是否存在
     */
    pathExists(
    /** OSS 对象，不包括 bucket */
    target: string, options?: StatOptions): Promise<boolean>;
    /**
     * 删除云对象，不支持删除 bucket 本身
     * 如果在 recusive 为 false 时删除目录，则目录参数值必须以 '/' 结尾，否则不会删除成功
     * @link https://help.aliyun.com/document_detail/120053.html
     */
    rm(
    /** OSS 对象，不包括 bucket */
    target: string, options?: RmOptions): Promise<ProcessRet>;
    /**
     * 递归删除，相当于 `rm -rf`
     * @link https://help.aliyun.com/document_detail/120053.html
     */
    rmrf(
    /** OSS 对象，不包括 bucket */
    target: string, options?: RmrfOptions): Promise<ProcessRet>;
    /**
     * sign（生成签名URL）
     * @link https://help.aliyun.com/document_detail/120064.html
     */
    sign(
    /** OSS 对象，不包括 bucket */
    src: string, options?: SignOptions): Promise<ProcessRet<DataSign>>;
    /**
     * 查看 Bucket 和 Object 信息
     * @link https://help.aliyun.com/document_detail/120054.html
     */
    stat(
    /** OSS 对象，不包括 bucket */
    target: string, options?: StatOptions): Promise<ProcessRet>;
    /**
     * 同步 OSS 文件到本地
     * - force 参数默认 true
     * - 若 force 为 false，且目标文件存在时会卡在命令行提示输入阶段（无显示）最后导致超时异常
     * @link https://help.aliyun.com/document_detail/256352.html
     */
    syncLocal(
    /** OSS 对象，不包括 bucket */
    src: string, 
    /** 本地目录 */
    target: string, options?: SyncLocalOptions): Promise<ProcessRet<DataCp>>;
    /**
     * 同步本地文件到 OSS
     * - force 参数默认 true
     * - 若 force 为 false，且目标文件存在时会卡在命令行提示输入阶段（无显示）最后导致超时异常
     * @link https://help.aliyun.com/document_detail/193394.html
     */
    syncRemote(
    /** 本地目录 */
    src: string, 
    /** OSS 对象，不包括 bucket */
    target: string, options?: SyncRemoteOptions): Promise<ProcessRet<DataCp>>;
    protected runner<T extends BaseOptions, R extends ProcessRet<DataBase> | boolean = ProcessRet<DataBase>>(options: RunnerOptions<T>): Promise<R>;
    protected genOptions<T extends BaseOptions>(input: RunnerOptions<T>): _RunnerOption<T>;
    protected tracer<T extends BaseOptions>(type: 'start' | 'finish' | 'error', id: {
        time: symbol;
    }, options: _RunnerOption<T>, err?: unknown): Promise<void>;
}
interface RunnerOptions<T extends BaseOptions> {
    fnKey: FnKey;
    options: T | undefined;
    src: string | undefined;
    target: string | undefined;
}
declare type _RunnerOption<T extends BaseOptions> = Config & T;
export {};
//# sourceMappingURL=component.d.ts.map