import type { Request, Response } from 'express';
import { ConfigService } from '@nestjs/config';
import { AuthService } from './auth.service';
import { LoginDto, RegisterDto, RefreshTokenDto, ChangePasswordDto, DevEmailLoginDto } from './dto/auth.dto';
import { SsoConfigService } from './sso/sso-config.service';
import { SsoOidcClientService } from './sso/sso-oidc-client.service';
export declare class AuthController {
    private readonly authService;
    private readonly ssoConfig;
    private readonly ssoOidcClient;
    private readonly configService;
    constructor(authService: AuthService, ssoConfig: SsoConfigService, ssoOidcClient: SsoOidcClientService, configService: ConfigService);
    register(registerDto: RegisterDto): Promise<{
        user: {
            displayName: string;
            id: string;
            createdAt: Date;
            status: import("@prisma/client").$Enums.UserStatus;
            username: string;
            email: string;
            source: import("@prisma/client").$Enums.UserSource;
        };
        token: {
            accessToken: string;
            refreshToken: string;
        };
    }>;
    login(loginDto: LoginDto): Promise<{
        accessToken: string;
        refreshToken: string;
        tokenType: string;
        expiresIn: number;
        user: {
            id: string;
            username: string;
            email: string;
            displayName: string;
            avatar: string | null;
            source: import("@prisma/client").$Enums.UserSource;
            status: "ACTIVE";
            employeeId: string | null;
            department: string | undefined;
            position: string | undefined;
            roles: string[];
            permissions: string[];
            defaultRegion: string;
            accessibleRegions: string[];
            regionPermissions: Record<string, string[]>;
        };
    }>;
    devEmailLogin(body: DevEmailLoginDto): Promise<{
        accessToken: string;
        refreshToken: string;
        tokenType: string;
        expiresIn: number;
        user: {
            id: string;
            username: string;
            email: string;
            displayName: string;
            avatar: string | null;
            source: import("@prisma/client").$Enums.UserSource;
            status: import("@prisma/client").$Enums.UserStatus;
            employeeId: string | null;
            department: string | undefined;
            position: string | undefined;
            roles: string[];
            permissions: string[];
            defaultRegion: string;
            accessibleRegions: string[];
            regionPermissions: Record<string, string[]>;
        };
    }>;
    refresh(refreshTokenDto: RefreshTokenDto): Promise<{
        accessToken: string;
        refreshToken: string;
        tokenType: string;
        expiresIn: number;
    }>;
    logout(authHeader: string): Promise<{
        message: string;
    }>;
    changePassword(req: any, changePasswordDto: ChangePasswordDto): Promise<{
        message: string;
    }>;
    ssoStart(redirect: string | undefined, res: Response): Promise<void>;
    ssoCallback(code: string | undefined, state: string | undefined, errorParam: string | undefined, _errorDesc: string | undefined, req: Request, res: Response): Promise<void>;
    private setSsoCookie;
    private clearSsoCookies;
}
