import { NgZone } from '@angular/core';
import { BehaviorSubject, Subject } from 'rxjs';
import { User, Session, SupabaseClient, AuthChangeEvent } from '@supabase/supabase-js';
import { SupabaseConfig } from './supabase-config';
import { LogService } from './logging/log.service';
import * as i0 from "@angular/core";
export declare class SupabaseService {
    private readonly zone;
    private readonly log;
    private readonly config;
    client: SupabaseClient;
    readonly authChange: Subject<AuthChangeEvent>;
    readonly initialized: BehaviorSubject<boolean>;
    readonly session: BehaviorSubject<Session | null>;
    readonly user: BehaviorSubject<User | null>;
    readonly userDisplayName: BehaviorSubject<string>;
    readonly userSubheading: BehaviorSubject<string>;
    readonly userProfile: BehaviorSubject<unknown>;
    readonly userAvatar: BehaviorSubject<string | null>;
    readonly signedIn: BehaviorSubject<boolean>;
    readonly loading: BehaviorSubject<boolean>;
    readonly clientReady: Promise<SupabaseClient>;
    get isSignedIn(): boolean;
    get isNotSignedIn(): boolean;
    constructor(zone: NgZone, log: LogService, config: SupabaseConfig);
    waitForSignedIn(): Promise<Session>;
    refreshUserDisplayInfo(): Promise<void>;
    private setUserInformation;
    private extractDisplay;
    private setup;
    private createClient;
    private setAuthState;
    private tryGetSession;
    private setStateForSignedOut;
    static ɵfac: i0.ɵɵFactoryDeclaration<SupabaseService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<SupabaseService>;
}
