import { Amount, BillableStatus, CustomerBase, ID, LineType, PlatformLineDetailType, ProductOrService, RecommendationWithCOT, TransactionCategory, TransactionType, VendorBase } from '@zeniai/client-epic-state';
import { AutoCompleteGroupedCreatableSingleSelectCustomGroupFieldValueWithCOT } from '../../../formElements/autoCompleteGroupedCreatableSingleSelectCustomGroupFieldWithCOT/AutoCompleteGroupedCreatableSingleSelectCustomGroupFieldWithCOT';
import { GroupedSingleSelectFieldValueWithCOT } from '../../../formElements/labeledGroupedSingleSelectWithCOT/GroupedSingleSelectFieldWithCOT';
export declare const expenseAutomationTransactionsPage = "expenseAutomationTransactionsPage";
export declare const transactionCategorizationListTableSectionId = "transactionCategorizationListTable";
export declare const transactionCategorizationPage = "transactionCategorizationPage";
export declare const transactionDetailLineCategory = "account";
export declare const transactionDetailLineClass = "class";
export declare const transactionDetailLineProject = "project";
export declare const transactionDetailLineDescription = "lineDescription";
export declare const transactionDetailLineEntitySelection = "lineEntitySelection";
export declare const transactionDetailLineEntity = "lineEntity";
export declare const recommendations = "recommendations";
export declare const lineInfo = "lineInfo";
export declare const transactionType = "transactionType";
export declare const transactionDate = "transactionDate";
export declare const transactionAmount = "transactionAmount";
export declare const vendorDetails = "vendorDetails";
export declare const customerDetails = "customerDetails";
export declare const sectionId = "transactionCategorizationSectionId";
export declare const selectedTransactionIds = "selectedTransactionIds";
export declare const transactionId = "transactionId";
export interface LineInfo {
    amount: Amount;
    billable: BillableStatus;
    isCategoryMiscategorized: boolean;
    isClassMiscategorized: boolean;
    lineId: ID;
    [recommendations]: RecommendationWithCOT[];
    [transactionDetailLineCategory]: GroupedSingleSelectFieldValueWithCOT;
    [transactionDetailLineClass]: GroupedSingleSelectFieldValueWithCOT;
    [transactionDetailLineEntitySelection]: AutoCompleteGroupedCreatableSingleSelectCustomGroupFieldValueWithCOT;
    transactionId: ID;
    type: LineType;
    customer?: CustomerBase;
    item?: ProductOrService;
    lineDetailType?: PlatformLineDetailType;
    lineTransactionType?: TransactionType;
    platformLineDetailType?: PlatformLineDetailType;
    postingType?: TransactionCategory;
    postingTypeName?: string;
    [transactionDetailLineProject]?: GroupedSingleSelectFieldValueWithCOT;
    vendor?: VendorBase;
}
export interface TransactionCategorizationContentFormData {
    [lineInfo]: LineInfo[];
    transactionId: ID;
    [customerDetails]?: {
        id: ID;
        name: string;
        qboId: string;
    };
    [vendorDetails]?: {
        id: ID;
        name: string;
        qboId: string;
    };
}
export declare const uniqueName: (sectionId: string, key: string, lineId: string) => `${string}.${string}.${string}`;
export type FormDataKeyUniqueNames = ReturnType<typeof uniqueName>;
export interface FormData {
    [selectedTransactionIds]: ID[];
    [transactionCategorizationListTableSectionId]: TransactionCategorizationContentFormData[];
}
export type FormDataKeys = keyof FormData;
