import type { ClerkRequest } from './clerkRequest';
import type { AuthenticateRequestOptions } from './types';
interface AuthenticateContextInterface extends AuthenticateRequestOptions {
    sessionTokenInHeader: string | undefined;
    origin: string | undefined;
    host: string | undefined;
    forwardedHost: string | undefined;
    forwardedProto: string | undefined;
    referrer: string | undefined;
    userAgent: string | undefined;
    secFetchDest: string | undefined;
    accept: string | undefined;
    sessionTokenInCookie: string | undefined;
    clientUat: number;
    suffixedCookies: boolean;
    devBrowserToken: string | undefined;
    handshakeToken: string | undefined;
    handshakeRedirectLoopCounter: number;
    clerkUrl: URL;
    sessionToken: string | undefined;
    publishableKey: string;
    instanceType: string;
    frontendApi: string;
}
interface AuthenticateContext extends AuthenticateContextInterface {
}
/**
 * All data required to authenticate a request.
 * This is the data we use to decide whether a request
 * is in a signed in or signed out state or if we need
 * to perform a handshake.
 */
declare class AuthenticateContext {
    private cookieSuffix;
    private clerkRequest;
    get sessionToken(): string | undefined;
    constructor(cookieSuffix: string, clerkRequest: ClerkRequest, options: AuthenticateRequestOptions);
    private initPublishableKeyValues;
    private initHeaderValues;
    private initCookieValues;
    private initHandshakeValues;
    private stripAuthorizationHeader;
    private getQueryParam;
    private getHeader;
    private getCookie;
    private getSuffixedCookie;
    private getSuffixedOrUnSuffixedCookie;
    private shouldUseSuffixed;
    private tokenHasIssuer;
    private tokenBelongsToInstance;
    private sessionExpired;
}
export type { AuthenticateContext };
export declare const createAuthenticateContext: (clerkRequest: ClerkRequest, options: AuthenticateRequestOptions) => Promise<AuthenticateContext>;
//# sourceMappingURL=authenticateContext.d.ts.map