import { VoidFuncNoParam } from "../../../../fd-toolbox/functions/internal-getter-setter-functions";
import { RouterInstance } from "../../../meta/client/framework";
import { LoginResult } from "../../../meta/auth/login";
/**
 * Configuration for an OAuth login button and flow.
 * Used to define provider-specific UI and logic for OAuth authentication.
 */
export interface OAuthLoginConfig {
    /** The text to display on the OAuth login button. */
    buttonText: string;
    /** The OAuth provider name. */
    oAuthProvider: string;
    /** Event handler called when login is successful. */
    onLogin: VoidFuncNoParam;
    /**
     * Handles the OAuth flow after receiving the provider code.
     *
     * @param code - The OAuth authorization code from the provider.
     * @param router - The app router instance for navigation. See {@link RouterInstance}.
     * @returns A promise resolving to a {@link LoginResult} or void.
     */
    handleOAuth: (code: string, router: RouterInstance) => Promise<LoginResult | void>;
    /** The icon name to display for the provider. */
    iconName: string;
    /** The URL param name for the OAuth provider. */
    oAuthProviderUrlParam?: string;
}
