"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.MapMarkerResponseDto = exports.MapMarkerDto = exports.MapReverseGeocodeResponseDto = exports.MapReverseGeocodeDto = void 0;
const openapi = require("@nestjs/swagger");
const nestjs_zod_1 = require("nestjs-zod");
const validation_1 = require("../validation");
const zod_1 = __importDefault(require("zod"));
const MapReverseGeocodeSchema = zod_1.default
    .object({
    lat: zod_1.default.coerce.number().meta({ format: 'double' }).pipe(validation_1.latitudeSchema).describe('Latitude (-90 to 90)'),
    lon: zod_1.default.coerce.number().meta({ format: 'double' }).pipe(validation_1.longitudeSchema).describe('Longitude (-180 to 180)'),
})
    .meta({ id: 'MapReverseGeocodeDto' });
const MapReverseGeocodeResponseSchema = zod_1.default
    .object({
    city: zod_1.default.string().nullable().describe('City name'),
    state: zod_1.default.string().nullable().describe('State/Province name'),
    country: zod_1.default.string().nullable().describe('Country name'),
})
    .meta({ id: 'MapReverseGeocodeResponseDto' });
const MapMarkerSchema = zod_1.default
    .object({
    isArchived: validation_1.stringToBool.optional().describe('Filter by archived status'),
    isFavorite: validation_1.stringToBool.optional().describe('Filter by favorite status'),
    fileCreatedAfter: validation_1.isoDatetimeToDate.optional().describe('Filter assets created after this date'),
    fileCreatedBefore: validation_1.isoDatetimeToDate.optional().describe('Filter assets created before this date'),
    withPartners: validation_1.stringToBool.optional().describe('Include partner assets'),
    withSharedAlbums: validation_1.stringToBool.optional().describe('Include shared album assets'),
})
    .meta({ id: 'MapMarkerDto' });
const MapMarkerResponseSchema = zod_1.default
    .object({
    id: zod_1.default.uuidv4().describe('Asset ID'),
    lat: zod_1.default.number().meta({ format: 'double' }).describe('Latitude'),
    lon: zod_1.default.number().meta({ format: 'double' }).describe('Longitude'),
    city: zod_1.default.string().nullable().describe('City name'),
    state: zod_1.default.string().nullable().describe('State/Province name'),
    country: zod_1.default.string().nullable().describe('Country name'),
})
    .meta({ id: 'MapMarkerResponseDto' });
class MapReverseGeocodeDto extends (0, nestjs_zod_1.createZodDto)(MapReverseGeocodeSchema) {
    static _OPENAPI_METADATA_FACTORY() {
        return {};
    }
}
exports.MapReverseGeocodeDto = MapReverseGeocodeDto;
class MapReverseGeocodeResponseDto extends (0, nestjs_zod_1.createZodDto)(MapReverseGeocodeResponseSchema) {
    static _OPENAPI_METADATA_FACTORY() {
        return {};
    }
}
exports.MapReverseGeocodeResponseDto = MapReverseGeocodeResponseDto;
class MapMarkerDto extends (0, nestjs_zod_1.createZodDto)(MapMarkerSchema) {
    static _OPENAPI_METADATA_FACTORY() {
        return {};
    }
}
exports.MapMarkerDto = MapMarkerDto;
class MapMarkerResponseDto extends (0, nestjs_zod_1.createZodDto)(MapMarkerResponseSchema) {
    static _OPENAPI_METADATA_FACTORY() {
        return {};
    }
}
exports.MapMarkerResponseDto = MapMarkerResponseDto;
//# sourceMappingURL=map.dto.js.map