import { FirebaseApp } from '@nativescript/firebase-core';
import { ProviderBase } from './common';
import { Config, IActionCodeSettings, IIdpResponse, IUI } from '.';
import { Auth } from '@nativescript/firebase-auth';
export declare class GoogleProvider extends ProviderBase {
    _builder: com.firebase.ui.auth.AuthUI.IdpConfig.GoogleBuilder;
    constructor();
    _scopes: string[];
    get scopes(): string[];
    set scopes(values: string[]);
    getNative(ui: IUI): com.firebase.ui.auth.AuthUI.IdpConfig;
}
export declare class FacebookProvider extends ProviderBase {
    _builder: com.firebase.ui.auth.AuthUI.IdpConfig.FacebookBuilder;
    constructor();
    _permissions: string[];
    get permissions(): string[];
    set permissions(values: string[]);
    getNative(ui: IUI): com.firebase.ui.auth.AuthUI.IdpConfig;
}
export declare class TwitterProvider extends ProviderBase {
    _builder: com.firebase.ui.auth.AuthUI.IdpConfig.TwitterBuilder;
    constructor();
    _scopes: string[];
    get scopes(): string[];
    set scopes(values: string[]);
    setCustomParameters(params: Record<string, string>): this;
    getNative(ui: IUI): com.firebase.ui.auth.AuthUI.IdpConfig;
}
export declare class GithubProvider extends ProviderBase {
    _builder: com.firebase.ui.auth.AuthUI.IdpConfig.GitHubBuilder;
    constructor();
    _scopes: string[];
    get scopes(): string[];
    set scopes(values: string[]);
    setCustomParameters(params: Record<string, string>): this;
    getNative(ui: IUI): com.firebase.ui.auth.AuthUI.IdpConfig;
}
export declare class ActionCodeSettings implements IActionCodeSettings {
    _native: com.google.firebase.auth.ActionCodeSettings.Builder;
    constructor();
    get native(): com.google.firebase.auth.ActionCodeSettings;
    get android(): com.google.firebase.auth.ActionCodeSettings;
    url: string;
    androidInstallIfNotAvailable: boolean;
    androidMinimumVersion: string;
    androidPackageName: string;
    dynamicLinkDomain: string;
    handleCodeInApp: boolean;
    iOSBundleId: string;
}
export declare class EmailProvider extends ProviderBase {
    _builder: com.firebase.ui.auth.AuthUI.IdpConfig.EmailBuilder;
    constructor();
    _actionCodeSettings: ActionCodeSettings;
    set actionCodeSettings(value: ActionCodeSettings);
    get actionCodeSettings(): ActionCodeSettings | null;
    _requireName: boolean;
    get requireName(): boolean;
    set requireName(isRequired: boolean);
    forceSameDevice(): this;
    enableEmailLinkSignIn(): this;
    _defaultEmail: string;
    get defaultEmail(): string;
    set defaultEmail(value: string);
    _allowNewAccounts: boolean;
    set allowNewAccounts(allow: boolean);
    get allowNewAccounts(): boolean;
    getNative(ui: IUI): com.firebase.ui.auth.AuthUI.IdpConfig;
}
export declare class PhoneProvider extends ProviderBase {
    _builder: com.firebase.ui.auth.AuthUI.IdpConfig.PhoneBuilder;
    constructor();
    _defaultNumber: string;
    get defaultNumber(): string;
    set defaultNumber(value: string);
    _defaultCountryIso: string;
    get defaultCountryIso(): string;
    set defaultCountryIso(value: string);
    _blacklistedCountries: string[];
    get blacklistedCountries(): string[];
    set blacklistedCountries(values: string[]);
    _whitelistedCountries: string[];
    get whitelistedCountries(): string[];
    set whitelistedCountries(values: string[]);
    getNative(ui: IUI): com.firebase.ui.auth.AuthUI.IdpConfig;
}
export declare class AnonymousProvider extends ProviderBase {
    _builder: com.firebase.ui.auth.AuthUI.IdpConfig.AnonymousBuilder;
    constructor();
    getNative(ui: IUI): com.firebase.ui.auth.AuthUI.IdpConfig;
}
export declare class MicrosoftProvider extends ProviderBase {
    _builder: com.firebase.ui.auth.AuthUI.IdpConfig.MicrosoftBuilder;
    constructor();
    _scopes: string[];
    get scopes(): string[];
    set scopes(values: string[]);
    setCustomParameters(params: Record<string, string>): this;
    getNative(ui: IUI): com.firebase.ui.auth.AuthUI.IdpConfig;
}
export declare class YahooProvider extends ProviderBase {
    _builder: com.firebase.ui.auth.AuthUI.IdpConfig.YahooBuilder;
    constructor();
    _scopes: string[];
    get scopes(): string[];
    set scopes(values: string[]);
    setCustomParameters(params: Record<string, string>): this;
    getNative(ui: IUI): com.firebase.ui.auth.AuthUI.IdpConfig;
}
export declare class AppleProvider extends ProviderBase {
    _builder: com.firebase.ui.auth.AuthUI.IdpConfig.AppleBuilder;
    constructor();
    _scopes: string[];
    get scopes(): string[];
    set scopes(values: string[]);
    setCustomParameters(params: Record<string, string>): this;
    getNative(ui: IUI): com.firebase.ui.auth.AuthUI.IdpConfig;
}
export declare class User {
    _native: com.firebase.ui.auth.data.model.User;
    static fromNative(user: com.firebase.ui.auth.data.model.User): User;
    get native(): com.firebase.ui.auth.data.model.User;
    get android(): com.firebase.ui.auth.data.model.User;
    get name(): string;
    get email(): string;
    get phoneNumber(): string;
    get photoUri(): string;
    get providerId(): string;
    toJSON(): {
        name: string;
        email: string;
        phoneNumber: string;
        photoUri: string;
    };
}
export declare class IdpResponse {
    _native: com.firebase.ui.auth.IdpResponse;
    static fromNative(response: com.firebase.ui.auth.IdpResponse): IdpResponse;
    get native(): com.firebase.ui.auth.IdpResponse;
    get android(): com.firebase.ui.auth.IdpResponse;
    get isNewUser(): boolean;
    get hasCredentialForLinking(): boolean;
    get email(): string;
    get idpSecret(): string;
    get idpToken(): string;
    get phoneNumber(): string;
    get providerType(): string;
    _user: User;
    get user(): User;
}
export declare class UI implements IUI {
    _native: com.firebase.ui.auth.AuthUI;
    _auth: Auth;
    _app: FirebaseApp;
    constructor(auth?: Auth);
    static fromNative(ui: com.firebase.ui.auth.AuthUI): UI;
    get native(): com.firebase.ui.auth.AuthUI;
    get android(): com.firebase.ui.auth.AuthUI;
    get app(): FirebaseApp;
    useEmulator(host: string, port: number): void;
    show(config: Config): Promise<IIdpResponse>;
    delete(): Promise<void>;
    signOut(): Promise<void>;
}
