import * as IShared from '../../../shared/interface'; import { Clients, Users, Country, ReasonForExemption, ClientType, SegmentsArea, Language, Vehicles, DeliveryMethods, MaturityDates, PaymentMethods, Persona } from '../../../shared/entities/user'; export type Entity = Clients; export declare const Route = "client"; export declare const UpperName = "Clients"; export declare const LowerName: string; interface IMainPersona extends Persona { country: Country | null; reason_for_exemption: ReasonForExemption | null; } interface IFindDetailedResponse extends Entity { user: Users; main_persona: IMainPersona; client_type: ClientType | null; segments_area: SegmentsArea | null; country: Country | null; language: Language | null; default_payment_method: PaymentMethods | null; default_maturity_date: MaturityDates | null; default_delivery_method: DeliveryMethods | null; default_vehicle: Vehicles | null; } export type IFindByIdResponse = Omit; export type IFindByOwnerIdResponse = Omit; export interface IFindByQueryRequest { number?: number[]; id?: string[]; nif?: string | null; } export interface IFindRequest { } export type IFindResponse = Omit; export interface IFindPaginatedRequest extends IFindRequest, IShared.IPaginationRequest { } export type IFindWithPaginationResponse = IShared.IPaginationResponse>; export type ICreateMainPersona = Pick; export interface ICreateRequest { user_id?: string; main_persona: ICreateMainPersona; deferred_payment?: boolean; is_donation_eligible?: boolean; default_discount?: number; exemption_reason_id?: string | null; newsletter?: boolean; inactive?: boolean; country_id?: string | null; language_id?: string | null; client_type_id?: string | null; segments_area_id?: string | null; default_payment_method_id?: string | null; default_maturity_date_id?: string | null; default_delivery_method_id?: string | null; default_vehicle_id?: string | null; } export interface IUpdateRequest { nif?: string | null; country_id?: string | null; language_id?: string | null; client_type_id?: string | null; newsletter?: boolean; inactive?: boolean; segments_area_id?: string | null; main_persona_id?: string; contact_persona_id?: string; default_discount?: number; default_payment_method_id?: string | null; default_maturity_date_id?: string | null; default_delivery_method_id?: string | null; default_vehicle_id?: string | null; deferred_payment?: boolean; is_donation_eligible?: boolean; } export interface IRepository { findById(selector: IShared.IFindByIdRequest): Promise; findByOwnerId(params: IShared.IFindByOwnerIdRequest): Promise; findMinified(params?: IShared.IFindMinifiedRequest): Promise; findByQuery(params: IFindByQueryRequest): Promise; find(selector: IFindRequest): Promise; findPaginated(selector: IFindPaginatedRequest): Promise; create(data: ICreateRequest): Promise; update(selector: IShared.IFindByIdRequest, data: IUpdateRequest): Promise; deleteOne(selector: IShared.IFindByIdRequest): Promise; } export type IController = IShared.IEntityWithUserToken; export {};