@instruments/materialgraph 0.26.0 → 0.27.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 (113) hide show
  1. package/association-types.d.ts +18 -7
  2. package/attribution-types.d.ts +2 -2
  3. package/brand-types.d.ts +8 -0
  4. package/brands-client.d.ts +5 -36
  5. package/brands-client.js +7 -33
  6. package/by-colour-types.d.ts +40 -13
  7. package/by-spec-types.d.ts +0 -67
  8. package/by-spec-types.js +7 -5
  9. package/catalog-discovery-types.d.ts +1 -16
  10. package/catalogue-client.d.ts +12 -31
  11. package/catalogue-client.js +10 -46
  12. package/catalogue-types.d.ts +40 -0
  13. package/categories-client.d.ts +63 -0
  14. package/categories-client.js +48 -0
  15. package/category-types.d.ts +114 -0
  16. package/client-config.d.ts +2 -4
  17. package/client-config.js +2 -4
  18. package/client-vocabulary.d.ts +2 -4
  19. package/client-vocabulary.js +11 -9
  20. package/client.d.ts +103 -203
  21. package/client.js +126 -251
  22. package/codes-types.d.ts +21 -0
  23. package/colours-client.d.ts +4 -9
  24. package/colours-client.js +0 -8
  25. package/errors.d.ts +1 -1
  26. package/errors.js +1 -0
  27. package/identify-types.d.ts +49 -39
  28. package/identify-types.js +5 -3
  29. package/index.d.ts +11 -21
  30. package/index.js +4 -4
  31. package/list-variant-facets-types.d.ts +60 -0
  32. package/list-variants-types.d.ts +142 -0
  33. package/list-variants-types.js +12 -0
  34. package/match-stream-types.d.ts +13 -0
  35. package/match-stream-types.js +2 -0
  36. package/match-stream.js +12 -8
  37. package/match-types.d.ts +24 -0
  38. package/material-asset-types.d.ts +69 -49
  39. package/material-block-types.d.ts +2 -0
  40. package/material-composition-client.d.ts +21 -0
  41. package/material-composition-client.js +13 -0
  42. package/material-composition-types.d.ts +403 -0
  43. package/material-query-plan-types.d.ts +57 -141
  44. package/material-resources-client.d.ts +9 -7
  45. package/material-resources-client.js +19 -4
  46. package/material-types.d.ts +6 -14
  47. package/operations.d.ts +1 -1
  48. package/operations.js +20 -117
  49. package/package.json +5 -1
  50. package/palette-search-types.d.ts +59 -24
  51. package/query-understanding-types.d.ts +27 -5
  52. package/resolve-client.d.ts +6 -10
  53. package/resolve-client.js +5 -7
  54. package/response-schemas.d.ts +20 -0
  55. package/response-schemas.generated.d.ts +5 -0
  56. package/response-schemas.generated.js +160 -0
  57. package/response-schemas.js +113 -0
  58. package/run-types.d.ts +12 -93
  59. package/runs.d.ts +1 -37
  60. package/runs.js +2 -79
  61. package/schema-resource-types.d.ts +14 -1
  62. package/search-card-types.d.ts +22 -0
  63. package/search-index-plan-types.d.ts +70 -0
  64. package/search-refinement-types.d.ts +8 -38
  65. package/search-refinement-types.js +1 -0
  66. package/search-request-types.d.ts +117 -200
  67. package/search-response-receipt-types.d.ts +12 -268
  68. package/search-result-validation.d.ts +0 -16
  69. package/search-result-validation.js +22 -180
  70. package/spec-facet-types.d.ts +3 -8
  71. package/spec-types.d.ts +17 -10
  72. package/spec-types.js +8 -7
  73. package/specifications.d.ts +13 -55
  74. package/specifications.js +29 -73
  75. package/suggest-types.d.ts +4 -10
  76. package/suggest-types.js +1 -1
  77. package/types.d.ts +135 -338
  78. package/webmcp.d.ts +1 -1
  79. package/webmcp.generated.js +10 -94
  80. package/brand-most-sampled-types.d.ts +0 -33
  81. package/browse-types.d.ts +0 -236
  82. package/client-browse.d.ts +0 -78
  83. package/client-browse.js +0 -71
  84. package/client-exploration.d.ts +0 -9
  85. package/client-exploration.js +0 -5
  86. package/compare-types.d.ts +0 -89
  87. package/composition-client.d.ts +0 -33
  88. package/composition-client.js +0 -28
  89. package/composition-types.d.ts +0 -455
  90. package/composition-types.js +0 -10
  91. package/correction-types.d.ts +0 -88
  92. package/exploration-types.d.ts +0 -118
  93. package/exploration-types.js +0 -1
  94. package/fan-deck-types.d.ts +0 -42
  95. package/fan-deck-types.js +0 -9
  96. package/match-rejection-types.d.ts +0 -43
  97. package/match-rejection-types.js +0 -7
  98. package/palette-completion-types.d.ts +0 -115
  99. package/palette-completion-types.js +0 -1
  100. package/render-assets-types.d.ts +0 -65
  101. package/render-assets-types.js +0 -1
  102. package/search-collapse-types.d.ts +0 -69
  103. package/search-collapse-types.js +0 -1
  104. package/search-mood-types.d.ts +0 -6
  105. package/search-mood-types.js +0 -1
  106. package/search-window-types.d.ts +0 -25
  107. package/search-window-types.js +0 -1
  108. package/slot-pool-types.d.ts +0 -372
  109. package/slot-pool-types.js +0 -1
  110. /package/{brand-most-sampled-types.js → category-types.js} +0 -0
  111. /package/{browse-types.js → list-variant-facets-types.js} +0 -0
  112. /package/{compare-types.js → material-composition-types.js} +0 -0
  113. /package/{correction-types.js → search-index-plan-types.js} +0 -0
@@ -1,3 +1,4 @@
1
+ import type { ColourCategoryGate } from "./by-colour-types.js";
1
2
  import type { CorpusScope, CorpusScopeReceipt } from "./corpus-scope-types.js";
2
3
  /**
3
4
  * Wire types for MULTI-COLOUR search — `POST /api/v1/search/palettes` and
@@ -21,12 +22,12 @@ export type PaletteQueryColour = {
21
22
  hex?: string;
22
23
  oklab?: OklabTriple;
23
24
  /**
24
- * Share of the surface this colour should occupy, in (0,1]. Stating it
25
- * CHANGES the ranking: a colour asked for at 0.6 rewards candidates whose own
26
- * swatch sits near 0.6, not merely candidates that contain the colour.
25
+ * Share of the surface this colour should occupy, in (0,1]. A colour stated
26
+ * below 5% is dropped; otherwise not applied, since a palette is ordered by
27
+ * its first colour alone.
27
28
  */
28
29
  proportion?: number;
29
- /** Relative importance; defaults to 1 and is normalised across the query. */
30
+ /** Relative importance. Not applied: a palette is ordered by its first colour. */
30
31
  weight?: number;
31
32
  };
32
33
  /** One gradient stop — exactly one of `hex` or `oklab`. Order is meaningful. */
@@ -35,19 +36,34 @@ export type GradientStop = {
35
36
  oklab?: OklabTriple;
36
37
  };
37
38
  export type SearchPaletteInput = {
39
+ /**
40
+ * HARD category filter: category-group or product-type names or keys.
41
+ * Absent, the page holds surface materials only, so lights, taps and
42
+ * furniture are left out.
43
+ */
44
+ category?: string[];
38
45
  corpusScope?: CorpusScope;
39
- /** The palette to match, 1–8 colours. */
46
+ /**
47
+ * The palette to match, 1–8 colours. The page is ordered by the FIRST colour;
48
+ * the rest come back in `query.droppedColours`.
49
+ */
40
50
  colours: PaletteQueryColour[];
41
51
  /**
42
- * `all` (the default) requires every queried colour to clear a per-colour
43
- * eligibility floor and scores the weighted geometric mean; `any` is a
44
- * noisy-OR and never rejects a candidate for missing one colour.
52
+ * Kept so existing callers still parse: the one search orders the page by
53
+ * the first colour with no eligibility floor, so `all` and `any` return the
54
+ * same page.
45
55
  */
46
56
  logic?: PaletteLogic;
47
57
  /** Results to return; defaults to 24, capped at 48. */
48
58
  limit?: number;
49
59
  };
50
60
  export type SearchGradientInput = {
61
+ /**
62
+ * HARD category filter: category-group or product-type names or keys.
63
+ * Absent, the page holds surface materials only, so lights, taps and
64
+ * furniture are left out.
65
+ */
66
+ category?: string[];
51
67
  corpusScope?: CorpusScope;
52
68
  /** The ordered colour transition, 2–6 stops. */
53
69
  stops: GradientStop[];
@@ -67,14 +83,23 @@ export type CandidateSwatch = {
67
83
  /** Why a queried colour (or gradient sample) scored what it scored. */
68
84
  export type ColourMatchReceipt = {
69
85
  queryHex: string;
70
- /** `colourScore × proportionScore` for the best-matching swatch. */
86
+ /** `colourScore × proportionScore`, so `colourScore` on the one search. */
71
87
  score: number;
72
- /** OKLab closeness alone, in [0,1]. */
88
+ /**
89
+ * Closeness in [0,1] of the matched swatch to the queried colour, from plain
90
+ * OKLab distance with lightness counted in full. Not a confidence.
91
+ */
73
92
  colourScore: number;
74
- /** Proportion agreement alone, in [0,1]. */
93
+ /** Proportion agreement; always 1, since no proportion is applied. */
75
94
  proportionScore: number;
76
95
  /** The swatch that produced the score, or null when nothing matched. */
77
96
  matched: CandidateSwatch | null;
97
+ /**
98
+ * Whether `matched` has a hue compatible with the queried colour, at the
99
+ * response's `hueGate` thresholds. A flag, never a gate: an incompatible
100
+ * swatch still scores and ranks. Absent when there is no `matched` swatch.
101
+ */
102
+ hueCompatible?: boolean;
78
103
  };
79
104
  /** Identity and evidence shared by both multi-colour match shapes. */
80
105
  export type MultiColourMatchBase = {
@@ -87,6 +112,11 @@ export type MultiColourMatchBase = {
87
112
  color: string | null;
88
113
  variantName: string | null;
89
114
  imageUrl: string | null;
115
+ /**
116
+ * SHA-256 of the displayed image `imageUrl` points at, as a hex digest.
117
+ * ABSENT means no hash is on record, never that there is no image.
118
+ */
119
+ imageSha256?: string;
90
120
  /** MB has retired or hidden this SKU. */
91
121
  retired: boolean;
92
122
  /**
@@ -103,7 +133,10 @@ export type MultiColourMatchBase = {
103
133
  category: string | null;
104
134
  /** The candidate's full extracted palette — the evidence scored against. */
105
135
  palette: CandidateSwatch[];
106
- /** The aggregate match score in [0,1]; higher is closer. */
136
+ /**
137
+ * Closeness in [0,1] of the material's own colour to the searched colour,
138
+ * the page's order. Not a confidence or a percentage.
139
+ */
107
140
  score: number;
108
141
  };
109
142
  export type PaletteMatch = {
@@ -112,22 +145,18 @@ export type PaletteMatch = {
112
145
  } & MultiColourMatchBase;
113
146
  export type GradientMatch = {
114
147
  /**
115
- * Distinct matched thirds of the path over 3. A material owning only one end
116
- * of the transition caps out around 0.33 — coverage is what separates a real
117
- * gradient match from a good match on a single stop.
148
+ * Thirds of the path where the material holds a swatch near a sampled point,
149
+ * over 3. A receipt beside the order, which is by the first stop.
118
150
  */
119
151
  coverage: number;
120
152
  /** One receipt per sampled point along the path, in path order. */
121
153
  samples: ColourMatchReceipt[];
122
154
  } & MultiColourMatchBase;
123
155
  /**
124
- * The hue-family ADMISSION gate the page was scored under: a candidate swatch
125
- * may satisfy a query colour only if colorscope's `isHueCompatible` admits it
126
- * at these exact thresholds. A refused swatch is absent from that colour's
127
- * matching entirely — it did not merely rank low. Admission, not ranking: it
128
- * decides which swatches count, never their order. Server-side and fixed (no
129
- * request knob); the receipt exists so a threshold change is visible on the
130
- * wire.
156
+ * The thresholds behind every receipt's `hueCompatible`: the exact values
157
+ * passed to colorscope's `isHueCompatible`, fixed server-side with no request
158
+ * knob. A FLAG, never admission or ranking: every swatch still scores, and the
159
+ * page and its order are the same with or without it.
131
160
  */
132
161
  export type HueGateReceipt = {
133
162
  /** Below this query chroma the colour is achromatic and any hue is admitted. */
@@ -162,20 +191,26 @@ export type SearchPaletteResponse = {
162
191
  /** `no_effective_colours` means no material query ran. */
163
192
  outcome: OpenEnum<"matches" | "no_effective_colours">;
164
193
  };
165
- /** The hue-family admission gate this page was scored under. */
166
- hueGate: HueGateReceipt;
194
+ /** The category gate the page ran under. */
195
+ categoryGate?: ColourCategoryGate;
196
+ /** The thresholds behind each receipt's `hueCompatible`. Absent only on responses stored before it existed. */
197
+ hueGate?: HueGateReceipt;
167
198
  /** `matches.length`, capped by `limit`. Never a corpus total. */
168
199
  count: number;
169
200
  matches: PaletteMatch[];
170
201
  };
171
202
  /** A PAGE, NOT A CORPUS — see {@link SearchPaletteResponse}. */
172
203
  export type SearchGradientResponse = {
204
+ /** The category gate the page ran under. */
205
+ categoryGate?: ColourCategoryGate;
173
206
  corpusScope?: CorpusScopeReceipt;
174
207
  query: {
175
208
  stops: string[];
176
209
  /** The sampled path points the search actually ran against. */
177
210
  samples: string[];
178
211
  };
212
+ /** The thresholds behind each sample receipt's `hueCompatible`. */
213
+ hueGate?: HueGateReceipt;
179
214
  /** `matches.length`, capped by `limit`. Never a corpus total. */
180
215
  count: number;
181
216
  matches: GradientMatch[];
@@ -183,14 +183,14 @@ export type QueryAmbiguityReceipt = {
183
183
  productTypeIds: string[];
184
184
  changedArm: boolean;
185
185
  };
186
- export interface QueryCategoryScopeReceipt {
186
+ export type QueryCategoryScopeReceipt = {
187
187
  source: OpenEnum<"caller" | "anchor">;
188
188
  mechanism: OpenEnum<"sql-predicate" | "provider-filter" | "allowlist" | "prune">;
189
189
  variantCount: number | null;
190
190
  ceiling: number;
191
191
  specScanBounded?: boolean;
192
192
  [key: string]: unknown;
193
- }
193
+ };
194
194
  export type QuerySpecAllowlistReceipt = {
195
195
  limit: number;
196
196
  returned: number;
@@ -199,6 +199,27 @@ export type QuerySpecAllowlistReceipt = {
199
199
  emptyMeansScarcity: boolean;
200
200
  outcome?: OpenEnum<"corpus-scarcity" | "retrieval-miss" | "unknown">;
201
201
  };
202
+ /**
203
+ * Whether the phrase-reading step turned the query's descriptive words into
204
+ * filters and preferences. Present only on the workflow lane.
205
+ */
206
+ export type QueryPhraseReadingReceipt = {
207
+ outcome: OpenEnum<"skipped">;
208
+ reason: string;
209
+ } | {
210
+ outcome: OpenEnum<"read">;
211
+ /** Which model read the phrase: `jev`, or `second` behind it. */
212
+ reader: OpenEnum<"jev" | "second">;
213
+ elapsedMs: number;
214
+ leftAsText: string[];
215
+ rows: {
216
+ kind: OpenEnum<"want" | "avoid">;
217
+ attributeId: string;
218
+ values: string[];
219
+ confidence: number;
220
+ applied: boolean;
221
+ }[];
222
+ };
202
223
  export type QueryUnsatisfiableNarrowing = {
203
224
  narrowing: OpenEnum<"product-type">;
204
225
  gate: OpenEnum<"hard">;
@@ -213,13 +234,13 @@ export type QueryUnsatisfiableNarrowing = {
213
234
  relaxedTo: OpenEnum<"head-noun" | "none">;
214
235
  };
215
236
  /** Inspectable interpretation of the raw query by ordinary MaterialGraph search. */
216
- export interface QueryUnderstanding {
237
+ export type QueryUnderstanding = {
217
238
  version: OpenEnum<"1">;
218
239
  rawQuery: string;
219
240
  normalisedQuery: string;
220
241
  residualText: string;
221
242
  status: OpenEnum<"resolved" | "ambiguous" | "partial" | "unresolved">;
222
- mode: OpenEnum<"image" | "colour" | "text" | "lexical" | "entity-browse">;
243
+ mode: OpenEnum<"image" | "colour" | "text" | "lexical" | "entity-browse" | "attribute">;
223
244
  senses: QuerySense[];
224
245
  canonicalLexical?: CanonicalLexicalReceipt;
225
246
  criteria?: QueryCriteriaReceipt;
@@ -229,4 +250,5 @@ export interface QueryUnderstanding {
229
250
  categoryScope?: QueryCategoryScopeReceipt;
230
251
  specAllowlist?: QuerySpecAllowlistReceipt;
231
252
  unsatisfiableNarrowing?: QueryUnsatisfiableNarrowing;
232
- }
253
+ phraseReading?: QueryPhraseReadingReceipt;
254
+ };
@@ -17,9 +17,7 @@
17
17
  * silently the moment the registry moves.
18
18
  * - The whole phrase, any vocabulary → {@link resolvePhrasesRequest}. Batched,
19
19
  * deterministic, and it says so out loud when a word means nothing here.
20
- * - You already know it is an attribute, or a value under a known attribute →
21
- * `mg.resolveAttribute()` / `mg.resolveAttributeValue()`.
22
- * - You want to EXPLAIN a token you already hold → `mg.glossary(term)`.
20
+ * - You already know it is an attribute → `mg.listAttributes({ query })`.
23
21
  * - You want to complete a name as someone types → `mg.suggest()`.
24
22
  * - You want MATERIALS → `mg.search()`. This lens never returns one.
25
23
  */
@@ -56,9 +54,8 @@ import type { VocabularySearchOptions, VocabularySearchResponse } from "./types.
56
54
  * could have caught comes back unresolved rather than slow.
57
55
  *
58
56
  * Deterministic — the same batch resolves to the same bytes every time. Instead
59
- * use `mg.search()` when you want materials rather than words, `mg.suggest()` to
60
- * complete a name as someone types, and `mg.glossary()` to EXPLAIN a token you
61
- * have already resolved.
57
+ * use `mg.search()` when you want materials rather than words, and
58
+ * `mg.suggest()` to complete a name as someone types.
62
59
  *
63
60
  * - **Every reading says what stands behind it.** `coverage.variants` is how
64
61
  * many variants carry it corpus-wide, and `0` is a measured answer rather
@@ -82,9 +79,8 @@ export declare const resolvePhrasesRequest: (transport: HttpTransport, phrases:
82
79
  * here?" The catch-all for ONE phrase when you do not know which half of an
83
80
  * `attribute:value` pair it belongs to. Backs `mg.searchVocabulary()`.
84
81
  *
85
- * Instead use `mg.resolveAttribute()` / `mg.resolveAttributeValue()` once you do
86
- * know, {@link resolvePhrasesRequest} when you have SEVERAL phrases or the
87
- * phrase might name a brand, paint, colour or category rather than a spec, and
88
- * `mg.glossary()` to EXPLAIN a term rather than find it.
82
+ * Instead use `mg.listAttributes({ query })` once you do know the attribute,
83
+ * or {@link resolvePhrasesRequest} when you have SEVERAL phrases or the phrase
84
+ * might name a brand, paint, colour or category rather than a spec.
89
85
  */
90
86
  export declare const searchVocabularyRequest: (transport: HttpTransport, query: string, options?: VocabularySearchOptions, signal?: AbortSignal) => Promise<VocabularySearchResponse>;
package/resolve-client.js CHANGED
@@ -29,9 +29,8 @@ import { resolveOperation } from "./operations.js";
29
29
  * could have caught comes back unresolved rather than slow.
30
30
  *
31
31
  * Deterministic — the same batch resolves to the same bytes every time. Instead
32
- * use `mg.search()` when you want materials rather than words, `mg.suggest()` to
33
- * complete a name as someone types, and `mg.glossary()` to EXPLAIN a token you
34
- * have already resolved.
32
+ * use `mg.search()` when you want materials rather than words, and
33
+ * `mg.suggest()` to complete a name as someone types.
35
34
  *
36
35
  * - **Every reading says what stands behind it.** `coverage.variants` is how
37
36
  * many variants carry it corpus-wide, and `0` is a measured answer rather
@@ -68,9 +67,8 @@ export const resolvePhrasesRequest = async (transport, phrases, scope) => {
68
67
  * here?" The catch-all for ONE phrase when you do not know which half of an
69
68
  * `attribute:value` pair it belongs to. Backs `mg.searchVocabulary()`.
70
69
  *
71
- * Instead use `mg.resolveAttribute()` / `mg.resolveAttributeValue()` once you do
72
- * know, {@link resolvePhrasesRequest} when you have SEVERAL phrases or the
73
- * phrase might name a brand, paint, colour or category rather than a spec, and
74
- * `mg.glossary()` to EXPLAIN a term rather than find it.
70
+ * Instead use `mg.listAttributes({ query })` once you do know the attribute,
71
+ * or {@link resolvePhrasesRequest} when you have SEVERAL phrases or the phrase
72
+ * might name a brand, paint, colour or category rather than a spec.
75
73
  */
76
74
  export const searchVocabularyRequest = async (transport, query, options, signal) => await transport.requestJson(resolveOperation("catalog_vocabulary_search"), { query: { kind: options?.kind, limit: options?.limit, q: query }, signal });
@@ -0,0 +1,20 @@
1
+ import type { RESPONSE_SCHEMA_OPERATION_IDS } from "./response-schemas.generated.js";
2
+ export { RESPONSE_SCHEMA_API_VERSION, RESPONSE_SCHEMA_OPERATION_IDS, } from "./response-schemas.generated.js";
3
+ /** Every operation {@link responseSchema} answers for. */
4
+ export type ResponseSchemaOperationId = (typeof RESPONSE_SCHEMA_OPERATION_IDS)[number];
5
+ /** A JSON Schema document or subschema, as plain JSON. */
6
+ export type JsonSchema = {
7
+ [keyword: string]: unknown;
8
+ };
9
+ /** A self-contained schema: every `$ref` resolves inside its own `$defs`. */
10
+ export type ResponseJsonSchema = JsonSchema & {
11
+ $schema: typeof JSON_SCHEMA_DIALECT;
12
+ $defs?: Record<string, JsonSchema>;
13
+ };
14
+ declare const JSON_SCHEMA_DIALECT = "https://json-schema.org/draft/2020-12/schema";
15
+ /**
16
+ * The success-response schema for one operation, self-contained and carrying
17
+ * only the definitions it reaches. Each call returns a fresh copy, so a caller
18
+ * that annotates or mutates it cannot change what the next caller gets.
19
+ */
20
+ export declare const responseSchema: (operationId: ResponseSchemaOperationId) => ResponseJsonSchema;
@@ -0,0 +1,5 @@
1
+ /** The API contract version the schemas were generated from. */
2
+ export declare const RESPONSE_SCHEMA_API_VERSION = "0.7.0";
3
+ /** Every SDK operation whose success response has a published JSON Schema. */
4
+ export declare const RESPONSE_SCHEMA_OPERATION_IDS: readonly ["samplize_colorvec_cache", "samplize_catalogue_search", "list_catalog_documents", "list_catalog_pages", "get_catalog_page_representation", "list_catalog_product_references", "search_materials_post", "retrieval.identify", "match_material", "search_suggest", "get_colour_stats", "coordinate_materials", "plan_material_query", "samplize_catalogue_products", "search_materials_get", "search_by_colour", "get_material", "get_catalogue_references_batch", "list_catalogue_channel_collections", "get_catalogue_document_access", "list_material_blocks", "list_variant_assets", "list_material_documents", "get_composition_report", "list_schema_blocks", "list_schema_attributes", "list_schema_verticals", "list_schema_product_types", "list_schema_units", "list_schema_value_dictionaries", "list_schema_source_requirements", "list_schema_product_type_templates", "list_schema_mappings", "get_material_pairings", "list_associated_finishes", "list_associated_products", "get_applicability", "list_variants", "list_variant_facets", "get_category_colour_profiles", "resolve_colour_name", "suggest_colour_names", "catalog_list_attributes", "catalog_vocabulary_search", "resolve_phrases", "list_categories", "get_category", "get_product_type_status_coverage", "whoami", "get_material_demand", "search_by_palette", "extract_image_palette", "search_by_gradient", "list_spec_facets", "list_brands", "upload_source_material", "get_source_material_batch", "list_source_material_comments", "post_source_material_comment", "create_public_run", "get_public_run", "get_verdict_citation", "get_demand_batch", "resolveCodeAdvisory", "list_code_context", "list_code_requirements"];
5
+ export declare const RESPONSE_SCHEMA_CATALOGUE_JSON: string;