import { type ReactNode } from "react";
import type { AuthCollectionSlug } from "../plugin.js";
import type { PayloadSession } from "./getPayloadSession.js";
export interface PayloadSessionContext<TSlug extends AuthCollectionSlug = AuthCollectionSlug> {
    /**
     * The status of the session
     */
    status: "loading" | "authenticated" | "unauthenticated";
    /**
     * The session
     */
    session: PayloadSession<TSlug> | null;
    /**
     * Function to refresh the session
     */
    refresh: () => Promise<PayloadSession<TSlug> | null>;
    /**
     * Function to refetch the session from the server
     */
    refetch: () => Promise<PayloadSession<TSlug> | null>;
}
export declare const Context: import("react").Context<PayloadSessionContext<"users-with-local-strategy" | "users">>;
interface Props<TSlug extends AuthCollectionSlug> {
    /**
     * The slug of the collection that contains the users
     *
     * @default "users"
     */
    userCollectionSlug?: TSlug;
    /**
     * The session from the server
     *
     * @default null
     */
    session?: PayloadSession<TSlug> | null;
    /**
     * The children to render
     */
    children: ReactNode;
}
/**
 * PayloadSessionProvider that provides the session to the context provider
 */
export declare const PayloadSessionProvider: <TSlug extends AuthCollectionSlug = "users">({ userCollectionSlug, session, children, }: Props<TSlug>) => import("react").JSX.Element;
export {};
