/** * Campaign Mapper * * Demonstrates extending BaseMapper for a campaign domain entity. * Handles data transformation between different layers of the application. * * @fileoverview Campaign data mapper for transforming between DTOs and entities * @module CampaignMapper */ import { BaseMapper } from '../../base'; import type { CampaignEntity, CampaignResponseDTO, CampaignStoreItem, CreateCampaignDTO, UpdateCampaignDTO, PatchCampaignDTO, QueryCampaignDTO } from '@plyaz/types/campaign'; /** * Campaign Mapper implementation * * Supports: * - toDomain: API response → Domain * - toCreateDTO: Domain → POST body * - toPatchDTO: Domain → PATCH body * - toStoreState: Domain → Zustand store */ declare class CampaignMapperClass extends BaseMapper { /** * API DTO → Domain Model */ toDomain(dto: CampaignResponseDTO): CampaignEntity; /** * Domain data → Create DTO (POST body) */ toCreateDTO(data: Partial): CreateCampaignDTO; /** * Domain data → Update DTO (PUT body - full) */ toUpdateDTO(data: Partial): UpdateCampaignDTO; /** * Domain data → Patch DTO (PATCH body - partial) */ toPatchDTO(data: Partial): PatchCampaignDTO; /** * Filters → Query params DTO (GET) */ toQueryDTO(filters: Partial): QueryCampaignDTO; /** * Domain → Store state (serializable) */ toStoreState(domain: CampaignEntity): CampaignStoreItem; /** * Store state → Domain (restore computed props) */ fromStoreState(state: CampaignStoreItem): CampaignEntity; /** * Database row → Response DTO * Maps repository output to API response format */ toResponseDTO(row: { id: string; creator_id: string; title: string; subtitle: string; story: string; funding_target: number; status: string; campaign_images?: string[]; start_date?: string; duration?: number; location_region?: string; location_city?: string; sport?: string; category?: string; tags?: string[]; campaign_videos?: string[]; first_contribution_at?: string; created_at: string; updated_at: string; deleted_at?: string; }): CampaignResponseDTO; } export { CampaignMapperClass }; export declare const CampaignMapper: CampaignMapperClass; //# sourceMappingURL=CampaignMapper.d.ts.map