import { BaseTokenClient } from '@laserfiche/lf-api-client-core'; import { AuthorizationCredentials } from './lf-login-types'; import { RedirectUriQueryParams } from './lf-login-internal-types'; import { LoginState } from '@laserfiche/lf-ui-components/shared'; /** @internal */ export interface LoginProvider { /** * Returns a {@link BaseTokenClient} instance with the provided token client URL. * * @param tokenClientUrl - The URL of the token client (optional). * @returns A new instance of {@link BaseTokenClient}. */ getTokenClient(tokenClientUrl?: string): BaseTokenClient; /** * Returns the base authorize URL for the login process. * * @return The base authorize URL as a string. */ getBaseAuthorizeUrl(): string; /** * Stores access token credentials and account information in local storage. * * @param accessTokenCredentials - The access token credentials to store. * @param accountId - The account ID associated with the access token. * @param regionalDomain - The regional domain associated with the access token. */ storeInLocalStorage(accessTokenCredentials: AuthorizationCredentials, accountId: string, regionalDomain: string): void; /** * Exchanges redirect URI query parameters from a URL into a {@link RedirectUriQueryParams} object. * * @param url - The URL containing the query parameters to exchange. * @return A new instance of {@link RedirectUriQueryParams} or undefined if no valid query parameters are found. */ exchangeRedirectUriQueryParams(url: URL): RedirectUriQueryParams | undefined; /** * Determines the current state of the login process based on callback URI parameters and emits events to notify * other components of the login state change. * * @param callBackURIParams - The callback URI parameters received from the login provider. * @param loginCompleted - An event emitter that will be notified when the login is completed successfully. * @param logoutCompleted - An event emitter that will be notified when the logout is completed successfully. * @return The current state of the login process as a {@link LoginState} enum value. */ determineCurrentState(callBackURIParams: RedirectUriQueryParams | undefined, loginCompleted: { emit: () => void; }, logoutCompleted: { emit: () => void; }): LoginState; /** * Initiates the logout process by emitting a URL to the provided event emitter. * * @param url - The URL that will be emitted to initiate the logout process (optional). * @param logoutInitiated - An event emitter that will receive the URL to initiate the logout process. */ logoutInitiatedViaUrl(url: string | undefined, logoutInitiated: { emit: (url: string) => void; }): void; }