import { PutioAPIClient } from '../../client';
import { IGenerateTOTPResponse, ILoginResponse, IVerifyTOTPResponse, IValidateTokenResponse, OAuthApp, OAuthAppSession, TwoFactorRecoveryCodes } from './types';
declare class TwoFactor {
    private client;
    constructor(client: PutioAPIClient);
    GenerateTOTP(): Promise<import("../..").IPutioAPIClientResponse<IGenerateTOTPResponse>>;
    VerifyTOTP(twoFactorScopedToken: string, code: string): Promise<import("../..").IPutioAPIClientResponse<IVerifyTOTPResponse>>;
    GetRecoveryCodes(): Promise<import("../..").IPutioAPIClientResponse<{
        recovery_codes: TwoFactorRecoveryCodes;
    }>>;
    RegenerateRecoveryCodes(): Promise<import("../..").IPutioAPIClientResponse<{
        recovery_codes: TwoFactorRecoveryCodes;
    }>>;
}
export default class Auth {
    private client;
    TwoFactor: TwoFactor;
    constructor(client: PutioAPIClient);
    GetLoginURL({ redirectURI, responseType, state, clientID, clientName, }: {
        redirectURI: string;
        responseType: string;
        state: string;
        clientID: string;
        clientName?: string;
    }): string;
    Login({ username, password, app, }: {
        username: string;
        password: string;
        app: {
            client_id: string;
            client_secret: string;
        };
    }): Promise<import("../..").IPutioAPIClientResponse<ILoginResponse>>;
    Logout(): Promise<import("../..").IPutioAPIClientResponse<any>>;
    Register(data: any): Promise<import("../..").IPutioAPIClientResponse<any>>;
    Exists(key: string, value: string): Promise<import("../..").IPutioAPIClientResponse<any>>;
    GetVoucher(code: string): Promise<import("../..").IPutioAPIClientResponse<any>>;
    GetGiftCard(code: string): Promise<import("../..").IPutioAPIClientResponse<any>>;
    GetFamilyInvite(code: string): Promise<import("../..").IPutioAPIClientResponse<any>>;
    ForgotPassword(mail: string): Promise<import("../..").IPutioAPIClientResponse<any>>;
    ResetPassword(key: string, newPassword: string): Promise<import("../..").IPutioAPIClientResponse<any>>;
    GetCode(clientID: number | string, clientName?: string): Promise<import("../..").IPutioAPIClientResponse<{
        code: string;
        qr_code_url: string;
    }>>;
    CheckCodeMatch(code: string): Promise<import("../..").IPutioAPIClientResponse<{
        oauth_token: string | null;
    }>>;
    LinkDevice(code: string): Promise<import("../..").IPutioAPIClientResponse<{
        app: OAuthApp;
    }>>;
    Grants(): Promise<import("../..").IPutioAPIClientResponse<{
        apps: OAuthApp[];
    }>>;
    RevokeApp(id: number): Promise<import("../..").IPutioAPIClientResponse<{}>>;
    Clients(): Promise<import("../..").IPutioAPIClientResponse<{
        clients: OAuthAppSession[];
    }>>;
    RevokeClient(id: string): Promise<import("../..").IPutioAPIClientResponse<{}>>;
    RevokeAllClients(): Promise<import("../..").IPutioAPIClientResponse<{}>>;
    ValidateToken(token: string): Promise<import("../..").IPutioAPIClientResponse<IValidateTokenResponse>>;
}
export {};
