import { CurrentUserPayload } from '../common/decorators/current-user.decorator';
import { AbortUploadDto, CompleteUploadDto, InitiateUploadDto, ListOfflineMapsDto, PresignedPartDto, SyncS3MapsDto, UpdateOfflineMapDto, UpdateStatusDto } from './dto';
import { OfflineMapsService } from './offline-maps.service';
export declare class OfflineMapsController {
    private readonly maps;
    constructor(maps: OfflineMapsService);
    initiate(user: CurrentUserPayload, dto: InitiateUploadDto): Promise<{
        message: string;
        data: {
            offlineMapId: string;
            uploadId: string;
            s3Key: string;
        };
    }>;
    presignedPart(dto: PresignedPartDto): Promise<{
        message: string;
        data: {
            partNumber: number;
            url: string;
        };
    }>;
    complete(dto: CompleteUploadDto): Promise<{
        message: string;
        data: unknown;
    }>;
    abort(dto: AbortUploadDto): Promise<{
        message: string;
        data: unknown;
    }>;
    syncS3(user: CurrentUserPayload, dto: SyncS3MapsDto): Promise<{
        message: string;
        data: {
            scanned: number;
            existing: number;
            insertable: number;
            skipped: {
                key: string;
                reason: string;
            }[];
            items: {
                s3Key: string;
                countryName: string;
                stateName: string;
                fileName: string;
                fileSize: number;
            }[];
            created?: undefined;
        };
    } | {
        message: string;
        data: {
            scanned: number;
            existing: number;
            created: number;
            skipped: {
                key: string;
                reason: string;
            }[];
            items: unknown[];
            insertable?: undefined;
        };
    }>;
    list(query: ListOfflineMapsDto): Promise<{
        message: string;
        data: {
            items: unknown[];
            meta: {
                page: number;
                limit: number;
                total: number;
            };
        };
    }>;
    detail(id: string): Promise<{
        message: string;
        data: unknown;
    }>;
    update(id: string, dto: UpdateOfflineMapDto): Promise<{
        message: string;
        data: unknown;
    }>;
    initiateReplacement(user: CurrentUserPayload, id: string, dto: InitiateUploadDto): Promise<{
        message: string;
        data: {
            offlineMapId: string;
            uploadId: string;
            s3Key: string;
        };
    }>;
    completeReplacement(dto: CompleteUploadDto): Promise<{
        message: string;
        data: unknown;
    }>;
    status(id: string, dto: UpdateStatusDto): Promise<{
        message: string;
        data: unknown;
    }>;
    softDelete(id: string): Promise<{
        message: string;
        data: unknown;
    }>;
    hardDelete(id: string): Promise<{
        message: string;
        data: null;
    }>;
}
