import { Hex } from "@toruslabs/metadata-helpers"; export type IRequestBody = Record; export interface ApiRequestParams { url: string; method?: string; headers?: RequestInit["headers"]; data?: IRequestBody; } export interface ISessionManager { createSession(data: TSessionData): Promise; authorizeSession(): Promise; updateSession(data: Partial): Promise; invalidateSession(): Promise; } export type SessionApiResponse = { message?: string; }; export type StorageOperation = "create" | "update" | "invalidate"; export interface StorageHandlerStoreOptions { headers?: RequestInit["headers"]; namespace?: string; timeout?: number; allowedOrigin?: string | boolean; operation?: StorageOperation; } export interface StorageHandlerRetrieveOptions { headers?: RequestInit["headers"]; namespace?: string; } export interface StorageHandler { getStorageKey(key: Hex): string; storeData(key: Hex, data: Partial | T | Record, options?: StorageHandlerStoreOptions): Promise; retrieveData(key: Hex, options?: StorageHandlerRetrieveOptions): Promise; clearStorage(key: Hex): void | Promise; clearOrphanedData(baseKey?: string): void | Promise; } export interface SessionManagerOptions { sessionServerBaseUrl?: string; sessionNamespace?: string; sessionTime?: number; /** * The session id to use for storage. Must be a 32 byte hex string. */ sessionId?: Hex; allowedOrigin?: string | boolean; useLocalStorage?: boolean; } export interface SessionRequestBody extends IRequestBody { key: string; data: string; signature: string; timeout?: number; namespace?: string; allowedOrigin?: string | boolean; }