import { Client } from "xmlrpc";
import { DecisionAnyMatch, InjectionResult } from "../constants.js";
import { Label } from "../logger.js";
import { Metafile } from "../parseTorrent.js";
import { Result } from "../Result.js";
import { Searchee, SearcheeWithInfoHash } from "../searchee.js";
import { ClientSearcheeResult, TorrentClient, TorrentMetadataInClient } from "./TorrentClient.js";
export default class RTorrent implements TorrentClient {
    client: Client;
    readonly clientHost: string;
    readonly clientPriority: number;
    readonly clientType = Label.RTORRENT;
    readonly readonly: boolean;
    readonly label: string;
    readonly batchSize = 500;
    constructor(url: string, clientHost: string, priority: number, readonly: boolean);
    private methodCallP;
    isTorrentInClient(inputHash: string): Promise<Result<boolean, Error>>;
    private checkOriginalTorrent;
    private getDownloadLocation;
    validateConnection(): Promise<void>;
    validateConfig(): Promise<void>;
    getDownloadDir(meta: SearcheeWithInfoHash | Metafile, options: {
        onlyCompleted: boolean;
    }): Promise<Result<string, "NOT_FOUND" | "TORRENT_NOT_COMPLETE" | "UNKNOWN_ERROR">>;
    getAllDownloadDirs(options: {
        onlyCompleted: boolean;
    }): Promise<Map<string, string>>;
    isTorrentComplete(infoHash: string): Promise<Result<boolean, "NOT_FOUND">>;
    isTorrentChecking(infoHash: string): Promise<Result<boolean, "NOT_FOUND">>;
    getAllTorrents(): Promise<TorrentMetadataInClient[]>;
    getClientSearchees(options?: {
        newSearcheesOnly?: boolean;
        refresh?: string[];
    }): Promise<ClientSearcheeResult>;
    recheckTorrent(infoHash: string): Promise<void>;
    resumeInjection(meta: Metafile, decision: DecisionAnyMatch, options: {
        checkOnce: boolean;
    }): Promise<void>;
    inject(meta: Metafile, searchee: Searchee, decision: DecisionAnyMatch, options: {
        onlyCompleted: boolean;
        destinationDir?: string;
    }): Promise<InjectionResult>;
}
