import type { AdminUser, ContractAttributes, Credit, House, PaymentTransaction, Subsidiary, User, } from '@entities' import { endpointMaker } from '@services' import type { HttpClient } from '@services' import type { ApiError, Response } from '@types' type IncludesAvailable = | 'contract' | 'house' | 'payment_transactions.assignation_actor' | 'payment_transactions.contract' | 'payment_transactions' | 'subsidiary' | 'user' type GetCreditByIdInput = { creditId: string included?: { include?: IncludesAvailable[] fields?: Record } } export type GetExpectedPayOutByIdIncluded = { adminUsers: AdminUser | AdminUser[] contracts: ContractAttributes | ContractAttributes[] houses: House paymentTransactions: PaymentTransaction | PaymentTransaction[] users: User subsidiarys: Subsidiary } const getCredit = (http: HttpClient) => ({ query: ( input: GetCreditByIdInput, ): Promise> => { const query = endpointMaker({ includes: input.included }) return http.get(`v3/admin/credits/${input.creditId}${query}`) }, }) export default getCredit