import type { IdentityDocumentType } from './ClientContract' type UserAttributes = { address: string | null bankAccountOwner: string bic: string birthdate: string | null city: string | null civility: string | null clientGeneralRentalConditionSigned: boolean companiesIds: string[] confirmedAt: string | null country: string | null createdAt: string devicesIds: string[] email: string esClientGeneralRentalConditionSignedAt: string | null firstName: string | null frClientGeneralRentalConditionSignedAt: string | null hasAccessibleHouses: boolean hasCompanies: boolean hasHouses: boolean housesIds: string[] iban: string identityDocumentExpirationDate: string | null identityDocumentNumber: string | null identityDocumentType: IdentityDocumentType | null incompleteSignup: boolean invitationAcceptedAt: null invitationCreatedAt: string | null invitationSentAt: null isAdmin: boolean lastName: string | null locale: string nationality: string | null newsletterSubscribed: boolean ownerGeneralRentalConditionSigned: boolean partnershipAgency: boolean partnershipAgencyName: string | null phone: string | null postalCode: string | null ribFile: string secondaryEmail: string | null secondaryPhone: string | null termsOfServiceSigned: boolean termsOfServiceSignedAt: string | null travelAgentGeneralRentalConditionSignedAt: string | null updatedAt: string } type UserFields = { attributes: UserAttributes id: string type: string } type UserOptions = { serialized?: boolean } type UserCondition = Mode extends true ? 'id' : keyof UserFields type UserSerialize = Pick< UserFields, UserCondition > & UserAttributes export type User< Options extends UserOptions = { serialized: false }, > = Options['serialized'] extends true ? UserSerialize : Pick>