import { IResult, ITenantLoginOption, ITenantOption, SystemOptionsService, TenantLoginOptionsService, TenantOptionsService, TenantService } from '@c8y/client';
import { Observable } from 'rxjs';
import { AuthConfiguration } from './auth-configuration.model';
import { AppStateService, TenantUiService } from '@c8y/ngx-components';
import { TenantLoginOptionMapper } from './tenant-login-option.mapper';
import * as i0 from "@angular/core";
export declare class AuthConfigurationService {
    private tenantLoginOptionsService;
    private tenantOptionsService;
    private systemOptionsService;
    private appState;
    private tenantUiService;
    private tenantLoginOptionMapper;
    private tenantService;
    private systemOptionsWithDefaultValue;
    private tenantOptionsWithDefaultValue;
    constructor(tenantLoginOptionsService: TenantLoginOptionsService, tenantOptionsService: TenantOptionsService, systemOptionsService: SystemOptionsService, appState: AppStateService, tenantUiService: TenantUiService, tenantLoginOptionMapper: TenantLoginOptionMapper, tenantService: TenantService);
    getAuthConfiguration$(): Observable<AuthConfiguration>;
    save(newAuthConfiguration: AuthConfiguration, previousAuthConfiguration: AuthConfiguration): Promise<[IResult<ITenantLoginOption>, IResult<ITenantLoginOption>, ...IResult<ITenantOption>[]]>;
    private map;
    private saveOrUpdateLoginOption;
    private prepareBasicLoginOption;
    private prepareOauthInternalLoginOption;
    private originalLoginOptionWithDefaults;
    private getLoginOptionFromAuthConfiguration;
    private visibleOnLoginPage;
    private prepareTenantOptions;
    private getLoginOptions$;
    private getLoginOption;
    private getPreferredLoginOptionType$;
    private getTenantOptions$;
    private getSystemOptions$;
    /**
     * Returns an observable with fixed `two-factor-authentication.enforced` system option or null.
     * This method fixes problem with inconsistent value. System option `two-factor-authentication.enforced` is list of tenants when UI using boolean value.
     * This part will be removed after implementing new endpoint in MTM-50490.
     */
    private fixTfaEnforcedSystemOption;
    /**
     * Returns a promise or null.
     * This method is needed now, because simply changing TFA strategy tenant option does not trigger all the necessary backend logic to apply the change, therefore, we need to call tenant's `/tfa` endpoint, which applies the change for all users in the tenant.
     * Within MTM-50490, we're going to simplify the process further by replacing multiple requests with one new endpoint that will handle saving of all authentication settings.
     */
    private fixTfaStrategy;
    private isSmsApplicationAvailable$;
    private getOptionsObject;
    private getDefaultLoginOption;
    static ɵfac: i0.ɵɵFactoryDeclaration<AuthConfigurationService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<AuthConfigurationService>;
}
//# sourceMappingURL=auth-configuration.service.d.ts.map