import { ApiCompany } from "./ApiCompany"; import { ApiDepartment } from "./ApiDepartment"; import { ApiDocument } from "./ApiDocument"; import { ApiLabelPrintResponse } from "./ApiLabel"; import { ApiPerson } from "./ApiPerson"; import { ApiProduct } from "./ApiProduct"; import { ApiScheduledResult } from "./ApiScheduledResult"; import { ApiStatus } from "./ApiStatus"; export type ApiError = { name: string; message: string; code?: string; status?: { code: number; text: string }; stack?: string; possibleCause?: string; }; export type ApiData = | ApiStatus | ApiProduct | ApiCompany | ApiCompany[] | ApiDepartment | ApiDepartment[] | ApiDocument | ApiDocument[] | ApiPerson | ApiLabelPrintResponse | ApiScheduledResult; export type ApiResponseSuccess = { error: null; data: T }; export type ApiResponseFail = { error: ApiError; data: null }; export type ApiResponse = | ApiResponseSuccess | ApiResponseFail; type MakeApiResponseConfig = | { type: "success"; data: T } | { type: "fail"; error: unknown }; export type MakeApiResponse = ( config: MakeApiResponseConfig ) => ApiResponse;