/// <reference types="multer" />
import { Repository } from 'typeorm';
import { CarEntity } from './entities/car.entity';
import { MakerEntity } from './entities/maker.entity';
import { MakerBrandEntity } from './entities/maker-brand.entity';
import { CreateCarDto } from './dto/create-car.dto';
import { UpdateCarDto } from './dto/update-car.dto';
import { CreateMakerBrandDto } from './dto/create-maker-brand.dto';
import { UpdateMakerBrandDto } from './dto/update-maker-brand.dto';
import { CreateMakerDto } from './dto/create-maker.dto';
import { UpdateMakerDto } from './dto/update-maker.dto';
import { MakerBrandProductDto } from './dto/maker-brand-product.dto';
import { ProductService } from '../product/product.service';
import { LogService } from '../log/log.service';
import { SmsService } from 'src/sms/sms.service';
export declare class CarService {
    private carRepository;
    private makerRepository;
    private makerBrandRepository;
    private productService;
    private logService;
    private sms;
    constructor(carRepository: Repository<CarEntity>, makerRepository: Repository<MakerEntity>, makerBrandRepository: Repository<MakerBrandEntity>, productService: ProductService, logService: LogService, sms: SmsService);
    getCarById(id: number, userId?: any): Promise<CarEntity>;
    getCarRecordById(id: number, userId?: any): Promise<CarEntity>;
    private _findBuilder;
    carsList(page?: number, limit?: number, filters?: any, sorts?: any, userId?: any): Promise<{
        items: CarEntity[];
        pagination: {
            itemsPerPage: number;
            totalItems: number;
            currentPage: number;
            totalPages: number;
        };
    }>;
    getAllMakers(page?: number, limit?: number, filters?: any, sorts?: any): Promise<{
        items: MakerEntity[];
        pagination: {
            itemsPerPage: number;
            totalItems: number;
            currentPage: number;
            totalPages: number;
        };
    }>;
    getAllMakerBrands(page?: number, limit?: number, filters?: any, sorts?: any, productIdForMapping?: any, wage?: any): Promise<{
        items: MakerBrandEntity[];
        pagination: {
            itemsPerPage: number;
            totalItems: number;
            currentPage: number;
            totalPages: number;
        };
    }>;
    getMakerBrandById(id: number, hasRelation?: boolean): Promise<MakerBrandEntity>;
    updateMakerBrand(makerBrandId: number, dto: UpdateMakerBrandDto, image: Express.Multer.File, operatorUserId: string): Promise<import("typeorm").UpdateResult>;
    getMakerById(id: number): Promise<MakerEntity>;
    addCar(dto: CreateCarDto, operatorUserId: string): Promise<CarEntity>;
    updateCar(id: number, dto: UpdateCarDto, operatorUserId?: string): Promise<import("typeorm").UpdateResult>;
    addMakerBrand(dto: CreateMakerBrandDto, image: Express.Multer.File, operatorUserId: string): Promise<MakerBrandEntity>;
    deleteMakerBrand(id: number, operatorUserId: string): Promise<import("typeorm").UpdateResult>;
    deleteMaker(id: number, operatorUserId: string): Promise<import("typeorm").UpdateResult>;
    deleteCar(id: number, operatorUserId: string): Promise<import("typeorm").UpdateResult>;
    addMaker(dto: CreateMakerDto, image: Express.Multer.File, operatorUserId: string): Promise<MakerEntity>;
    updateMaker(id: number, dto: UpdateMakerDto, image: Express.Multer.File, operatorUserId: string): Promise<import("typeorm").UpdateResult>;
    getMakerBrandFull(): Promise<MakerBrandEntity[]>;
    makerBrandProductMapping(makerBrandId: number, dto: MakerBrandProductDto, operatorUserId: string): Promise<boolean>;
    foundCarByUserId(id: number, userId: string): Promise<CarEntity>;
    foundCarByUserIdAndNumber(number: string, userId: string): Promise<CarEntity>;
    getOilGovernmentAllocatedByLastChecked(carId: number): Promise<number>;
    handleAllocateOilGovernment(): Promise<boolean>;
    private _checkOilGovernmentAndSendSMS;
    private _updateOilGov;
    getValidCarsWithNationalCode(limit?: number): Promise<CarEntity[]>;
    findMakerBrandByName(name: string): Promise<MakerBrandEntity>;
}
