import { createClient } from "@supabase/supabase-js";
import { ClientOptions } from "./clientOpts";
import { MutablePromise } from "./utils";
type SimpleProvider = "github" | "google";
type LoginWithFirebaseInput = {
    token: string;
    provider: "firebase";
};
type LoginFunctionInput = SimpleProvider | {
    provider: SimpleProvider;
} | LoginWithFirebaseInput;
export declare function getSession(): Promise<{
    token?: string;
    email?: string;
}>;
type Awaited<T> = T extends PromiseLike<infer U> ? U : T;
export declare function oAuthRedirect(credentials: Awaited<Parameters<ReturnType<typeof createClient>["auth"]["signInWithOAuth"]>[0]>, browserRedirect?: boolean): Promise<string>;
export declare function signInWithOAuthToken(token: string, authType: "token" | "firebase", co: MutablePromise<Partial<ClientOptions>>, { project, endpoint }: {
    project: string;
    endpoint: string;
}): Promise<void>;
export declare function login(input: LoginFunctionInput, projectOptions: {
    project: string;
    endpoint: string;
}, co: MutablePromise<Partial<ClientOptions>>): Promise<void>;
export declare function logout(co: MutablePromise<Partial<ClientOptions>>): Promise<void>;
export declare function init(co: MutablePromise<Partial<ClientOptions>>, projectOptions: {
    project: string;
    endpoint: string;
}): Promise<boolean>;
export type AuthClient = {
    init: () => Promise<boolean>;
    login: (input: LoginFunctionInput) => Promise<void>;
    logout: () => Promise<void>;
};
export default function authClient(co: MutablePromise<Partial<ClientOptions>>, projectOptions: {
    project: string;
    endpoint: string;
}): AuthClient;
export {};
