import { type AdminSectionRendererMap } from './views/page-editor/sections/index.js';
export interface AdminRootProps {
    config: any;
    session: any;
    basePath?: string;
    initialPath?: string;
    /**
     * Split-login mode: the URL path where the unauthenticated auth screens
     * (login, setup wizard, forgot/reset password) are mounted via `LoginRoot`,
     * e.g. `/securelogin`. When set (and different from `basePath`), signed-out
     * visitors to the admin mount see a 404 lookalike instead of a login form —
     * the admin's existence isn't advertised at the well-known `/admin` path.
     * Keep in sync with `config.admin.loginPath` so middleware guards and
     * emailed reset/invite links agree on the location.
     */
    loginPath?: string;
    setupRequired?: boolean;
    onSetupComplete?: (data: {
        name: string;
        email: string;
        password: string;
    }) => Promise<{
        success: boolean;
        error?: string;
    }>;
    onLogin?: (email: string, password: string, captchaToken?: string) => Promise<{
        success: boolean;
        error?: string;
        requiresTOTP?: boolean;
        mfaPendingToken?: string;
    }>;
    /** Completes the TOTP second-factor step for accounts with MFA enabled. */
    onVerifyTotp?: (mfaPendingToken: string, code: string) => Promise<{
        success: boolean;
        error?: string;
    }>;
    /**
     * Clears the consumer-held session (e.g. `setSession(null)`) after the admin
     * has revoked the server-side session. Server revocation + cookie clearing is
     * handled inside the admin, so consumers only need to reset their local state.
     */
    onLogout?: () => void | Promise<void>;
    captchaConfig?: {
        provider: 'recaptcha' | 'turnstile' | 'none';
        siteKey: string | null;
    };
    /**
     * Canvas renderers for custom section types, keyed by section-type id.
     * When provided, the page/post editor canvas and the eye preview render
     * these instead of the structural placeholder. The signature mirrors
     * `SectionRenderer` from `@actuate-media/sections-react`, so you can pass
     * the same components you register for the public site (as long as they
     * are client-safe).
     */
    sectionRenderers?: AdminSectionRendererMap;
}
export declare function AdminRoot(props: AdminRootProps): import("react/jsx-runtime").JSX.Element;
//# sourceMappingURL=AdminRoot.d.ts.map