import { DocumentData, OrganizationData, PersonalInfo, ResetUserSecurity, UserData, UserSecurity } from "..";
import type { GiftData } from "../banking/entities/customField/promotionData/giftData";
type TEntity = UserData[keyof Pick<UserData, "addresses" | "bank_account" | "email" | "phone" | "identification">][0];
type TModifyListByEntity = <K extends TEntity>(entityList: K[], entity: K) => K[];
type TModifyByDocumentData = <K extends TEntity>(entityList: K[], entity: DocumentData) => K[];
type TModifyOrganizationByDocumentData = (organizationList: OrganizationData[], documentData: DocumentData) => OrganizationData[];
type TModifyOrganizationList = (organizationList: OrganizationData[], organization: OrganizationData) => OrganizationData[];
type TModifyProfilePicture = (personal_info: PersonalInfo, documentData: DocumentData) => PersonalInfo;
type TModifySecurity = <K extends UserSecurity>(userSecurity: K, newUserSecurity: K) => UserSecurity;
type TModifySecurityResetUserSecurity = (userSecurity: UserSecurity, resetUserSecurity: ResetUserSecurity) => UserSecurity;
export { TEntity, TModifyListByEntity, TModifyByDocumentData, TModifyOrganizationByDocumentData, TModifyOrganizationList, TModifyProfilePicture, TModifySecurityResetUserSecurity, TModifySecurity, };
type BaseEntity = {
    id: number;
    is_primary: number;
    verification_status: number;
};
type TSortEntity = <K extends BaseEntity>(entityList: K[]) => K[];
type TBaseSortEntityBy = <K extends BaseEntity>(a: K, b: K) => number;
type TSortByIsPrimary = TBaseSortEntityBy;
type TSortByVerificationStatus = TBaseSortEntityBy;
type TSortByID = TBaseSortEntityBy;
export { TSortEntity, TSortByIsPrimary, TSortByVerificationStatus, TSortByID };
type PromotionCustomField = {
    promotion_data: {
        gift_data?: GiftData[];
        referral_data?: {
            code: string;
            type: string;
        };
    };
};
export type { PromotionCustomField };
