import { Prisma } from '@prisma/client';
import { PrismaService } from '../../../prisma/prisma.service';
import { AuthenticatedUser } from '../../../common/decorators/current-user.decorator';
export declare class BudgetLinesService {
    private readonly prisma;
    constructor(prisma: PrismaService);
    private assertBudgetAccess;
    createLine(user: AuthenticatedUser, budgetId: string, dto: {
        category: string;
        repartitionKeyId: string;
        estimatedAmount: number;
        notes?: string;
    }): Promise<{
        id: string;
        category: string;
        repartitionKeyId: string;
        estimatedAmount: Prisma.Decimal;
        notes: string | null;
        budgetId: string;
    }>;
    list(user: AuthenticatedUser, budgetId: string): Promise<({
        repartitionKey: {
            id: string;
            code: string;
            label: string;
            description: string | null;
            createdAt: Date;
            complexId: string;
            type: import(".prisma/client").$Enums.RepartitionKeyType;
            scopeSpatialUnitId: string | null;
        };
    } & {
        id: string;
        category: string;
        repartitionKeyId: string;
        estimatedAmount: Prisma.Decimal;
        notes: string | null;
        budgetId: string;
    })[]>;
    remove(user: AuthenticatedUser, lineId: string): Promise<{
        deleted: boolean;
    }>;
    upsertBudget(user: AuthenticatedUser, fiscalYearId: string, dto: {
        totalAmount: number;
    }): Promise<{
        id: string;
        createdAt: Date;
        status: string;
        totalAmount: Prisma.Decimal;
        fiscalYearId: string;
    }>;
}
