import { type JsonApiAnalyticalDashboardOutDocument, type JsonApiFilterContextOut, type RestrictedObject } from "@gooddata/api-client-tiger"; import type { IUnavailableDashboardReference, SupportedDashboardReferenceTypes } from "@gooddata/sdk-backend-spi"; import { type IDashboard } from "@gooddata/sdk-model"; import { type TigerAuthenticatedCallGuard } from "../../../types/index.js"; /** The same for the filter-context GET, which links the objects the filters use. */ declare const FILTER_CONTEXT_RELATIONSHIP_KEYS: { readonly displayForm: "labels"; readonly attribute: "attributes"; readonly computedAttribute: "computedAttributes"; readonly measure: "metrics"; readonly fact: "facts"; }; type FilterContextInspectedType = keyof typeof FILTER_CONTEXT_RELATIONSHIP_KEYS; /** * Resolves which of the requested dashboard references are unavailable and why. */ export declare function resolveUnavailableReferences(document: JsonApiAnalyticalDashboardOutDocument, types: SupportedDashboardReferenceTypes[]): IUnavailableDashboardReference[]; /** * Unavailable references of the effective dashboard: the stored document's diff, keeping only the * filter-context entries of contexts the effective dashboard uses — a `filterContextRef` or export * override replaces stored contexts, whose availability then does not matter (an override may itself * be another stored context). A dashboard without any filter context is how a forbidden stored * context looks after conversion, so nothing is dropped in that case. */ export declare function resolveUnavailableDashboardReferences(document: JsonApiAnalyticalDashboardOutDocument, dashboard: IDashboard, types: SupportedDashboardReferenceTypes[]): IUnavailableDashboardReference[]; /** * Resolves which filter display forms, attributes, computed attributes, metrics and facts referenced by * a filter context are unavailable. Each inspected type must have been requested as an include * (`labels`, `attributes`, `computedAttributes`, `metrics`, `facts`) so the response contains both * relationship linkages and document-level `meta.restricted` for it. */ export declare function resolveUnavailableFilterContextReferences(context: JsonApiFilterContextOut, restricted: RestrictedObject[] | undefined, inspected: FilterContextInspectedType[]): IUnavailableDashboardReference[]; /** * Filter labels, attributes, computed attributes, metrics and facts relate to their filter-context * entities: the dashboard GET side-loads the filter contexts as bare items (no `relationships`), so the * existence linkage for filter objects is reachable only through a direct filter-context GET with * `include=labels` (and `attributes`, `computedAttributes`, `metrics`, `facts`), hence this one batched * extra request. Types other than labels are included only when a filter uses them (metric value * filters and the attributes they are computed for, filters on computed attributes, metrics, facts * and "Count of" attributes or computed attributes limiting a filter's values), so other dashboards * never request them. * It inspects the contexts of the effective dashboard, so a `filterContextRef` override is covered; * the synthetic export-override context has no entity behind it and is skipped. * It would become redundant if the backend emitted `relationships.labels` on the filter-context items * inside the dashboard's `included` (not agreed with the backend team — an assumption about a possible * change; the diff already handles such documents). * This is an enrichment: a failure must not fail the dashboard load, so the affected filter objects * are left unlisted (see the `unavailable` contract in sdk-backend-spi). */ export declare function fetchUnavailableFilterDisplayForms(authCall: TigerAuthenticatedCallGuard, workspaceId: string, dashboard: IDashboard, types: SupportedDashboardReferenceTypes[]): Promise; /** * Identifiers of the persisted filter contexts the dashboard actually uses (root and tabs; a * `filterContextRef` override replaces them all). Only a ref typed `filterContext` names an entity * the backend can inspect — the synthetic export-override context is skipped by this rule. */ export declare function inspectableFilterContextIds(dashboard: IDashboard): string[]; export {}; //# sourceMappingURL=referenceAvailability.d.ts.map