import type { CrossingTemplateConfig } from '../template/MasterDocumentTemplate.types'; import type { CrossingClassOption, CrossingSourceDocument, LineFulfillmentStatus, PendingLine, TraceabilityTreeNode } from '../MasterDocument.types'; import type { CrossingFetch } from './crossingFetch'; interface UseCrossingOptions { config: CrossingTemplateConfig | undefined; documentId: string | undefined; docState: string; hasLines: boolean; /** * Salida HTTP del panel de cruce. Enruta por `adapter.genericFetch` (auth, * baseUrl, remapeo de rutas) — ver {@link createCrossingFetch}. */ crossingFetch: CrossingFetch; onDocumentGenerated?: (docId: string) => void; } export interface CrossingState { selectedSourceDocuments: CrossingSourceDocument[]; sourceSelectorLocked: boolean; selectedLineIds: string[]; lineStatuses: Record; lineSelectionErrors: Record; pendingLines: PendingLine[]; quantitiesToCross: Record; canGenerate: boolean; pendingLinesFetchedAt: string | null; pendingLinesLoading: boolean; crossingClassOptions: CrossingClassOption[]; crossingClassMenuOpen: boolean; lineCloseModal: { open: boolean; lineId: string | null; lineDescription: string; mode: 'close' | 'reopen'; isLoading: boolean; error: string | undefined; }; generateModal: { open: boolean; classId: string; classLabel: string; isLoading: boolean; error: string | undefined; }; generateError: string | undefined; pageErrors: string[]; activeTab: 'lines' | 'traceability'; traceabilityTree: TraceabilityTreeNode | null; traceabilityLoading: boolean; traceabilityError: string | undefined; } export interface CrossingActions { addSourceDocument: (doc: CrossingSourceDocument) => void; removeSourceDocument: (docId: string) => void; searchSourceDocuments: (query: string) => Promise; toggleLineSelection: (lineId: string, selected: boolean) => void; trySelectTerminalLine: (lineId: string) => void; setQuantityToCross: (lineId: string, quantity: number) => void; refreshPendingLines: () => void; openCrossClassMenu: () => void; closeCrossClassMenu: () => void; selectClass: (classId: string) => void; generateChild: (classId: string, headerValues?: Record) => Promise; openLineCloseModal: (lineId: string, description: string, mode: 'close' | 'reopen') => void; closeLineCloseModal: () => void; confirmLineClose: (reason?: string) => Promise; openGenerateModal: (classId: string, classLabel: string) => void; cancelGenerateModal: () => void; confirmGenerate: (headerValues: Record) => Promise; clearGenerateError: () => void; addPageError: (message: string) => void; dismissPageError: (index: number) => void; setActiveTab: (tab: 'lines' | 'traceability') => void; refreshTraceability: () => void; } export declare function useCrossing(options: UseCrossingOptions): { state: CrossingState; actions: CrossingActions; } | null; export {}; //# sourceMappingURL=useCrossing.d.ts.map