@mytmpvpn/mytmpvpn-client
Version:
MyTmpVpn Client Library
91 lines (90 loc) • 3.79 kB
TypeScript
import { type Axios } from 'axios';
import type * as auth from 'amazon-cognito-identity-js';
import { type Vpn, VpnState, type VpnConfig, type VpnMetrics, VpnConfigLimits } from '@mytmpvpn/mytmpvpn-common/models/vpn';
import { type PeanutsPack } from '@mytmpvpn/mytmpvpn-common/models/peanuts';
export type GetVpnConfigLimitsResponse = VpnConfigLimits;
export type ListVpnsResponse = Vpn[];
export interface DeleteVpnResponse {
vpn: {
href: string;
id: string;
};
}
export interface CreateVpnResponse {
vpn: {
href: string;
id: string;
};
}
export interface GetVpnResponse {
vpn: Vpn;
metrics: VpnMetrics;
}
export interface RegionInfo {
name: string;
city: string;
country: string;
cctld: string;
}
export type GetVpnConfigResponse = string;
export type ListRegionsResponse = string[];
export type ListRegionsDetailedResponse = RegionInfo[];
export type ListVpnsPagingParams = {
pageSize: Number;
nextPageToken: string | undefined;
};
export type ListVpnsPaginatedResponse = {
totalVpns: number;
totalPages: number;
vpns: Vpn[];
nextPageToken: string | undefined;
};
export type GetPeanutsPackResponse = PeanutsPack[];
export type GetPeanutsBalanceResponse = number;
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 listRegions(): Promise<ListRegionsResponse>;
abstract listRegionsDetailed(): Promise<ListRegionsDetailedResponse>;
abstract listPeanutsPacks(): Promise<GetPeanutsPackResponse>;
abstract getPeanutsBalance(): Promise<GetPeanutsBalanceResponse>;
abstract getVpnConfigLimits(): Promise<VpnConfigLimits>;
abstract createVpn(region: string, vpnConfig: VpnConfig): Promise<Vpn>;
abstract deleteVpn(vpnId: string): Promise<GetVpnResponse>;
abstract getVpn(vpnId: string): Promise<GetVpnResponse>;
abstract getVpnConfig(vpnId: string): Promise<GetVpnConfigResponse>;
abstract getVpnQrConfig(vpnId: string): Promise<GetVpnConfigResponse>;
abstract listVpnsPaginated(pagingParams: ListVpnsPagingParams): Promise<ListVpnsPaginatedResponse>;
listVpns(pageSize?: number): Promise<Vpn[]>;
createVpnSync(region: string, config: VpnConfig, timeout_s?: number): Promise<Vpn>;
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[]>;
}
export declare class MyTmpVpnClientImpl extends MyTmpVpnClient {
ax: Axios;
constructor(apiUrl: string);
getDefaultAuthorizationHeaders(): {
Accept: string;
Authorization: string;
};
getDefaultNonAuthorizationHeaders(): {
Accept: string;
};
getVpnConfigLimits(): Promise<VpnConfigLimits>;
listVpnsPaginated(pagingParams: ListVpnsPagingParams): Promise<ListVpnsPaginatedResponse>;
deleteVpn(vpnId: string): Promise<GetVpnResponse>;
createVpn(region: string, config: VpnConfig): Promise<Vpn>;
getVpn(vpnId: string): Promise<GetVpnResponse>;
getVpnConfig(vpnId: string): Promise<string>;
getVpnQrConfig(vpnId: string): Promise<string>;
listRegions(): Promise<ListRegionsResponse>;
listRegionsDetailed(): Promise<RegionInfo[]>;
listPeanutsPacks(): Promise<PeanutsPack[]>;
getPeanutsBalance(): Promise<number>;
}