import { GetTorrentRequest, GetTorrentResponse } from '../model/torrent/GetTorrent';
import { ClientConfig } from './ClientConfig';
import { AddTorrentRequest, AddTorrentResponse } from '../model/torrent/AddTorrent';
import { Argument, RpcRequest, RpcResponse } from '../model/CommonTypes';
import { RemoveTorrentRequest, RemoveTorrentResponse } from '../model/torrent/RemoveTorrent';
import { UpdateTorrentRequest, UpdateTorrentResponse } from '../model/torrent/UpdateTorrent';
import { SetTorrentLocationRequest, SetTorrentLocationResponse } from "../model/torrent/SetTorrentLocation";
import { GetSessionRequest, GetSessionResponse, SetSessionRequest, SetSessionResponse } from "../model/session/Session";
import { FreeSpaceRequest, FreeSpaceResponse } from "../model/session/FreeSpace";
import { SessionStatsRequest, SessionStatsResponse } from "../model/session/SessionStats";
import { ReannounceTorrentRequest, StartNowTorrentRequest, StartTorrentRequest, StopTorrentRequest, TorrentActionResponse, VerifyTorrentRequest } from "../model/torrent/TorrentAction";
export declare class TransmissionClient {
    private readonly csrfHeader;
    private readonly separator;
    private readonly config;
    private readonly protocol;
    private readonly host;
    private readonly url;
    private token;
    constructor(config: ClientConfig);
    request<REQ extends RpcRequest<Argument>, RES extends RpcResponse<Argument>>(req: REQ): Promise<RES>;
    getTorrents(req: GetTorrentRequest): Promise<GetTorrentResponse>;
    addTorrent(req: AddTorrentRequest): Promise<AddTorrentResponse>;
    moveTorrent(req: SetTorrentLocationRequest): Promise<SetTorrentLocationResponse>;
    removeTorrent(req: RemoveTorrentRequest): Promise<RemoveTorrentResponse>;
    updateTorrent(req: UpdateTorrentRequest): Promise<UpdateTorrentResponse>;
    stopTorrent(req: StopTorrentRequest): Promise<TorrentActionResponse>;
    startTorrent(req: StartTorrentRequest): Promise<TorrentActionResponse>;
    /**
     * Start torrent bypassing queueing
     */
    startTorrentNow(req: StartNowTorrentRequest): Promise<TorrentActionResponse>;
    verifyTorrent(req: VerifyTorrentRequest): Promise<TorrentActionResponse>;
    torrentReannounce(req: ReannounceTorrentRequest): Promise<TorrentActionResponse>;
    getSession(req: GetSessionRequest): Promise<GetSessionResponse>;
    setSession(req: SetSessionRequest): Promise<SetSessionResponse>;
    getFreeSpace(req: FreeSpaceRequest): Promise<FreeSpaceResponse>;
    getSessionStats(req: SessionStatsRequest): Promise<SessionStatsResponse>;
}
