import { PrismaService } from "../../../core/database/prisma/prisma.service";
import { InternalAppSlugService } from './slug.service';
import { InternalAppEventsService } from './events.service';
export interface IssuedToken {
    tokenPlaintext: string;
    mcpEndpoint: string;
    mcpAddCommand: string;
    expiresAt: Date;
    employeeSlug: string;
}
export declare class InternalAppTokenService {
    private readonly prisma;
    private readonly slugSvc;
    private readonly eventsSvc;
    private readonly logger;
    constructor(prisma: PrismaService, slugSvc: InternalAppSlugService, eventsSvc: InternalAppEventsService);
    issue(params: {
        userId: string;
        mailNickname: string;
        organizationId: string;
    }): Promise<IssuedToken>;
    verify(tokenPlaintext: string): Promise<{
        employeeSlug: string;
        warning?: string;
    }>;
    revokeCurrent(employeeSlug: string): Promise<{
        revokedAt: Date | null;
    }>;
    getMyTokenStatus(employeeSlug: string): Promise<{
        hasToken: boolean;
        status: null;
        prefix: null;
        issuedAt: null;
        expiresAt: null;
        expiringInDays: null;
        lastUsedAt: null;
    } | {
        hasToken: boolean;
        status: import("@prisma/client").$Enums.InternalAppTokenStatus;
        prefix: string;
        issuedAt: string;
        expiresAt: string;
        expiringInDays: number | null;
        lastUsedAt: string | null;
    }>;
    private generateOpaqueToken;
    private hashToken;
}
