import type { ClientCardProps } from '../../../clientCard/types';
import type { ICustomer, SalesSdkContextValue, SalesSdkCustomerContextValue, SalesSdkCustomerView } from '../../../salesSdk';
import type { BaseResponsiveProps } from '../../../../responsive';
export declare type ClientDataSource = (ICustomer | SalesSdkCustomerView) & {
    display_name?: string;
    first_name?: string;
    last_name?: string;
    nickname?: string;
    note?: string;
    created_at?: string;
    avatar?: string;
    cover?: string;
    contacts_info?: Record<string, any> | null;
    latest_wallet_detail?: {
        wallet?: {
            name?: string;
        } | null;
    } | null;
};
export interface ClientContext {
    customer: SalesSdkCustomerContextValue;
    sales: Pick<SalesSdkContextValue, 'setContactsInfo'>;
}
export interface ClientProps {
    context: ClientContext;
    className?: string;
    isShowAvatar?: boolean;
    readOnly?: boolean;
    onAfterSelect?: (customer: ClientSelectorCustomer | null, originCustomer?: ClientSelectorCustomer | null) => Promise<void> | void;
}
export interface ClientSelectorCustomer {
    id?: string | number | null;
    customer_id?: string | number | null;
    name?: string;
    display_name?: string;
    first_name?: string;
    last_name?: string;
    nickname?: string;
    contacts_info?: Record<string, any> | null;
    [key: string]: any;
}
export interface ClientSelectorPagination {
    page: number;
    pageSize: number;
    total: number;
}
export interface ClientSelectorSearchOptions {
    showLoading?: boolean;
}
export interface ClientSelectorSetClientOptions {
    sameClientTip?: string;
}
export interface ClientSelectorRef {
    handleSetClient: (record: ClientSelectorCustomer | null, options?: ClientSelectorSetClientOptions) => Promise<void>;
    openSearchModal: () => void;
}
export interface ClientSelectorProps extends BaseResponsiveProps {
    className?: string;
    value?: ClientSelectorCustomer | null;
    list?: ClientSelectorCustomer[];
    loading?: boolean;
    loadingMore?: boolean;
    resultLoading?: boolean;
    hasMore?: boolean;
    pagination?: ClientSelectorPagination;
    isShowAvatar?: boolean;
    showClientCard?: boolean;
    readOnly?: boolean;
    clientCardProps?: Partial<ClientCardProps>;
    beforeSwitchModalOpen?: () => void | boolean | Promise<undefined | boolean>;
    onSearch: (keyword: string, options?: ClientSelectorSearchOptions) => Promise<any> | any;
    onLoadMore?: () => Promise<any> | any;
    onChangePage?: (page: number, pageSize?: number) => Promise<any> | any;
    onSelect: (customer: ClientSelectorCustomer | null, originCustomer?: ClientSelectorCustomer | null) => Promise<any> | any;
    onAddToFirst?: (customer: ClientSelectorCustomer) => void;
    onClientChange?: (customer: ClientSelectorCustomer | null, originCustomer?: ClientSelectorCustomer | null) => Promise<any> | any;
    resolveContactsInfo?: (customer: ClientSelectorCustomer | null) => Record<string, any> | null;
    onContactsInfoChange?: (contactsInfo: Record<string, any> | null) => void;
    onOpenCustomerDetail?: (customer: ClientSelectorCustomer, onSuccess: (detail: any) => void) => void;
}
export interface ClientSummaryRowProps extends BaseResponsiveProps {
    context: ClientContext;
    className?: string;
    showChangeButton?: boolean;
    changeText?: string;
    onAfterSelect?: (customer: ClientSelectorCustomer | null, originCustomer?: ClientSelectorCustomer | null) => Promise<void> | void;
}
export interface ClientDetailCardProps extends BaseResponsiveProps {
    context: ClientContext;
    className?: string;
}
