import { inspect } from 'xshell';
export * from './resume-data';
export declare class Peer {
    country: string;
    ip: string;
    reverse_dns: string;
    utp: number;
    port: number;
    client: string;
    flags: string;
    /** 0 - 1000 */
    progress: number;
    download_speed: number;
    upload_speed: number;
    requests_out: number;
    requests_in: number;
    waited: Date;
    uploaded: number;
    downloaded: number;
    hash_error: number;
    /** 用户 */
    peer_download_speed: number;
    max_upload_speed: number;
    max_download_speed: number;
    queued: number;
    inactive: number;
    relevance: number;
    torrent: Torrent;
    should_block: boolean;
    constructor(raw_data: (string | number)[], torrent: Torrent);
    to_str(): string;
    format_client(): string;
    format_download_speed(): string;
    format_upload_speed(): string;
    format_downloaded(): string;
    format_ipinfo(): string;
    [inspect.custom](): string;
}
export declare enum Status {
    STARTED = 1,
    CHECKING = 2,
    ERROR = 16,
    PAUSED = 32,
    QUEUED = 64
}
export declare class Torrent {
    hash: string;
    status: number;
    name: string;
    /** bytes */
    size: number;
    /** 0 - 1000 */
    progress: number;
    /** uTorrent 累计下载量 bytes */
    downloaded: number;
    /** uTorrent 累积上传量 bytes */
    uploaded: number;
    /** 需除以 1000 ? */
    ratio: number;
    /** bytes/second */
    upload_speed: number;
    /** bytes/second */
    download_speed: number;
    /** estimated time of arrival (seconds) */
    time_remaining: number;
    label: string;
    peers_connected: number;
    peers_in_swarm: number;
    seeds_connected: number;
    seeds_in_swarm: number;
    availability: number;
    /** -1 表示未在队列中 */
    queue_position: number;
    /** 剩余大小 */
    remaining: number;
    download_url: string;
    rss_feed_url: string;
    status_message: string;
    stream_id: string;
    date_added: Date;
    date_completed: Date;
    app_update_url: string;
    save_path: string;
    /** status 按位与 Status 相与并结合 progress 信息得到 */
    state: ['下载' | '做种' | '暂停' | '停止' | '完成' | '检查' | '错误' | '排队', string];
    utorrent: UTorrent;
    peers: Peer[];
    constructor(raw_data: (string | number)[], utorrent: UTorrent);
    get_peers(): Promise<Peer[]>;
    [inspect.custom](): string;
    to_str(): string;
    format_upload_speed(): string;
    format_download_speed(): string;
    format_state(): string;
    format_time_remaining(): string;
}
export declare class UTorrent {
    root_url: string;
    username: string;
    password: string;
    fp_ipfilter: string;
    /** 启动时 ipfilter 中已有的数据 */
    static_ipfilter: string;
    /** 检测 peers 并屏蔽的时间间隔 */
    interval: number;
    /** 间隔 interval 秒自动重置当前时间间隔内被动态屏蔽的 IP */
    interval_reset: number;
    state: 'INIT' | 'IDLE' | 'RUNNING';
    state_resetting: 'INIT' | 'IDLE' | 'RUNNING';
    print: {
        /** ['下载'] */
        torrents: '下载' | '做种' | '所有' | boolean;
        /** [true] */
        peers: boolean;
    };
    token: string;
    blocked_ips: Set<string>;
    torrents: Torrent[];
    static launch(exe: string): Promise<void>;
    private constructor();
    static connect(options: {
        root_url: string;
        username: string;
        password: string;
        fp_ipfilter: string;
        interval: number;
        interval_reset: number;
        /** print?: true */
        print?: boolean | {
            /** ['下载'] */
            torrents: '下载' | '做种' | '所有' | boolean;
            /** [true] */
            peers: boolean;
        };
    }): Promise<UTorrent>;
    /** get token */
    get_token(): Promise<void>;
    rpc({ api, params, method }?: {
        api?: string;
        params?: Record<string, any>;
        method?: 'GET' | 'POST';
    }): Promise<any>;
    get_torrents(): Promise<Torrent[]>;
    get_peers(torrents?: Torrent[]): Promise<Peer[]>;
    print_peers(peers?: Peer[], { limit }?: {
        limit?: number;
    }): Promise<void>;
    print_torrents({ torrents, filter }?: {
        torrents?: Torrent[];
        filter?: (torrent: Torrent) => boolean;
    }): Promise<void>;
    print_blockeds(): Promise<void>;
    block_peers(torrents?: Torrent[]): Promise<Peer[]>;
    reload_ipfilter(): Promise<any>;
    reset_ipfilter(): Promise<void>;
    reset_blocked_ips(): Promise<void>;
    find_torrent(name_pattern: string | RegExp): Torrent;
    start_blocking(): Promise<void>;
    start_resetting_blocked_ips(): Promise<void>;
    stop_blocking(): Promise<void>;
    hide_display(): void;
    show_display(): void;
}
export default UTorrent;
