import { DB, DBSchema } from './db.js'; import { Models, SessionRole } from './schema/index.js'; export interface Session { vars: Record; roles: SessionRole[]; } export declare class DBSession implements Session { readonly vars: Record; readonly db: DB; private _roles; constructor(db: DB, vars: Record); get roles(): SessionRole[]; } export declare function createSession>(db: T, vars: Record): T; /** * Parse a token and return the roles that match the token * return undefined to indicate no permissions defined (so can skip) * return [] to indicate no roles match the token */ export declare function getRolesFromSession, S extends DBSchema>(schema: S | undefined, token: Record): SessionRole[] | undefined; export declare function sessionRolesAreEquivalent(a: SessionRole[] | undefined, b: SessionRole[] | undefined): boolean; export declare function normalizeSessionVars(variables: Record): Record;