import { PrismaService } from "../../../core/database/prisma/prisma.service";
import { CreateStationDto, UpdateStationDto, QueryStationDto, ImportStationItemDto } from '../dto/station.dto';
import { Prisma } from '@prisma/client';
export declare class StationService {
    private readonly prisma;
    constructor(prisma: PrismaService);
    create(dto: CreateStationDto): Promise<{
        type: string | null;
        code: string;
        id: string;
        createdAt: Date;
        status: import("@prisma/client").$Enums.StationStatus;
        sortOrder: number;
        metadata: Prisma.JsonValue;
        updatedAt: Date;
        deletedAt: Date | null;
        description: string | null;
        nameEn: string;
        nameCn: string | null;
        area: string | null;
        line: string | null;
    }>;
    findAll(query: QueryStationDto): Promise<{
        items: ({
            _count: {
                parts: number;
            };
        } & {
            type: string | null;
            code: string;
            id: string;
            createdAt: Date;
            status: import("@prisma/client").$Enums.StationStatus;
            sortOrder: number;
            metadata: Prisma.JsonValue;
            updatedAt: Date;
            deletedAt: Date | null;
            description: string | null;
            nameEn: string;
            nameCn: string | null;
            area: string | null;
            line: string | null;
        })[];
        total: number;
        page: number;
        limit: number;
        totalPages: number;
    }>;
    findOne(id: string): Promise<{
        _count: {
            parts: number;
        };
    } & {
        type: string | null;
        code: string;
        id: string;
        createdAt: Date;
        status: import("@prisma/client").$Enums.StationStatus;
        sortOrder: number;
        metadata: Prisma.JsonValue;
        updatedAt: Date;
        deletedAt: Date | null;
        description: string | null;
        nameEn: string;
        nameCn: string | null;
        area: string | null;
        line: string | null;
    }>;
    update(id: string, dto: UpdateStationDto): Promise<{
        type: string | null;
        code: string;
        id: string;
        createdAt: Date;
        status: import("@prisma/client").$Enums.StationStatus;
        sortOrder: number;
        metadata: Prisma.JsonValue;
        updatedAt: Date;
        deletedAt: Date | null;
        description: string | null;
        nameEn: string;
        nameCn: string | null;
        area: string | null;
        line: string | null;
    }>;
    remove(id: string): Promise<{
        type: string | null;
        code: string;
        id: string;
        createdAt: Date;
        status: import("@prisma/client").$Enums.StationStatus;
        sortOrder: number;
        metadata: Prisma.JsonValue;
        updatedAt: Date;
        deletedAt: Date | null;
        description: string | null;
        nameEn: string;
        nameCn: string | null;
        area: string | null;
        line: string | null;
    }>;
    getAreas(): Promise<(string | null)[]>;
    getLines(area?: string): Promise<(string | null)[]>;
    getTypes(): Promise<(string | null)[]>;
    getSelectOptions(): Promise<{
        code: string;
        id: string;
        nameEn: string;
        nameCn: string | null;
        area: string | null;
        line: string | null;
    }[]>;
    getImportTemplate(): {
        code: string;
        nameEn: string;
        nameCn: string;
        area: string;
        line: string;
        type: string;
        description: string;
    }[];
    bulkImport(stations: ImportStationItemDto[]): Promise<{
        success: number;
        failed: number;
        errors: {
            row: number;
            code: string;
            error: string;
        }[];
        created: any[];
    }>;
}
