import type { Axios } from 'axios';
import type * as auth from 'amazon-cognito-identity-js';
import { type Vpn, VpnState, GetVpnResponse, ListVpnsPaginatedResponse, ListVpnsPagingParams } from '@mytmpvpn/mytmpvpn-common/models/vpn';
import { GetPeanutsBalanceResponse, GetPeanutsPackResponse, type PeanutsPack } from '@mytmpvpn/mytmpvpn-common/models/peanuts';
import { GetReferralCodeResponse, GetReferrerCodeResponse, GetReferralHistoryResponse, GetReferralStatsResponse, ValidateReferralCodeResponse, GetReferralHistoryRequest } from '@mytmpvpn/mytmpvpn-common/models/referral';
import { ListLocationsResponse, Location } from '@mytmpvpn/mytmpvpn-common/models/location';
import { UserConfig } from '@mytmpvpn/mytmpvpn-common/models/uservpn';
import { VpnConfig, GetVpnConfigResponse, VpnConfigLimits } from '@mytmpvpn/mytmpvpn-common/models/vpnConfig';
export declare abstract class MyTmpVpnClient {
    private session?;
    private user?;
    getUser(): auth.CognitoUser | undefined;
    getSession(): auth.CognitoUserSession | undefined;
    setUserSession(user: auth.CognitoUser, session: auth.CognitoUserSession): void;
    abstract listLocations(): Promise<ListLocationsResponse>;
    abstract listPeanutsPacks(): Promise<GetPeanutsPackResponse>;
    abstract getPeanutsBalance(): Promise<GetPeanutsBalanceResponse>;
    abstract getUserConfig(): Promise<UserConfig>;
    abstract patchUserConfig(updates: Partial<UserConfig>): Promise<UserConfig>;
    abstract createVpn(geonamesId: number, vpnConfig: VpnConfig): Promise<Vpn>;
    abstract deleteVpn(vpnId: string): Promise<GetVpnResponse>;
    abstract getVpn(vpnId: string): Promise<GetVpnResponse>;
    abstract getVpnConfig(vpnId: string, af?: 'ipv4' | 'ipv6'): Promise<GetVpnConfigResponse>;
    abstract getVpnQrConfig(vpnId: string, af?: 'ipv4' | 'ipv6'): Promise<GetVpnConfigResponse>;
    abstract listVpnsPaginated(pagingParams: ListVpnsPagingParams): Promise<ListVpnsPaginatedResponse>;
    abstract getReferralCode(): Promise<GetReferralCodeResponse>;
    abstract getReferrerCode(): Promise<GetReferrerCodeResponse>;
    abstract validateReferralCodeFromBackend(code: string): Promise<ValidateReferralCodeResponse>;
    abstract getReferralStats(): Promise<GetReferralStatsResponse>;
    abstract getReferralHistory(options?: GetReferralHistoryRequest): Promise<GetReferralHistoryResponse>;
    listVpns(pageSize?: number): Promise<Vpn[]>;
    createVpnSync(geonamesId: number, config: VpnConfig, timeout_s?: number): Promise<Vpn>;
    getLocationByCity(cityName: string): Promise<Location | undefined>;
    getLocationByGeonamesId(geonamesId: number): Promise<Location | undefined>;
    waitUntilVpnStateIs(vpnId: string, state: VpnState, timeoutInSeconds?: number): Promise<Vpn>;
    waitAndDeleteVpn(vpnId: string): Promise<GetVpnResponse | undefined>;
    waitAndDeleteVpnSync(vpnId: string, timeout_s?: number): Promise<Vpn>;
    waitAndDeleteAll(vpnIds: string[], timeout_s?: number): Promise<(GetVpnResponse | undefined)[]>;
    waitAndDeleteAllSync(vpnIds: string[], timeout_s?: number): Promise<Vpn[]>;
    validateReferralCode(code: string): Promise<ValidateReferralCodeResponse>;
    getVpnConfigLimits(): Promise<VpnConfigLimits>;
}
export declare class MyTmpVpnClientImpl extends MyTmpVpnClient {
    ax: Axios;
    constructor(apiUrl: string);
    getDefaultAuthorizationHeaders(): {
        Accept: string;
        Authorization: string;
    };
    getDefaultNonAuthorizationHeaders(): {
        Accept: string;
    };
    getUserConfig(): Promise<UserConfig>;
    patchUserConfig(updates: Partial<UserConfig>): Promise<UserConfig>;
    listVpnsPaginated(pagingParams: ListVpnsPagingParams): Promise<ListVpnsPaginatedResponse>;
    deleteVpn(vpnId: string): Promise<GetVpnResponse>;
    createVpn(geonamesId: number, config: VpnConfig): Promise<Vpn>;
    getVpn(vpnId: string): Promise<GetVpnResponse>;
    getVpnConfig(vpnId: string, af?: 'ipv4' | 'ipv6'): Promise<string>;
    getVpnQrConfig(vpnId: string, af?: 'ipv4' | 'ipv6'): Promise<string>;
    listLocations(): Promise<ListLocationsResponse>;
    listPeanutsPacks(): Promise<PeanutsPack[]>;
    getPeanutsBalance(): Promise<number>;
    getReferralCode(): Promise<GetReferralCodeResponse>;
    getReferrerCode(): Promise<GetReferrerCodeResponse>;
    validateReferralCodeFromBackend(code: string): Promise<ValidateReferralCodeResponse>;
    getReferralStats(): Promise<GetReferralStatsResponse>;
    getReferralHistory(options?: GetReferralHistoryRequest): Promise<GetReferralHistoryResponse>;
}
