import type { AdminUser, ContractAttributes, House, PaymentTransaction, Subsidiary, User, Voucher, } 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 GetVoucherByIdInput = { voucherId: 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 getVoucher = (http: HttpClient) => ({ query: ( input: GetVoucherByIdInput, ): Promise> => { const query = endpointMaker({ includes: input.included }) return http.get(`v3/admin/vouchers/${input.voucherId}${query}`) }, }) export default getVoucher