import { ConnectionOptions, MetricsConnection, HTTPMethod, HTTPHeaders, HTTPBody } from './runtime'; export declare const JWT_TTL_LIMIT = 5000; interface AuthenticatedResponse { accessToken: string; refreshToken?: string; } export interface AuthPrefillParams { email: string; returnUrl: string; requiresElevated?: boolean; name?: string; birthday?: string; gender?: string; language?: string; units?: string; metricWeight?: number; bodyFatPercentage?: number; metricHeight?: number; } export interface AccessTokenChangeEvent { accessToken: string; } export interface RefreshTokenChangeEvent { refreshToken: string; } export interface KioskTokenChangeEvent { kioskToken: string; } export interface StrengthMachineTokenChangeEvent { accessToken: string; } export interface JWTFacility { id: number; licensedUntil: string; } export interface JWTToken { iss: string; jti: string; exp: number; type: 'access' | 'refresh' | 'kiosk' | 'machine'; } export interface SessionToken extends JWTToken { user: { id: number; }; facility?: { id: number; licencedUntil: string; } | null; facilityRole?: string | null; } export interface AccessToken extends SessionToken { type: 'access'; } export interface RefreshToken extends SessionToken { type: 'refresh'; } export interface ModelChangeEvent { id: number; name: string; mutation: 'create' | 'update' | 'delete'; occurredAt: number; } export interface ModelSubscribeParameters { model: string; id: number; userId?: number; facilityRelationshipId?: number; actionOverride?: string; } export interface ListSubscribeParameters { parentModel: string; parentId: number; model: string; actionOverride?: string; } export declare function isAuthenticatedResponse(response: unknown): response is AuthenticatedResponse; export declare class AuthenticatedConnection { protected readonly _connection: MetricsConnection; private _keepAlive; private _accessToken; private _refreshToken; private _accessTokenTimeout; private readonly _modelChangeEventHandlerMap; private readonly _onAccessTokenChangeEvent; private readonly _onRefreshTokenChangeEvent; constructor(params: { options?: ConnectionOptions; keepAlive?: boolean; authenticatedResponse?: AuthenticatedResponse; }); initializeAuthenticatedSession(refreshToken: string): Promise; private updateTokens; private keepAccessTokenAlive; private handleConnectionEvent; private dispatchPushData; get connection(): MetricsConnection; get keepAlive(): boolean; set keepAlive(value: boolean); get decodedAccessToken(): AccessToken; get accessToken(): string; get refreshToken(): string | null; get onRefreshTokenChangeEvent(): import("./event").IEvent; get onAccessTokenChangeEvent(): import("./event").IEvent; close(): void; authenticatedAction(action: string, route: string, method: HTTPMethod, params: Object | undefined, pathParams: Object | undefined, headers: HTTPHeaders, body?: HTTPBody): Promise; action(action: string, route: string, method: HTTPMethod, params: Object | undefined, pathParams: Object | undefined, headers: HTTPHeaders, body?: HTTPBody): Promise; } export {};