export interface NarvikConfiguration { data: NarvikDataConfiguration; session?: NarvikSessionConfiguration; cookie?: NarvikCookieConfiguration; } export interface NarvikDataConfiguration { saveSession: (session: Session) => Promise; fetchSession: (sessionId: string) => Promise; updateSessionExpiry: (sessionId: string, updateExpiresAt: Date) => Promise; deleteSession: (sessionId: string) => Promise; fetchSessionsForUser?: (userId: string) => Promise; deleteSessionsForUser?: (userId: string) => Promise; deleteAllExpiredSessions?: () => Promise; } export interface NarvikSessionConfiguration { sessionExpiresInMs?: number; } export interface NarvikCookieConfiguration { name?: string; cookieExpiresInMs?: number; attributes?: NarvikCookieAttributesConfiguration; } export interface NarvikCookieAttributesConfiguration { secure?: boolean; domain?: string; path?: string; sameSite?: "lax" | "strict" | "none"; } export interface AdditionalSessionData { } export interface Session extends AdditionalSessionData { id: string; userId: string; expiresAt: Date; new?: boolean; extended?: boolean; } export declare class Cookie { name: string; value: string; attributes: CookieAttributes; constructor(name: string, value: string, attributes: CookieAttributes); serialize(): string; } export interface CookieAttributes { httpOnly?: boolean; secure?: boolean; domain?: string; path?: string; sameSite?: "none" | "lax" | "strict"; maxAge?: number; } export interface CreateSessionResult { token: string; session: Session; } export declare class Narvik { private data; private readonly sessionExpiresInMs; private readonly cookieExpiresInMs; readonly cookieName: string; private readonly coreCookieAttributes; constructor(config: NarvikConfiguration); createSession(userId: string, additionalData?: AdditionalSessionData): Promise; validateSession(token: string): Promise; invalidateSession(sessionId: string): Promise; fetchSessionsForUser(userId: string): Promise; deleteSessionsForUser(userId: string): Promise; deleteAllExpiredSessions(): Promise; createCookie(sessionToken: string): Cookie; createBlankCookie(): Cookie; }