import { A as AuthPluginOutput, E as ErrorKind, S as SuccessKind } from '../types-D_f0kW5e.js';
import 'oauth4webapi';

interface PasswordSigninPayload {
    email: string;
    password: string;
}
interface PasswordSignupPayload {
    email: string;
    password: string;
    allowAutoSignin?: boolean;
    userInfo?: Record<string, unknown>;
}
interface ForgotPasswordPayload {
    email: string;
}
interface PasswordRecoverPayload {
    password: string;
    code: string;
}
interface PasswordResetPayload {
    email: string;
    password: string;
}

type OauthProvider = "google" | "github" | "apple" | "cognito" | "gitlab" | "msft-entra" | "slack" | "atlassian" | "auth0" | "discord" | "facebook" | "jumpcloud" | "twitch" | "okta" | "roblox";

declare class AuthClient {
    private name;
    private baseURL;
    constructor(name: string, options?: {
        payloadBaseURL?: string | undefined;
    } | undefined);
    /**
     * Sign in a user
     * @param additionalScope - Additional scope to request
     * @returns The sign in response
     */
    signin(additionalScope?: string): {
        oauth: (provider: OauthProvider) => void;
        password: (payload: PasswordSigninPayload) => Promise<AuthPluginOutput>;
    };
    register(): {
        password: (paylaod: PasswordSignupPayload) => Promise<AuthPluginOutput>;
    };
    resetPassword(payload: PasswordResetPayload): Promise<AuthPluginOutput>;
    forgotPassword(payload: ForgotPasswordPayload): Promise<AuthPluginOutput>;
    recoverPassword(payload: PasswordRecoverPayload): Promise<AuthPluginOutput>;
    getSession({ headers }: {
        headers: HeadersInit;
    }): Promise<AuthPluginOutput>;
    getClientSession(): Promise<{
        data: unknown;
        message: string;
        kind: ErrorKind | SuccessKind;
        isError: boolean;
        isSuccess: boolean;
    }>;
    signout({ returnTo }: {
        returnTo?: string | undefined;
    }): Promise<{
        data: unknown;
        message: string;
        kind: ErrorKind | SuccessKind;
        isError: boolean;
        isSuccess: boolean;
    }>;
    refreshSession(): Promise<AuthPluginOutput>;
}

export { AuthClient };
