import { Currency } from '../../../commonStateTypes/amount'; import { AccountBasePayload } from '../../account/accountPayload'; import { ClassBasePayload } from '../../class/classPayload'; import { CustomerBasePayload } from '../../customer/customerPayload'; import { ProjectBasePayload } from '../../project/projectPayload'; import { VendorBasePayload } from '../../vendor/vendorPayload'; import Line, { BillableStatus, CategorizationStatusType, LineType, TransactionWithAccountAndClassLine } from '../stateTypes/transactionLine'; import { AISummaries, AISummary } from '../stateTypes/transactionLine'; import { TransactionIDPayload } from './transactionIDPayload'; export interface AISummaryPayload { cot: string[]; reasoning: string; recommendation_hash: string; recommendation_type: string; } export interface AISummariesPayload { category_ai_summaries: AISummaryPayload[] | null; class_ai_summaries: AISummaryPayload[] | null; vendor_ai_summaries: AISummaryPayload[] | null; } interface TransactionLineBasePayload { amount: number; line_description: string; line_detail_type: string; line_id: string; ai_summaries?: AISummariesPayload; categorization_status?: CategorizationStatusType; review_pending_reasons?: string[]; } export interface LineDetailPayload { account: AccountBasePayload; class: ClassBasePayload; line_detail_type: string; billable_status?: BillableStatus; customer?: CustomerBasePayload; project?: ProjectBasePayload; vendor?: VendorBasePayload; } /** * Linked Transaction Line Payload */ interface LinkedTransactionLinePayload extends TransactionLineBasePayload { linked_transactions: TransactionIDPayload[]; } /** * Transaction with account and class line payload */ export interface TransactionWithAccountAndClassLinePayload extends TransactionLineBasePayload { line_detail: LineDetailPayload; is_category_miscategorized?: boolean; is_class_miscategorized?: boolean; recipient_amount?: number; } /** * Transaction with account and class line payload with COT tracking */ export declare const toTransactionWithAccountAndClassLine: (payload: TransactionWithAccountAndClassLinePayload, currency: Currency, type?: LineType) => TransactionWithAccountAndClassLine; /** * Transaction with product or service line payload */ interface ProductOrServiceItemPayload { item_id: string; item_name: string; } interface LineDetailProductOrServicePayload extends LineDetailPayload { item: ProductOrServiceItemPayload; quantity: number; unit_price: number; } interface TransactionWithProductOrServiceLinePayload extends TransactionWithAccountAndClassLinePayload { line_detail: LineDetailProductOrServicePayload; } /** * Journal entry transaction line payload */ interface LineDetailJournalEntryPayload extends LineDetailPayload { posting_type: string; posting_type_name: string; vendor?: VendorBasePayload; } interface JournalEntryTransactionLinePayload extends TransactionWithAccountAndClassLinePayload { line_detail: LineDetailJournalEntryPayload; line_type: string; } /** * Transaction info line payload */ interface LineDetailInfoLinePayload { line_detail_type: string; } interface TransactionInfoLinePayload extends TransactionLineBasePayload { line_detail: LineDetailInfoLinePayload; } export type LinePayload = LinkedTransactionLinePayload | TransactionWithProductOrServiceLinePayload | JournalEntryTransactionLinePayload | TransactionWithAccountAndClassLinePayload | TransactionInfoLinePayload; export declare function toLine(payload: LinePayload, currency: Currency, recipientCurrency?: Currency): Line; export declare const toLinePayload: (line: Line) => LinePayload; export declare const toAccountAndClassLinePayload: (line: TransactionWithAccountAndClassLine) => TransactionWithAccountAndClassLinePayload; export declare const toAISummary: (payload: AISummaryPayload) => AISummary; export declare const toAISummaries: (payload: AISummariesPayload) => AISummaries; export {};