import type { Request, Response } from 'express'; import jsonwebtoken from 'jsonwebtoken'; import { sbvrUtils } from '@balena/pinejs'; import type { SignOptions } from './jwt-passport.js'; import type { User } from '../../balena-model.js'; export declare const checkSudoValidity: (user: TokenUserPayload) => boolean; export declare const generateNewJwtSecret: () => Promise; export declare const tokenFields: ("id" | "jwt_secret")[]; export interface TokenUserPayload extends Pick { twoFactorRequired?: boolean; authTime?: number; } export interface ExtraParams { existingToken?: Partial; jwtOptions?: SignOptions; tx: Tx; } export type GetUserTokenDataFn = (userId: number, existingToken: Partial | undefined, tx: Tx) => PromiseLike; export declare function setUserTokenDataCallback(fn: GetUserTokenDataFn): void; export declare const createSessionToken: (userId: number, { existingToken, jwtOptions, tx }: ExtraParams) => Promise; export declare const loginUserXHR: (res: Response, userId: number, extraParams: ExtraParams & { statusCode?: number; }) => Promise; export declare const updateUserXHR: (res: Response, req: Request, { tx }: { tx: Tx; }) => Promise; export interface ScopedAccessToken { access: ScopedToken; } export interface ScopedAccessTokenOptions { actor: number; permissions: string[]; expiresIn: number; } export interface ScopedToken extends sbvrUtils.Actor { actor: number; permissions: string[]; } export declare function createScopedAccessToken(options: ScopedAccessTokenOptions): string; export declare const createJwt: (payload: AnyObject, jwtOptions?: jsonwebtoken.SignOptions) => string;