import * as IShared from '../../../shared/interface'; import { Providers, Country, Language, ProviderType, ReasonForExemption, Persona, Clients, SegmentsArea, ClientType, StoreOperator, UserPositions, Commissioner, Users, PaymentMethods, MaturityDates, DeliveryMethods, Vehicles, Theme } from '../../../shared/entities/user'; export type Entity = Users; export type EntityWithoutPassword = Omit; export declare const Route = "users"; export declare const UpperName = "Users"; export declare const LowerName: string; interface IMainPersona extends Persona { country: Country | null; reason_for_exemption: ReasonForExemption | null; } interface IStoreOperator extends Pick { main_persona: Pick; theme: Pick | null; } export interface IFindByAccountResponse extends Pick { store_operator: IStoreOperator; } export interface IFindByIdResponse extends EntityWithoutPassword { provider: (Providers & { country: Country | null; language: Language | null; support_language: Language | null; provider_type: ProviderType | null; default_payment_method: PaymentMethods | null; default_maturity_date: MaturityDates | null; default_delivery_method: DeliveryMethods | null; default_vehicle: Vehicles | null; main_persona: IMainPersona; }) | null; client: (Clients & { country: Country | null; language: Language | null; segments_area: SegmentsArea | null; client_type: ClientType | null; default_payment_method: PaymentMethods | null; default_maturity_date: MaturityDates | null; default_delivery_method: DeliveryMethods | null; default_vehicle: Vehicles | null; main_persona: IMainPersona; }) | null; store_operator: (Omit & { user_position: UserPositions | null; support_language: Language | null; main_persona: IMainPersona; }) | null; commissioner: (Commissioner & { 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; main_persona: IMainPersona; }) | null; } export type IFindRequest = Record; export type IFindResponse = EntityWithoutPassword; export interface IFindPaginatedRequest extends IFindRequest, IShared.IPaginationRequest { } export type IFindWithPaginationResponse = IShared.IPaginationResponse; export interface IFindProvidersWithClientIdResponse { name: string; provider_id: string; client_id: string | null; } export interface IFindProvidersWithClientIdRequest { provider_ids: string[]; } export interface ICreateRequest { account: string | null; password: string; } export interface IUpdateRequest { account?: string | null; old_password?: string; password?: string; } export interface IUpdatePassword { password: string; } export interface ISendForgotPassword { token: string; user: { name: string; email: string; }; } export interface IFindFromClientOrProviderRequest { ids: string[]; } export interface IFindFromClientOrProviderResponse { name: string; provider: string | null; provider_id: string | null; client_id: string | null; iban: string | null; } export interface IRepository { findById(selector: IShared.IFindByIdRequest): Promise; findMinified(params?: IShared.IFindMinifiedRequest): Promise; find(selector: IFindRequest): Promise; findPaginated(selector: IFindPaginatedRequest): Promise; resetPassword(id: string, data: IUpdatePassword): Promise; removeAccess(user_id: string): Promise; create(data: ICreateRequest): Promise; update(selector: IShared.IFindByIdRequest, data: IUpdateRequest): Promise; deleteOne(selector: IShared.IFindByIdRequest): Promise; findProvidersWithClientId(data: IFindProvidersWithClientIdRequest): Promise; findFromClientOrProviderId(data: IFindFromClientOrProviderRequest): Promise; } export type IController = IShared.IEntityWithUserToken; export type IApi = Omit; export {};