import type { AnonymousSessionClient, AnonymousSession, CreateAnonymousSessionOptions, GetAnonymousAccessTokenOptions } from '@auth0/auth0-auth-js';
import type { ILockManager } from '../lock';
export type AnonymousGetTokenSilentlyOptions = Omit<GetAnonymousAccessTokenOptions, 'sessionToken'>;
export type AnonymousTokenResult = {
    accessToken: string;
    expiresAt: number;
    scope?: string;
};
/**
 * Browser-layer wrapper around auth0-auth-js `AnonymousSessionClient`.
 *
 * Adds local session storage (localStorage or memory) so callers never need to
 * manage the session token themselves. `getTokenSilently()` returns a cached
 * access token when still valid and renews it transparently when expired.
 *
 * The session token is stored once and shared across all audience/scope slots.
 * Each slot stores only its own access token and expiry.
 *
 * Exposed on `Auth0Client` as `auth0.anonymous`.
 */
export declare class AnonymousSessionApiClient {
    private authJsClient;
    private readonly cache;
    private readonly lockManager;
    private readonly clientId;
    constructor(authJsClient: AnonymousSessionClient, clientId: string, cacheMode?: 'localStorage' | 'memory', lockManager?: ILockManager);
    /**
     * Creates a new anonymous session and persists the tokens locally.
     */
    createSession(options?: CreateAnonymousSessionOptions): Promise<AnonymousSession>;
    /**
     * Returns a valid anonymous access token, creating or renewing the session as needed.
     *
     * If the stored access token is still fresh (more than 60 s remaining), it is
     * returned directly without a network call. Otherwise the session token is used
     * to re-mint the access token. If the session token has also expired, auth0-auth-js
     * silently creates a fresh identity (any previously set metadata is lost).
     */
    getTokenSilently(options?: AnonymousGetTokenSilentlyOptions): Promise<AnonymousTokenResult>;
    /**
     * Ends the anonymous session and clears all locally stored tokens.
     */
    logout(): Promise<void>;
    /**
     * Returns true if a session token exists in the local cache.
     */
    hasSession(): boolean;
    /**
     * Always returns `null` in EA — session tokens are issued as opaque JWEs and
     * cannot be decoded client-side. Reserved for future JWT format support.
     */
    getClaims(): null;
}
