/** * Research panel plugin, browser half: a sidebar-footer toggle and the * frame-level overlay it opens. One ResearchController per client runtime * backs the panel; one store handle is shared by both registrations so the * toggle and the panel read the same open/selection state. Both target seats * are declared by other packages (ui-sidebar, ui-layout), so both * registrations go through `slots.inject` and wait on the declaration. * @module dsh-client-ui-mimir/client */ import type { Context as ClientContext } from '@deepseek-ai/cordis'; export type { ResearchArtifactView, ResearchBibView, ResearchCompileView, ResearchFailureView, ResearchImportCounts, ResearchJobsView, ResearchLedgerView, ResearchLoadStatus, ResearchOutlineView, ResearchPapersView, ResearchProjectSlice, ResearchRemote, ResearchReportView, ResearchSaveState, ResearchSnapshotDetailView, ResearchSourceView, ResearchSubscriptionsView, ResearchView, ResearchZoteroSearchView, ResearchZoteroView, } from './controller.ts'; export type { ResearchPanelInjected, ResearchPanelProps, ResearchPanelStore, ResearchToggleProps, } from './slots.ts'; export type { ResearchPanelState, ResearchTab } from './store.ts'; export { createResearchPanelStore } from './store.ts'; export type { WorkbenchChrome } from './shortcuts.ts'; export type { ResearchKey } from './locales.ts'; export { ACTOR_KEYS, LEDGER_LIST_LIMIT, LEDGER_WINDOWS, ledgerIsDestructive, ledgerPayloadLine, ledgerTimeParts, ledgerWindowFilter, reportFileName, reportWindowOptions, type LedgerTimeParts, type LedgerWindow, } from './ledger-view.ts'; /** Required services: the slot registry, the Remote carrier, the sessions domain, the copy, and the theme preference. `remote.research` is NOT listed: this module mounts that namespace itself, and an inject entry would make the loader wait for a service that only this module can create. */ export declare const inject: string[]; /** * Client plugin body: mounts the research Remote namespace, then loads the * panel as a nested plugin that injects it. Stock dsh distributions do not * carry the research namespace in their Remote assembly, so the panel must * mount it itself; cordis only hands a service to fibers that inject it, and * an inject entry on THIS module would deadlock (the loader would wait for a * service only this module creates). The nested plugin is created after the * mount settles, so its inject resolves immediately. * @param ctx - client root context. */ export declare function apply(ctx: ClientContext): void; //# sourceMappingURL=index.d.ts.map