import { Logger, SudoKeyManager } from '@sudoplatform/sudo-common'; import { AuthenticationProvider } from '..'; import { ApiClient } from '../client/apiClient'; import { AuthenticationStore } from '../core/auth-store'; import { Config } from '../core/sdk-config'; import { AuthUI } from './auth'; import { IdentityProvider } from './identity-provider'; import { AuthenticationTokens, SudoUserClient } from './user-client-interface'; export interface SudoUserOptions { authenticationStore?: AuthenticationStore; sudoKeyManager?: SudoKeyManager; apiClient?: ApiClient; authUI?: AuthUI; identityProvider?: IdentityProvider; launchUriFn?: (url: string) => void; config?: Config; logger?: Logger; } export declare class DefaultSudoUserClient implements SudoUserClient { private config; private keyManager; private sudoUserKeyManager; private authenticationStore; private identityProvider; private apiClient; private logger; private authUI?; private launchUriFn?; constructor(options?: SudoUserOptions); get sudoKeyManager(): SudoKeyManager; presentFederatedSignInUI(): void; processFederatedSignInTokens(url: string): Promise; getIdToken(): Promise; getAccessToken(): Promise; getRefreshToken(): Promise; getTokenExpiry(): Promise; getRefreshTokenExpiry(): Promise; getUserName(): Promise; setUserName(name: string): Promise; getUserClaim(name: string): Promise; getSubject(): Promise; isSignedIn(): Promise; refreshTokens(refreshToken: string): Promise; getLatestAuthToken(): Promise; signOut(): Promise; globalSignOut(): Promise; registerWithAuthenticationProvider(authenticationProvider: AuthenticationProvider, registrationId?: string): Promise; signInWithAuthenticationProvider(authenticationProvider: AuthenticationProvider): Promise; isRegistered(): Promise; signInWithKey(): Promise; deregister(): Promise; clearAuthenticationTokens(): Promise; presentSignOutUI(): void; reset(): Promise; resetUserData(): Promise; private getTokenClaim; /** * Store the authentication tokens and user id of the signed in user. This function * is only called when a user has successfully signed in using a private key. */ private storeTokens; private registerFederatedIdAndRefreshTokens; private generateRegistrationData; private getAuthTokens; /** * Provide a custom auth UI. This is mainly used for unit testing (optional). */ setAuthUI(authUI: AuthUI): void; /** * Provide a custom identity provider. This is mainly used for unit testing (optional). */ setIdentityProvider(identityProvider: IdentityProvider): void; /** * Provide a custom function to open the sign in url. * This is mainly used for unit testing (optional). */ setLaunchUriFn(launchUriFn: (url: string) => void): void; /** * Provide a custom authentication store. * This is mainly used for unit testing (optional). */ setAuthenticationStore(authenticationStore: AuthenticationStore): void; }