@nivaro/react 0.1.286 → 0.1.287

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1211,6 +1211,8 @@ export declare function deriveGroupKey<T extends QueueGroupingRow>(row: T, attri
1211
1211
 
1212
1212
  export declare function describeCron(cron: string): string;
1213
1213
 
1214
+ declare type DetailTab = 'calls' | 'submissions' | 'obligations' | 'contracts';
1215
+
1214
1216
  declare type DigestFrequency = 'instant' | 'daily' | 'weekly';
1215
1217
 
1216
1218
  declare type DimensionCascadeRule = {
@@ -1321,6 +1323,33 @@ export declare function ErpFailureBanner({ collection, itemId }: {
1321
1323
  itemId: string;
1322
1324
  }): JSX.Element | null;
1323
1325
 
1326
+ /**
1327
+ * One outbound submission — status, endpoint, reference, and on expand the
1328
+ * stored request/response plus every attempt. Shared by the record header's
1329
+ * External requests dialog and the Integrations console's partner detail.
1330
+ */
1331
+ export declare interface ErpSubmission {
1332
+ id: number;
1333
+ external_api: number | null;
1334
+ external_api_name?: string | null;
1335
+ external_ref: string | null;
1336
+ status: string;
1337
+ attempts: number;
1338
+ last_error: string | null;
1339
+ endpoint_path: string | null;
1340
+ payload: unknown;
1341
+ response: unknown;
1342
+ created_at: string;
1343
+ updated_at: string;
1344
+ collection: string;
1345
+ item: string;
1346
+ /** The record's friendly (human-facing) id — present only where the
1347
+ * caller batch-resolved it (the partner detail's cross-record listing).
1348
+ * A record page hosting its OWN External requests dialog already IS that
1349
+ * record, so it never needs this badge and doesn't send it. */
1350
+ record_label?: string;
1351
+ }
1352
+
1324
1353
  export declare interface ErrorReplayLink {
1325
1354
  recording_id: string;
1326
1355
  /** Milliseconds into the recording where the error happened. Null for
@@ -1618,6 +1647,16 @@ declare interface FilterOptionSpec {
1618
1647
  * (ids → names), ≥/≤ for ranges, first two entries + count for multiselects. */
1619
1648
  export declare function filterValueDisplay(def: FilterDef, value: string | string[]): string;
1620
1649
 
1650
+ export declare function FirefightView({ onOpenRecord, onJumpTab, focusSignal }: FirefightViewProps): JSX.Element;
1651
+
1652
+ export declare interface FirefightViewProps {
1653
+ onOpenRecord?: (collection: string, id: string) => void;
1654
+ /** Move to another console tab, carrying context (e.g. `{ apiId }`). */
1655
+ onJumpTab?: (tab: string, context?: Record<string, unknown>) => void;
1656
+ /** Expand this signal on first load (a notification deep link). */
1657
+ focusSignal?: string;
1658
+ }
1659
+
1621
1660
  export declare function FirstLoginChecklist({ profileUrl }: {
1622
1661
  profileUrl?: string;
1623
1662
  }): JSX.Element | null;
@@ -1973,6 +2012,11 @@ export declare interface ImportConsoleProps {
1973
2012
 
1974
2013
  export declare type ImportConsoleTab = 'runs' | 'collection' | 'definitions';
1975
2014
 
2015
+ /** The instance-wide default cadence — header of the imports table. */
2016
+ export declare function ImportDefaultCadenceControl({ className }: {
2017
+ className?: string;
2018
+ }): JSX.Element;
2019
+
1976
2020
  export declare interface ImportDefinition {
1977
2021
  id: number;
1978
2022
  key: string;
@@ -2044,6 +2088,32 @@ export declare function ImportFromFileButton({ collection, templateFilter, getLa
2044
2088
  compact?: boolean;
2045
2089
  }): JSX.Element | null;
2046
2090
 
2091
+ declare interface ImportHealth {
2092
+ rows: ImportHealthRow[];
2093
+ default_hours: number;
2094
+ }
2095
+
2096
+ /**
2097
+ * Per-import staleness — how often each staged import is expected to succeed
2098
+ * before it counts as stale. ONE store (the stale-import signal's settings:
2099
+ * `default_hours` and `cadence_hours:<import key>`, 0 = not monitored) and
2100
+ * ONE query key, so the Import Console and the Integrations console always
2101
+ * show the same value: an edit in either refreshes both.
2102
+ */
2103
+ export declare interface ImportHealthRow {
2104
+ key: string;
2105
+ label: string;
2106
+ is_active: boolean;
2107
+ last_status: string | null;
2108
+ last_run_at: string | null;
2109
+ last_ok_at: string | null;
2110
+ failures7d: number;
2111
+ /** Expected hours between successes; 0 when not monitored or dormant. */
2112
+ cadence_hours: number;
2113
+ cadence_source: 'default' | 'override' | 'excluded' | 'dormant';
2114
+ stale: boolean;
2115
+ }
2116
+
2047
2117
  declare type ImportIssue = ImportParseResponse['issues'][number];
2048
2118
 
2049
2119
  export declare function ImportIssuesPanel({ issues, onDismiss }: {
@@ -2145,6 +2215,22 @@ export declare interface ImportRun {
2145
2215
  /** Shared types for the Import Console (`/api/staged-imports`). */
2146
2216
  export declare type ImportRunStatus = 'queued' | 'running' | 'completed' | 'error' | 'canceled';
2147
2217
 
2218
+ /** The chip a definitions list shows beside each import. */
2219
+ export declare function ImportStalenessChip({ importKey }: {
2220
+ importKey: string;
2221
+ }): JSX.Element | null;
2222
+
2223
+ export declare function ImportStalenessControl({ importKey, label, compact, className }: ImportStalenessControlProps): JSX.Element;
2224
+
2225
+ export declare interface ImportStalenessControlProps {
2226
+ /** The import definition's key; absent for a definition that isn't saved yet. */
2227
+ importKey?: string | null;
2228
+ label?: string;
2229
+ /** Table-cell size: the state opens its editor in a popover beside it. */
2230
+ compact?: boolean;
2231
+ className?: string;
2232
+ }
2233
+
2148
2234
  /** Live queue depth is never windowed; the rest respects `window_days`. */
2149
2235
  export declare interface ImportStats {
2150
2236
  window_days: number;
@@ -2190,6 +2276,19 @@ export declare function InboundCallersView({ hours: initialHours }: {
2190
2276
  hours?: number;
2191
2277
  }): JSX.Element;
2192
2278
 
2279
+ /**
2280
+ * Inbound: health first — the host's own live queue (an ingest backlog, say), then whether
2281
+ * scheduled imports are arriving on time — and investigation last, since who
2282
+ * called in and exactly what they sent is what you reach for once something
2283
+ * above already looks wrong, not on every visit.
2284
+ */
2285
+ export declare function InboundView({ extra }: InboundViewProps): JSX.Element;
2286
+
2287
+ export declare interface InboundViewProps {
2288
+ /** Host content rendered after the shared sections (a deployment's own queues). */
2289
+ extra?: ReactNode;
2290
+ }
2291
+
2193
2292
  export declare function InlineTableField({ relatedCollection, manyField, parentId, parentCollection, layoutId, showRowRevisions, rowComments, allowRevisionRestore, saveMode, showLineNumbers, enableReorder, parentCascades, rowRules, columnPresets, defaultPreset, drawerRelations, parentContextFields, uniqueBy, sortField, sortDir, sectionGroupBy, freezeFirstColumn, rowFilter, rowDefaults, allocateDrawer, autoAllocate, rowBulkActions, uploadTemplate, rowMatchPanel, lineSla, rowLints, stats, compareSeries, sumCap, spreadRemaining, submissionErrors, prefillParentId, parentFieldKey, readOnly, emptyLabel, editorMode }: {
2194
2293
  relatedCollection: string;
2195
2294
  manyField: string;
@@ -2288,6 +2387,12 @@ declare interface InputBinding {
2288
2387
  binding_value: string;
2289
2388
  }
2290
2389
 
2390
+ export declare type IntegrationActionResult = {
2391
+ key: string;
2392
+ ok: boolean;
2393
+ message: string;
2394
+ };
2395
+
2291
2396
  export declare function IntegrationDots({ rows, className }: IntegrationDotsProps): JSX.Element;
2292
2397
 
2293
2398
  export declare interface IntegrationDotsProps {
@@ -2307,6 +2412,56 @@ export declare interface IntegrationObligationsViewProps {
2307
2412
  className?: string;
2308
2413
  }
2309
2414
 
2415
+ export declare interface IntegrationPartnerCard {
2416
+ id: number;
2417
+ name: string;
2418
+ enabled: boolean;
2419
+ health: IntegrationPartnerHealth;
2420
+ calls24: number;
2421
+ success_pct24: number | null;
2422
+ success_pct7d: number | null;
2423
+ p50_ms: number | null;
2424
+ p95_ms: number | null;
2425
+ last_ok_at: string | null;
2426
+ last_fail_at: string | null;
2427
+ last_fail_reason: string | null;
2428
+ hourly: Array<{
2429
+ hour: string;
2430
+ ok: number;
2431
+ failed: number;
2432
+ }>;
2433
+ flags: {
2434
+ test_endpoint: boolean;
2435
+ mock: boolean;
2436
+ auth_failing: boolean;
2437
+ };
2438
+ owner: {
2439
+ id: string;
2440
+ name: string;
2441
+ } | null;
2442
+ obligations: {
2443
+ sent: number;
2444
+ pending: number;
2445
+ failed: number;
2446
+ missing: number;
2447
+ overdue: number;
2448
+ };
2449
+ }
2450
+
2451
+ export declare interface IntegrationPartnerDetail {
2452
+ card: IntegrationPartnerCard;
2453
+ calls: PartnerCall[];
2454
+ contracts: PartnerContract[];
2455
+ }
2456
+
2457
+ export declare type IntegrationPartnerHealth = 'healthy' | 'degraded' | 'failing' | 'idle';
2458
+
2459
+ export declare interface IntegrationPartnersSummary {
2460
+ calls24: number;
2461
+ success_pct24: number | null;
2462
+ not_healthy: number;
2463
+ }
2464
+
2310
2465
  /** The filter-pill set the collection browser offers (its own conditions[]
2311
2466
  * round trip to `/items/:collection` — the queue has no equivalent server
2312
2467
  * path, so it gets the column but not the filter). Values are the same
@@ -2317,6 +2472,98 @@ export declare const INTEGRATIONS_FILTER_OPTIONS: {
2317
2472
  label: string;
2318
2473
  }[];
2319
2474
 
2475
+ /**
2476
+ * The Integrations console: everything that talks to an outside system on one
2477
+ * page, in the order an operator asks — what is broken now (Firefight), how
2478
+ * each partner is doing (Partners), what the partners reported (Events), who
2479
+ * is calling us (Inbound). Hosts add their own tabs through `extraTabs`.
2480
+ */
2481
+ export declare function IntegrationsConsole({ extraTabs, tab, onTabChange, onOpenRecord, focusSignal, inboundExtra, className }: IntegrationsConsoleProps): JSX.Element;
2482
+
2483
+ export declare interface IntegrationsConsoleProps {
2484
+ /** Host tabs, inserted after Events (e.g. a deployment's own integrations). */
2485
+ extraTabs?: IntegrationsConsoleTab[];
2486
+ /** Controlled tab — pair with onTabChange to keep it in the URL. */
2487
+ tab?: string;
2488
+ onTabChange?: (key: string) => void;
2489
+ onOpenRecord?: (collection: string, id: string) => void;
2490
+ /** Expand this Firefight signal on first load. */
2491
+ focusSignal?: string;
2492
+ /** Host content rendered at the end of the Inbound tab (a deployment's own queues). */
2493
+ inboundExtra?: ReactNode;
2494
+ className?: string;
2495
+ }
2496
+
2497
+ export declare interface IntegrationsConsoleTab {
2498
+ key: string;
2499
+ label: string;
2500
+ render: () => ReactNode;
2501
+ }
2502
+
2503
+ /**
2504
+ * HTTP shapes served by GET /integration-signals and /integration-partners —
2505
+ * copied from the core routes so the shared package never imports api code.
2506
+ */
2507
+ export declare interface IntegrationSignalAction {
2508
+ kind: 'retry_submission' | 'resend' | 'open' | 'explain' | 'extension';
2509
+ label: string;
2510
+ /** Extension action id (kind 'extension'), submission id (retry). */
2511
+ id?: string;
2512
+ payload?: Record<string, unknown>;
2513
+ }
2514
+
2515
+ export declare interface IntegrationSignalRow {
2516
+ key: string;
2517
+ group?: string;
2518
+ group_label?: string;
2519
+ title: string;
2520
+ detail?: string;
2521
+ since?: string;
2522
+ /** Identity of THIS occurrence (a run id, a submission attempt...) — what
2523
+ * Dismiss keys on, distinct from `key` (the problem itself). */
2524
+ occurrence?: string;
2525
+ api?: string;
2526
+ record?: {
2527
+ collection: string;
2528
+ id: string;
2529
+ label?: string;
2530
+ };
2531
+ actions: IntegrationSignalAction[];
2532
+ /** What opens in place under this row — the failed push, the import run. */
2533
+ drill?: SignalDrill;
2534
+ /** When the snapshot first saw this problem. */
2535
+ first_seen: string;
2536
+ /** Present only on rows in `snoozed`. */
2537
+ snooze?: RowSnooze;
2538
+ }
2539
+
2540
+ export declare interface IntegrationSignalsSnapshot {
2541
+ checked_at: string | null;
2542
+ stale: boolean;
2543
+ signals: IntegrationSignalView[];
2544
+ }
2545
+
2546
+ export declare interface IntegrationSignalView {
2547
+ id: string;
2548
+ label: string;
2549
+ description: string;
2550
+ tab: string;
2551
+ severity: 'critical' | 'warn';
2552
+ count: number;
2553
+ error: string | null;
2554
+ last_run: string | null;
2555
+ thresholds: SignalThreshold[];
2556
+ settings: {
2557
+ enabled: boolean;
2558
+ severity: 'critical' | 'warn';
2559
+ thresholds: Record<string, number>;
2560
+ };
2561
+ rows: IntegrationSignalRow[];
2562
+ snoozed: IntegrationSignalRow[];
2563
+ /** Rows actually returned (the evaluator may count more than it lists). */
2564
+ shown: number;
2565
+ }
2566
+
2320
2567
  export declare function IntegrationStatusBanner({ collection, itemId }: IntegrationStatusBannerProps): JSX.Element | null;
2321
2568
 
2322
2569
  /**
@@ -3403,6 +3650,67 @@ declare interface ParseSuccess {
3403
3650
  tokens: string[];
3404
3651
  }
3405
3652
 
3653
+ /**
3654
+ * One row of Partner detail's Recent calls list (GET /integration-partners/:id).
3655
+ * `source: 'log'` carries a real body to open (GET .../calls/:callId);
3656
+ * `'outbound'` is the always-on counter row for a call that never landed one
3657
+ * (before Task 15's extension-call fix, or any caller still passing no
3658
+ * `_log`) — it opens to "nothing recorded", never a fetch.
3659
+ */
3660
+ declare interface PartnerCall {
3661
+ key: string;
3662
+ id: number;
3663
+ source: 'log' | 'outbound';
3664
+ created_at: string;
3665
+ method: string | null;
3666
+ path: string | null;
3667
+ status: number | null;
3668
+ ok: boolean | number;
3669
+ duration_ms: number | null;
3670
+ error: string | null;
3671
+ triggered_by: string | null;
3672
+ has_body: boolean;
3673
+ user: PartnerCallUser | null;
3674
+ }
3675
+
3676
+ /** One user recorded on a call — via nivaro_users, batch-resolved server-side
3677
+ * through the same helper the push drill-down uses, so a suspended or
3678
+ * machine account carries the same `inactive`/`account_kind` facts here as
3679
+ * it does on a `Requester` elsewhere in the console. */
3680
+ declare interface PartnerCallUser {
3681
+ id: string;
3682
+ name: string;
3683
+ email: string | null;
3684
+ /** 'suspended' / 'inactive' / 'redacted' — a person who can no longer act. */
3685
+ inactive: string | null;
3686
+ /** integration | bot | service | placeholder — never a person. */
3687
+ account_kind: string | null;
3688
+ }
3689
+
3690
+ declare interface PartnerContract {
3691
+ endpoint_id: number;
3692
+ name: string;
3693
+ last_run: string | null;
3694
+ ok: boolean | number | null;
3695
+ detail: string | null;
3696
+ }
3697
+
3698
+ export declare function PartnerDetail({ apiId, onClose, initialTab }: PartnerDetailProps): JSX.Element;
3699
+
3700
+ export declare interface PartnerDetailProps {
3701
+ apiId: number;
3702
+ onClose: () => void;
3703
+ initialTab?: DetailTab;
3704
+ }
3705
+
3706
+ export declare function PartnersView({ openId, onOpenChange }?: PartnersViewProps): JSX.Element;
3707
+
3708
+ export declare interface PartnersViewProps {
3709
+ /** Detail sheet open on this partner (controlled by the frame). */
3710
+ openId?: number | null;
3711
+ onOpenChange?: (id: number | null) => void;
3712
+ }
3713
+
3406
3714
  declare interface PendingTask {
3407
3715
  title: string;
3408
3716
  assignee: string | null;
@@ -4031,6 +4339,9 @@ export declare interface QuickPickerProps {
4031
4339
  className?: string;
4032
4340
  }
4033
4341
 
4342
+ /** Critical first, then the problem that has been open longest. */
4343
+ export declare function rankSignals(signals: IntegrationSignalView[]): IntegrationSignalView[];
4344
+
4034
4345
  /**
4035
4346
  * Tier a team against a cell's filter values. `out` carries the human
4036
4347
  * mismatches ("doesn't cover BLT"). Filters without a resolvable id don't
@@ -4666,6 +4977,16 @@ declare interface RowRule {
4666
4977
  sort?: number;
4667
4978
  }
4668
4979
 
4980
+ declare interface RowSnooze {
4981
+ id: number;
4982
+ until: string | null;
4983
+ until_change: boolean;
4984
+ /** true = this snooze is a Dismiss — "seen this one, tell me when it
4985
+ * happens again" — never a group/signal scope, always row-only. */
4986
+ until_occurrence: boolean;
4987
+ note: string | null;
4988
+ }
4989
+
4669
4990
  /**
4670
4991
  * Real-user monitoring collector. Hand-rolled (no web-vitals dep): one 'load'
4671
4992
  * event per page load (TTFB / FCP / LCP / total) once LCP settles, plus one
@@ -4685,6 +5006,8 @@ export declare function rumRouteChange(pathname: string): void;
4685
5006
  * a foreign-app URL in a new tab). */
4686
5007
  export declare function runNotificationTarget(target: NotificationTarget, navigate: (path: string) => void): boolean;
4687
5008
 
5009
+ declare type Scope = 'row' | 'group' | 'signal';
5010
+
4688
5011
  declare interface ScopeDimensionLite {
4689
5012
  name: string;
4690
5013
  label: string;
@@ -4781,6 +5104,34 @@ declare interface SheetItem {
4781
5104
  url: string;
4782
5105
  }
4783
5106
 
5107
+ export declare function SignalCard({ signal, expanded, onToggle, onOpenRecord, onExplain, canExplain }: SignalCardProps): JSX.Element;
5108
+
5109
+ export declare interface SignalCardProps {
5110
+ signal: IntegrationSignalView;
5111
+ expanded: boolean;
5112
+ onToggle: () => void;
5113
+ onOpenRecord?: (collection: string, id: string) => void;
5114
+ /** An 'explain' action — the frame decides where it leads. */
5115
+ onExplain?: (action: IntegrationSignalAction, row: IntegrationSignalRow) => void;
5116
+ /** False hides an explain action the host has nowhere to open. */
5117
+ canExplain?: (action: IntegrationSignalAction) => boolean;
5118
+ }
5119
+
5120
+ /** A typed "Details" reference on a signal row (GET /integration-signals). */
5121
+ declare interface SignalDrill {
5122
+ kind: 'submission' | 'import_run' | (string & {});
5123
+ id: string;
5124
+ }
5125
+
5126
+ declare interface SignalThreshold {
5127
+ key: string;
5128
+ label: string;
5129
+ default: number;
5130
+ unit: string;
5131
+ min?: number;
5132
+ max?: number;
5133
+ }
5134
+
4784
5135
  declare type SkipCondition = {
4785
5136
  type: 'no_owners';
4786
5137
  } | {
@@ -4844,6 +5195,38 @@ export declare type SlotRendererProps = {
4844
5195
  defaultExpanded: boolean;
4845
5196
  };
4846
5197
 
5198
+ export declare interface SnoozeInput {
5199
+ signal: string;
5200
+ row_key?: string;
5201
+ group_key?: string;
5202
+ until?: string | null;
5203
+ until_change?: boolean;
5204
+ /** A Dismiss — hides this ONE row until its occurrence changes. Row-scoped
5205
+ * only; never combine with group_key. */
5206
+ until_occurrence?: boolean;
5207
+ note?: string;
5208
+ }
5209
+
5210
+ /**
5211
+ * Quiet one problem, a whole group, or the whole signal. "Until it changes"
5212
+ * is offered only for a single row — the API hashes ONE row's payload, so a
5213
+ * group or signal can only be quieted for a set time. Dismiss lives at the
5214
+ * top for a row-scoped menu — the one-click, no-questions-asked cousin of
5215
+ * everything below it.
5216
+ */
5217
+ export declare function SnoozeMenu({ signal, signalLabel, rowKey, group, defaultScope, compact }: {
5218
+ signal: string;
5219
+ signalLabel: string;
5220
+ rowKey?: string;
5221
+ group?: {
5222
+ key: string;
5223
+ label: string;
5224
+ };
5225
+ /** What the menu opens on — a group header opens on the group. */
5226
+ defaultScope?: Scope;
5227
+ compact?: boolean;
5228
+ }): JSX.Element;
5229
+
4847
5230
  export declare function splitMessageTokens(text: string, entityPattern: string): MessageToken[];
4848
5231
 
4849
5232
  declare type SpreadPreset = 'even' | 'front' | 'back' | 'shape';
@@ -4860,6 +5243,17 @@ export declare function startRum(opts?: {
4860
5243
  apiBase?: string;
4861
5244
  }): void;
4862
5245
 
5246
+ export declare function SubmissionRow({ sub, onRetry, retrying }: {
5247
+ sub: ErpSubmission;
5248
+ onRetry: (id: number) => void;
5249
+ retrying: boolean;
5250
+ }): JSX.Element;
5251
+
5252
+ /** A submission / attempt status, as a small tinted chip. */
5253
+ export declare function SubmissionStatusPill({ status }: {
5254
+ status: string;
5255
+ }): JSX.Element;
5256
+
4863
5257
  /**
4864
5258
  * The one subscription editor — create + edit for nivaro_notification_subscriptions,
4865
5259
  * shared by the profile's Notifications & alerts card and the My Subscriptions
@@ -5202,6 +5596,8 @@ export declare function useFormStatus(form: UseNivaroFormReturn): FormStatus;
5202
5596
 
5203
5597
  export declare function useGridFlush(): GridFlushContextValue | null;
5204
5598
 
5599
+ export declare function useImportHealth(): UseQueryResult<NoInfer<ImportHealth>, Error>;
5600
+
5205
5601
  export declare function useItemEditAuth(): ItemEditAuthContextValue;
5206
5602
 
5207
5603
  export declare function useItemLock(collection: string | undefined, item: string | undefined, enabled: boolean): {
@@ -5346,6 +5742,13 @@ export declare function useOverlayState<T>(key: string): {
5346
5742
  back: (steps?: number) => void;
5347
5743
  };
5348
5744
 
5745
+ export declare function usePartner(id: number | null): UseQueryResult<NoInfer<IntegrationPartnerDetail>, Error>;
5746
+
5747
+ export declare function usePartners(): UseQueryResult<NoInfer<{
5748
+ summary: IntegrationPartnersSummary;
5749
+ partners: IntegrationPartnerCard[];
5750
+ }>, Error>;
5751
+
5349
5752
  export declare function usePeerReadAt(room: string | null): string | null;
5350
5753
 
5351
5754
  /**
@@ -5386,6 +5789,8 @@ export declare function UserChip({ userId, size }: {
5386
5789
  size?: 'default' | 'compact';
5387
5790
  }): React_2.JSX.Element;
5388
5791
 
5792
+ export declare function useRefreshSignals(): UseMutationResult<unknown, Error, void, unknown>;
5793
+
5389
5794
  /**
5390
5795
  * Fetch selectable options for a relation field's related collection.
5391
5796
  * Re-fetches when `search` changes. Pass `enabled: false` to skip fetching
@@ -5444,6 +5849,22 @@ attachments?: string[];
5444
5849
 
5445
5850
  export declare function useSessionRecorder(options?: SessionRecorderOptions): void;
5446
5851
 
5852
+ /** Write one staleness setting: a number of hours, 0 (not monitored) or null (back to default). */
5853
+ export declare function useSetImportCadence(): UseMutationResult<unknown, Error, Record<string, number | null>, unknown>;
5854
+
5855
+ export declare function useSignalAction(): UseMutationResult<IntegrationActionResult[], Error, {
5856
+ signal: string;
5857
+ row_keys: string[];
5858
+ action: IntegrationSignalRow["actions"][number];
5859
+ }, unknown>;
5860
+
5861
+ export declare function useSignals(tab?: string): UseQueryResult<NoInfer<IntegrationSignalsSnapshot>, Error>;
5862
+
5863
+ export declare function useSnooze(): {
5864
+ add: UseMutationResult<unknown, Error, SnoozeInput, unknown>;
5865
+ remove: UseMutationResult<unknown, Error, number, unknown>;
5866
+ };
5867
+
5447
5868
  /** Mutations for the user's own subscriptions. Invalidates BOTH readers —
5448
5869
  * the flat list (My Subscriptions) and the profile's sources aggregate. */
5449
5870
  export declare function useSubscriptionMutations(): {