import { AuthenticationInput, AuthenticationResponse, AuthIdentityProviderService, AuthTypes, Logger } from "@medusajs/framework/types";
import { AuthProviderRegistrationPrefix } from "../types";
type InjectedDependencies = {
    [key: `${typeof AuthProviderRegistrationPrefix}${string}`]: AuthTypes.IAuthProvider;
    logger?: Logger;
    /**
     * The list of registered auth provider instance IDs
     */
    auth_providers_identifier?: (string | undefined)[];
};
export default class AuthProviderService {
    #private;
    protected dependencies: InjectedDependencies;
    constructor(container: InjectedDependencies);
    protected retrieveProviderRegistration(providerId: string): AuthTypes.IAuthProvider;
    /**
     * Lists the public information of every registered auth provider instance.
     * The IDs are read from the container registry populated by the providers
     * loader, and the display metadata is read from each resolved provider
     * instance. Provider options and secrets are never exposed.
     *
     * A provider instance that fails to resolve from the container is skipped
     * (with a warning) so that a single broken registration does not prevent
     * the healthy providers from being listed.
     */
    listProviders(filters?: {
        id: string | string[];
    }): AuthTypes.AuthProviderInfoDTO[];
    /**
     * Derives the authentication flow of a provider instance. A provider is
     * `redirect`-based if it implements `validateCallback`, which exists
     * solely for the redirect/callback flow.
     */
    protected deriveFlow(provider?: AuthTypes.IAuthProvider): "credentials" | "redirect";
    authenticate(provider: string, auth: AuthenticationInput, authIdentityProviderService: AuthIdentityProviderService): Promise<AuthenticationResponse>;
    register(provider: string, auth: AuthenticationInput, authIdentityProviderService: AuthIdentityProviderService): Promise<AuthenticationResponse>;
    update(provider: string, data: Record<string, unknown>, authIdentityProviderService: AuthIdentityProviderService): Promise<AuthenticationResponse>;
    validateCallback(provider: string, auth: AuthenticationInput, authIdentityProviderService: AuthIdentityProviderService): Promise<AuthenticationResponse>;
}
export {};
//# sourceMappingURL=auth-provider.d.ts.map