import { JwtService } from '@nestjs/jwt';
import { DataStoreService } from '../shared/data-store.service.js';
import { Employee, User } from '../shared/domain.js';
import { TokenBlacklistService } from './token-blacklist.service.js';
export interface JwtPayload {
    sub: number;
    username: string;
    role: string;
    type?: 'station' | 'employee';
    stationId?: number;
    stationName?: string;
    zoneId?: number;
    zoneIds?: number[];
    employeeNumber?: string;
    isMobileSupervisor?: boolean;
    isFreeAttendance?: boolean;
    iat?: number;
    exp?: number;
}
export interface EmployeeJwtPayload extends JwtPayload {
    type: 'employee';
}
export interface LoginResponse {
    accessToken: string;
    user: {
        id: number;
        username: string;
        fullName: string;
        role: string;
    };
}
export interface EmployeeLoginResponse {
    accessToken: string;
    employee: {
        id: number;
        employeeNumber: string;
        fullName: string;
        username: string;
        zoneId: number;
        zoneIds?: number[];
        stationId?: number;
        role: 'employee';
        isMobileSupervisor: boolean;
        isFreeAttendance?: boolean;
    };
}
export declare class AuthService {
    private readonly store;
    private readonly jwtService;
    private readonly tokenBlacklist;
    constructor(store: DataStoreService, jwtService: JwtService, tokenBlacklist: TokenBlacklistService);
    validateUser(username: string, password: string): Promise<User | null>;
    login(username: string, password: string): Promise<LoginResponse>;
    logout(token: string): Promise<void>;
    isTokenBlacklisted(token: string): boolean;
    validateToken(payload: JwtPayload): Promise<User | null>;
    validateEmployee(username: string, password: string): Promise<Employee | null>;
    employeeLogin(username: string, password: string): Promise<EmployeeLoginResponse>;
    validateEmployeeToken(payload: EmployeeJwtPayload): Promise<Employee | null>;
}
