import { Client } from '@credithub/webservice'; import type { ComponentProps, ComponentType, ReactNode } from 'react'; import Header from './interface/header'; export declare enum RequestStatus { Empty = 0, Loading = 1, Success = 2, Error = 3 } export type ParsedResponse = { response: Response; document: T; }; /** Aviso de exceção esperada (`push=true` no XML); só exibe UI se houver `message` ou `code`. */ export type PushNotice = { message?: string; code?: number; }; export type RequestContext = { data?: Client.Form; urlData?: Client.Form; Section: ComponentType>; refetch: () => void; type: RequestStatus; error: Error | null; response: Response | undefined; document: R | undefined; progress?: number; activeRequests?: number; showLoadingBar?: boolean; warningMessage?: string | null; /** Presente quando o backend sinalizou `push=true` (situação esperada, fluxo segue). */ pushNotice?: PushNotice | null; }; export type HeaderReplaceResponse = { children: ReactNode; } & ComponentProps; export type RenderedResponse = HeaderReplaceResponse | ReactNode; export type ISectionProps = { ctx?: RequestContext; onSuccess?: (data: R, ctx: RequestContext) => RenderedResponse; isError?: (error: Error, ctx: RequestContext) => RenderedResponse; onLoading?: (ctx: RequestContext) => RenderedResponse; hideHeader?: boolean; minimized?: boolean; } & ComponentProps; export type ISection = ComponentType>;