import { AuthService } from './auth.service';
import { LoginDto } from './dto/login.dto';
import { CreateUserDto } from '../user/dto/create-user.dto';
import { UserService } from '../user/user.service';
import { RefreshTokenDto } from './dto/refresh-token.dto';
import { I18nContext } from 'nestjs-i18n';
import { AppleLoginDto, GoogleLoginDto } from './dto/social-login.dto';
import { ForgotPasswordDto } from './dto/forgot-password.dto';
import { ResetPasswordDto } from './dto/reset-password.dto';
export declare class AuthController {
    private readonly auth;
    private readonly users;
    constructor(auth: AuthService, users: UserService);
    register(req: Request, tenant: any, dto: CreateUserDto, i18n: I18nContext): Promise<any>;
    login(loginDto: LoginDto): Promise<{
        accessToken: string;
        refreshToken: string;
        userId: number;
        tenantId: string;
        email: string;
        username: string;
        fullName: string | undefined;
        roles: string[];
        permissions: string[];
        isSuperAdmin: boolean;
        hierarchy: {
            branch: {
                id: number;
                name: string;
            };
            department: {
                id: number;
                name: string;
            };
            team: {
                id: number;
                name: string;
            };
            position: {
                id: number | null;
                name: string | null;
            };
        }[];
        modules: any;
        isFirstTime: number;
    }>;
    googleLogin(dto: GoogleLoginDto): Promise<import("./auth.service").SocialLoginResult>;
    appleLogin(dto: AppleLoginDto): Promise<import("./auth.service").SocialLoginResult>;
    refresh(dto: RefreshTokenDto): Promise<{
        accessToken: string;
        userId: number;
        user: {
            id: number;
            email: string;
            roles: string[];
            permissions: string[];
            isSuperAdmin: boolean;
            hierarchy: {
                branch: {
                    id: number;
                    name: string;
                };
                department: {
                    id: number;
                    name: string;
                };
                team: {
                    id: number;
                    name: string;
                };
                position: {
                    id: number | null;
                    name: string | null;
                };
            }[];
            modules: any;
        };
    }>;
    me(req: any): {
        tenant: string;
        user: any;
    };
    logout(req: any): Promise<{
        message: string;
    }>;
    forgotPassword(dto: ForgotPasswordDto): Promise<{
        message: string;
    }>;
    resetPassword(dto: ResetPasswordDto): Promise<{
        message: string;
    }>;
}
