import { type AdminExtension } from "@voyant-travel/admin"; /** * Semantic destinations the suppliers admin surfaces navigate to * (packaged-admin RFC §4.7). The supplier pages link between the list and * the detail page, so instead of importing a host route tree they resolve * these keys through `useAdminHref`/`useAdminNavigate` from * `@voyant-travel/admin`. Hosts register one resolver per key * (`satisfies AdminDestinationResolvers`). * * `supplier.detail` is also declared by `@voyant-travel/catalog-react/admin` and * `@voyant-travel/finance-react/admin` — interface merging requires the member shape * to stay identical across packages. */ declare module "@voyant-travel/admin" { interface AdminDestinations { /** The suppliers list page. */ "supplier.list": Record; /** A supplier's detail page. */ "supplier.detail": { supplierId: string; }; } } export { supplierDetailPaymentPolicySlot } from "./slots.js"; export type { SupplierDetailHostProps, SupplierDetailHostSlotContext, } from "./supplier-detail-host.js"; export { SupplierDetailSkeleton } from "./supplier-detail-skeleton.js"; export { SuppliersListSkeleton } from "./suppliers-list-skeleton.js"; export interface CreateSuppliersAdminExtensionOptions { /** Mount path of the supplier pages inside the admin workspace. Default `/suppliers`. */ basePath?: string; /** Localized page titles. Defaults are the English operator nav labels. */ labels?: { suppliers?: string; }; } /** * The suppliers admin contribution (packaged-admin RFC Phase 3, * `@voyant-travel/-ui/admin` convention). * * NAVIGATION: deliberately none. The Suppliers nav item is part of the BASE * operator navigation — see `createOperatorAdminNavigation` in * `@voyant-travel/admin` — so contributing nav entries here would duplicate it. * If the base nav ever drops the suppliers item, this extension is where the * entry moves. * * ROUTES: contributions carry the FULL route implementation (packaged-admin * RFC §4.2/§4.8) — lazy `page` module loaders, data loaders fed by the * host-supplied {@link AdminRouteLoaderContext} (QueryClient + runtime + * params), per-route SSR mode, and pending skeletons. Hosts bind them into * their code-assembled admin route tree; no per-route host files needed. * The pages stay code-split because each contribution's `page` dynamically * imports the specific host/page module — never the admin barrel — so the * heavy page chunks load on navigation, not with workspace chrome. * {@link SuppliersHost} mounts as a zero-prop page; the detail page reads * the supplier id from {@link AdminRoutePageProps} via the default-exported * wrapper in `./pages/`. The list carries no URL search state (filters stay * local), so no `validateSearch` contracts. The pages bind to their data * wiring (the shared suppliers provider context) and resolve every * cross-route link through the semantic destinations declared above — no * app RPC client, no host route tree. * * WIDGETS: none contributed, but {@link SupplierDetailHost} exposes the * `supplier.details.payment-policy` slot ({@link * supplierDetailPaymentPolicySlot}) — the §4.7 cycle resolution that lets * `@voyant-travel/finance-react/ui` (which depends on this package) contribute the * finance-owned customer-payment-policy card to the supplier detail page. */ export declare function createSuppliersAdminExtension(options?: CreateSuppliersAdminExtensionOptions): AdminExtension;