/**
 * PrototipoService - Gestión de prototipos de vivienda
 *
 * CRUD de prototipos con soporte multi-tenant.
 *
 * @module Construction
 */
import { Repository } from 'typeorm';
import { Prototipo } from '../entities/prototipo.entity';
export interface CreatePrototipoDto {
    code: string;
    name: string;
    description?: string;
    type?: string;
    areaConstructionM2?: number;
    areaTerrainM2?: number;
    bedrooms?: number;
    bathrooms?: number;
    parkingSpaces?: number;
    floors?: number;
    basePrice?: number;
    blueprintUrl?: string;
    renderUrl?: string;
    metadata?: Record<string, unknown>;
}
export interface UpdatePrototipoDto extends Partial<CreatePrototipoDto> {
    isActive?: boolean;
}
export interface PrototipoListOptions {
    tenantId: string;
    page?: number;
    limit?: number;
    search?: string;
    type?: string;
    isActive?: boolean;
}
export declare class PrototipoService {
    private readonly repository;
    constructor(repository: Repository<Prototipo>);
    /**
     * Listar prototipos
     */
    findAll(options: PrototipoListOptions): Promise<{
        items: Prototipo[];
        total: number;
    }>;
    /**
     * Obtener prototipo por ID
     */
    findById(id: string, tenantId: string): Promise<Prototipo | null>;
    /**
     * Obtener prototipo por código
     */
    findByCode(code: string, tenantId: string): Promise<Prototipo | null>;
    /**
     * Crear prototipo
     */
    create(tenantId: string, dto: CreatePrototipoDto, createdBy?: string): Promise<Prototipo>;
    /**
     * Actualizar prototipo
     */
    update(id: string, tenantId: string, dto: UpdatePrototipoDto, updatedBy?: string): Promise<Prototipo>;
    /**
     * Eliminar prototipo (soft delete)
     */
    delete(id: string, tenantId: string, _deletedBy?: string): Promise<void>;
    /**
     * Activar/Desactivar prototipo
     */
    setActive(id: string, tenantId: string, isActive: boolean): Promise<Prototipo>;
}
//# sourceMappingURL=prototipo.service.d.ts.map