import type App from './index.js'; interface UserInfo { userBrowser: string; userCity: string; userCountry: string; userDevice: string; userOS: string; userState: string; } export interface SessionInfo { sessionID: string | undefined; metadata: Record; userID: string | null; timestamp: number; projectID?: string; } type OnUpdateCallback = (i: Partial) => void; export type Options = { session_token_key: string; session_pageno_key: string; session_tabid_key: string; }; export default class Session { private metadata; private userID; private sessionID; private readonly callbacks; private timestamp; private projectID; private tabId; userInfo: UserInfo; private token; private readonly app; private readonly options; constructor(params: { app: App; options: Options; }); attachUpdateCallback(cb: OnUpdateCallback): void; private handleUpdate; assign(newInfo: Partial): void; setMetadata(key: string, value: string): void; setUserID(userID: string): void; setUserInfo(userInfo: UserInfo): void; getPageNumber: () => number | undefined; incPageNo: () => number; getSessionToken: (projectKey?: string) => string | undefined; getRawTokenWithProject: () => string | null; setSessionToken: (token: string, projectKey: string) => void; applySessionHash(hash: string): void; getSessionHash(): string | undefined; getTabId(): string; regenerateTabId(): void; private createTabId; getInfo(): SessionInfo; reset(): void; } export {};