import { EventEmitter } from '@angular/core';
import { AccountInfo, RedirectUriQueryParams } from './lf-login-internal-types';
import { AbortedLoginError, AuthorizationCredentials, AccountEndpoints } from './lf-login-types';
import { LoginState, RedirectBehavior, LoginType } from '@laserfiche/lf-ui-components/shared';
import { GetAccessTokenResponse } from '@laserfiche/lf-api-client-core';
import { LoginProvider } from './login-provider';
import * as i0 from "@angular/core";
export declare class LfLoginService {
    /** @internal */
    _accessToken?: AuthorizationCredentials;
    /** @internal */
    _accountInfo?: AccountInfo;
    /** @internal */
    _accountEndpoints?: AccountEndpoints;
    /** @internal */
    _state?: LoginState;
    /** @internal */
    client_id?: string;
    /** @internal */
    redirect_uri: string;
    /** @internal */
    scope?: string;
    /** @internal */
    redirect_behavior: RedirectBehavior;
    /** @internal */
    authorize_url_host_name: string;
    /** @internal */
    self_hosted_base_url?: string;
    /** @internal */
    self_hosted_account_endpoints?: AccountEndpoints;
    /** @internal */
    code_verifier?: string;
    /** @internal */
    login_type: LoginType;
    /** @internal */
    loginProvider?: LoginProvider;
    /** @internal */
    login_identifier: string;
    /** @internal */
    logoutCompletedInService: EventEmitter<AbortedLoginError | undefined>;
    /** @internal */
    loginCompletedInService: EventEmitter<void>;
    /** @internal */
    private get base64EncodedLoginIdentifier();
    /** @internal */
    get accountIdStorageKey(): string;
    /** @internal */
    get accountEndpointsStorageKey(): string;
    /** @internal */
    get accessTokenStorageKey(): string;
    /** @internal */
    get codeVerifierStorageKey(): string;
    /** @internal */
    private exchangeCodeForToken_lock;
    /** @internal */
    getAccountEndpoints(): AccountEndpoints | undefined;
    /** @internal */
    exchangeCodeForTokenAsync(callBackURIParams: RedirectUriQueryParams): Promise<void>;
    /** @internal */
    parseTokenResponseAsync(response: GetAccessTokenResponse): Promise<AuthorizationCredentials | undefined>;
    /** @internal */
    getExchangeCodeSuccessResponse(jsonResponse: any): {
        accessToken: any;
        refreshToken: any;
        expiresIn: any;
        tokenType: any;
    };
    /** @internal */
    removeFromLocalStorage(): void;
    removeFromCache(): void;
    /** @internal */
    removeCodeVerifierFromLocalStorage(): void;
    /** @internal */
    createPostTokenRequest(code: string): RequestInit;
    /** @internal */
    storeAccessToken(responseBody: AuthorizationCredentials): void;
    /** @internal */
    storeCodeVerifier(code_verifier: string): void;
    /** @internal */
    getPostRequestHeaders(): Record<string, string>;
    /** @internal */
    objToWWWFormUrlEncodedBody(obj: any): string;
    /** @internal */
    parseAccessToken(accessToken: string): string;
    /** @internal */
    storeAccountEndpoints(accountEndpoints: AccountEndpoints): void;
    /** @internal */
    storeAccountInfo(accountId: string, trusteeId: string): void;
    refreshServiceAccountProperties(): void;
    /** @internal */
    extractErrorFromUrl(url: URL): {
        name: string;
        description: string;
    } | undefined;
    /** @internal */
    extractCodeFromUrl(url: URL): string | undefined;
    /** @internal */
    extractDomainFromUrl(url: URL): string | undefined;
    /** @internal */
    extractCustomerIdFromUrl(url: URL): string | undefined;
    static ɵfac: i0.ɵɵFactoryDeclaration<LfLoginService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<LfLoginService>;
}
