import { PrismaClient, User } from '@prisma/client';
import { Context } from '../../context';
import { AuthSessionType } from "../../../../authentication-api/src";
export declare function generateToken(): string;
export declare const revokeSessionByToken: (authenticateUser: Context['authenticateUser'], sessionClient: PrismaClient['session']) => Promise<void> | import(".prisma/client").Prisma.Prisma__SessionClient<import("@prisma/client/runtime/library").GetResult<{
    id: string;
    createdAt: Date;
    expiresAt: Date;
    token: string;
    userID: string;
}, unknown> & {}, never, import("@prisma/client/runtime/library").DefaultArgs>;
export declare const createUserSession: (user: User, sessionTTL: number, sessionClient: PrismaClient['session'], userRoleClient: PrismaClient['userRole']) => Promise<{
    type: AuthSessionType;
    id: string;
    user: import("@prisma/client/runtime/library").GetResult<{
        id: string;
        createdAt: Date;
        modifiedAt: Date;
        email: string;
        emailVerifiedAt: Date;
        name: string;
        firstName: string;
        preferredName: string;
        flair: string;
        password: string;
        active: boolean;
        lastLogin: Date;
        roleIDs: string[];
        userImageID: string;
    }, unknown> & {};
    token: string;
    createdAt: Date;
    expiresAt: Date;
    roles: (import("@prisma/client/runtime/library").GetResult<{
        id: string;
        createdAt: Date;
        modifiedAt: Date;
        description: string;
        name: string;
        permissionIDs: string[];
        systemRole: boolean;
    }, unknown> & {})[];
}>;
export declare const createSession: (email: string, password: string, sessionTTL: Context['sessionTTL'], sessionClient: PrismaClient['session'], userClient: PrismaClient['user'], userRoleClient: PrismaClient['userRole']) => Promise<{
    type: AuthSessionType;
    id: string;
    user: import("@prisma/client/runtime/library").GetResult<{
        id: string;
        createdAt: Date;
        modifiedAt: Date;
        email: string;
        emailVerifiedAt: Date;
        name: string;
        firstName: string;
        preferredName: string;
        flair: string;
        password: string;
        active: boolean;
        lastLogin: Date;
        roleIDs: string[];
        userImageID: string;
    }, unknown> & {};
    token: string;
    createdAt: Date;
    expiresAt: Date;
    roles: (import("@prisma/client/runtime/library").GetResult<{
        id: string;
        createdAt: Date;
        modifiedAt: Date;
        description: string;
        name: string;
        permissionIDs: string[];
        systemRole: boolean;
    }, unknown> & {})[];
}>;
export declare const createJWTSession: (jwt: string, sessionTTL: Context['sessionTTL'], verifyJWT: Context['verifyJWT'], sessionClient: PrismaClient['session'], userClient: PrismaClient['user'], userRoleClient: PrismaClient['userRole']) => Promise<{
    type: AuthSessionType;
    id: string;
    user: import("@prisma/client/runtime/library").GetResult<{
        id: string;
        createdAt: Date;
        modifiedAt: Date;
        email: string;
        emailVerifiedAt: Date;
        name: string;
        firstName: string;
        preferredName: string;
        flair: string;
        password: string;
        active: boolean;
        lastLogin: Date;
        roleIDs: string[];
        userImageID: string;
    }, unknown> & {};
    token: string;
    createdAt: Date;
    expiresAt: Date;
    roles: (import("@prisma/client/runtime/library").GetResult<{
        id: string;
        createdAt: Date;
        modifiedAt: Date;
        description: string;
        name: string;
        permissionIDs: string[];
        systemRole: boolean;
    }, unknown> & {})[];
}>;
export declare const createOAuth2Session: (name: string, code: string, redirectUri: string, sessionTTL: Context['sessionTTL'], oauth2Providers: Context['oauth2Providers'], sessionClient: PrismaClient['session'], userClient: PrismaClient['user'], userRoleClient: PrismaClient['userRole']) => Promise<{
    type: AuthSessionType;
    id: string;
    user: import("@prisma/client/runtime/library").GetResult<{
        id: string;
        createdAt: Date;
        modifiedAt: Date;
        email: string;
        emailVerifiedAt: Date;
        name: string;
        firstName: string;
        preferredName: string;
        flair: string;
        password: string;
        active: boolean;
        lastLogin: Date;
        roleIDs: string[];
        userImageID: string;
    }, unknown> & {};
    token: string;
    createdAt: Date;
    expiresAt: Date;
    roles: (import("@prisma/client/runtime/library").GetResult<{
        id: string;
        createdAt: Date;
        modifiedAt: Date;
        description: string;
        name: string;
        permissionIDs: string[];
        systemRole: boolean;
    }, unknown> & {})[];
}>;
