import Payment from '../payment/payment';
import FinanceCustomerBase from '../customer/customer';
import Account from '../account/account';
import JournalEntry from '../journal-entry/journal-entry';
import Document from '../document/document';
import { DocumentStatus } from '../enum/document-status.enum';
import { ICreateCreditNotePayload } from './create-credit-note-payload.interface';
import { ICreditNote } from './credit-note.interface';
export interface IAccountSystem {
    createAccount(Account: Account, dbTransaction?: any): Promise<string>;
    createInvoice(payload: {
        customer: FinanceCustomerBase;
        invoice: Document;
        paymentMode: 'cash' | 'credit';
        tagIds?: string[];
        discount?: {
            type: 'percentage' | 'fixed';
            value: number;
        };
    }, dbTransaction?: any): Promise<{
        invoiceRefId: string;
        invoiceItems: {
            name: string;
            itemRefId: string;
        }[];
        invoiceNo: string;
    }>;
    createDebitNote(payload: any, dbTransaction?: any): Promise<any>;
    createCreditNote(payload: ICreateCreditNotePayload, dbTransaction?: any): Promise<ICreditNote>;
    postTransaction(journalEntry: JournalEntry, dbTransaction?: any): Promise<any>;
    createCustomer(customer: FinanceCustomerBase, dbTransaction?: any): Promise<string>;
    updateCustomer(customer: FinanceCustomerBase, dbTransaction?: any): Promise<any>;
    makePayment(customer: FinanceCustomerBase, paymentInfo: Payment, dbTransaction?: any): Promise<string>;
    collectPayments(customer: FinanceCustomerBase, paymentInfo: Payment, dbTransaction?: any): Promise<string>;
    postJournalEntry(payload: any): Promise<string>;
    getInvoiceStatus(AccSystemRefId: any): Promise<DocumentStatus>;
    findTagId(tagName: string): Promise<string>;
    createTag(tagName: string, tagGroupName?: string): Promise<string>;
    findTagGroupId(tagGroupName: string): Promise<string>;
    createTagGroup(tagGroupName: string): Promise<string>;
}
//# sourceMappingURL=account-system.interface.d.ts.map