import { CurrentCustomer, CurrentUser } from '../../types/request.js'; export declare const TOKEN_TYPES: { readonly ADMIN: "admin"; readonly CUSTOMER: "customer"; }; export type TokenType = (typeof TOKEN_TYPES)[keyof typeof TOKEN_TYPES]; interface DecodedAccessToken extends UserPayload, CustomerPayload { tokenType: TokenType; tokenKind: 'access'; iat: number; exp: number; aud: string; iss: string; } interface DecodedRefreshToken extends UserPayload, CustomerPayload { tokenType: TokenType; tokenKind: 'refresh'; iat: number; exp: number; aud: string; iss: string; } interface UserPayload { user: CurrentUser; } interface CustomerPayload { customer: CurrentCustomer; } /** * Generate JWT access token */ export declare function generateToken(payload: CustomerPayload | UserPayload, tokenType?: TokenType, expiresIn?: number): string; /** * Verify JWT access token */ export declare function verifyToken(token: string, tokenType: TokenType): DecodedAccessToken; /** * Generate refresh token (longer expiration, different secret) */ export declare function generateRefreshToken(payload: UserPayload | CustomerPayload, tokenType?: TokenType): string; /** * Verify JWT refresh token */ export declare function verifyRefreshToken(token: string, tokenType: TokenType): DecodedRefreshToken; /** * Decode token without verification */ export declare function decodeToken(token: string): DecodedAccessToken | DecodedRefreshToken | null; export {};