import { ReimbursementTypeCode, ZeniDate } from '@zeniai/client-epic-state';
import { CreatableSingleSelectFieldValue } from '../../creatableSingleSelect/CreatableSingleSelectField';
import { AutoCompleteSingleSelectFieldValue } from '../../formElements/autoCompleteSingleSelectField/AutoCompleteSingleSelectField';
import { GroupedSingleSelectFieldValue } from '../../formElements/labeledGroupSingleSelectFieldWithRecommendationCheckbox/GroupedSingleSelectField';
export interface MileageFormData {
    amount: {
        amount: number;
        currencyCode: string;
        currencySymbol: string;
    };
    reimbursementType: ReimbursementTypeCode;
    class?: GroupedSingleSelectFieldValue;
    customer?: AutoCompleteSingleSelectFieldValue;
    distanceInMiles?: number;
    memo?: string;
    transactionDate?: ZeniDate;
}
export type MileageFormDataKeys = keyof MileageFormData;
export interface OutOfPocketFormData {
    account: GroupedSingleSelectFieldValue;
    amount: {
        amount: number;
        currencyCode: string;
        currencySymbol: string;
    };
    isCategoryUpdateSelected: boolean;
    isRetainedCategorySelected: boolean;
    reimbursementType: ReimbursementTypeCode;
    class?: GroupedSingleSelectFieldValue;
    customer?: AutoCompleteSingleSelectFieldValue;
    memo?: string;
    merchant?: CreatableSingleSelectFieldValue;
    transactionDate?: ZeniDate;
}
export type OutOfPocketFormDataKeys = keyof OutOfPocketFormData;
export declare const whatForSectionId = "whatFor";
export declare const lineInfoSectionId = "lineInfo";
export declare const paymentAtSectionId = "paymentTo";
export type SectionIdKeys = typeof whatForSectionId | typeof paymentAtSectionId;
export declare const uniqueReimbursementTabKey: (key: OutOfPocketFormDataKeys | MileageFormDataKeys | SectionIdKeys, index?: number, reimbursementType?: ReimbursementTypeCode) => "class" | "customer" | "merchant" | "account" | "paymentTo" | "memo" | "isCategoryUpdateSelected" | "isRetainedCategorySelected" | "amount" | `${number}.class` | `${number}.customer` | `${number}.account` | `${number}.paymentTo` | `${number}.memo` | `${number}.isCategoryUpdateSelected` | `${number}.isRetainedCategorySelected` | `${number}.amount` | "whatFor" | "reimbursementType" | "transactionDate" | "distanceInMiles" | `${number}.out_of_pocket.class` | `${number}.out_of_pocket.customer` | `${number}.out_of_pocket.merchant` | `${number}.out_of_pocket.account` | `${number}.out_of_pocket.paymentTo` | `${number}.out_of_pocket.memo` | `${number}.out_of_pocket.isCategoryUpdateSelected` | `${number}.out_of_pocket.isRetainedCategorySelected` | `${number}.out_of_pocket.amount` | `${number}.out_of_pocket.whatFor` | `${number}.out_of_pocket.reimbursementType` | `${number}.out_of_pocket.transactionDate` | `${number}.out_of_pocket.distanceInMiles` | `${number}.mileage.class` | `${number}.mileage.customer` | `${number}.mileage.merchant` | `${number}.mileage.account` | `${number}.mileage.paymentTo` | `${number}.mileage.memo` | `${number}.mileage.isCategoryUpdateSelected` | `${number}.mileage.isRetainedCategorySelected` | `${number}.mileage.amount` | `${number}.mileage.whatFor` | `${number}.mileage.reimbursementType` | `${number}.mileage.transactionDate` | `${number}.mileage.distanceInMiles` | "out_of_pocket.class" | "out_of_pocket.customer" | "out_of_pocket.merchant" | "out_of_pocket.account" | "out_of_pocket.paymentTo" | "out_of_pocket.memo" | "out_of_pocket.isCategoryUpdateSelected" | "out_of_pocket.isRetainedCategorySelected" | "out_of_pocket.amount" | "out_of_pocket.whatFor" | "out_of_pocket.reimbursementType" | "out_of_pocket.transactionDate" | "out_of_pocket.distanceInMiles" | "mileage.class" | "mileage.customer" | "mileage.merchant" | "mileage.account" | "mileage.paymentTo" | "mileage.memo" | "mileage.isCategoryUpdateSelected" | "mileage.isRetainedCategorySelected" | "mileage.amount" | "mileage.whatFor" | "mileage.reimbursementType" | "mileage.transactionDate" | "mileage.distanceInMiles" | `${number}.merchant` | `${number}.whatFor` | `${number}.reimbursementType` | `${number}.transactionDate` | `${number}.distanceInMiles`;
export type ReimbursementTabKeys = ReturnType<typeof uniqueReimbursementTabKey>;
