import * as plugins from './plugins.js';
import type { TSKRType, TTransactionStatus, ITransactionData } from './skr.types.js';
declare const SmartDataDbDoc: typeof plugins.smartdata.SmartDataDbDoc;
export declare class Transaction extends SmartDataDbDoc<Transaction, Transaction> {
    id: string;
    transactionNumber: string;
    date: Date;
    debitAccount: string;
    creditAccount: string;
    amount: number;
    description: string;
    reference: string;
    skrType: TSKRType;
    vatAmount: number;
    costCenter: string;
    status: TTransactionStatus;
    reversalOf: string;
    reversedBy: string;
    period: string;
    fiscalYear: number;
    createdAt: Date;
    postedAt: Date;
    createdBy: string;
    constructor(data?: Partial<ITransactionData>);
    private generateTransactionNumber;
    static createTransaction(data: ITransactionData): Promise<Transaction>;
    static getTransactionById(id: string): Promise<Transaction | null>;
    static getTransactionsByAccount(accountNumber: string, skrType: TSKRType): Promise<Transaction[]>;
    static getTransactionsByPeriod(period: string, skrType: TSKRType): Promise<Transaction[]>;
    static getTransactionsByDateRange(dateFrom: Date, dateTo: Date, skrType: TSKRType): Promise<Transaction[]>;
    validateAndPost(): Promise<void>;
    private validateTransaction;
    private updateAccountBalances;
    reverseTransaction(): Promise<Transaction>;
    beforeSave(): Promise<void>;
}
export {};
