/**
 * Next.js Auth0 React Hooks & Protection Middleware
 *
 * nextjs-auth0互換のHooksとミドルウェア:
 * - useUser() - ユーザー情報取得フック
 * - UserProvider - Reactコンテキストプロバイダー
 * - withApiAuthRequired() - API保護ミドルウェア
 * - withPageAuthRequired() - ページ保護ミドルウェア
 */
import React, { ReactNode } from 'react';
import { UserPayload } from '@gftdcojp/gftd-auth';
/**
 * User Context 型定義
 */
interface UserContextType {
    user: UserPayload | null;
    error?: Error;
    isLoading: boolean;
    checkSession: () => Promise<void>;
}
/**
 * UserProvider Props
 */
interface UserProviderProps {
    children: ReactNode;
    user?: UserPayload | null;
    profileUrl?: string;
    loginUrl?: string;
}
/**
 * 🎣 UserProvider - Reactコンテキストプロバイダー
 */
export declare function UserProvider({ children, user: initialUser, profileUrl, loginUrl }: UserProviderProps): React.JSX.Element;
/**
 * 🎣 useUser Hook - ユーザー情報取得
 */
export declare function useUser(): UserContextType;
/**
 * 🛡️ Server-side Protection Middleware
 */
/**
 * API Route保護用のwrapper
 */
export declare function withApiAuthRequired<T extends any[]>(handler: (...args: T) => Promise<Response> | Response): (...args: T) => Promise<Response>;
/**
 * Page Component保護用のwrapper
 */
export declare function withPageAuthRequired<P extends Record<string, any>>(Component: React.ComponentType<P>, options?: {
    returnTo?: string;
    loginUrl?: string;
}): {
    (props: P): React.JSX.Element;
    displayName: string;
};
/**
 * 🎯 Higher-Order Components (HOCs)
 */
/**
 * 認証が必要なレイアウトコンポーネント
 */
export declare function AuthenticatedLayout({ children, fallback }: {
    children: ReactNode;
    fallback?: ReactNode;
}): string | number | bigint | true | Iterable<React.ReactNode> | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined> | React.JSX.Element;
/**
 * 🎛️ Utility Hooks
 */
/**
 * Access Token取得フック
 */
export declare function useAccessToken(): {
    accessToken: string | null;
    isLoading: boolean;
    error: Error | null;
    refetch: () => Promise<void>;
};
/**
 * ログアウト機能フック
 */
export declare function useLogout(): (returnTo?: string) => void;
/**
 * 📖 使用例
 */
export declare const nextjsAuth0HooksExamples: {
    /**
     * App Component での UserProvider 設定例
     */
    appComponent: string;
    /**
     * Client Component での useUser 使用例
     */
    clientComponent: string;
    /**
     * Protected Page の実装例
     */
    protectedPage: string;
    /**
     * Protected API Route の実装例
     */
    protectedApi: string;
    /**
     * Layout with Authentication の実装例
     */
    authenticatedLayout: string;
    /**
     * Access Token使用例
     */
    accessTokenUsage: string;
};
export {};
//# sourceMappingURL=nextjs-auth0-hooks.d.ts.map