import { ComplexesService } from './complexes.service';
import { CreateComplexDto } from './dto/create-complex.dto';
import { CreateSpatialUnitDto } from './dto/create-spatial-unit.dto';
import { CreateRepartitionKeyDto } from './dto/create-repartition-key.dto';
import { GenerateLayoutDto } from './dto/generate-layout.dto';
import { AuthenticatedUser } from '../../common/decorators/current-user.decorator';
export declare class ComplexesController {
    private readonly complexesService;
    constructor(complexesService: ComplexesService);
    create(user: AuthenticatedUser, dto: CreateComplexDto): Promise<{
        repartitionKeys: {
            id: string;
            code: string;
            label: string;
            description: string | null;
            createdAt: Date;
            complexId: string;
            type: import(".prisma/client").$Enums.RepartitionKeyType;
            scopeSpatialUnitId: string | null;
        }[];
    } & {
        id: string;
        name: string;
        createdAt: Date;
        updatedAt: Date;
        city: string | null;
        country: string;
        status: string;
        tenantId: string;
        type: import(".prisma/client").$Enums.ComplexType;
        address: string | null;
        gpsLat: number | null;
        gpsLng: number | null;
    }>;
    findAll(user: AuthenticatedUser): import(".prisma/client").Prisma.PrismaPromise<({
        _count: {
            spatialUnits: number;
        };
    } & {
        id: string;
        name: string;
        createdAt: Date;
        updatedAt: Date;
        city: string | null;
        country: string;
        status: string;
        tenantId: string;
        type: import(".prisma/client").$Enums.ComplexType;
        address: string | null;
        gpsLat: number | null;
        gpsLng: number | null;
    })[]>;
    findOne(user: AuthenticatedUser, id: string): Promise<{
        spatialUnits: ({
            lots: {
                id: string;
                createdAt: Date;
                updatedAt: Date;
                complexId: string;
                spatialUnitId: string;
                lotNumber: string;
                type: import(".prisma/client").$Enums.LotType;
                surfaceM2: import("@prisma/client/runtime/library").Decimal | null;
                tantiemesGeneral: number;
            }[];
        } & {
            id: string;
            code: string;
            label: string | null;
            createdAt: Date;
            complexId: string;
            type: import(".prisma/client").$Enums.SpatialUnitType;
            path: string | null;
            parentId: string | null;
        })[];
        repartitionKeys: {
            id: string;
            code: string;
            label: string;
            description: string | null;
            createdAt: Date;
            complexId: string;
            type: import(".prisma/client").$Enums.RepartitionKeyType;
            scopeSpatialUnitId: string | null;
        }[];
    } & {
        id: string;
        name: string;
        createdAt: Date;
        updatedAt: Date;
        city: string | null;
        country: string;
        status: string;
        tenantId: string;
        type: import(".prisma/client").$Enums.ComplexType;
        address: string | null;
        gpsLat: number | null;
        gpsLng: number | null;
    }>;
    getTree(user: AuthenticatedUser, id: string): Promise<{
        complexId: string;
        tree: any[];
    }>;
    addSpatialUnit(id: string, dto: CreateSpatialUnitDto): Promise<{
        id: string;
        code: string;
        label: string | null;
        createdAt: Date;
        complexId: string;
        type: import(".prisma/client").$Enums.SpatialUnitType;
        path: string | null;
        parentId: string | null;
    }>;
    addRepartitionKey(id: string, dto: CreateRepartitionKeyDto): Promise<{
        id: string;
        code: string;
        label: string;
        description: string | null;
        createdAt: Date;
        complexId: string;
        type: import(".prisma/client").$Enums.RepartitionKeyType;
        scopeSpatialUnitId: string | null;
    }>;
    generateLayout(user: AuthenticatedUser, id: string, dto: GenerateLayoutDto): Promise<{
        complexId: string;
        createdUnits: number;
        createdLots: number;
    }>;
    getDashboard(user: AuthenticatedUser, id: string): Promise<{
        complexId: string;
        lotsCount: number;
        residentsCount: number;
        openTickets: number;
        activeFundCalls: number;
        finance: {
            totalBilled: number;
            totalCollected: number;
            collectionRate: number;
            breakdown: (import(".prisma/client").Prisma.PickEnumerable<import(".prisma/client").Prisma.FundCallItemGroupByOutputType, "status"[]> & {
                _count: number;
                _sum: {
                    amount: import("@prisma/client/runtime/library").Decimal | null;
                    paidAmount: import("@prisma/client/runtime/library").Decimal | null;
                };
            })[];
        };
    }>;
    update(user: AuthenticatedUser, id: string, dto: CreateComplexDto): Promise<{
        id: string;
        name: string;
        createdAt: Date;
        updatedAt: Date;
        city: string | null;
        country: string;
        status: string;
        tenantId: string;
        type: import(".prisma/client").$Enums.ComplexType;
        address: string | null;
        gpsLat: number | null;
        gpsLng: number | null;
    }>;
    remove(user: AuthenticatedUser, id: string): Promise<{
        deleted: boolean;
    }>;
}
