import { Response } from 'express';
import { AssemblyType, VoteChoice } from '@prisma/client';
import { AssembliesService } from './assemblies.service';
import { AuthenticatedUser } from '../../common/decorators/current-user.decorator';
declare class AgendaItemDto {
    title: string;
    description?: string;
    requiresVote?: boolean;
    resolutionText?: string;
    majority?: string;
}
declare class CreateAssemblyDto {
    complexId: string;
    type?: AssemblyType;
    title: string;
    scheduledAt: string;
    location?: string;
    onlineUrl?: string;
    quorumPct?: number;
    agendaItems: AgendaItemDto[];
}
declare class VoteDto {
    choice: VoteChoice;
}
declare class GiveProxyDto {
    receiverId: string;
}
export declare class AssembliesController {
    private readonly service;
    constructor(service: AssembliesService);
    create(user: AuthenticatedUser, dto: CreateAssemblyDto): Promise<({
        agendaItems: ({
            resolutions: {
                id: string;
                status: import(".prisma/client").$Enums.ResolutionStatus;
                closedAt: Date | null;
                text: string;
                agendaItemId: string;
                majority: string;
                totalFor: number;
                totalAgainst: number;
                totalAbstain: number;
            }[];
        } & {
            id: string;
            description: string | null;
            title: string;
            order: number;
            assemblyId: string;
            requiresVote: boolean;
        })[];
    } & {
        id: string;
        createdAt: Date;
        updatedAt: Date;
        status: import(".prisma/client").$Enums.AssemblyStatus;
        complexId: string;
        type: import(".prisma/client").$Enums.AssemblyType;
        title: string;
        location: string | null;
        scheduledAt: Date;
        onlineUrl: string | null;
        quorumPct: import("@prisma/client/runtime/library").Decimal;
        minutesPdfUrl: string | null;
        correspondenceOpenAt: Date | null;
    }) | null>;
    list(user: AuthenticatedUser, complexId?: string): never[] | import(".prisma/client").Prisma.PrismaPromise<({
        _count: {
            convocations: number;
            agendaItems: number;
        };
    } & {
        id: string;
        createdAt: Date;
        updatedAt: Date;
        status: import(".prisma/client").$Enums.AssemblyStatus;
        complexId: string;
        type: import(".prisma/client").$Enums.AssemblyType;
        title: string;
        location: string | null;
        scheduledAt: Date;
        onlineUrl: string | null;
        quorumPct: import("@prisma/client/runtime/library").Decimal;
        minutesPdfUrl: string | null;
        correspondenceOpenAt: Date | null;
    })[]>;
    findOne(user: AuthenticatedUser, id: string): Promise<{
        convocations: ({
            user: {
                id: string;
                email: string;
                firstName: string | null;
            };
        } & {
            id: string;
            userId: string;
            sentAt: Date | null;
            readAt: Date | null;
            pdfUrl: string | null;
            assemblyId: string;
            confirmedAt: Date | null;
        })[];
        complex: {
            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;
        };
        agendaItems: ({
            resolutions: ({
                _count: {
                    ballots: number;
                };
            } & {
                id: string;
                status: import(".prisma/client").$Enums.ResolutionStatus;
                closedAt: Date | null;
                text: string;
                agendaItemId: string;
                majority: string;
                totalFor: number;
                totalAgainst: number;
                totalAbstain: number;
            })[];
        } & {
            id: string;
            description: string | null;
            title: string;
            order: number;
            assemblyId: string;
            requiresVote: boolean;
        })[];
        proxies: {
            id: string;
            revokedAt: Date | null;
            assemblyId: string;
            giverId: string;
            receiverId: string;
            weight: number;
            signedAt: Date;
        }[];
    } & {
        id: string;
        createdAt: Date;
        updatedAt: Date;
        status: import(".prisma/client").$Enums.AssemblyStatus;
        complexId: string;
        type: import(".prisma/client").$Enums.AssemblyType;
        title: string;
        location: string | null;
        scheduledAt: Date;
        onlineUrl: string | null;
        quorumPct: import("@prisma/client/runtime/library").Decimal;
        minutesPdfUrl: string | null;
        correspondenceOpenAt: Date | null;
    }>;
    convocate(user: AuthenticatedUser, id: string): Promise<{
        id: string;
        createdAt: Date;
        updatedAt: Date;
        status: import(".prisma/client").$Enums.AssemblyStatus;
        complexId: string;
        type: import(".prisma/client").$Enums.AssemblyType;
        title: string;
        location: string | null;
        scheduledAt: Date;
        onlineUrl: string | null;
        quorumPct: import("@prisma/client/runtime/library").Decimal;
        minutesPdfUrl: string | null;
        correspondenceOpenAt: Date | null;
    }>;
    open(user: AuthenticatedUser, id: string): Promise<{
        id: string;
        createdAt: Date;
        updatedAt: Date;
        status: import(".prisma/client").$Enums.AssemblyStatus;
        complexId: string;
        type: import(".prisma/client").$Enums.AssemblyType;
        title: string;
        location: string | null;
        scheduledAt: Date;
        onlineUrl: string | null;
        quorumPct: import("@prisma/client/runtime/library").Decimal;
        minutesPdfUrl: string | null;
        correspondenceOpenAt: Date | null;
    }>;
    close(user: AuthenticatedUser, id: string): Promise<{
        id: string;
        createdAt: Date;
        updatedAt: Date;
        status: import(".prisma/client").$Enums.AssemblyStatus;
        complexId: string;
        type: import(".prisma/client").$Enums.AssemblyType;
        title: string;
        location: string | null;
        scheduledAt: Date;
        onlineUrl: string | null;
        quorumPct: import("@prisma/client/runtime/library").Decimal;
        minutesPdfUrl: string | null;
        correspondenceOpenAt: Date | null;
    }>;
    giveProxy(user: AuthenticatedUser, id: string, dto: GiveProxyDto): Promise<{
        id: string;
        revokedAt: Date | null;
        assemblyId: string;
        giverId: string;
        receiverId: string;
        weight: number;
        signedAt: Date;
    }>;
    myWeight(user: AuthenticatedUser, id: string): Promise<{
        ownWeight: number;
        proxyWeight: number;
        totalWeight: number;
    }>;
    vote(user: AuthenticatedUser, resolutionId: string, dto: VoteDto): Promise<{
        id: string;
        userId: string;
        weight: number;
        resolutionId: string;
        choice: import(".prisma/client").$Enums.VoteChoice;
        byCorrespondence: boolean;
        castAt: Date;
    }>;
    pvPdf(user: AuthenticatedUser, id: string, res: Response): Promise<void>;
}
export {};
