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 Transmission implements TorrentClient {
    xTransmissionSessionId: string;
    readonly url: string;
    readonly clientHost: string;
    readonly clientPriority: number;
    readonly clientType = Label.TRANSMISSION;
    readonly readonly: boolean;
    readonly label: string;
    constructor(url: string, clientHost: string, priority: number, readonly: boolean);
    private request;
    validateConfig(): Promise<void>;
    checkOriginalTorrent(data: SearcheeWithInfoHash | Metafile, onlyCompleted: boolean): Promise<Result<{
        downloadDir: string;
    }, InjectionResult.FAILURE | InjectionResult.TORRENT_NOT_COMPLETE>>;
    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>>;
    isTorrentInClient(inputHash: string): Promise<Result<boolean, Error>>;
    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(newTorrent: Metafile, searchee: Searchee, decision: DecisionAnyMatch, options: {
        onlyCompleted: boolean;
        destinationDir?: string;
    }): Promise<InjectionResult>;
}
