import { OAuthClientProvider, OAuthClientMetadata, OAuthClientInformation, OAuthTokens, OAuthClientInformationFull } from '@prometheus-protocol/typescript-sdk/browser';
/**
 * An implementation of the `OAuthClientProvider` that uses the browser's
 * `localStorage` and `sessionStorage` to persist OAuth credentials.
 *
 * @internal This class is an internal implementation detail of the SDK and is not
 * intended for direct use by application developers.
 */
export declare class LocalStorageOAuthProvider implements OAuthClientProvider {
    /** @private The key used to store client information in localStorage. */
    private readonly CLIENT_INFO_KEY;
    /** @private The key used to store OAuth tokens in localStorage. */
    private readonly TOKENS_KEY;
    /** @private The key used to store the PKCE code verifier in sessionStorage. */
    private readonly CODE_VERIFIER_KEY;
    /** The client metadata provided during initialization. */
    readonly clientMetadata: OAuthClientMetadata;
    /** The redirect URL for this client. */
    readonly redirectUrl: string;
    /**
     * Initializes a new instance of the LocalStorageOAuthProvider.
     * @param metadata The static metadata describing the client application.
     * @param redirectUrl The URL the user will be redirected to after authorization.
     */
    constructor(metadata: OAuthClientMetadata, redirectUrl: string);
    /**
     * Retrieves the stored client information from `localStorage`.
     * @returns The stored `OAuthClientInformation`, or `undefined` if not found.
     */
    clientInformation(): OAuthClientInformation | undefined;
    /**
     * Saves the client information to `localStorage`.
     * @param info The full client information received after dynamic registration.
     */
    saveClientInformation(info: OAuthClientInformationFull): void;
    /**
     * Retrieves the stored OAuth tokens from `localStorage`.
     * @returns The stored `OAuthTokens`, or `undefined` if not found.
     */
    tokens(): OAuthTokens | undefined;
    /**
     * Saves the OAuth tokens to `localStorage`.
     * @param tokens The tokens to save.
     */
    saveTokens(tokens: OAuthTokens): void;
    /**
     * Saves the PKCE code verifier to `sessionStorage`.
     * Uses `sessionStorage` because the code verifier is a short-lived secret
     * tied to a single authorization flow and should be cleared when the tab is closed.
     * @param codeVerifier The code verifier string to save.
     */
    saveCodeVerifier(codeVerifier: string): void;
    /**
     * Retrieves the PKCE code verifier from `sessionStorage`.
     * @returns The stored code verifier.
     * @throws `Error` if the code verifier is not found in storage.
     */
    codeVerifier(): string;
    /**
     * Redirects the user's browser to the provided authorization URL.
     * This will cause a full page navigation.
     * @param authorizationUrl The URL of the authorization server's `/authorize` endpoint.
     */
    redirectToAuthorization(authorizationUrl: URL): void;
    /**
     * Generates a random state parameter for CSRF protection.
     * This should be used in the authorization request to prevent CSRF attacks.
     * @returns A random string to be used as the state parameter.
     */
    state(): string;
    /**
     * Clears stored credentials from browser storage. Useful for logout functionality
     * or handling authentication errors that require a fresh start.
     * @param scope Specifies which parts of the stored credentials to clear.
     */
    invalidateCredentials(scope: 'all' | 'client' | 'tokens' | 'verifier'): void;
}
