/**
 * Portal Authentication Utilities
 *
 * This module provides utilities for integrating the customer portal
 * into SDK-powered sites.
 *
 * @example
 * ```ts
 * // In your portal callback route (app/portal/callback/route.ts)
 * import { handlePortalCallback } from '@riverbankcms/sdk/portal';
 * export const GET = handlePortalCallback({ redirectPath: '/portal' });
 *
 * // In your portal page (app/portal/page.tsx)
 * import { getPortalToken, createPortalApiConfig } from '@riverbankcms/sdk/portal';
 * import { BlockApiProvider } from '@riverbankcms/blocks/client';
 * import { cookies } from 'next/headers';
 *
 * export default async function PortalPage() {
 *   const token = getPortalToken(await cookies());
 *
 *   if (!token) {
 *     return <PortalLoginForm />;
 *   }
 *
 *   const config = createPortalApiConfig({
 *     token,
 *     siteId: process.env.SITE_ID!,
 *     dashboardUrl: process.env.DASHBOARD_URL!,
 *   });
 *
 *   return (
 *     <BlockApiProvider config={config}>
 *       <CustomerPortal />
 *     </BlockApiProvider>
 *   );
 * }
 * ```
 */
export { CUSTOMER_PORTAL_PATH, PORTAL_TOKEN_COOKIE, PORTAL_COOKIE_MAX_AGE, PORTAL_CODE_PARAM, PORTAL_LOGIN_SUCCESS_PARAM, REDIRECT_TO_PARAM, DEFAULT_PORTAL_REDIRECT, DEFAULT_LOGOUT_REDIRECT, } from './constants';
export { handlePortalCallback, handlePortalLogout, getDashboardUrl, type PortalCallbackOptions, type PortalLogoutOptions, } from './callback';
export { isValidRedirectPath } from './validation';
export { getPortalToken, hasPortalSession, type CookieStore } from './token';
export { createPortalApiConfig, getPortalLoginUrl, type PortalApiConfig, type CreatePortalApiConfigOptions, } from './config';
