export * from "./types";

export * from "./api/client";
export * from "./api/concurrency";
export * from "./api/auth";
export * from "./api/platform";
export * from "./api/notificationSummary";
export * from "./api/adminCommon";
export { mailProfilePatternKeys, mailProfilePolicyLimitKeys } from "./api/mailContracts";
export type {
  MailConnectionTestResponse,
  MailImapFolderListResponse,
  MailImapFolderResponse,
  MailImapTestPayload,
  MailPolicySourceStep,
  MailProfilePatternRules,
  MailProfilePolicyLimitKey,
  MailProfilePolicyLimitPermissions,
  MailProfilePolicyResponse,
  MailServerProfileCredentialsPayload,
  MailServerProfileListResponse,
  MailServerProfilePayload,
  MailSmtpTestPayload,
  MailTransportCredentialsPayload,
  MockMailboxMessage,
  MockMailboxMessageResponse
} from "./api/mailContracts";
export * from "./api/privacyRetention";
export * from "./api/resourceAccess";
export * from "./platform/modules";
export * from "./platform/ModuleContext";
export * from "./platform/moduleEvents";
export * from "./platform/ViewContext";
export * from "./platform/views";
export * from "./platform/wizards";

export * from "./utils/permissions";
export * from "./utils/fieldHelp";
export * from "./utils/helpContext";
export * from "./utils/emailAddresses";
export * from "./utils/datetime";
export * from "./utils/arrayOrder";
export * from "./utils/delta";
export * from "./utils/deltaHooks";
export * from "./i18n/LanguageContext";

export { PermissionBoundary, ResourceAccessBoundary } from "./components/AccessBoundary";
export { default as ActionBlockerHint } from "./components/ActionBlockerHint";
export type { ActionBlockerReason } from "./components/ActionBlockerHint";
export { default as AdvancedOptionsPanel } from "./components/AdvancedOptionsPanel";
export { default as AdminIconButton } from "./components/admin/AdminIconButton";
export type { AdminIconButtonProps } from "./components/admin/AdminIconButton";
export { default as AdminPageLayout } from "./components/admin/AdminPageLayout";
export { default as AdminSelectionList } from "./components/admin/AdminSelectionList";
export { adminErrorMessage, formatAdminDateTime, joinLabels } from "./components/admin/adminUtils";
export { default as Button } from "./components/Button";
export type { ButtonProps } from "./components/Button";
export { default as Card } from "./components/Card";
export { default as ConfirmDialog } from "./components/ConfirmDialog";
export {
  default as ConcurrencyConflictDialog,
  ConcurrencyConflictProvider,
  useConcurrencyConflictResolver
} from "./components/ConcurrencyConflictDialog";
export type {
  ConcurrencyResolution,
  ConcurrencyResolutionRequest
} from "./components/ConcurrencyConflictDialog";
export { default as ConnectionTree } from "./components/ConnectionTree";
export type { ConnectionTreeColumn, ConnectionTreeProps } from "./components/ConnectionTree";
export { default as ColorPickerField } from "./components/ColorPickerField";
export { default as CredentialPanel, CredentialFields } from "./components/CredentialPanel";
export type { CredentialFieldsProps, CredentialPanelProps, CredentialValues } from "./components/CredentialPanel";
export { default as CredentialEnvelopeManager } from "./components/CredentialEnvelopeManager";
export type { CredentialEnvelopeManagerProps, CredentialEnvelopeServerOption, CredentialEnvelopeTargetOption } from "./components/CredentialEnvelopeManager";
export {
  createCredentialEnvelope,
  deleteCredentialEnvelope,
  listCredentialEnvelopes,
  updateCredentialEnvelope
} from "./api/credentials";
export type { CredentialEnvelopePayload, CredentialEnvelopeUpdatePayload } from "./api/credentials";
export { default as DateField, TimeField, DateTimeField } from "./components/DateTimeField";
export { default as Dialog } from "./components/Dialog";
export { default as DisabledActionTooltip } from "./components/DisabledActionTooltip";
export type { DisabledActionTooltipProps } from "./components/DisabledActionTooltip";
export { default as DismissibleAlert } from "./components/DismissibleAlert";
export { default as ViewSurfaceRouteBoundary } from "./components/ViewSurfaceRouteBoundary";
export { default as WizardDirectory } from "./components/WizardDirectory";
export type { WizardDirectoryProps } from "./components/WizardDirectory";
export { default as EffectivePolicyBlock, EffectivePolicyValue } from "./components/EffectivePolicyBlock";
export type { EffectivePolicyBlockProps } from "./components/EffectivePolicyBlock";
export { default as FileDropZone } from "./components/FileDropZone";
export type { FileDropZoneProps } from "./components/FileDropZone";
export { default as FormField } from "./components/FormField";
export { default as GuidedConfigDialog } from "./components/GuidedConfigDialog";
export type { GuidedConfigDialogProps } from "./components/GuidedConfigDialog";
export { default as GuidedReviewList } from "./components/GuidedReviewList";
export type { GuidedReviewItem } from "./components/GuidedReviewList";
export { default as HoverTooltip } from "./components/HoverTooltip";
export type { HoverTooltipProps, HoverTooltipTone } from "./components/HoverTooltip";
export { default as IconButton } from "./components/IconButton";
export type { IconButtonProps } from "./components/IconButton";
export { default as LoadingFrame } from "./components/LoadingFrame";
export { default as LoadingIndicator } from "./components/LoadingIndicator";
export { default as ExplorerTree } from "./components/ExplorerTree";
export type { ExplorerTreeNodeContext, ExplorerTreeProps } from "./components/ExplorerTree";
export { default as MetricCard } from "./components/MetricCard";
export { default as MessageDisplayPanel } from "./components/MessageDisplayPanel";
export type { MessageDisplayAttachment, MessageDisplayField } from "./components/MessageDisplayPanel";
export { default as PageTitle } from "./components/PageTitle";
export { default as PageScrollViewport } from "./components/PageScrollViewport";
export type { PageScrollViewportProps } from "./components/PageScrollViewport";
export { default as PasswordField } from "./components/PasswordField";
export { default as PeoplePicker } from "./components/people/PeoplePicker";
export type { PeoplePickerProps } from "./components/people/PeoplePicker";
export { dedupePeoplePickerItems, externalPeoplePickerItem, peoplePickerDedupeKey, selectionFromPeoplePickerCandidate } from "./components/people/peoplePickerTypes";
export type { PeoplePickerItem, PeoplePickerItemKind, PeoplePickerSearch, PeoplePickerSearchCandidate, PeoplePickerSearchGroup, PeoplePickerSearchOptions } from "./components/people/peoplePickerTypes";
export { default as ResourceAccessExplanation, formatResourceAccessProvenanceDetails, resourceAccessProvenanceKindLabel } from "./components/ResourceAccessExplanation";
export type { ResourceAccessExplanationProps } from "./components/ResourceAccessExplanation";
export type { PasswordFieldProps } from "./components/PasswordField";
export { PolicyRow, PolicySection, PolicyTable } from "./components/PolicyTable";
export { default as PolicyPathHelp, normalizePolicySourcePathItems } from "./components/PolicyPathHelp";
export type { NormalizedPolicySourcePathItem, PolicyPathHelpProps } from "./components/PolicyPathHelp";
export { default as PolicySourcePath } from "./components/PolicySourcePath";
export type { PolicySourcePathItem, PolicySourcePathProps } from "./components/PolicySourcePath";
export { default as PolicyLockedHint } from "./components/PolicyLockedHint";
export type { PolicyLockedHintProps } from "./components/PolicyLockedHint";
export { default as SearchableSelect, filterSearchableSelectOptions } from "./components/SearchableSelect";
export type { SearchableSelectCreateCustomOption, SearchableSelectLoadOptions, SearchableSelectOption, SearchableSelectProps } from "./components/SearchableSelect";
export {
  default as ReferenceSelect,
  ReferenceMultiSelect,
  combineReferenceOptionProviders,
  customReferenceOption,
  staticReferenceOptionProvider,
  unavailableReferenceOption,
  wildcardReferenceOption
} from "./components/ReferenceSelect";
export type {
  ReferenceAvailability,
  ConfigurationReferenceSelectorsUiCapability,
  CredentialReferenceSelectorContext,
  CredentialReferenceSelectorsUiCapability,
  ReferenceMultiSelectProps,
  ReferenceOption,
  ReferenceOptionProvider,
  ReferenceProviderContext,
  ReferenceSelectProps
} from "./components/ReferenceSelect";
export {
  apiReferenceOptionProvider,
  platformModuleReferenceProvider
} from "./platform/referenceProviders";
export { DashboardWidgetList, useDashboardWidgetData } from "./components/DashboardWidgetContent";
export type { DashboardWidgetDataState, DashboardWidgetListItem } from "./components/DashboardWidgetContent";
export { default as SegmentedControl } from "./components/SegmentedControl";
export type { SegmentedControlOption, SegmentedControlProps, SegmentedControlSize, SegmentedControlWidth } from "./components/SegmentedControl";
export { default as SelectionList, SelectionListItem } from "./components/SelectionList";
export type { SelectionListItemProps, SelectionListProps } from "./components/SelectionList";
export { default as StatusBadge } from "./components/StatusBadge";
export { default as StageRail } from "./components/StageRail";
export type {
  StageRailItem,
  StageRailProps,
  StageRailTone
} from "./components/StageRail";
export { default as Stepper } from "./components/Stepper";
export { default as ToggleSwitch } from "./components/ToggleSwitch";
export { UnsavedChangesProvider, useGuardedNavigate, useRegisterUnsavedChanges, useUnsavedChanges, useUnsavedDraftGuard } from "./components/UnsavedChangesGuard";
export type { UnsavedDraftGuardOptions } from "./components/UnsavedChangesGuard";
export type { UnsavedChangesRegistration, UnsavedNavigationAction } from "./components/UnsavedChangesGuard";
export { default as EmailAddressInput } from "./components/email/EmailAddressInput";
export { default as MailServerSettingsPanel, MailServerActionResult, MailServerFolderLookupResultView, defaultImapPort, defaultSmtpPort, hasMailImapSettings, mailImapSettingsPayload, mailNumberOrDefault, mailNumberOrNull, mailServerSecurityOptions, mailSmtpSettingsPayload, mailTextOrNull, mailTransportCredentialsPayload, mailTransportCredentialsPayloadFromRecords, normalizeMailServerSecurity } from "./components/mail/MailServerSettingsPanel";
export type { MailServerConnectionTestResult, MailServerCredentialSettings, MailServerFolderLookupResult, MailServerImapSettings, MailServerSecurity, MailServerSecurityOption, MailServerSettingsMode, MailServerSettingsPanelProps, MailServerSettingsSection, MailServerSmtpSettings } from "./components/mail/MailServerSettingsPanel";
export { default as FieldLabel } from "./components/help/FieldLabel";
export { default as InlineHelp } from "./components/help/InlineHelp";
export { default as DataGrid, DataGridEmptyAction, DataGridPaginationBar, DataGridRowActions } from "./components/table/DataGrid";
export type { DataGridClientPagination, DataGridColumn, DataGridListOption, DataGridPagination, DataGridPaginationBarProps, DataGridProps, DataGridQueryState, DataGridServerPagination, DataGridSortDirection } from "./components/table/DataGrid";
export { default as TableActionGroup } from "./components/table/TableActionGroup";
export type { TableActionDefinition, TableActionGroupProps } from "./components/table/TableActionGroup";

export { default as LoginModal } from "./features/auth/LoginModal";
export { default as PublicLandingPage } from "./features/auth/PublicLandingPage";
export { RetentionPolicyEditor, RetentionPolicyScopeManager } from "./features/privacy/RetentionPolicyManagement";
export type { RetentionPolicyTargetOption } from "./features/privacy/RetentionPolicyManagement";

export { default as AppShell } from "./layout/AppShell";
export { default as BreadcrumbBar } from "./layout/BreadcrumbBar";
export { default as HelpMenu } from "./layout/HelpMenu";
export { default as IconRail } from "./layout/IconRail";
export { default as LanguageMenu } from "./layout/LanguageMenu";
export { default as ModuleSubnav } from "./layout/ModuleSubnav";
export type { ModuleSubnavGroup, ModuleSubnavItem } from "./layout/ModuleSubnav";
export { default as TreeSubnav } from "./layout/TreeSubnav";
export type {
  TreeSubnavBranch,
  TreeSubnavItem,
  TreeSubnavNode
} from "./layout/TreeSubnav";
export {
  decideOwnershipTransfer,
  listOwnershipTransfers,
  requestResourceOwnership,
  startOwnershipTransfer
} from "./api/ownership";
export type {
  OwnershipDecision,
  OwnershipRequestStart,
  OwnershipResource,
  OwnershipSubject,
  OwnershipTransfer,
  OwnershipTransferStart
} from "./api/ownership";
export { default as Titlebar } from "./layout/Titlebar";
