@trdrs/quickcharts 1.3.0 → 2.0.0

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.
Files changed (85) hide show
  1. package/CHANGELOG.md +84 -0
  2. package/README.md +209 -200
  3. package/dist/adapters/rest.d.ts +3 -3
  4. package/dist/adapters/rest.js +2 -2
  5. package/dist/adapters/rest.js.map +1 -1
  6. package/dist/{ar-G7MVXRE4.js → ar-KSXQ2USS.js} +20 -20
  7. package/dist/ar-KSXQ2USS.js.map +1 -0
  8. package/dist/{assets-ySndlUS3.d.ts → assets-DOuBBsOp.d.ts} +50 -50
  9. package/dist/{ca_ES-EUSRU4VG.js → ca_ES-JG4FM55E.js} +20 -20
  10. package/dist/ca_ES-JG4FM55E.js.map +1 -0
  11. package/dist/{chunk-AA7XKXH4.js → chunk-6S6TO2N6.js} +33 -33
  12. package/dist/chunk-6S6TO2N6.js.map +1 -0
  13. package/dist/{chunk-KFBQSPNA.js → chunk-D3S26ARP.js} +2 -2
  14. package/dist/chunk-D3S26ARP.js.map +1 -0
  15. package/dist/{chunk-AKXIFHQN.js → chunk-KLPTCWA2.js} +1 -1
  16. package/dist/{chunk-AKXIFHQN.js.map → chunk-KLPTCWA2.js.map} +1 -1
  17. package/dist/{de-2SVTG25S.js → de-VSW2LHNF.js} +20 -20
  18. package/dist/de-VSW2LHNF.js.map +1 -0
  19. package/dist/drawings.d.ts +16 -16
  20. package/dist/drawings.js +12 -12
  21. package/dist/{es-UDHZM4W7.js → es-5ZXIPVOB.js} +20 -20
  22. package/dist/es-5ZXIPVOB.js.map +1 -0
  23. package/dist/feature-manifest.json +3 -3
  24. package/dist/{fr-35VN4G4S.js → fr-4F6DAWGD.js} +20 -20
  25. package/dist/fr-4F6DAWGD.js.map +1 -0
  26. package/dist/{he_IL-JPZMCURP.js → he_IL-B7PBQUEV.js} +20 -20
  27. package/dist/he_IL-B7PBQUEV.js.map +1 -0
  28. package/dist/{id_ID-XSTFHHJQ.js → id_ID-CYJRMXPC.js} +20 -20
  29. package/dist/id_ID-CYJRMXPC.js.map +1 -0
  30. package/dist/index.d.ts +167 -163
  31. package/dist/index.js +248 -237
  32. package/dist/index.js.map +1 -1
  33. package/dist/{it-EIY6JESQ.js → it-KTX4SG5P.js} +20 -20
  34. package/dist/it-KTX4SG5P.js.map +1 -0
  35. package/dist/{ja-42N4XRCW.js → ja-V7OURU5D.js} +20 -20
  36. package/dist/ja-V7OURU5D.js.map +1 -0
  37. package/dist/{ko-3VRPTIP3.js → ko-2RNEBYVE.js} +20 -20
  38. package/dist/ko-2RNEBYVE.js.map +1 -0
  39. package/dist/{ms_MY-SKN7O6M5.js → ms_MY-EY235E7Q.js} +20 -20
  40. package/dist/ms_MY-EY235E7Q.js.map +1 -0
  41. package/dist/{pl-TYARHCLT.js → pl-ADNVRP55.js} +20 -20
  42. package/dist/pl-ADNVRP55.js.map +1 -0
  43. package/dist/{pt-72IIFLL4.js → pt-OL2DR3DO.js} +20 -20
  44. package/dist/pt-OL2DR3DO.js.map +1 -0
  45. package/dist/quickcharts.css +97 -96
  46. package/dist/{resources-Ch8eA1Mw.d.ts → resources-Le6flcEn.d.ts} +3 -3
  47. package/dist/rest-openapi.json +11 -11
  48. package/dist/{ru-TPH4F7IB.js → ru-V6YFEPAF.js} +20 -20
  49. package/dist/ru-V6YFEPAF.js.map +1 -0
  50. package/dist/{sv-DC5RS67Z.js → sv-TORXQVE7.js} +20 -20
  51. package/dist/sv-TORXQVE7.js.map +1 -0
  52. package/dist/{th-I6H6AOZ3.js → th-K6SJSYSY.js} +20 -20
  53. package/dist/th-K6SJSYSY.js.map +1 -0
  54. package/dist/theme-manifest.json +10 -10
  55. package/dist/{tr-7FSUVCNW.js → tr-4AEM66KW.js} +20 -20
  56. package/dist/tr-4AEM66KW.js.map +1 -0
  57. package/dist/{vi-DLRPHLLH.js → vi-YU5XCEUU.js} +20 -20
  58. package/dist/vi-YU5XCEUU.js.map +1 -0
  59. package/dist/{zh-ZXIQBBEP.js → zh-QXKRYHU5.js} +20 -20
  60. package/dist/zh-QXKRYHU5.js.map +1 -0
  61. package/dist/{zh_TW-TYNUJU7U.js → zh_TW-AYPDKG4Q.js} +20 -20
  62. package/dist/zh_TW-AYPDKG4Q.js.map +1 -0
  63. package/package.json +1 -1
  64. package/dist/ar-G7MVXRE4.js.map +0 -1
  65. package/dist/ca_ES-EUSRU4VG.js.map +0 -1
  66. package/dist/chunk-AA7XKXH4.js.map +0 -1
  67. package/dist/chunk-KFBQSPNA.js.map +0 -1
  68. package/dist/de-2SVTG25S.js.map +0 -1
  69. package/dist/es-UDHZM4W7.js.map +0 -1
  70. package/dist/fr-35VN4G4S.js.map +0 -1
  71. package/dist/he_IL-JPZMCURP.js.map +0 -1
  72. package/dist/id_ID-XSTFHHJQ.js.map +0 -1
  73. package/dist/it-EIY6JESQ.js.map +0 -1
  74. package/dist/ja-42N4XRCW.js.map +0 -1
  75. package/dist/ko-3VRPTIP3.js.map +0 -1
  76. package/dist/ms_MY-SKN7O6M5.js.map +0 -1
  77. package/dist/pl-TYARHCLT.js.map +0 -1
  78. package/dist/pt-72IIFLL4.js.map +0 -1
  79. package/dist/ru-TPH4F7IB.js.map +0 -1
  80. package/dist/sv-DC5RS67Z.js.map +0 -1
  81. package/dist/th-I6H6AOZ3.js.map +0 -1
  82. package/dist/tr-7FSUVCNW.js.map +0 -1
  83. package/dist/vi-DLRPHLLH.js.map +0 -1
  84. package/dist/zh-ZXIQBBEP.js.map +0 -1
  85. package/dist/zh_TW-TYNUJU7U.js.map +0 -1
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
- import { al as en, C as ChartMessageKey, G as GlyphSourcePort, M as MagnetMode, d as CursorMode, L as LineStyle, I as IDrawing, m as DrawingCounts, D as DrawingStyle, Y as VisibilityPreset, U as ToolPreset, V as ToolTemplate, S as SerializedDrawing, o as DrawingPreferences, l as DrawingAssetPort } from './assets-ySndlUS3.js';
2
- import { R as ResourceRef, C as ChartSaveLoadAdapter, q as ChartMeta, t as ChartBody, f as DrawingResourceContext, i as ResourceStore, u as DrawingsMeta, h as DrawingsBody, j as TemplateMeta, T as TemplateBody, v as LayoutMeta, w as LayoutBody, c as DrawingContextKind } from './resources-Ch8eA1Mw.js';
3
- export { a as ChartLocalDrawingContext, D as DRAWING_CONTEXT_VERSION, b as DRAWING_DOCUMENT_VERSION, d as DrawingEntry, e as DrawingGroup, g as DrawingTombstone, L as LayoutSharedDrawingContext, M as MemoryResourcesOptions, x as ResourceAbortError, S as SymbolGlobalDrawingContext, y as TemplateKind, W as WriteOutcome, k as drawingContextKey, l as emptyDrawingDocument, m as liveDrawingEntries, n as liveDrawingGroups, z as memorySaveLoadAdapter, o as mergeDrawingDocuments, p as parseDrawingDocument, r as reviseDrawingDocument, s as sameDrawingContext } from './resources-Ch8eA1Mw.js';
1
+ import { al as en, C as ChartMessageKey, G as GlyphSourcePort, M as MagnetMode, d as CursorMode, L as LineStyle, I as IDrawing, m as DrawingCounts, D as DrawingStyle, Y as VisibilityPreset, U as ToolPreset, V as ToolTemplate, S as SerializedDrawing, o as DrawingPreferences, l as DrawingAssetPort } from './assets-DOuBBsOp.js';
2
+ import { R as ResourceRef, C as ChartSaveLoadAdapter, q as ChartMeta, t as ChartBody, f as DrawingResourceContext, i as ResourceStore, u as DrawingsMeta, h as DrawingsBody, j as TemplateMeta, T as TemplateBody, v as LayoutMeta, w as LayoutBody, c as DrawingContextKind } from './resources-Le6flcEn.js';
3
+ export { a as ChartLocalDrawingContext, D as DRAWING_CONTEXT_VERSION, b as DRAWING_DOCUMENT_VERSION, d as DrawingEntry, e as DrawingGroup, g as DrawingTombstone, L as LayoutSharedDrawingContext, M as MemoryResourcesOptions, x as ResourceAbortError, S as SymbolGlobalDrawingContext, y as TemplateKind, W as WriteOutcome, k as drawingContextKey, l as emptyDrawingDocument, m as liveDrawingEntries, n as liveDrawingGroups, z as memorySaveLoadAdapter, o as mergeDrawingDocuments, p as parseDrawingDocument, r as reviseDrawingDocument, s as sameDrawingContext } from './resources-Le6flcEn.js';
4
4
  import { LineData, UTCTimestamp, HistogramData, WhitespaceData, IChartApi, ISeriesApi, CreatePriceLineOptions, PriceLineOptions, ISeriesPrimitive, Time, PriceScaleMode, SeriesType, SeriesAttachedParameter, TickMarkType } from 'lightweight-charts';
5
5
 
6
6
  /** How one symbol's prices are WRITTEN, in five facts. Together they express
@@ -147,15 +147,15 @@ interface FeedBar {
147
147
  c: number;
148
148
  v: number;
149
149
  }
150
- /** A symbol-search result row. `provider`/`via` carry the data-source truth a UI may attribute —
151
- * a row names a provider ONLY when that provider actually publishes the symbol's data. */
150
+ /** A symbol-search result row. `exchange` names the venue the market lists on. `dataSource` names
151
+ * where the market's data comes from, and a row names one only when that source publishes the
152
+ * symbol's data. The row's source cell shows the venue, or the data source for a row with none. */
152
153
  interface SymbolRow {
153
154
  symbol: string;
154
155
  name: string;
155
156
  exchange: string;
156
157
  type: string;
157
- provider?: string | null;
158
- via?: string | null;
158
+ dataSource?: string | null;
159
159
  /** What the market is priced in, when the feed knows it here. A PAIR market writes itself as
160
160
  * `BASE / QUOTE` wherever it is named, and a ticker alone cannot say what the quote is; a row
161
161
  * without it keeps the name the feed sent instead. `resolve()` states the same fact for the
@@ -217,11 +217,11 @@ interface SubscribeHandlers {
217
217
  * (the chart shows "market data unavailable" and closes the live subscription), unlike a transient
218
218
  * fetch failure which is retried. */
219
219
  declare class FeedUnavailableError extends Error {
220
- /** The server's typed refusal (e.g. feed_requires_connection / feed_capacity / feed_displaced),
220
+ /** The server's typed refusal (e.g. not_entitled / feed_down),
221
221
  * when it sent one — lets the host name the actual cause instead of a generic "unavailable". */
222
222
  readonly code: string | null;
223
223
  constructor(message?: string,
224
- /** The server's typed refusal (e.g. feed_requires_connection / feed_capacity / feed_displaced),
224
+ /** The server's typed refusal (e.g. not_entitled / feed_down),
225
225
  * when it sent one — lets the host name the actual cause instead of a generic "unavailable". */
226
226
  code?: string | null);
227
227
  }
@@ -247,8 +247,8 @@ interface DatafeedSearchOptions {
247
247
  offset?: number;
248
248
  }
249
249
  /** A feed's coarse, feed-LEVEL capability declaration. Everything optional and the method itself
250
- * optional: an ABSENT declaration means unconstrained (today's behavior), and a feed must only
251
- * declare what is true — a finite `resolutions` list from a feed that serves any interval would
250
+ * optional: an ABSENT declaration means unconstrained, and a feed must only
251
+ * declare what is true — a finite `resolutions` list from a feed that serves any timeframe would
252
252
  * be a lie the chart then enforces. Symbol-level truth (price format, resolutions, session) stays
253
253
  * on {@link SymbolInfo}. */
254
254
  interface DatafeedConfig {
@@ -294,7 +294,7 @@ interface ChartDatafeed {
294
294
  earliestBar?(symbol: string): Promise<number | null>;
295
295
  /** OPTIONAL neutral bar marks over a window (epoch seconds, inclusive of both ends). A mark is a
296
296
  * note about a moment: its color is a theme role, its words are the host's, and the chart
297
- * neither interprets nor acts on it. Omit it entirely when the feed serves none. */
297
+ * draws it as given. Omit it entirely when the feed serves none. */
298
298
  marks?(symbol: string, from: number, to: number, resolution: string): Promise<readonly BarMark[]>;
299
299
  /** OPTIONAL neutral time-scale marks over the same window. */
300
300
  timescaleMarks?(symbol: string, from: number, to: number, resolution: string): Promise<readonly TimescaleMark[]>;
@@ -380,8 +380,7 @@ interface LocaleDefinition<Code extends string = string> {
380
380
  type ChartLocaleCode = 'en' | 'de' | 'fr' | 'es' | 'it' | 'ca_ES' | 'pl' | 'sv' | 'tr' | 'ru' | 'pt' | 'id_ID' | 'ms_MY' | 'th' | 'vi' | 'ja' | 'ko' | 'zh' | 'zh_TW' | 'ar' | 'he_IL';
381
381
  type ChartLocale = LocaleDefinition<ChartLocaleCode>;
382
382
  /** English first, then the Latin-script languages, then the others. Endonyms let every reader find
383
- * their own language in a picker. `scripts/i18n.mjs` reads this table by its line shape, and
384
- * `scripts/test/i18n-inventory.test.ts` pins it equal to the app runtime's inventory. */
383
+ * their own language in a picker. `scripts/i18n.mjs` reads this table by its line shape. */
385
384
  declare const BUILT_IN_LOCALES: readonly ChartLocale[];
386
385
 
387
386
  type PluralCategory = 'zero' | 'one' | 'two' | 'few' | 'many' | 'other';
@@ -599,7 +598,7 @@ declare const chartDictionaries: DictionaryLoader<{
599
598
  readonly 'command.drawingBringForward': "Bring drawing forward";
600
599
  readonly 'command.drawingSendBackward': "Send drawing backward";
601
600
  readonly 'command.drawingHideSelected': "Hide drawing";
602
- readonly 'command.drawingVisibility': "Drawing visibility on intervals";
601
+ readonly 'command.drawingVisibility': "Drawing visibility on timeframes";
603
602
  readonly 'command.drawingSettings': "Drawing settings";
604
603
  readonly 'command.drawingCommitEdit': "Apply drawing settings";
605
604
  readonly 'command.drawingPlaceImage': "Place image";
@@ -623,7 +622,7 @@ declare const chartDictionaries: DictionaryLoader<{
623
622
  readonly 'command.replayStepBack': "Step back";
624
623
  readonly 'command.replayGoLive': "Replay to the live edge";
625
624
  readonly 'command.replaySpeed': "Replay speed";
626
- readonly 'command.replayInterval': "Replay update interval";
625
+ readonly 'command.replayTimeframe': "Replay update timeframe";
627
626
  readonly 'command.timeframeSet': "Timeframe";
628
627
  readonly 'command.subsessionRegular': "Regular hours";
629
628
  readonly 'command.subsessionExtended': "Extended hours";
@@ -752,7 +751,7 @@ declare const chartDictionaries: DictionaryLoader<{
752
751
  readonly 'drawing.more': "More";
753
752
  readonly 'drawing.moreActions': "More drawing actions";
754
753
  readonly 'drawing.visualOrder': "Visual order";
755
- readonly 'drawing.visibilityOnIntervals': "Visibility on intervals";
754
+ readonly 'drawing.visibilityOnTimeframes': "Visibility on timeframes";
756
755
  readonly 'drawing.clone': "Clone";
757
756
  readonly 'drawing.copy': "Copy";
758
757
  readonly 'drawing.modifierControl': "Ctrl";
@@ -774,10 +773,10 @@ declare const chartDictionaries: DictionaryLoader<{
774
773
  readonly 'drawing.sendToBack': "Send to back";
775
774
  readonly 'drawing.bringForward': "Bring forward";
776
775
  readonly 'drawing.sendBackward': "Send backward";
777
- readonly 'drawing.visCurrentAndAbove': "Current interval and above";
778
- readonly 'drawing.visCurrentAndBelow': "Current interval and below";
779
- readonly 'drawing.visCurrentOnly': "Current interval only";
780
- readonly 'drawing.visAll': "All intervals";
776
+ readonly 'drawing.visCurrentAndAbove': "Current timeframe and above";
777
+ readonly 'drawing.visCurrentAndBelow': "Current timeframe and below";
778
+ readonly 'drawing.visCurrentOnly': "Current timeframe only";
779
+ readonly 'drawing.visAll': "All timeframes";
781
780
  readonly 'drawing.saveTemplate': "Save drawing template";
782
781
  readonly 'drawing.templateName': "Template name";
783
782
  readonly 'drawing.save': "Save";
@@ -936,7 +935,7 @@ declare const chartDictionaries: DictionaryLoader<{
936
935
  readonly 'drawing.unitDays': "Days";
937
936
  readonly 'drawing.unitWeeks': "Weeks";
938
937
  readonly 'drawing.unitMonths': "Months";
939
- readonly 'drawing.intervalPinnedNote': "A drawing stays on at least one interval, so it can always be reached again.";
938
+ readonly 'drawing.timeframePinnedNote': "A drawing stays on at least one timeframe, so it can always be reached again.";
940
939
  readonly 'drawing.colorSwatch': "Color {hex}";
941
940
  readonly 'drawing.customColor': "Custom color";
942
941
  readonly 'drawing.saturationValue': "Saturation and brightness";
@@ -1045,7 +1044,7 @@ declare const chartDictionaries: DictionaryLoader<{
1045
1044
  readonly 'range.oneYear': "1 Year";
1046
1045
  readonly 'range.fiveYears': "5 Years";
1047
1046
  readonly 'range.all': "All data";
1048
- readonly 'range.tip': "{range} · {interval} bars";
1047
+ readonly 'range.tip': "{range} · {timeframe} bars";
1049
1048
  readonly 'range.zoomIn': "Zoom in";
1050
1049
  readonly 'range.zoomOut': "Zoom out";
1051
1050
  readonly 'range.scrollLeft': "Scroll left";
@@ -1213,17 +1212,17 @@ declare const chartDictionaries: DictionaryLoader<{
1213
1212
  readonly 'layouts.arrangement': "Chart arrangement";
1214
1213
  readonly 'layouts.syncInLayout': "Sync in layout";
1215
1214
  readonly 'layouts.syncSymbol': "Symbol";
1216
- readonly 'layouts.syncInterval': "Interval";
1215
+ readonly 'layouts.syncTimeframe': "Timeframe";
1217
1216
  readonly 'layouts.syncCrosshair': "Crosshair";
1218
1217
  readonly 'layouts.syncTime': "Time";
1219
1218
  readonly 'layouts.syncDateRange': "Date range";
1220
1219
  readonly 'layouts.syncSymbolTip': "Symbol changes on all charts within the layout";
1221
- readonly 'layouts.syncIntervalTip': "Interval changes on all charts within the layout";
1220
+ readonly 'layouts.syncTimeframeTip': "Timeframe changes on all charts within the layout";
1222
1221
  readonly 'layouts.syncCrosshairTip': "Crosshair is synced across all charts within the layout";
1223
1222
  readonly 'layouts.syncTimeTip': "When a chart is clicked, all charts within the layout display the same point of time";
1224
1223
  readonly 'layouts.syncDateRangeTip': "Date range changes on all charts within the layout";
1225
1224
  readonly 'layouts.syncSymbolToggle': "Sync symbol";
1226
- readonly 'layouts.syncIntervalToggle': "Sync interval";
1225
+ readonly 'layouts.syncTimeframeToggle': "Sync timeframe";
1227
1226
  readonly 'layouts.syncCrosshairToggle': "Sync crosshair";
1228
1227
  readonly 'layouts.syncTimeToggle': "Sync time";
1229
1228
  readonly 'layouts.syncDateRangeToggle': "Sync date range";
@@ -1255,7 +1254,7 @@ declare const chartDictionaries: DictionaryLoader<{
1255
1254
  readonly 'layouts.loading': "Loading";
1256
1255
  readonly 'layouts.emptyNone': "No saved layouts yet.";
1257
1256
  readonly 'layouts.openLayoutRow': "Open layout…";
1258
- readonly 'layouts.listingFacts': "{symbol}, {interval}";
1257
+ readonly 'layouts.listingFacts': "{symbol}, {timeframe}";
1259
1258
  readonly 'layouts.listingDated': "{facts} ({date})";
1260
1259
  readonly 'layouts.dialogTitle': "Layouts";
1261
1260
  readonly 'layouts.search': "Search";
@@ -1320,11 +1319,11 @@ declare const chartDictionaries: DictionaryLoader<{
1320
1319
  readonly one: "1 update per {count} second";
1321
1320
  readonly other: "1 update per {count} seconds";
1322
1321
  };
1323
- readonly 'replay.interval': "Update interval";
1324
- readonly 'replay.intervalHelp': "How much time each replay update advances. Finer than the chart interval, each bar forms from real finer bars.";
1325
- readonly 'replay.intervalNone': "No finer interval for this chart interval";
1322
+ readonly 'replay.timeframe': "Update timeframe";
1323
+ readonly 'replay.timeframeHelp': "How much time each replay update advances. Finer than the chart timeframe, each bar forms from real finer bars.";
1324
+ readonly 'replay.timeframeNone': "No finer timeframe for this chart timeframe";
1326
1325
  readonly 'replay.auto': "Auto";
1327
- readonly 'replay.autoSelectInterval': "Auto select interval";
1326
+ readonly 'replay.autoSelectTimeframe': "Auto select timeframe";
1328
1327
  readonly 'menu.resetView': "Reset chart view";
1329
1328
  readonly 'menu.copyPrice': "Copy price {price}";
1330
1329
  readonly 'menu.paste': "Paste";
@@ -1433,8 +1432,8 @@ declare const chartDictionaries: DictionaryLoader<{
1433
1432
  readonly 'legend.close': "C";
1434
1433
  readonly 'legend.change': "{change} ({percent}%)";
1435
1434
  readonly 'legend.indicatorSettings': "Indicator settings";
1436
- readonly 'legend.showRows': "Show study rows";
1437
- readonly 'legend.hideRows': "Hide study rows";
1435
+ readonly 'legend.showRows': "Show indicator rows";
1436
+ readonly 'legend.hideRows': "Hide indicator rows";
1438
1437
  readonly 'legend.restorePane': "Restore pane";
1439
1438
  readonly 'legend.collapsePane': "Collapse pane";
1440
1439
  readonly 'legend.maximizePane': "Maximize pane";
@@ -1445,7 +1444,7 @@ declare const chartDictionaries: DictionaryLoader<{
1445
1444
  readonly 'legend.scalePercent': "%";
1446
1445
  readonly 'legend.scaleIndexed': "100";
1447
1446
  readonly 'legend.changeSymbol': "Change symbol";
1448
- readonly 'legend.removeCompare': "Remove compare";
1447
+ readonly 'legend.removeCompare': "Remove comparison";
1449
1448
  readonly 'legend.removeIndicator': "Remove indicator";
1450
1449
  }, ChartLocaleCode>;
1451
1450
  /** A drawing tool's display name for a registry `type`: the catalog's when it knows the type, else
@@ -1481,7 +1480,7 @@ interface PriceFormatterOptions {
1481
1480
  interface PriceFormatter {
1482
1481
  /** The price as the symbol writes it. */
1483
1482
  format(price: number): string;
1484
- /** The number a user typed, or null when the text is not a price in this symbol's format. */
1483
+ /** The number a viewer typed, or null when the text is not a price in this symbol's format. */
1485
1484
  parse(text: string): number | null;
1486
1485
  /** How many digits `format` writes after the decimal sign. 0 for a fractional format, which
1487
1486
  * writes none; the widest band's width for a variable-tick format, so a column sized from it
@@ -1558,8 +1557,8 @@ declare const DEFAULT_SUBSESSION: ActiveSubsession;
1558
1557
  declare function hasExtendedHours(model: SessionModel): boolean;
1559
1558
  /** The bar filter for the active subsession: under `regular`, on a symbol with extended hours,
1560
1559
  * keep the bars whose open falls in regular hours; otherwise nothing is filtered (null). For
1561
- * intraday intervals only: a daily bar spans whole sessions, so a caller applies the filter on
1562
- * intraday intervals and shows every daily bar. */
1560
+ * intraday timeframes only: a daily bar spans whole sessions, so a caller applies the filter on
1561
+ * intraday timeframes and shows every daily bar. */
1563
1562
  declare function subsessionBarFilter(model: SessionModel, active: ActiveSubsession): ((epochSecs: number) => boolean) | null;
1564
1563
  /** The session state at an instant (epoch seconds), under the symbol's exchange clock. */
1565
1564
  declare function sessionStateAt(model: SessionModel, epochSecs: number): SessionState;
@@ -1633,9 +1632,9 @@ type VenueMarkPainter = (request: {
1633
1632
  host: HTMLElement;
1634
1633
  size: number;
1635
1634
  }) => (() => void) | void;
1636
- /** Paints the mark of a data provider, where a row names a provider rather than a venue. */
1637
- type ProviderMarkPainter = (request: {
1638
- provider: string;
1635
+ /** Paints the mark of a data source, where a row names a data source rather than a venue. */
1636
+ type DataSourceMarkPainter = (request: {
1637
+ dataSource: string;
1639
1638
  host: HTMLElement;
1640
1639
  size: number;
1641
1640
  }) => (() => void) | void;
@@ -1643,7 +1642,7 @@ type ProviderMarkPainter = (request: {
1643
1642
  interface MarkPainters {
1644
1643
  readonly symbol: SymbolMarkPainter | null;
1645
1644
  readonly venue: VenueMarkPainter | null;
1646
- readonly provider: ProviderMarkPainter | null;
1645
+ readonly dataSource: DataSourceMarkPainter | null;
1647
1646
  }
1648
1647
  /** The host's hooks, as an entry point takes them. Each is the host's to lend or withhold, and
1649
1648
  * every entry point that paints marks takes exactly these, so a host writes them once and hands
@@ -1651,7 +1650,7 @@ interface MarkPainters {
1651
1650
  interface MarkPainterHooks {
1652
1651
  /** The host's mark for a market, called WHEREVER the chart names one: each chart's legend, the
1653
1652
  * compare rows under it, every row of the symbol search and compare dialogs, and the market tag
1654
- * a trading notice wears. It receives the element to paint into and the symbol it stands for,
1653
+ * an extension's notice wears. It receives the element to paint into and the symbol it stands for,
1655
1654
  * and returns a disposer that takes the mark down again.
1656
1655
  *
1657
1656
  * One hook rather than one per surface, so a market wears the same mark everywhere it appears and
@@ -1663,9 +1662,9 @@ interface MarkPainterHooks {
1663
1662
  * into and the size of the box, and returns a disposer; absent, a venue wears its initial on the
1664
1663
  * neutral disc the package draws itself. */
1665
1664
  venueMark?: VenueMarkPainter;
1666
- /** The host's mark for the data provider a row names where it names no venue, painted in that
1667
- * row's source cell the same way. Absent, the provider wears its initial on the neutral disc. */
1668
- providerMark?: ProviderMarkPainter;
1665
+ /** The host's mark for the data source a row names where it names no venue, painted in that
1666
+ * row's source cell the same way. Absent, a data source wears its initial on a neutral disc. */
1667
+ dataSourceMark?: DataSourceMarkPainter;
1669
1668
  }
1670
1669
 
1671
1670
  /** One glyph: its own grid and the inner markup drawn on it. */
@@ -1697,9 +1696,9 @@ interface ChartOverrides {
1697
1696
  countdown: boolean;
1698
1697
  };
1699
1698
  }
1700
- /** The brand palette, single-sourced: any surface that speaks for trdrs reads these (the trading
1701
- * extension's buy line among them), and a rebrand edits two strings. The pair does not reach the
1702
- * candle bodies; see the note on DEFAULT_OVERRIDES for why. */
1699
+ /** The brand palette, single-sourced: a host's own surfaces on the chart read these (an
1700
+ * extension's lines among them), and a rebrand edits two strings. The candle bodies keep their
1701
+ * own pair; see the note on DEFAULT_OVERRIDES for why. */
1703
1702
  declare const BRAND_UP = "#4c98fb";
1704
1703
  declare const BRAND_DOWN = "#f23645";
1705
1704
  declare const DEFAULT_OVERRIDES: ChartOverrides;
@@ -1774,17 +1773,17 @@ declare const THEME_ROLES: readonly [{
1774
1773
  readonly id: "series.up";
1775
1774
  readonly family: "series";
1776
1775
  readonly kind: "color";
1777
- readonly description: "A rising value: up volume, a rising study tint, a positive series default.";
1776
+ readonly description: "A rising value: up volume, a rising indicator tint, a positive series default.";
1778
1777
  }, {
1779
1778
  readonly id: "series.down";
1780
1779
  readonly family: "series";
1781
1780
  readonly kind: "color";
1782
- readonly description: "A falling value: down volume, a falling study tint, a negative series default.";
1781
+ readonly description: "A falling value: down volume, a falling indicator tint, a negative series default.";
1783
1782
  }, {
1784
1783
  readonly id: "series.neutral";
1785
1784
  readonly family: "series";
1786
1785
  readonly kind: "color";
1787
- readonly description: "A series or level with no direction, such as a study level line.";
1786
+ readonly description: "A series or level with no direction, such as an indicator level line.";
1788
1787
  }, {
1789
1788
  readonly id: "scale.grid";
1790
1789
  readonly family: "scale";
@@ -1979,7 +1978,7 @@ declare const THEME_ROLES: readonly [{
1979
1978
  readonly id: "chrome.surface";
1980
1979
  readonly family: "chrome";
1981
1980
  readonly kind: "color";
1982
- readonly description: "The fill of toolbars, rails, bars, and panels.";
1981
+ readonly description: "The fill of toolbars, bars, and panels.";
1983
1982
  }, {
1984
1983
  readonly id: "chrome.surfaceRaised";
1985
1984
  readonly family: "chrome";
@@ -2312,7 +2311,7 @@ declare const THEME_ROLES: readonly [{
2312
2311
  readonly id: "motion.durationSlower";
2313
2312
  readonly family: "motion";
2314
2313
  readonly kind: "duration";
2315
- readonly description: "A larger mark turning, such as the drawing rail's chevron.";
2314
+ readonly description: "A larger mark turning, such as the drawing toolbar's chevron.";
2316
2315
  }, {
2317
2316
  readonly id: "motion.easingStandard";
2318
2317
  readonly family: "motion";
@@ -2940,7 +2939,7 @@ declare function indicatorHidden(ov: IndicatorOverrides | undefined): boolean;
2940
2939
  /** The manifest's default input values ({ period: 20, source: 0, … }). */
2941
2940
  declare function manifestInputDefaults(m: IndicatorManifest): Record<string, number>;
2942
2941
  /** The effective color of a plot spec under an instance: override → declared → the instance's
2943
- * rotated color. A legend dot and a save-as-default snapshot both read THIS, so what the user
2942
+ * rotated color. A legend dot and a save-as-default snapshot both read THIS, so what the viewer
2944
2943
  * sees is what persists. */
2945
2944
  declare function effectivePlotColor(m: IndicatorManifest, key: string, ov: IndicatorOverrides | undefined, instanceColor: string): string;
2946
2945
  /** A manifest with an instance's STYLE overrides folded into its declared specs — colors, widths,
@@ -2960,8 +2959,8 @@ interface ManifestRun {
2960
2959
  shadeColors?: readonly (string | null)[];
2961
2960
  barColors?: readonly (string | null)[];
2962
2961
  }
2963
- /** The ONE walker from a computed run to the render-agnostic spec — built-ins, user scripts, and
2964
- * widget definitions all render through this, so plot semantics can never drift between them.
2962
+ /** The ONE walker from a computed run to the render-agnostic spec: built-ins and host
2963
+ * definitions all render through this, so plot semantics can never drift between them.
2965
2964
  * `fallbackColor` is the instance's rotated color, used by any plot channel that doesn't declare
2966
2965
  * its own. */
2967
2966
  declare function buildManifestPlots(run: ManifestRun, times: readonly UTCTimestamp[], title: string, fallbackColor: string): IndicatorPlots;
@@ -2970,7 +2969,7 @@ declare function buildManifestPlots(run: ManifestRun, times: readonly UTCTimesta
2970
2969
  * defensively. */
2971
2970
  declare function latestPlotValue(data: readonly unknown[] | undefined): number | null;
2972
2971
 
2973
- /** The symbol's price format, as a study scale falls back to it when the manifest declares no
2972
+ /** The symbol's price format, as an indicator scale falls back to it when the manifest declares no
2974
2973
  * precision: the formatter writes the scale labels, `minMove` is the symbol's smallest move, and
2975
2974
  * `key` changes whenever either does so the scale re-applies. */
2976
2975
  interface SymbolPriceFormat {
@@ -2997,8 +2996,8 @@ interface IndicatorsRenderer {
2997
2996
  }
2998
2997
  declare function attachIndicators(chart: IChartApi, options?: {
2999
2998
  candles?: () => ISeriesApi<'Candlestick'> | null;
3000
- /** The symbol's price format for studies that declare no precision. A host that supplies none
3001
- * leaves those scales on the library's own default formatting. */
2999
+ /** The symbol's price format for indicators that declare no precision. A host that supplies
3000
+ * none leaves those scales on the library's own default formatting. */
3002
3001
  symbolPriceFormat?: () => SymbolPriceFormat;
3003
3002
  /** The undirected ink a level line takes when the manifest declares no color of its own. Read
3004
3003
  * live, so a theme switch repaints the levels with everything else; the built-in dark palette's
@@ -3051,8 +3050,8 @@ interface ChartExtensionReplayState {
3051
3050
  cursor: number;
3052
3051
  total: number;
3053
3052
  }
3054
- /** The chart an extension is attached to, read-only. It answers what is on screen; it does not let
3055
- * an extension steer the chart, because a host that wants to steer already holds the widget. */
3053
+ /** The chart an extension is attached to, read-only. It answers what is on screen, and a host
3054
+ * steers the chart through the widget it already holds. */
3056
3055
  interface ChartExtensionChart {
3057
3056
  /** Same value as `pane().id` — the chart and its pane are one thing to an extension. */
3058
3057
  id: string;
@@ -3108,7 +3107,7 @@ interface ChartExtensionIcon {
3108
3107
  * the row reads exactly as a row that contributed no glyph at all. */
3109
3108
  paths: readonly ChartExtensionIconPath[];
3110
3109
  }
3111
- /** A row an extension adds to the chart's level menu. It carries its own action: the chart routes
3110
+ /** A row an extension adds to the chart's context menu. It carries its own action: the chart routes
3112
3111
  * nothing, so a contributed row cannot collide with a built-in id. */
3113
3112
  interface ChartExtensionMenuItem {
3114
3113
  id: string;
@@ -3123,9 +3122,9 @@ interface ChartExtensionMenuItem {
3123
3122
  group?: 'level' | 'view';
3124
3123
  run(): void;
3125
3124
  }
3126
- /** A layer an extension draws that the rail's eye can blank. It joins the eye's menu after the
3127
- * chart's own layers and before "Hide all", which blanks it too, and it wears the layer's own two
3128
- * marks on the eye while it is the chosen subject. */
3125
+ /** A layer an extension draws that the drawing toolbar's eye can blank. It joins the eye's menu
3126
+ * after the chart's own layers and before "Hide all", which blanks it too, and it wears the
3127
+ * layer's own two marks on the eye while it is the chosen subject. */
3129
3128
  interface ChartExtensionHideLayer {
3130
3129
  /** Unique within one chart; the mode the hide command names for this layer. */
3131
3130
  id: string;
@@ -3144,16 +3143,18 @@ interface ChartExtensionHideLayer {
3144
3143
  apply(hidden: boolean): void;
3145
3144
  }
3146
3145
  /** The chart's side of a contributed layer: read whether it is blanked and flip it, through the
3147
- * same eye the rail drives, so a switch on the extension's own surface and the eye agree. */
3146
+ * same eye the drawing toolbar drives, so a switch on the extension's own surface and the eye
3147
+ * agree. */
3148
3148
  interface ChartExtensionHideLayerHandle {
3149
3149
  hidden(): boolean;
3150
3150
  setHidden(hidden: boolean): void;
3151
3151
  /** Withdraw the layer from the eye. Detach withdraws it either way. */
3152
3152
  remove(): void;
3153
3153
  }
3154
- /** Asked on every raise, so rows can depend on the level that was pressed. Returning an empty list
3155
- * contributes nothing and costs nothing. */
3156
- type ChartExtensionMenuProvider = (context: ChartExtensionMenuContext) => readonly ChartExtensionMenuItem[];
3154
+ /** Builds an extension's context menu rows. The chart calls it on every raise with that moment's
3155
+ * context, so the rows can depend on the level that was pressed. An empty list contributes nothing
3156
+ * and costs nothing. */
3157
+ type ChartExtensionMenuBuilder = (context: ChartExtensionMenuContext) => readonly ChartExtensionMenuItem[];
3157
3158
  /** A named action an extension offers the host. The minimal shape: an id, a label, whether it can
3158
3159
  * run now, and how to run it. */
3159
3160
  interface ChartExtensionCommand {
@@ -3176,7 +3177,7 @@ interface ChartExtensionContext {
3176
3177
  overlay: HTMLElement;
3177
3178
  /** The widget's layer on the document body, themed as the root is. A popover that must stand
3178
3179
  * over every pane and over whatever the page stacks around the widget mounts HERE, at viewport
3179
- * coordinates; the level menu does the same. */
3180
+ * coordinates; the context menu does the same. */
3180
3181
  layer: HTMLElement;
3181
3182
  /** The chart's effective canvas palette: the mode's resolved theme with any applied appearance
3182
3183
  * overrides on top, projected onto the values a canvas draws with. */
@@ -3208,7 +3209,7 @@ interface ChartExtensionContext {
3208
3209
  onActiveChange(callback: (active: boolean) => void): () => void;
3209
3210
  /** The chart is going away. Fires before the handle's own `detach()`. */
3210
3211
  onDispose(callback: () => void): () => void;
3211
- contributeContextMenu(provider: ChartExtensionMenuProvider): () => void;
3212
+ contributeContextMenu(build: ChartExtensionMenuBuilder): () => void;
3212
3213
  contributeCommands(commands: readonly ChartExtensionCommand[]): () => void;
3213
3214
  contributeHideLayer(layer: ChartExtensionHideLayer): ChartExtensionHideLayerHandle;
3214
3215
  }
@@ -3236,7 +3237,7 @@ interface ChartExtension {
3236
3237
  attach(context: ChartExtensionContext): ChartExtensionHandle;
3237
3238
  }
3238
3239
 
3239
- /** Localized metadata for one optional collection in the chart-owned indicator browser. */
3240
+ /** Localized metadata for one optional collection in the chart-owned indicator picker. */
3240
3241
  interface IndicatorPickerCollection {
3241
3242
  /** Stable opaque id. `builtin` and `favorites` belong to the chart. */
3242
3243
  id: string;
@@ -3246,7 +3247,7 @@ interface IndicatorPickerCollection {
3246
3247
  /** Catalog columns by default; a personal list can omit author and favorite columns. */
3247
3248
  layout?: 'table' | 'list';
3248
3249
  }
3249
- /** A host action is an opaque verb, not an indicator definition or executable chart script. */
3250
+ /** A host action is an opaque verb: the source's `act` runs it, and the chart only names it. */
3250
3251
  interface IndicatorPickerAction {
3251
3252
  /** Unique within its row. `add` and `favorite` belong to the chart. */
3252
3253
  id: string;
@@ -3278,7 +3279,7 @@ interface IndicatorPickerBuiltInState {
3278
3279
  interface IndicatorPickerSource {
3279
3280
  collections: readonly IndicatorPickerCollection[];
3280
3281
  /** The host supplies localized text. A new query or collection aborts the previous read.
3281
- * `builtInIds` are the built-ins the browser lists: every one, or those `builtInIndicators`
3282
+ * `builtInIds` are the built-ins the picker lists: every one, or those `builtInIndicators`
3282
3283
  * offers. */
3283
3284
  list(request: {
3284
3285
  collection: string;
@@ -3316,21 +3317,21 @@ interface CompareSymbol {
3316
3317
  symbol: string;
3317
3318
  title: string;
3318
3319
  }
3319
- /** One active compare, as hosts read it (legend rows, dialogs, serialization). */
3320
+ /** One active comparison, as hosts read it (legend rows, dialogs, serialization). */
3320
3321
  interface CompareEntry {
3321
3322
  symbol: string;
3322
3323
  placement: ComparePlacement;
3323
3324
  color: string;
3324
3325
  visible: boolean;
3325
3326
  /** Style beyond the palette color, absent until a settings edit sets it (2 / solid are the
3326
- * series defaults). Carried here so a styled compare round-trips through the snapshot. */
3327
+ * series defaults). Carried here so a styled comparison round-trips through the snapshot. */
3327
3328
  lineWidth?: number;
3328
3329
  lineStyle?: 'solid' | 'dashed' | 'dotted';
3329
3330
  }
3330
3331
  /** The serialized form carried inside the chart content blob — and the shape host STATE holds.
3331
- * Only the identity is required: color and visibility are the ORGAN's to deal (the palette pick,
3332
+ * Only the identity is required: color and visibility are the MODULE's to deal (the palette pick,
3332
3333
  * the eye's default), so a host can state membership — "compare MSFT on a new scale" — before
3333
- * the organ has dealt them, and the organ's report back fills them in. `serialize` always emits
3334
+ * the module has dealt them, and the module's report back fills them in. `serialize` always emits
3334
3335
  * the dealt fields; `restore`/`apply` accept either form. */
3335
3336
  interface CompareSnapshot {
3336
3337
  symbol: string;
@@ -3341,13 +3342,13 @@ interface CompareSnapshot {
3341
3342
  lineStyle?: 'solid' | 'dashed' | 'dotted';
3342
3343
  }
3343
3344
  /** The compare line palette, in assignment order. Assigned by first
3344
- * unused slot, so removing a compare frees its color for the next one. */
3345
+ * unused slot, so removing a comparison frees its color for the next one. */
3345
3346
  declare const COMPARE_COLORS: readonly string[];
3346
3347
  /** First palette color not already worn; wraps past the palette by reuse (better a repeat than an
3347
3348
  * invented hue the theme never approved). */
3348
3349
  declare function pickCompareColor(used: readonly string[], palette?: readonly string[]): string;
3349
3350
  /** Clip bars to the main series' window (inclusive). Null window ⇒ nothing renders yet — the main
3350
- * series has no bars, and a compare must never be the thing that gives the axis its range. */
3351
+ * series has no bars, and a comparison must never be the thing that gives the axis its range. */
3351
3352
  declare function clipToWindow(bars: readonly FeedBar[], window: {
3352
3353
  from: number;
3353
3354
  to: number;
@@ -3363,14 +3364,14 @@ interface CompareDeps {
3363
3364
  /** The chart's CURRENT timeframe — read per fetch, never captured. */
3364
3365
  tf(): string;
3365
3366
  /** The MAIN series' loaded bar window (epoch seconds, inclusive), or null before first paint.
3366
- * The organ clips every compare to it; the host calls `sync()` whenever it changes shape. */
3367
+ * The module clips every comparison to it; the host calls `sync()` whenever it changes shape. */
3367
3368
  mainWindow(): {
3368
3369
  from: number;
3369
3370
  to: number;
3370
3371
  } | null;
3371
3372
  /** How many bars a fresh compare asks for when the main window is not yet known. */
3372
3373
  seedCountBack?: number;
3373
- /** Entries changed (add/remove/visibility/color) or a compare's latest value moved — hosts
3374
+ /** Entries changed (add/remove/visibility/color) or a comparison's latest value moved — hosts
3374
3375
  * re-render their legend from `list()` / `latest()`. */
3375
3376
  onChange?(): void;
3376
3377
  }
@@ -3384,11 +3385,11 @@ interface CompareHandle {
3384
3385
  }): void;
3385
3386
  remove(symbol: string): void;
3386
3387
  setVisible(symbol: string, visible: boolean): void;
3387
- /** A host-side hide ANDed with the eye (interval visibility, a plot-visibility override) —
3388
+ /** A host-side hide ANDed with the eye (timeframe visibility, a plot-visibility override) —
3388
3389
  * never serialized and never touching `visible`, so a timeframe switch that suppresses a
3389
- * compare cannot flip the trader's eye state. */
3390
+ * compare cannot flip the viewer's eye state. */
3390
3391
  suppress(symbol: string, on: boolean): void;
3391
- /** Restyle one compare's line (a settings edit). Omitted fields keep their current value;
3392
+ /** Restyle one comparison's line (a settings edit). Omitted fields keep their current value;
3392
3393
  * `priceLabel` is the price-scale label+line pair. Identical values are a no-op (no notify). */
3393
3394
  restyle(symbol: string, style: {
3394
3395
  color?: string;
@@ -3397,11 +3398,11 @@ interface CompareHandle {
3397
3398
  priceLabel?: boolean;
3398
3399
  }): void;
3399
3400
  list(): CompareEntry[];
3400
- /** The latest clipped close for one compare, or null (no bars in window / unknown symbol). */
3401
+ /** The latest clipped close for one comparison, or null (no bars in window / unknown symbol). */
3401
3402
  latest(symbol: string): number | null;
3402
- /** The pane the compare's series currently lives on (0 = the main pane), or null for an unknown
3403
- * symbol — how a host places the compare's legend row in the right pane's group. Read live from
3404
- * the series, because 'new-pane' indices shift as other panes come and go. */
3403
+ /** The pane the comparison's series currently lives on (0 = the main pane), or null for an
3404
+ * unknown symbol — how a host places the comparison's legend row in the right pane's group. Read
3405
+ * live from the series, because 'new-pane' indices shift as other panes come and go. */
3405
3406
  paneIndexOf(symbol: string): number | null;
3406
3407
  /** Percent change across the clipped window (last close vs the window's FIRST in-window close —
3407
3408
  * the loaded-window approximation of the percent scale's first-visible-bar base), or null with
@@ -3413,7 +3414,7 @@ interface CompareHandle {
3413
3414
  * reshaped nothing): re-clip, and fetch older compare history only where the window now starts
3414
3415
  * earlier than anything already asked for. */
3415
3416
  sync(): void;
3416
- /** The chart's timeframe changed: every compare refetches at the new bucket size. */
3417
+ /** The chart's timeframe changed: every comparison refetches at the new bucket size. */
3417
3418
  setTimeframe(): void;
3418
3419
  serialize(): CompareSnapshot[];
3419
3420
  /** Replace the whole set from a snapshot (restore path). Unknown placements are dropped. */
@@ -3425,7 +3426,7 @@ declare function attachCompare(chart: IChartApi, deps: CompareDeps): CompareHand
3425
3426
  type ScaleMode = 'normal' | 'log' | 'percent' | 'indexed';
3426
3427
  declare const SCALE_MODES: readonly ScaleMode[];
3427
3428
  /** Settings-control chips, in render order. Each names its own catalog key, so a control that
3428
- * renders them reads the trader's language rather than an English word compiled into a public
3429
+ * renders them reads the viewer's language rather than an English word compiled into a public
3429
3430
  * export. */
3430
3431
  declare const SCALE_MODE_OPTIONS: readonly {
3431
3432
  id: ScaleMode;
@@ -3443,24 +3444,24 @@ type ReplaySpeed = (typeof REPLAY_SPEEDS)[number];
3443
3444
  * nominal seconds; 0 for ticks and for a token the grammar cannot read. A tick bar has no fixed
3444
3445
  * duration, so it can neither be subdivided nor stand as a subdivision of a time bar. */
3445
3446
  declare function tfSeconds(tf: string): number;
3446
- /** The update intervals a chart timeframe offers.
3447
+ /** The update timeframes a chart timeframe offers.
3447
3448
  *
3448
- * A rung qualifies when it divides the chart's interval evenly and is no coarser than it, drawn
3449
+ * A rung qualifies when it divides the chart's timeframe evenly and is no coarser than it, drawn
3449
3450
  * from the chart's OWN unit group and the group below it. That bound is what keeps the list
3450
3451
  * readable: every minute rung divides a day evenly, but a day played a minute at a time is 1,440
3451
3452
  * updates per bar, so a daily chart offers hours. Seconds join any intraday chart, which is how a
3452
3453
  * minute chart gets a grain at all. A week or a month plays in whole days and nothing else.
3453
3454
  *
3454
- * The chart's own interval is ON the list when it is a rung, and choosing it is how a viewer asks
3455
+ * The chart's own timeframe is ON the list when it is a rung, and choosing it is how a viewer asks
3455
3456
  * for whole-bar updates. A timeframe that is not a rung (17m, say) simply has no rung of its own,
3456
3457
  * and the list is whatever divides it. */
3457
- declare function subIntervalsFor(chartTf: string): {
3458
+ declare function subTimeframesFor(chartTf: string): {
3458
3459
  tf: string;
3459
3460
  sec: number;
3460
3461
  }[];
3461
- /** Auto = the COARSEST interval on offer, which is the chart's own whenever that is a rung. Replay
3462
+ /** Auto = the COARSEST timeframe on offer, which is the chart's own whenever that is a rung. Replay
3462
3463
  * then advances a whole bar per update until a viewer asks for a finer grain. */
3463
- declare function autoIntervalFor(chartTf: string): {
3464
+ declare function autoTimeframeFor(chartTf: string): {
3464
3465
  tf: string;
3465
3466
  sec: number;
3466
3467
  } | null;
@@ -3754,7 +3755,7 @@ type ThemeChangeListener = (theme: SemanticTheme, mode: ThemeMode) => void;
3754
3755
  interface ThemeController {
3755
3756
  /** The mode in effect. */
3756
3757
  mode(): ThemeMode;
3757
- /** Switch modes. The chart keeps its symbol, timeframe, range, drawings, and studies. */
3758
+ /** Switch modes. The chart keeps its symbol, timeframe, range, drawings, and indicators. */
3758
3759
  setMode(mode: ThemeMode): void;
3759
3760
  /** The complete resolved theme in effect. */
3760
3761
  get(): SemanticTheme;
@@ -3799,7 +3800,8 @@ interface CommandSpec {
3799
3800
  execute(arg?: unknown): void | Promise<void>;
3800
3801
  }
3801
3802
  /** What running a command answers. A refusal is a value, never a throw: a menu row, a shortcut and
3802
- * an operator all need to tell "nothing by that name" from "not allowed" without a try block. */
3803
+ * an automation adapter all need to tell "nothing by that name" from "not allowed" without a try
3804
+ * block. */
3803
3805
  type CommandResult = {
3804
3806
  kind: 'ok';
3805
3807
  } | {
@@ -3933,7 +3935,7 @@ interface DrawingPresets {
3933
3935
  subscribe(listener: () => void): () => void;
3934
3936
  }
3935
3937
  /** Why a low-level document operation refused. Machine-readable on purpose: these answer a host's
3936
- * code, not a trader, so nothing here is a sentence to render. */
3938
+ * code, not a viewer, so nothing here is a sentence to render. */
3937
3939
  type DrawingDocumentRefusal =
3938
3940
  /** The widget runs in combined mode: its drawings ride whatever saves the chart, and there is no
3939
3941
  * separate document to get, apply or reload. */
@@ -3945,7 +3947,7 @@ type DrawingDocumentRefusal =
3945
3947
  * layout, chart or symbol that has moved on. Nothing was changed. */
3946
3948
  | 'stale';
3947
3949
  /** Why one drawing in a document was not applied. The rest of the document still applies: one
3948
- * unusable row is not a reason to leave the trader with an empty chart. */
3950
+ * unusable row is not a reason to leave the viewer with an empty chart. */
3949
3951
  type DrawingRejectionReason =
3950
3952
  /** Its owning source is not on this chart (an indicator that is gone, a series never added). */
3951
3953
  'missing-source'
@@ -4007,7 +4009,7 @@ interface DrawingsEvents {
4007
4009
  onSelectionChange?: (id: string | null) => void;
4008
4010
  /** A write of a symbol's document was refused: the stored document moved on (`current` is the
4009
4011
  * ref that stands now) or vanished (null). The layer merges the stored document over its own
4010
- * work and writes again at the adopted ref; the host decides what to tell the trader. */
4012
+ * work and writes again at the adopted ref; the host decides what to tell the viewer. */
4011
4013
  onSaveConflict?: (info: {
4012
4014
  symbol: string;
4013
4015
  current: ResourceRef | null;
@@ -4027,7 +4029,7 @@ interface AttachDrawingsOptions {
4027
4029
  * the keyboard verbs stay scoped to this widget instead of the whole page. */
4028
4030
  container: HTMLElement;
4029
4031
  symbol: string;
4030
- /** Timeframe token ('5m', '1d', ...), which drives per-interval drawing visibility. */
4032
+ /** Timeframe token ('5m', '1d', ...), which drives per-timeframe drawing visibility. */
4031
4033
  timeframe?: string;
4032
4034
  /** SEPARATE-drawing persistence: which drawing-resource context a symbol's document is keyed by,
4033
4035
  * and the store for that context. Absent is the COMBINED mode: the layer keeps its documents in
@@ -4133,7 +4135,7 @@ interface DrawingsHandle {
4133
4135
  };
4134
4136
  /** Hide the selection (its own `visible` switch) and deselect it. */
4135
4137
  hideSelected(): void;
4136
- /** Apply one of the quick per-interval visibility rules to the selection, against the current
4138
+ /** Apply one of the quick per-timeframe visibility rules to the selection, against the current
4137
4139
  * timeframe. */
4138
4140
  setVisibilityPreset(preset: VisibilityPreset): void;
4139
4141
  /** Drop a ready picture onto the chart, centred in view, selected. */
@@ -4188,16 +4190,16 @@ interface ChartReplayApi {
4188
4190
  setSpeed(speed: ReplaySpeed): void;
4189
4191
  /** Jump the cursor to the live edge. Playback pauses; replay stays on. */
4190
4192
  goLive(): void;
4191
- /** The update grain: `auto`, or one of the finer timeframe tokens `subIntervals()` lists. */
4192
- interval(): string;
4193
+ /** The update grain: `auto`, or one of the finer timeframe tokens `subTimeframes()` lists. */
4194
+ timeframe(): string;
4193
4195
  /** Set the grain. A token the chart timeframe cannot form from is refused. */
4194
- setInterval(token: string): void;
4196
+ setTimeframe(token: string): void;
4195
4197
  /** The grain updates actually use, with `auto` resolved to the token it chose. Empty when the
4196
4198
  * chart's timeframe has nothing finer to form from, so updates advance whole bars. */
4197
- resolvedInterval(): string;
4199
+ resolvedTimeframe(): string;
4198
4200
  /** The finer timeframe tokens the chart timeframe can form bars from; empty means whole-bar
4199
4201
  * updates only. */
4200
- subIntervals(): readonly string[];
4202
+ subTimeframes(): readonly string[];
4201
4203
  state(): {
4202
4204
  on: boolean;
4203
4205
  playing: boolean;
@@ -4259,7 +4261,7 @@ interface RangeFrameTarget {
4259
4261
  }
4260
4262
  /** Frame a pane on a span, anchored on its LAST REAL bar: a series also carries a future
4261
4263
  * whitespace horizon for right-margin drawing, so fitting to content would frame a screen of
4262
- * empty space. The bar count comes from the pane's own interval, because the same span is a
4264
+ * empty space. The bar count comes from the pane's own timeframe, because the same span is a
4263
4265
  * different number of bars on a one-minute pane than on a daily one. An empty series, or a token
4264
4266
  * the grammar cannot read, frames nothing rather than a bogus window. */
4265
4267
  declare function frameRange(chart: RangeFrameTarget, series: {
@@ -4285,7 +4287,7 @@ interface ChartCompareApi {
4285
4287
  remove(symbol: string): void;
4286
4288
  setVisible(symbol: string, visible: boolean): void;
4287
4289
  list(): CompareEntry[];
4288
- /** Latest in-window close for one compare, or null. */
4290
+ /** Latest in-window close for one comparison, or null. */
4289
4291
  latest(symbol: string): number | null;
4290
4292
  /** The host-supplied curated quick-add list, for the compare dialog. */
4291
4293
  symbols(): CompareSymbol[];
@@ -4302,7 +4304,7 @@ declare function applyBar(bars: FeedBar[], bar: FeedBar): FeedBar[] | null;
4302
4304
  * viewer's, so a later feed that serves the preferred timeframe gets it back. Exported for tests. */
4303
4305
  declare function resolveInitialTf(sticky: string, declared: readonly string[] | undefined): string;
4304
4306
  /** Pane-composition primitives: the raw mirrors a layout syncs charts with. Subscriptions report
4305
- * USER-driven changes only, so a chart being driven through the setters never re-reports the
4307
+ * VIEWER-driven changes only, so a chart being driven through the setters never re-reports the
4306
4308
  * change and two mirrored charts cannot echo each other into a loop. Times are the feed's unix
4307
4309
  * seconds. */
4308
4310
  interface ChartPaneSyncApi {
@@ -4508,7 +4510,7 @@ interface ChartEvents {
4508
4510
  /** Which changes replay across the layout. All off by default. */
4509
4511
  interface LayoutSyncFlags {
4510
4512
  symbol: boolean;
4511
- interval: boolean;
4513
+ timeframe: boolean;
4512
4514
  crosshair: boolean;
4513
4515
  time: boolean;
4514
4516
  dateRange: boolean;
@@ -4606,7 +4608,7 @@ interface UiConfig {
4606
4608
  topBar?: boolean | TopBarUi;
4607
4609
  /** The bottom bar: range presets, the clock, the timezone picker and the session view. */
4608
4610
  bottomBar?: boolean;
4609
- /** The drawing rail: the tool groups, cursor, measure and zoom, magnet, lock, the eye, sync,
4611
+ /** The drawing toolbar: the tool groups, cursor, measure and zoom, magnet, lock, the eye, sync,
4610
4612
  * remove and the favorites star. */
4611
4613
  drawingToolbar?: boolean;
4612
4614
  /** The floating favorite-tools bar. */
@@ -4615,7 +4617,7 @@ interface UiConfig {
4615
4617
  legend?: boolean | LegendUi;
4616
4618
  /** The on-chart navigation cluster: zoom, scroll and reset. */
4617
4619
  navigation?: boolean;
4618
- /** The chart's own right-click level menu. */
4620
+ /** The chart's own right-click context menu. */
4619
4621
  contextMenu?: boolean;
4620
4622
  /** The replay transport row: play, pause, step, speed and exit. */
4621
4623
  replayTransport?: boolean;
@@ -4625,7 +4627,7 @@ interface UiConfig {
4625
4627
  * and `chart.symbol.search`. Off, the symbol still changes through `chart.symbol.set`. The
4626
4628
  * compare dialog belongs to `features.compare`. */
4627
4629
  symbolSearch?: boolean;
4628
- /** The indicator browser, and its doors: the Indicators button and `chart.indicators.open`. Off,
4630
+ /** The indicator picker, and its doors: the Indicators button and `chart.indicators.open`. Off,
4629
4631
  * indicators are still added through `chart.indicators.add`. */
4630
4632
  indicatorPicker?: boolean;
4631
4633
  /** The full indicator settings dialog. Off, the legend's gear opens the inputs-only editor, and
@@ -4705,9 +4707,9 @@ interface AccessPolicy {
4705
4707
  indicator?(id: string): boolean;
4706
4708
  /** How the chart's own controls present what the predicates refuse. `'disable'` (the default)
4707
4709
  * draws a refused control disabled, which suits an offer the viewer can unlock. `'hide'` leaves
4708
- * it out: a refused drawing tool is not in the rail's flyouts, on the favorites bar or in the
4709
- * glyph picker, and a section or group it empties goes with it; a refused indicator is not in
4710
- * the indicator browser; and a control or menu row whose command is refused is not drawn.
4710
+ * it out: a refused drawing tool is not in the drawing toolbar's flyouts, on the favorites bar
4711
+ * or in the glyph picker, and a section or group it empties goes with it; a refused indicator is
4712
+ * not in the indicator picker; and a control or menu row whose command is refused is not drawn.
4711
4713
  *
4712
4714
  * Only a refusal hides. A permitted command that cannot run now (nothing to undo, no bars
4713
4715
  * loaded, nothing selected) is still drawn disabled. Like the predicates it is read whenever a
@@ -4738,9 +4740,9 @@ interface ChartPreferences {
4738
4740
  hiddenIndicators: readonly string[];
4739
4741
  replaySpeed: ReplaySpeed;
4740
4742
  /** The replay update grain: `auto` or a finer timeframe token. */
4741
- replayInterval: string;
4742
- /** The standing drawing choices: cursor, magnet, stay-in-mode, favorites, per-group rail tools.
4743
- * The drawing models own what each one means; the chart only persists the record. */
4743
+ replayTimeframe: string;
4744
+ /** The standing drawing choices: cursor, magnet, stay-in-mode, favorites, per-group toolbar
4745
+ * tools. The drawing models own what each one means; the chart only persists the record. */
4744
4746
  drawings: DrawingPreferences;
4745
4747
  /** The timeframe tokens the top bar shows as quick-select chips. */
4746
4748
  savedTimeframes: readonly string[];
@@ -4804,7 +4806,7 @@ interface ImageOptions {
4804
4806
  header?: boolean;
4805
4807
  }
4806
4808
  /** ── DRAWING PERSISTENCE ─────────────────────────────────────────────────────────────────────
4807
- * Where the trader's drawings are stored. Two modes, and the host picks one HERE, at construction:
4809
+ * Where the viewer's drawings are stored. Two modes, and the host picks one HERE, at construction:
4808
4810
  *
4809
4811
  * combined (the default) the drawings ride the chart's own saved content, so saving a chart or
4810
4812
  * a layout saves the drawings that are on it.
@@ -4861,8 +4863,8 @@ interface IndicatorInstance {
4861
4863
  title?: string;
4862
4864
  overrides?: IndicatorOverrides;
4863
4865
  }
4864
- /** The set of symbols a search answers from, as the host names it: a portfolio, a broker, a
4865
- * watchlist or any other scope its datafeed applies. `mark` paints the scope's own mark into the
4866
+ /** The set of symbols a search answers from, as the host names it: a portfolio, a watchlist or
4867
+ * any other scope its datafeed applies. `mark` paints the scope's own mark into the
4866
4868
  * box the chart owns and returns what takes it down; absent, the scope wears its initial. */
4867
4869
  interface SearchScope {
4868
4870
  readonly label: string;
@@ -4927,7 +4929,7 @@ interface ChartWidgetOptions extends MarkPainterHooks {
4927
4929
  /** The main-series styles the chart offers, in this order. Absent, every style in `CHART_STYLES`
4928
4930
  * is offered and the picker groups them by family.
4929
4931
  *
4930
- * A style left out is not a style of this chart: it has no `chart.style.<id>` command, so no
4932
+ * A style left out stays off this chart: it has no `chart.style.<id>` command, so no
4931
4933
  * menu, shortcut or host control reaches it, and `setStyle` ignores it. The picker lists the
4932
4934
  * offered styles in the order given, and is not shown when one style is offered, since there is
4933
4935
  * nothing to choose. `ui.topBar.styles: false` hides the picker on its own terms.
@@ -4942,7 +4944,7 @@ interface ChartWidgetOptions extends MarkPainterHooks {
4942
4944
  * preset or not (`2m`). The order given does not matter: the picker lists each unit's group
4943
4945
  * smallest first.
4944
4946
  *
4945
- * A token left out is not a timeframe of this chart. A preset left out has no
4947
+ * A token left out stays off this chart. A preset left out has no
4946
4948
  * `chart.timeframe.<token>` command, `chart.timeframe.set` and `setTimeframe` ignore a token
4947
4949
  * left out, and the picker shows no chip and no row for it. A group with no listed token is not
4948
4950
  * shown, a listed token beyond the presets sits in its unit's group, and there is no
@@ -4950,8 +4952,8 @@ interface ChartWidgetOptions extends MarkPainterHooks {
4950
4952
  * leaves none of them, the chips are the first five listed tokens, and the viewer's stored chips
4951
4953
  * are kept unchanged for a chart that offers them. The picker is not shown when one timeframe is
4952
4954
  * offered, since there is nothing to choose. `ui.topBar.timeframes: false` hides the picker on
4953
- * its own terms. A range preset whose interval is left out reads its span at the smallest listed
4954
- * timeframe at or above that interval, else at the largest listed.
4955
+ * its own terms. A range preset whose timeframe is left out reads its span at the smallest
4956
+ * listed timeframe at or above that timeframe, else at the largest listed.
4955
4957
  *
4956
4958
  * A saved layout, saved chart or stored preference that names a token outside the list opens on
4957
4959
  * the SMALLEST listed timeframe, and the rest of it restores. An empty list, a token the grammar
@@ -4972,11 +4974,11 @@ interface ChartWidgetOptions extends MarkPainterHooks {
4972
4974
  * (`1D`, `5D`, `1M`, `3M`, `6M`, `YTD`, `1Y`, `5Y`, `All`), in this order. Absent, all nine
4973
4975
  * are offered in their own order.
4974
4976
  *
4975
- * A preset left out is not a range of this chart: it has no `chart.range.<key>` command, so no
4977
+ * A preset left out stays off this chart: it has no `chart.range.<key>` command, so no
4976
4978
  * menu, shortcut or host control reaches it, `chart.range.set` ignores its key, and the bottom
4977
4979
  * bar draws no button for it. An empty list offers no preset: the bottom bar keeps its clock,
4978
4980
  * timezone picker and session view, and `chart.range.set` still takes an explicit window.
4979
- * `ui.bottomBar: false` removes the whole bar. A preset whose interval `timeframes` leaves out
4981
+ * `ui.bottomBar: false` removes the whole bar. A preset whose timeframe `timeframes` leaves out
4980
4982
  * reads its span at the nearest coarser timeframe the chart offers. A non-list, a key that names
4981
4983
  * no preset and a repeated key are setup errors thrown from `createChart`. */
4982
4984
  ranges?: readonly string[];
@@ -4985,7 +4987,7 @@ interface ChartWidgetOptions extends MarkPainterHooks {
4985
4987
  * timezone picker keeps its own order (UTC, the exchange choice, then every zone by its current
4986
4988
  * offset); the order given decides only which choice is first.
4987
4989
  *
4988
- * A choice left out is not a timezone of this chart: it has no `chart.timezone.<id>` command (or
4990
+ * A choice left out stays off this chart: it has no `chart.timezone.<id>` command (or
4989
4991
  * `chart.timezone.exchange`), `chart.timezone.set` and `setTimezone` ignore it, and the picker
4990
4992
  * lists no row for it. With one choice offered the picker is not shown, since there is nothing to
4991
4993
  * choose, and the bottom bar's clock still reads the time in that zone.
@@ -5004,7 +5006,7 @@ interface ChartWidgetOptions extends MarkPainterHooks {
5004
5006
  * keeps its own rows by chart count and shows only the listed arrangements, and the order given
5005
5007
  * breaks ties when a saved layout falls back (below).
5006
5008
  *
5007
- * An arrangement left out is not an arrangement of this chart: no tile shows it, and
5009
+ * An arrangement left out stays off this chart: no tile shows it, and
5008
5010
  * `widget.layout.setArrangement` and the `widget.layout.setArrangement` command ignore it. With
5009
5011
  * one arrangement offered the layout setup menu is not shown, since there is nothing to choose,
5010
5012
  * unless that arrangement holds several charts and a sync switch is offered (`layoutSync`): the
@@ -5025,7 +5027,7 @@ interface ChartWidgetOptions extends MarkPainterHooks {
5025
5027
  * An empty list, an unknown code, a repeated code and a `layout.arrangement` outside the list
5026
5028
  * are setup errors thrown from `createChart`. */
5027
5029
  layouts?: readonly string[];
5028
- /** The sync switches the viewer may change (`symbol`, `interval`, `crosshair`, `time`,
5030
+ /** The sync switches the viewer may change (`symbol`, `timeframe`, `crosshair`, `time`,
5029
5031
  * `dateRange`). Absent, every one. A switch left out holds the value `layout.sync` gives it, or
5030
5032
  * off: the layout setup menu does not show it, `widget.layout.setSync` and its command leave it
5031
5033
  * as it is, and a saved layout cannot change it. An empty list fixes every switch and leaves the
@@ -5034,11 +5036,12 @@ interface ChartWidgetOptions extends MarkPainterHooks {
5034
5036
  layoutSync?: readonly (keyof LayoutSyncFlags)[];
5035
5037
  /** The drawing tools the chart offers, by the type `access.drawingTool` and the `tool.<type>`
5036
5038
  * icon ids use: any type `drawingTools.all()` lists, `zoom` or `eraser`. Absent, every tool is
5037
- * offered. The order given does not matter: the rail keeps its own groups and sections.
5039
+ * offered. The order given does not matter: the drawing toolbar keeps its own groups and
5040
+ * sections.
5038
5041
  *
5039
- * A tool left out is not a tool of this chart for creating drawings. It is not drawn anywhere a
5040
- * tool is chosen: not in its group's flyout, not as a group's face (which wears the first tool
5041
- * the group offers), not on the favorites bar and not on the rail (`measure`, `zoom`). A section
5042
+ * A tool left out stays off this chart for creating drawings, and every place a tool is chosen
5043
+ * leaves it out: its group's flyout, a group's face (which wears the first tool the group
5044
+ * offers), the favorites bar and the drawing toolbar (`measure`, `zoom`). A section
5042
5045
  * or group it empties goes with it. The glyph picker's kinds are the `emoji`, `sticker` and
5043
5046
  * `icon` tools, and a kind left out has no tab. `chart.drawings.arm`, `armTool`, `placeImage` and
5044
5047
  * an image pasted over the chart refuse it. A copy of a drawing of it is refused too, since a
@@ -5080,20 +5083,20 @@ interface ChartWidgetOptions extends MarkPainterHooks {
5080
5083
  access?: AccessPolicy;
5081
5084
  /** Initial viewer preferences, for a first-run chart. A stored value wins once there is one. */
5082
5085
  preferences?: Partial<ChartPreferences>;
5083
- /** Optional localized content and actions in the chart-owned indicator browser. */
5086
+ /** Optional localized content and actions in the chart-owned indicator picker. */
5084
5087
  indicatorPicker?: IndicatorPickerSource;
5085
5088
  /** Indicator instances on the chart at mount. */
5086
5089
  indicators?: IndicatorInstance[];
5087
5090
  /** The built-in indicators the chart offers, by the definition id `access.indicator` receives:
5088
5091
  * any id `BUILT_IN_INDICATORS` lists, such as `sma`. Absent, every built-in is offered. The order
5089
- * given does not matter: the indicator browser keeps its own.
5092
+ * given does not matter: the indicator picker keeps its own.
5090
5093
  *
5091
- * A built-in left out is not one this chart adds. The indicator browser does not list it: not
5092
- * among the built-ins, not among the favorites (a starred one keeps its star in storage), not in
5093
- * search results, and the host's `indicatorPicker` listing is handed only the offered ids. Every
5094
+ * A built-in left out stays off this chart. The indicator picker leaves it out of the built-ins,
5095
+ * the favorites (a starred one keeps its star in storage) and the search results, and the host's
5096
+ * `indicatorPicker` listing is handed only the offered ids. Every
5094
5097
  * door that would add one refuses: `chart.indicators.add` answers `denied`, `indicators.add`
5095
5098
  * adds nothing, `indicators.set` leaves out an instance of it the chart does not already hold,
5096
- * and a new pane a re-tile adds copies the first chart's studies without it. There is no
5099
+ * and a new pane a re-tile adds copies the first chart's indicators without it. There is no
5097
5100
  * duplicate verb for an indicator; adding a second instance is adding.
5098
5101
  *
5099
5102
  * Instances of a built-in left out that are already on the chart (from a saved chart or layout,
@@ -5142,7 +5145,7 @@ interface ChartWidgetOptions extends MarkPainterHooks {
5142
5145
  marks?: boolean;
5143
5146
  }
5144
5147
 
5145
- /** Host-owned activity, displayed with studies but never saved as an indicator or plotted. */
5148
+ /** Host-owned activity, displayed with indicators but never saved as an indicator or plotted. */
5146
5149
  interface ChartLegendRow {
5147
5150
  id: string;
5148
5151
  title: string;
@@ -5281,7 +5284,8 @@ type TopBarSlot = (typeof TOP_BAR_SLOTS)[number];
5281
5284
  * A slot is live for as long as the widget is. A host appends its own node and takes that node back
5282
5285
  * out again; the slot itself belongs to the chart and is never removed or replaced. */
5283
5286
  interface ChartChrome {
5284
- /** Transient host activity in this chart's native study list. Does not affect chart content. */
5287
+ /** Transient host activity in this chart's native indicator list. Does not affect chart
5288
+ * content. */
5285
5289
  legendRows(chartId: string, rows: readonly ChartLegendRow[]): void;
5286
5290
  /** One named place in the top bar. Null when the top bar is hidden, which is the answer a host
5287
5291
  * checks before composing a door it would have nowhere to put. */
@@ -5319,10 +5323,10 @@ interface ChartWidget {
5319
5323
  chrome: ChartChrome;
5320
5324
  /** Ask the access policy again, now. The chart's own controls read `access` whenever they sync
5321
5325
  * and whenever a menu opens; call this when the policy's answers changed with nothing on the
5322
- * chart changing (a viewer's plan changed mid-session). Every control, menu row, rail tool and
5323
- * group, the favorites bar, the glyph picker, the legend's row controls and every menu, flyout
5324
- * and dialog that is open (the indicator browser among them) read the policy again: shown or
5325
- * left out under `access.refused`, enabled or disabled. Listeners of `commands.onChange` hear
5326
+ * chart changing (a viewer's plan changed mid-session). Every control, menu row, drawing toolbar
5327
+ * tool and group, the favorites bar, the glyph picker, the legend's row controls and every menu,
5328
+ * flyout and dialog that is open (the indicator picker among them) read the policy again: shown
5329
+ * or left out under `access.refused`, enabled or disabled. Listeners of `commands.onChange` hear
5326
5330
  * it too, so a host's own controls can read `commands.available` again. Nothing stored and
5327
5331
  * nothing on the chart changes. Inert after `dispose`. */
5328
5332
  refreshAccess(): void;
@@ -5361,7 +5365,7 @@ declare class FillBetweenPrimitive implements ISeriesPrimitive<Time> {
5361
5365
  private lower;
5362
5366
  private colors;
5363
5367
  /** Nothing until the first `setData`, which every render path makes before a draw. A tint chosen
5364
- * here would be a second study default with no owner. */
5368
+ * here would be a second indicator default with no owner. */
5365
5369
  private color;
5366
5370
  attached(param: SeriesAttachedParameter<Time>): void;
5367
5371
  detached(): void;
@@ -5390,7 +5394,7 @@ declare class ShadePrimitive implements ISeriesPrimitive<Time> {
5390
5394
  * isCollapsed would deny the restore affordance forever. */
5391
5395
  declare const COLLAPSED_H = 30;
5392
5396
  /** The main pane never shrinks below this, whatever a maximize asks for: an unreadable price pane
5393
- * is worse than an unmaximized study. */
5397
+ * is worse than an unmaximized indicator. */
5394
5398
  declare const MAIN_MIN_H = 80;
5395
5399
  type PaneOp = {
5396
5400
  kind: 'collapse';
@@ -5505,7 +5509,7 @@ declare const SESSION_DOT: Readonly<Record<SessionState, ThemeRoleId>>;
5505
5509
  * model, merged into runs, and drawn as full-height rects UNDER the main series (zOrder bottom).
5506
5510
  * Re-renders with every chart paint, so it tracks pan/zoom for free. An UNKNOWN model (null)
5507
5511
  * never bands: drawing nothing is the only honest render before the symbol resolves. A continuous
5508
- * market never bands (it is always open), and bands render on INTRADAY intervals only: a daily or
5512
+ * market never bands (it is always open), and bands render on INTRADAY timeframes only: a daily or
5509
5513
  * larger bar spans whole sessions, so classifying its single timestamp would shade entire days by
5510
5514
  * whichever session that instant fell in. */
5511
5515
  interface SessionBandsPrimitive {
@@ -5622,9 +5626,9 @@ interface Timeframe {
5622
5626
  readonly count: number;
5623
5627
  readonly unit: TimeframeUnit;
5624
5628
  }
5625
- /** Every unit, smallest first: the custom-interval picker's unit rows and the sort order. */
5629
+ /** Every unit, smallest first: the custom-timeframe picker's unit rows and the sort order. */
5626
5630
  declare const TIMEFRAME_UNITS: readonly TimeframeUnit[];
5627
- /** The inclusive per-unit count ceiling. A token past it parses as null, so a custom-interval
5631
+ /** The inclusive per-unit count ceiling. A token past it parses as null, so a custom-timeframe
5628
5632
  * input disables Add and a feed is never asked for it. */
5629
5633
  declare const TIMEFRAME_MAX: Readonly<Record<TimeframeUnit, number>>;
5630
5634
  /** Nominal seconds per unit: exact for the fixed-duration units (s/m/h/d/w), a coarse nominal for
@@ -5640,7 +5644,7 @@ declare function formatTimeframe(tf: Timeframe): string | null;
5640
5644
  * count). */
5641
5645
  declare function timeframeSeconds(tf: Timeframe): number;
5642
5646
  /** True for a sub-daily token (ticks, seconds, minutes, hours). Session bands and the
5643
- * regular-hours filter engage on intraday intervals only, because a daily or larger bar spans
5647
+ * regular-hours filter engage on intraday timeframes only, because a daily or larger bar spans
5644
5648
  * whole sessions. A token the grammar cannot read is NOT intraday: mis-shading a chart is worse
5645
5649
  * than not shading it. */
5646
5650
  declare function isIntradayTimeframe(token: string): boolean;
@@ -5664,18 +5668,18 @@ interface TimeframeGroup {
5664
5668
  /** The 26 preset timeframes, grouped as the picker shows them. Weeks and months share the Days
5665
5669
  * group. The count is a release inventory: it moves only by decision. */
5666
5670
  declare const TIMEFRAME_PRESETS: readonly TimeframeGroup[];
5667
- /** Every preset token across the groups. A custom interval that already exists as a preset is
5671
+ /** Every preset token across the groups. A custom timeframe that already exists as a preset is
5668
5672
  * refused rather than listed twice. */
5669
5673
  declare const TIMEFRAME_PRESET_TOKENS: ReadonlySet<string>;
5670
- /** The unit's own name in the chart catalog: a picker group's heading and the custom-interval
5674
+ /** The unit's own name in the chart catalog: a picker group's heading and the custom-timeframe
5671
5675
  * unit rows. */
5672
5676
  declare const TIMEFRAME_UNIT_NAME: Readonly<Record<TimeframeUnit, ChartMessageKey>>;
5673
5677
  /** A readable label for a token in the chart's language: '5t' reads "5 Ticks", '1h' reads
5674
5678
  * "1 Hour". A token the grammar cannot read is returned as written, which is what the feed calls
5675
5679
  * it, never a blank. */
5676
5680
  declare function timeframeLabel(t: ChartTranslate, token: string): string;
5677
- /** What a symbol and its feed declare about the intervals they serve. Both lists are optional and
5678
- * an EMPTY list is no restriction: a feed or symbol that serves any interval says nothing rather
5681
+ /** What a symbol and its feed declare about the timeframes they serve. Both lists are optional and
5682
+ * an EMPTY list is no restriction: a feed or symbol that serves any timeframe says nothing rather
5679
5683
  * than listing everything. `supportedResolutions` is the symbol's own list (`SymbolInfo`);
5680
5684
  * `resolutions` is the feed-level list (`DatafeedConfig`). A token must pass every list given. */
5681
5685
  interface TimeframeRestrictions {
@@ -5695,10 +5699,10 @@ interface ChartTimezone {
5695
5699
  /** The display city, as the timezone picker writes it. */
5696
5700
  readonly city: string;
5697
5701
  }
5698
- /** The selectable zones: one city per offset region a trader picks. The count is a release
5702
+ /** The selectable zones: one city per offset region a viewer picks. The count is a release
5699
5703
  * inventory: it moves only by decision. */
5700
5704
  declare const TIMEZONES: readonly ChartTimezone[];
5701
- /** The zone a chart displays in before a host or a trader chooses one. */
5705
+ /** The zone a chart displays in before a host or a viewer chooses one. */
5702
5706
  declare const DEFAULT_TIMEZONE = "Etc/UTC";
5703
5707
  /** The timezone choice that follows the charted symbol's exchange: a display preference resolves
5704
5708
  * it per symbol through {@link resolveDisplayTimezone}. */
@@ -5881,4 +5885,4 @@ declare function mountTimeframePicker(options: TimeframePickerOptions & {
5881
5885
  container: HTMLElement;
5882
5886
  }): MountedTimeframePicker;
5883
5887
 
5884
- export { ARRANGEMENTS, type AccessPolicy, type ActiveSubsession, type Arrangement, type AttachDrawingsOptions, BRAND_DOWN, BRAND_UP, BUILT_IN_INDICATORS, BUILT_IN_LOCALES, type BarMark, type BarsEvent, type BuiltInIndicator, CHART_ICON_IDS, CHART_STYLES, COLLAPSED_H, COMPARE_COLORS, type CanvasTheme, type Capabilities, ChartBody, type ChartChrome, type ChartCompareApi, type ChartCustomLocale, type ChartDatafeed, type ChartDictionary, type ChartDrawingsApi, type ChartEvents, type ChartExtension, type ChartExtensionChart, type ChartExtensionCommand, type ChartExtensionContext, type ChartExtensionHandle, type ChartExtensionIcon, type ChartExtensionIconPath, type ChartExtensionMenuContext, type ChartExtensionMenuItem, type ChartExtensionMenuProvider, type ChartExtensionPane, type ChartExtensionPriceLine, type ChartExtensionReplayState, type ChartExtensionScope, type ChartExtensionSeries, type ChartHandle, type ChartHistoryApi, type ChartI18n, type ChartI18nOptions, type ChartIconContext, type ChartIconDiagnostic, type ChartIconFactory, type ChartIconFailure, type ChartIconId, type ChartIcons, type ChartLegendRow, type ChartLocale, type ChartLocaleCode, type ChartMenuAction, type ChartMenuContext, type ChartMenuIcon, type ChartMenuRow, ChartMessageKey, ChartMeta, type ChartOverrides, type ChartPaneSyncApi, type ChartPreferences, type ChartPriceFormatter, type ChartReplayApi, ChartSaveLoadAdapter, type ChartSaveLoadApi, type ChartStorage, type ChartStyleId, type ChartTimezone, type ChartTranslate, type ChartWidget, type ChartWidgetOptions, type CommandRegistry, type CommandResult, type CommandScope, type CommandSpec, type CompareDeps, type CompareEntry, type CompareHandle, type ComparePlacement, type CompareSnapshot, type CompareSymbol, type ContextMenuHandle, type CustomThemes, DEFAULT_OVERRIDES, DEFAULT_SUBSESSION, DEFAULT_TIMEZONE, type DataStatus, type DatafeedConfig, type DatafeedSearchOptions, type DrawingApplyOutcome, DrawingAssetPort, DrawingContextKind, type DrawingDocumentApi, type DrawingDocumentPort, type DrawingDocumentRefusal, type DrawingEvent, type DrawingOwner, DrawingPreferences, type DrawingPresets, type DrawingReadOutcome, type DrawingRejection, type DrawingRejectionReason, DrawingResourceContext, DrawingsBody, type DrawingsEvents, type DrawingsHandle, DrawingsMeta, type DrawingsWorkflow, EXCHANGE_TIMEZONE, type FeatureConfig, type FeedBar, FeedUnavailableError, type FetchLike, FillBetweenPrimitive, type FullscreenApi, type FullscreenOptions, type HistoryChange, type HistoryEventState, type HistoryPage, IMAGE_HEADER_H, type ImageApi, type ImageEvent, type ImageHeader, type ImageOptions, type ImageTextRun, type ImageTile, type IndicatorCategory, type IndicatorDefinition, type IndicatorEvent, type IndicatorFill, type IndicatorInstance, type IndicatorLevel, type IndicatorManifest, type IndicatorOverrides, type IndicatorPickerAction, type IndicatorPickerBuiltInState, type IndicatorPickerCollection, type IndicatorPickerItem, type IndicatorPickerSource, type IndicatorPlot, type IndicatorPlots, type IndicatorsApi, type IndicatorsRenderer, LAYOUT_MENU_ROWS, type LayoutApi, LayoutBody, type LayoutEvent, LayoutMeta, type LayoutOptions, type LayoutSaveLoadApi, type LayoutSyncFlags, type LegendUi, type LogicalRange, MAIN_MIN_H, MIN_BAR_SPACING, MIRRORED_ICONS, type ManifestFill, type ManifestInput, type ManifestLevel, type ManifestPlot, type ManifestRun, type MarkColorRole, type MarkPainters, type MarkPlacement, type MarkShape, type MarketStatus, type MatchSegment, type MountedSymbolSearch, type MountedTimeframePicker, type NumericPunctuation, type OlderPageVerdict, type OpenResource, PRICE_SCALE_MODE, type PaneOp, type PanePlan, type PaneRect, type PaneState, type PartialOverrides, type PlacedImage, type PlotPoint, type PriceFormat, type PriceFormatter, type PriceFormatterOptions, type ProviderMarkPainter, RANGE_PRESETS, RECENT_SYMBOLS_CAP, REPLAY_SPEEDS, type RangeFrameTarget, type RangePreset, type RangeSpan, type RecentsPort, type ReplayEventState, type ReplaySpeed, type ResourceLoadOutcome, ResourceRef, type ResourceRemoveOutcome, type ResourceSaveOutcome, ResourceStore, SCALE_MODES, SCALE_MODE_OPTIONS, SCROLL_STEP_BARS, SESSION_DOT, SESSION_LABEL, SESSION_STATE_TITLE, SPREAD_OPERATORS, type SaveConflictInfo, type ScaleMode, type SearchClassFilter, type SearchClassNode, type SearchController, type SearchControllerOptions, type SearchDisplayOptions, type SearchPage, type SearchScope, type SearchState, type SelectedDrawing, type SemanticTheme, type SessionBandsPrimitive, type SessionModel, type SessionSchedule, type SessionSegment, type SessionSource, type SessionState, type SessionTimeline, type SettingsMenuUi, ShadePrimitive, type SpreadOperator, type SpreadOperatorId, type SubscribeHandlers, type Subsession, type SubsessionId, type SubsessionSource, type SymbolInfo, type SymbolMarkPainter, type SymbolNames, type SymbolPriceFormat, type SymbolRow, type SymbolSearchCache, type SymbolSearchHandle, type SymbolSearchOptions, THEME_ROLES, TIMEFRAME_MAX, TIMEFRAME_PRESETS, TIMEFRAME_PRESET_TOKENS, TIMEFRAME_UNITS, TIMEFRAME_UNIT_NAME, TIMEFRAME_UNIT_SECONDS, TIMEZONES, TOP_BAR_SLOTS, TemplateBody, TemplateMeta, type TextEditSession, type ThemeChangeListener, type ThemeController, type ThemeControllerOptions, type ThemeDeclaration, type ThemeDiagnostic, type ThemeDiagnosticCode, type ThemeMode, type ThemeOptions, type ThemeRole, type ThemeRoleFamily, type ThemeRoleId, type ThemeRoleKind, type ThemeRootStyle, type TickBand, type TimeRange, type Timeframe, type TimeframeGroup, type TimeframePickerHandle, type TimeframePickerOptions, type TimeframeRestrictions, type TimeframeUnit, type TimescaleMark, type TimezoneRow, type ToolbarButton, type ToolbarButtonOptions, type ToolbarButtonState, type TopBarSlot, type TopBarUi, type UdfDatafeedOptions, type UdfSymbolResponse, type UiConfig, type VenueMarkPainter, type WidgetEvents, ZOOM_FACTOR, type ZoneClock, allowedTimeframes, applyBar, applyPlotOverrides, arrangementName, arrangementOf, attachCompare, attachDrawings, attachIndicators, autoIntervalFor, buildManifestPlots, canvasTheme, canvasToBlob, chartContextMenu, chartDictionaries, clipToWindow, coerceChartStyle, coerceScaleMode, compareTimeframes, composeFormingBar, composeImage, createChart, createChartI18n, createPriceFormatter, createSearchController, createSessionBands, createSymbolSearchCache, createThemeController, createUdfDatafeed, effectivePlotColor, exchangeTimezoneText, formatClock, formatDuration, formatTimeframe, frameRange, hasExtendedHours, imageFileName, imageHeaderRuns, imageLayoutHeaderRuns, imageTileRuns, indicatorHidden, isChartStyle, isCollapsed, isIntradayTimeframe, isSymbolPair, isTimezoneChoice, latestPlotValue, layerOverrides, looksLikeSpread, makeCrosshairTimeFormatter, makeTickMarkFormatter, manifestInputDefaults, marketStatus, marketStatusFor, marketStatusText, marketStatusTitle, matchSegments, memoryChartStorage, memoryRecents, mergeOverrides, mountContextMenu, mountSymbolSearch, mountTimeframePicker, nextSessionChange, olderPageVerdict, openInputsEditor, openSymbolSearch, openTimeframePicker, overriddenManifest, parseSessionModel, parseTickBands, parseTimeframe, pickCompareColor, placeableByWidget, planPaneOp, promoteRecent, rangeAvailable, rangePresetTip, rangeSpanSeconds, resolveDisplayTimezone, resolveInitialTf, scrolledPosition, seriesTargetOf, sessionStateAt, sessionTimeline, spreadExpression, spreadSearchQuery, subIntervalsFor, subsessionBarFilter, symbolNames, tfSeconds, tfToUdfResolution, tickBandFor, timeframeAllowed, timeframeGroupUnit, timeframeLabel, timeframeOrder, timeframeSeconds, timezoneCity, timezoneLabel, timezoneListing, toolName, tzOffsetLabel, tzOffsetMinutes, udfPriceFormat, udfResolutionToTf, udfSymbolInfo, valueShaped, withFoldedHistory, zoneClock, zoomedBarSpacing };
5888
+ export { ARRANGEMENTS, type AccessPolicy, type ActiveSubsession, type Arrangement, type AttachDrawingsOptions, BRAND_DOWN, BRAND_UP, BUILT_IN_INDICATORS, BUILT_IN_LOCALES, type BarMark, type BarsEvent, type BuiltInIndicator, CHART_ICON_IDS, CHART_STYLES, COLLAPSED_H, COMPARE_COLORS, type CanvasTheme, type Capabilities, ChartBody, type ChartChrome, type ChartCompareApi, type ChartCustomLocale, type ChartDatafeed, type ChartDictionary, type ChartDrawingsApi, type ChartEvents, type ChartExtension, type ChartExtensionChart, type ChartExtensionCommand, type ChartExtensionContext, type ChartExtensionHandle, type ChartExtensionIcon, type ChartExtensionIconPath, type ChartExtensionMenuBuilder, type ChartExtensionMenuContext, type ChartExtensionMenuItem, type ChartExtensionPane, type ChartExtensionPriceLine, type ChartExtensionReplayState, type ChartExtensionScope, type ChartExtensionSeries, type ChartHandle, type ChartHistoryApi, type ChartI18n, type ChartI18nOptions, type ChartIconContext, type ChartIconDiagnostic, type ChartIconFactory, type ChartIconFailure, type ChartIconId, type ChartIcons, type ChartLegendRow, type ChartLocale, type ChartLocaleCode, type ChartMenuAction, type ChartMenuContext, type ChartMenuIcon, type ChartMenuRow, ChartMessageKey, ChartMeta, type ChartOverrides, type ChartPaneSyncApi, type ChartPreferences, type ChartPriceFormatter, type ChartReplayApi, ChartSaveLoadAdapter, type ChartSaveLoadApi, type ChartStorage, type ChartStyleId, type ChartTimezone, type ChartTranslate, type ChartWidget, type ChartWidgetOptions, type CommandRegistry, type CommandResult, type CommandScope, type CommandSpec, type CompareDeps, type CompareEntry, type CompareHandle, type ComparePlacement, type CompareSnapshot, type CompareSymbol, type ContextMenuHandle, type CustomThemes, DEFAULT_OVERRIDES, DEFAULT_SUBSESSION, DEFAULT_TIMEZONE, type DataSourceMarkPainter, type DataStatus, type DatafeedConfig, type DatafeedSearchOptions, type DrawingApplyOutcome, DrawingAssetPort, DrawingContextKind, type DrawingDocumentApi, type DrawingDocumentPort, type DrawingDocumentRefusal, type DrawingEvent, type DrawingOwner, DrawingPreferences, type DrawingPresets, type DrawingReadOutcome, type DrawingRejection, type DrawingRejectionReason, DrawingResourceContext, DrawingsBody, type DrawingsEvents, type DrawingsHandle, DrawingsMeta, type DrawingsWorkflow, EXCHANGE_TIMEZONE, type FeatureConfig, type FeedBar, FeedUnavailableError, type FetchLike, FillBetweenPrimitive, type FullscreenApi, type FullscreenOptions, type HistoryChange, type HistoryEventState, type HistoryPage, IMAGE_HEADER_H, type ImageApi, type ImageEvent, type ImageHeader, type ImageOptions, type ImageTextRun, type ImageTile, type IndicatorCategory, type IndicatorDefinition, type IndicatorEvent, type IndicatorFill, type IndicatorInstance, type IndicatorLevel, type IndicatorManifest, type IndicatorOverrides, type IndicatorPickerAction, type IndicatorPickerBuiltInState, type IndicatorPickerCollection, type IndicatorPickerItem, type IndicatorPickerSource, type IndicatorPlot, type IndicatorPlots, type IndicatorsApi, type IndicatorsRenderer, LAYOUT_MENU_ROWS, type LayoutApi, LayoutBody, type LayoutEvent, LayoutMeta, type LayoutOptions, type LayoutSaveLoadApi, type LayoutSyncFlags, type LegendUi, type LogicalRange, MAIN_MIN_H, MIN_BAR_SPACING, MIRRORED_ICONS, type ManifestFill, type ManifestInput, type ManifestLevel, type ManifestPlot, type ManifestRun, type MarkColorRole, type MarkPainters, type MarkPlacement, type MarkShape, type MarketStatus, type MatchSegment, type MountedSymbolSearch, type MountedTimeframePicker, type NumericPunctuation, type OlderPageVerdict, type OpenResource, PRICE_SCALE_MODE, type PaneOp, type PanePlan, type PaneRect, type PaneState, type PartialOverrides, type PlacedImage, type PlotPoint, type PriceFormat, type PriceFormatter, type PriceFormatterOptions, RANGE_PRESETS, RECENT_SYMBOLS_CAP, REPLAY_SPEEDS, type RangeFrameTarget, type RangePreset, type RangeSpan, type RecentsPort, type ReplayEventState, type ReplaySpeed, type ResourceLoadOutcome, ResourceRef, type ResourceRemoveOutcome, type ResourceSaveOutcome, ResourceStore, SCALE_MODES, SCALE_MODE_OPTIONS, SCROLL_STEP_BARS, SESSION_DOT, SESSION_LABEL, SESSION_STATE_TITLE, SPREAD_OPERATORS, type SaveConflictInfo, type ScaleMode, type SearchClassFilter, type SearchClassNode, type SearchController, type SearchControllerOptions, type SearchDisplayOptions, type SearchPage, type SearchScope, type SearchState, type SelectedDrawing, type SemanticTheme, type SessionBandsPrimitive, type SessionModel, type SessionSchedule, type SessionSegment, type SessionSource, type SessionState, type SessionTimeline, type SettingsMenuUi, ShadePrimitive, type SpreadOperator, type SpreadOperatorId, type SubscribeHandlers, type Subsession, type SubsessionId, type SubsessionSource, type SymbolInfo, type SymbolMarkPainter, type SymbolNames, type SymbolPriceFormat, type SymbolRow, type SymbolSearchCache, type SymbolSearchHandle, type SymbolSearchOptions, THEME_ROLES, TIMEFRAME_MAX, TIMEFRAME_PRESETS, TIMEFRAME_PRESET_TOKENS, TIMEFRAME_UNITS, TIMEFRAME_UNIT_NAME, TIMEFRAME_UNIT_SECONDS, TIMEZONES, TOP_BAR_SLOTS, TemplateBody, TemplateMeta, type TextEditSession, type ThemeChangeListener, type ThemeController, type ThemeControllerOptions, type ThemeDeclaration, type ThemeDiagnostic, type ThemeDiagnosticCode, type ThemeMode, type ThemeOptions, type ThemeRole, type ThemeRoleFamily, type ThemeRoleId, type ThemeRoleKind, type ThemeRootStyle, type TickBand, type TimeRange, type Timeframe, type TimeframeGroup, type TimeframePickerHandle, type TimeframePickerOptions, type TimeframeRestrictions, type TimeframeUnit, type TimescaleMark, type TimezoneRow, type ToolbarButton, type ToolbarButtonOptions, type ToolbarButtonState, type TopBarSlot, type TopBarUi, type UdfDatafeedOptions, type UdfSymbolResponse, type UiConfig, type VenueMarkPainter, type WidgetEvents, ZOOM_FACTOR, type ZoneClock, allowedTimeframes, applyBar, applyPlotOverrides, arrangementName, arrangementOf, attachCompare, attachDrawings, attachIndicators, autoTimeframeFor, buildManifestPlots, canvasTheme, canvasToBlob, chartContextMenu, chartDictionaries, clipToWindow, coerceChartStyle, coerceScaleMode, compareTimeframes, composeFormingBar, composeImage, createChart, createChartI18n, createPriceFormatter, createSearchController, createSessionBands, createSymbolSearchCache, createThemeController, createUdfDatafeed, effectivePlotColor, exchangeTimezoneText, formatClock, formatDuration, formatTimeframe, frameRange, hasExtendedHours, imageFileName, imageHeaderRuns, imageLayoutHeaderRuns, imageTileRuns, indicatorHidden, isChartStyle, isCollapsed, isIntradayTimeframe, isSymbolPair, isTimezoneChoice, latestPlotValue, layerOverrides, looksLikeSpread, makeCrosshairTimeFormatter, makeTickMarkFormatter, manifestInputDefaults, marketStatus, marketStatusFor, marketStatusText, marketStatusTitle, matchSegments, memoryChartStorage, memoryRecents, mergeOverrides, mountContextMenu, mountSymbolSearch, mountTimeframePicker, nextSessionChange, olderPageVerdict, openInputsEditor, openSymbolSearch, openTimeframePicker, overriddenManifest, parseSessionModel, parseTickBands, parseTimeframe, pickCompareColor, placeableByWidget, planPaneOp, promoteRecent, rangeAvailable, rangePresetTip, rangeSpanSeconds, resolveDisplayTimezone, resolveInitialTf, scrolledPosition, seriesTargetOf, sessionStateAt, sessionTimeline, spreadExpression, spreadSearchQuery, subTimeframesFor, subsessionBarFilter, symbolNames, tfSeconds, tfToUdfResolution, tickBandFor, timeframeAllowed, timeframeGroupUnit, timeframeLabel, timeframeOrder, timeframeSeconds, timezoneCity, timezoneLabel, timezoneListing, toolName, tzOffsetLabel, tzOffsetMinutes, udfPriceFormat, udfResolutionToTf, udfSymbolInfo, valueShaped, withFoldedHistory, zoneClock, zoomedBarSpacing };