import type { Browser, BrowserContext, Page } from 'playwright' export type AccessTokenResponse = { clientId: string; accessToken: string; accessTokenExpirationTimestampMs: number } export type ClientTokenResponse = { expiresAt: number; token: string; version: string } export type TokenResponse = { access: AccessTokenResponse client: ClientTokenResponse } export type Operation = ( | { type?: never url: string action?: (page: Page, names: string[]) => Promise } | { type: 'action' action: (page: Page, names: string[]) => Promise } ) & { names: [string, ...string[]] } export type Hashes = Record export const store = { access: null as AccessTokenResponse | null, client: null as ClientTokenResponse | null, hashes: {} as Hashes, tempHashes: {} as Hashes, browser: null as Browser | null, }