import { JwtHeader, SigningKeyCallback, JwtPayload } from 'jsonwebtoken';
import sql from 'mssql';
import { UserInfo } from '@memberjunction/core';
export { TokenExpiredError } from './tokenExpiredError.js';
export { IAuthProvider } from './IAuthProvider.js';
export { AuthProviderFactory } from './AuthProviderFactory.js';
export declare const getValidationOptions: (issuer: string) => {
    audience: string;
    jwksUri: string;
} | undefined;
export declare const validationOptions: Record<string, {
    audience: string;
    jwksUri: string;
}>;
export declare class UserPayload {
    aio?: string;
    aud?: string;
    exp?: number;
    iat?: number;
    iss?: string;
    name?: string;
    nbf?: number;
    nonce?: string;
    oid?: string;
    preferred_username?: string;
    rh?: string;
    sub?: string;
    tid?: string;
    uti?: string;
    ver?: string;
    email?: string;
    given_name?: string;
    family_name?: string;
    [key: string]: unknown;
}
export declare const getSigningKeys: (issuer: string) => (header: JwtHeader, cb: SigningKeyCallback) => void;
export declare const extractUserInfoFromPayload: (payload: JwtPayload) => {
    email?: string;
    firstName?: string;
    lastName?: string;
    fullName?: string;
    preferredUsername?: string;
};
export declare const getSystemUser: (dataSource?: sql.ConnectionPool, attemptCacheUpdateIfNeeded?: boolean) => Promise<UserInfo>;
export declare const verifyUserRecord: (email?: string, firstName?: string, lastName?: string, requestDomain?: string, dataSource?: sql.ConnectionPool, attemptCacheUpdateIfNeeded?: boolean) => Promise<UserInfo | undefined>;
//# sourceMappingURL=index.d.ts.map