import type { ReactNode } from 'react';
import type { AuthApiAdapter } from './auth-api-adapter';
import type { AuthError, SSOSession } from './auth-types';
import type { TokenStorageStrategy } from './sso-session';
/** Consumer-provided config for SSOAuthProvider. */
export interface SSOAuthConfig {
    /** Consumer-provided adapter to their central auth service. */
    apiAdapter: AuthApiAdapter;
    /** Auth method configs (Google client ID, Apple client ID, etc.). */
    providers?: {
        google?: {
            clientId: string;
            enableOneTap?: boolean;
        };
        apple?: {
            clientId: string;
            redirectUri: string;
        };
    };
    /** Called when SSO session is established (any method). */
    onAuthSuccess: (session: SSOSession) => void;
    /** Called on auth errors. */
    onAuthError?: (error: AuthError) => void;
    /** Optional: called when user signs out. */
    onSignOut?: () => void;
    /** SSO token persistence strategy. Defaults to localStorage. */
    tokenStorage?: TokenStorageStrategy;
    /** Branding customization (logo, slider images). */
    branding?: {
        logo?: ReactNode;
        sliderImages?: string[];
    };
}
/** Props for the SSOAuthProvider context wrapper that supplies auth state to the component tree. */
export interface SSOAuthProviderProps {
    /** Auth configuration including API adapter, provider settings, and callbacks. */
    config: SSOAuthConfig;
    /** Child components that will have access to the SSO auth context. */
    children: ReactNode;
}
