import { AuthenticatedUser } from '../../../common/decorators/current-user.decorator';
import { BankService } from '../services/bank.service';
import { CreateBankAccountDto, UpdateBankAccountDto, CreateBankTransactionDto, UpdateBankTransactionStatusDto } from '../dto/bank.dto';
export declare class BankController {
    private readonly bankService;
    constructor(bankService: BankService);
    getAccounts(user: AuthenticatedUser, complexId: string): Promise<({
        _count: {
            transactions: number;
        };
    } & {
        id: string;
        currency: string;
        createdAt: Date;
        complexId: string;
        bankName: string;
        accountName: string;
        rib: string | null;
        initialBalance: import("@prisma/client/runtime/library").Decimal;
        isDefault: boolean;
        iban: string | null;
    })[]>;
    createAccount(user: AuthenticatedUser, dto: CreateBankAccountDto): Promise<{
        id: string;
        currency: string;
        createdAt: Date;
        complexId: string;
        bankName: string;
        accountName: string;
        rib: string | null;
        initialBalance: import("@prisma/client/runtime/library").Decimal;
        isDefault: boolean;
        iban: string | null;
    }>;
    getAccount(user: AuthenticatedUser, id: string): Promise<{
        transactions: {
            id: string;
            label: string;
            createdAt: Date;
            status: import(".prisma/client").$Enums.ReconciliationStatus;
            type: import(".prisma/client").$Enums.TransactionType;
            notes: string | null;
            amount: import("@prisma/client/runtime/library").Decimal;
            bankAccountId: string;
            date: Date;
            paymentId: string | null;
            expenseId: string | null;
            reconciledAt: Date | null;
            reconciledById: string | null;
        }[];
    } & {
        id: string;
        currency: string;
        createdAt: Date;
        complexId: string;
        bankName: string;
        accountName: string;
        rib: string | null;
        initialBalance: import("@prisma/client/runtime/library").Decimal;
        isDefault: boolean;
        iban: string | null;
    }>;
    updateAccount(user: AuthenticatedUser, id: string, dto: UpdateBankAccountDto): Promise<{
        id: string;
        currency: string;
        createdAt: Date;
        complexId: string;
        bankName: string;
        accountName: string;
        rib: string | null;
        initialBalance: import("@prisma/client/runtime/library").Decimal;
        isDefault: boolean;
        iban: string | null;
    }>;
    deleteAccount(user: AuthenticatedUser, id: string): Promise<{
        id: string;
        currency: string;
        createdAt: Date;
        complexId: string;
        bankName: string;
        accountName: string;
        rib: string | null;
        initialBalance: import("@prisma/client/runtime/library").Decimal;
        isDefault: boolean;
        iban: string | null;
    }>;
    getTransactions(user: AuthenticatedUser, id: string): Promise<{
        id: string;
        label: string;
        createdAt: Date;
        status: import(".prisma/client").$Enums.ReconciliationStatus;
        type: import(".prisma/client").$Enums.TransactionType;
        notes: string | null;
        amount: import("@prisma/client/runtime/library").Decimal;
        bankAccountId: string;
        date: Date;
        paymentId: string | null;
        expenseId: string | null;
        reconciledAt: Date | null;
        reconciledById: string | null;
    }[]>;
    addTransaction(user: AuthenticatedUser, dto: CreateBankTransactionDto): Promise<{
        id: string;
        label: string;
        createdAt: Date;
        status: import(".prisma/client").$Enums.ReconciliationStatus;
        type: import(".prisma/client").$Enums.TransactionType;
        notes: string | null;
        amount: import("@prisma/client/runtime/library").Decimal;
        bankAccountId: string;
        date: Date;
        paymentId: string | null;
        expenseId: string | null;
        reconciledAt: Date | null;
        reconciledById: string | null;
    }>;
    updateTransactionStatus(user: AuthenticatedUser, id: string, dto: UpdateBankTransactionStatusDto): Promise<{
        id: string;
        label: string;
        createdAt: Date;
        status: import(".prisma/client").$Enums.ReconciliationStatus;
        type: import(".prisma/client").$Enums.TransactionType;
        notes: string | null;
        amount: import("@prisma/client/runtime/library").Decimal;
        bankAccountId: string;
        date: Date;
        paymentId: string | null;
        expenseId: string | null;
        reconciledAt: Date | null;
        reconciledById: string | null;
    }>;
}
