import { AthenaRightKey } from '@xylex-group/athena/rights'; import { AthenaDomainFailureClassification, AthenaDomainFailureKind } from '../../../client/classify-athena-domain-failure.js'; import { SettingsSurfaceAccess, SettingsSurfaceAvailability } from './settings-surface-state.js'; export type SettingsSurfaceDimension = boolean | "unknown"; export interface SettingsSurfaceResolutionInput { access?: SettingsSurfaceAccess; authentication: { authenticated: SettingsSurfaceDimension; }; authorization: { allowed: SettingsSurfaceDimension; evaluated: boolean; missingRights: readonly AthenaRightKey[]; requiredRights: readonly AthenaRightKey[]; }; capability: { available: SettingsSurfaceDimension; reason?: string; }; error?: unknown; failure?: Pick & { error: unknown; kind: AthenaDomainFailureKind; }; loading?: boolean; provider: { available: SettingsSurfaceDimension; configured: SettingsSurfaceDimension; }; registered: { plugin: boolean; route: boolean; }; runtime: { advertised: SettingsSurfaceDimension; supported?: SettingsSurfaceDimension; transport?: string | null; }; surface?: string; } export interface SettingsSurfaceResolution { authorization: SettingsSurfaceResolutionInput["authorization"]; capability: SettingsSurfaceResolutionInput["capability"]; identity: SettingsSurfaceResolutionInput["authentication"]; provider: SettingsSurfaceResolutionInput["provider"]; registration: SettingsSurfaceResolutionInput["registered"]; runtime: { advertised: SettingsSurfaceDimension; supported?: SettingsSurfaceDimension; transport: string | null; }; state: SettingsSurfaceAvailability; surface: string; }